Lines Matching refs:apid
109 #define spec_to_hwirq(slave_id, periph_id, irq_id, apid) \
113 (((apid) & 0x3FF) << 0))
186 * @ppid_to_apid: finds the apid for a given ppid.
606 static void cleanup_irq(struct spmi_pmic_arb *pmic_arb, u16 apid, int id)
608 u16 ppid = pmic_arb->apid_data[apid].ppid;
613 dev_err_ratelimited(&pmic_arb->spmic->dev, "%s apid=%d sid=0x%x per=0x%x irq=%d\n",
614 __func__, apid, sid, per, id);
615 writel_relaxed(irq_mask, pmic_arb->ver_ops->irq_clear(pmic_arb, apid));
618 static int periph_interrupt(struct spmi_pmic_arb *pmic_arb, u16 apid)
623 u8 sid = (pmic_arb->apid_data[apid].ppid >> 8) & 0xF;
624 u8 per = pmic_arb->apid_data[apid].ppid & 0xFF;
626 status = readl_relaxed(pmic_arb->ver_ops->irq_status(pmic_arb, apid));
631 spec_to_hwirq(sid, per, id, apid));
633 cleanup_irq(pmic_arb, apid, id);
657 int i, id, apid;
672 apid = id + i * 32;
673 if (apid < first || apid > last) {
674 WARN_ONCE(true, "spurious spmi irq received for apid=%d\n",
675 apid);
679 ver_ops->acc_enable(pmic_arb, apid));
681 if (periph_interrupt(pmic_arb, apid) != 0)
700 "Dispatching IRQ for apid=%d status=%x\n",
719 u16 apid = hwirq_to_apid(d->hwirq);
722 writel_relaxed(BIT(irq), pmic_arb->ver_ops->irq_clear(pmic_arb, apid));
741 u16 apid = hwirq_to_apid(d->hwirq);
745 ver_ops->acc_enable(pmic_arb, apid));
828 u16 apid = hwirq_to_apid(d->hwirq);
833 if (pmic_arb->apid_data[apid].irq_ee != pmic_arb->ee) {
836 pmic_arb->apid_data[apid].irq_ee);
865 u16 apid, ppid;
886 apid = rc;
888 if (apid > pmic_arb->max_apid)
889 pmic_arb->max_apid = apid;
890 if (apid < pmic_arb->min_apid)
891 pmic_arb->min_apid = apid;
893 *out_hwirq = spec_to_hwirq(intspec[0], intspec[1], intspec[2], apid);
950 u16 apid;
955 apid = apid_valid & ~PMIC_ARB_APID_VALID;
956 return apid;
970 apid = SPMI_MAPPING_BIT_IS_1_RESULT(data);
972 = apid | PMIC_ARB_APID_VALID;
973 pmic_arb->apid_data[apid].ppid = ppid;
974 return apid;
980 apid = SPMI_MAPPING_BIT_IS_0_RESULT(data);
982 = apid | PMIC_ARB_APID_VALID;
983 pmic_arb->apid_data[apid].ppid = ppid;
984 return apid;
1003 u16 id, apid;
1005 for (apid = pmic_arb->last_apid; ; apid++, apidd++) {
1006 offset = pmic_arb->ver_ops->apid_map_offset(apid);
1011 apid));
1020 pmic_arb->ppid_to_apid[id] = apid | PMIC_ARB_APID_VALID;
1023 apid |= PMIC_ARB_APID_VALID;
1027 pmic_arb->last_apid = apid & ~PMIC_ARB_APID_VALID;
1029 return apid;
1049 u16 i, apid, ppid, apid_max;
1088 apid = pmic_arb->ppid_to_apid[ppid] & ~PMIC_ARB_APID_VALID;
1089 prev_apidd = &pmic_arb->apid_data[apid];
1110 apid = pmic_arb->ppid_to_apid[ppid];
1111 if (apid & PMIC_ARB_APID_VALID) {
1112 apid &= ~PMIC_ARB_APID_VALID;
1113 apidd = &pmic_arb->apid_data[apid];
1115 ppid, apid, apidd->write_ee, apidd->irq_ee);
1134 u16 apid;
1143 apid = rc;
1144 return 0x1000 * pmic_arb->ee + 0x8000 * apid;
1148 * v5 offset per ee and per apid for observer channels and per apid for
1154 u16 apid;
1163 apid = rc;
1166 offset = 0x10000 * pmic_arb->ee + 0x80 * apid;
1169 if (pmic_arb->apid_data[apid].write_ee != pmic_arb->ee) {
1174 offset = 0x10000 * apid;
1182 * v7 offset per ee and per apid for observer channels and per apid for
1188 u16 apid;
1197 apid = rc;
1200 offset = 0x8000 * pmic_arb->ee + 0x20 * apid;
1203 if (pmic_arb->apid_data[apid].write_ee != pmic_arb->ee) {
1208 offset = 0x1000 * apid;