Lines Matching refs:pmic_arb
194 int (*ppid_to_apid)(struct spmi_pmic_arb *pmic_arb, u16 ppid);
196 int (*offset)(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr,
201 void __iomem *(*owner_acc_status)(struct spmi_pmic_arb *pmic_arb, u8 m,
203 void __iomem *(*acc_enable)(struct spmi_pmic_arb *pmic_arb, u16 n);
204 void __iomem *(*irq_status)(struct spmi_pmic_arb *pmic_arb, u16 n);
205 void __iomem *(*irq_clear)(struct spmi_pmic_arb *pmic_arb, u16 n);
209 static inline void pmic_arb_base_write(struct spmi_pmic_arb *pmic_arb, in pmic_arb_base_write() argument
212 writel_relaxed(val, pmic_arb->wr_base + offset); in pmic_arb_base_write()
215 static inline void pmic_arb_set_rd_cmd(struct spmi_pmic_arb *pmic_arb, in pmic_arb_set_rd_cmd() argument
218 writel_relaxed(val, pmic_arb->rd_base + offset); in pmic_arb_set_rd_cmd()
228 pmic_arb_read_data(struct spmi_pmic_arb *pmic_arb, u8 *buf, u32 reg, u8 bc) in pmic_arb_read_data() argument
230 u32 data = __raw_readl(pmic_arb->rd_base + reg); in pmic_arb_read_data()
241 static void pmic_arb_write_data(struct spmi_pmic_arb *pmic_arb, const u8 *buf, in pmic_arb_write_data() argument
247 __raw_writel(data, pmic_arb->wr_base + reg); in pmic_arb_write_data()
254 struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); in pmic_arb_wait_for_done() local
260 rc = pmic_arb->ver_ops->offset(pmic_arb, sid, addr, ch_type); in pmic_arb_wait_for_done()
302 struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); in pmic_arb_non_data_cmd_v1() local
308 rc = pmic_arb->ver_ops->offset(pmic_arb, sid, 0, PMIC_ARB_CHANNEL_RW); in pmic_arb_non_data_cmd_v1()
315 raw_spin_lock_irqsave(&pmic_arb->lock, flags); in pmic_arb_non_data_cmd_v1()
316 pmic_arb_base_write(pmic_arb, offset + PMIC_ARB_CMD, cmd); in pmic_arb_non_data_cmd_v1()
317 rc = pmic_arb_wait_for_done(ctrl, pmic_arb->wr_base, sid, 0, in pmic_arb_non_data_cmd_v1()
319 raw_spin_unlock_irqrestore(&pmic_arb->lock, flags); in pmic_arb_non_data_cmd_v1()
333 struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); in pmic_arb_cmd() local
341 return pmic_arb->ver_ops->non_data_cmd(ctrl, opc, sid); in pmic_arb_cmd()
347 struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); in pmic_arb_read_cmd() local
354 rc = pmic_arb->ver_ops->offset(pmic_arb, sid, addr, in pmic_arb_read_cmd()
376 cmd = pmic_arb->ver_ops->fmt_cmd(opc, sid, addr, bc); in pmic_arb_read_cmd()
378 raw_spin_lock_irqsave(&pmic_arb->lock, flags); in pmic_arb_read_cmd()
379 pmic_arb_set_rd_cmd(pmic_arb, offset + PMIC_ARB_CMD, cmd); in pmic_arb_read_cmd()
380 rc = pmic_arb_wait_for_done(ctrl, pmic_arb->rd_base, sid, addr, in pmic_arb_read_cmd()
385 pmic_arb_read_data(pmic_arb, buf, offset + PMIC_ARB_RDATA0, in pmic_arb_read_cmd()
389 pmic_arb_read_data(pmic_arb, buf + 4, offset + PMIC_ARB_RDATA1, in pmic_arb_read_cmd()
393 raw_spin_unlock_irqrestore(&pmic_arb->lock, flags); in pmic_arb_read_cmd()
400 struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); in pmic_arb_write_cmd() local
407 rc = pmic_arb->ver_ops->offset(pmic_arb, sid, addr, in pmic_arb_write_cmd()
431 cmd = pmic_arb->ver_ops->fmt_cmd(opc, sid, addr, bc); in pmic_arb_write_cmd()
434 raw_spin_lock_irqsave(&pmic_arb->lock, flags); in pmic_arb_write_cmd()
435 pmic_arb_write_data(pmic_arb, buf, offset + PMIC_ARB_WDATA0, in pmic_arb_write_cmd()
438 pmic_arb_write_data(pmic_arb, buf + 4, offset + PMIC_ARB_WDATA1, in pmic_arb_write_cmd()
442 pmic_arb_base_write(pmic_arb, offset + PMIC_ARB_CMD, cmd); in pmic_arb_write_cmd()
443 rc = pmic_arb_wait_for_done(ctrl, pmic_arb->wr_base, sid, addr, in pmic_arb_write_cmd()
445 raw_spin_unlock_irqrestore(&pmic_arb->lock, flags); in pmic_arb_write_cmd()
471 struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); in qpnpint_spmi_write() local
475 if (pmic_arb_write_cmd(pmic_arb->spmic, SPMI_CMD_EXT_WRITEL, sid, in qpnpint_spmi_write()
477 dev_err_ratelimited(&pmic_arb->spmic->dev, "failed irqchip transaction on %x\n", in qpnpint_spmi_write()
483 struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); in qpnpint_spmi_read() local
487 if (pmic_arb_read_cmd(pmic_arb->spmic, SPMI_CMD_EXT_READL, sid, in qpnpint_spmi_read()
489 dev_err_ratelimited(&pmic_arb->spmic->dev, "failed irqchip transaction on %x\n", in qpnpint_spmi_read()
493 static void cleanup_irq(struct spmi_pmic_arb *pmic_arb, u16 apid, int id) in cleanup_irq() argument
495 u16 ppid = pmic_arb->apid_data[apid].ppid; in cleanup_irq()
500 writel_relaxed(irq_mask, pmic_arb->ver_ops->irq_clear(pmic_arb, apid)); in cleanup_irq()
502 if (pmic_arb_write_cmd(pmic_arb->spmic, SPMI_CMD_EXT_WRITEL, sid, in cleanup_irq()
504 dev_err_ratelimited(&pmic_arb->spmic->dev, "failed to ack irq_mask = 0x%x for ppid = %x\n", in cleanup_irq()
507 if (pmic_arb_write_cmd(pmic_arb->spmic, SPMI_CMD_EXT_WRITEL, sid, in cleanup_irq()
509 dev_err_ratelimited(&pmic_arb->spmic->dev, "failed to ack irq_mask = 0x%x for ppid = %x\n", in cleanup_irq()
513 static void periph_interrupt(struct spmi_pmic_arb *pmic_arb, u16 apid) in periph_interrupt() argument
518 u8 sid = (pmic_arb->apid_data[apid].ppid >> 8) & 0xF; in periph_interrupt()
519 u8 per = pmic_arb->apid_data[apid].ppid & 0xFF; in periph_interrupt()
521 status = readl_relaxed(pmic_arb->ver_ops->irq_status(pmic_arb, apid)); in periph_interrupt()
525 irq = irq_find_mapping(pmic_arb->domain, in periph_interrupt()
528 cleanup_irq(pmic_arb, apid, id); in periph_interrupt()
537 struct spmi_pmic_arb *pmic_arb = irq_desc_get_handler_data(desc); in pmic_arb_chained_irq() local
538 const struct pmic_arb_ver_ops *ver_ops = pmic_arb->ver_ops; in pmic_arb_chained_irq()
540 int first = pmic_arb->min_apid >> 5; in pmic_arb_chained_irq()
541 int last = pmic_arb->max_apid >> 5; in pmic_arb_chained_irq()
542 u8 ee = pmic_arb->ee; in pmic_arb_chained_irq()
550 ver_ops->owner_acc_status(pmic_arb, ee, i)); in pmic_arb_chained_irq()
556 ver_ops->acc_enable(pmic_arb, apid)); in pmic_arb_chained_irq()
558 periph_interrupt(pmic_arb, apid); in pmic_arb_chained_irq()
567 struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); in qpnpint_irq_ack() local
572 writel_relaxed(BIT(irq), pmic_arb->ver_ops->irq_clear(pmic_arb, apid)); in qpnpint_irq_ack()
588 struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); in qpnpint_irq_unmask() local
589 const struct pmic_arb_ver_ops *ver_ops = pmic_arb->ver_ops; in qpnpint_irq_unmask()
595 ver_ops->acc_enable(pmic_arb, apid)); in qpnpint_irq_unmask()
648 struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); in qpnpint_irq_set_wake() local
650 return irq_set_irq_wake(pmic_arb->irq, on); in qpnpint_irq_set_wake()
671 struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); in qpnpint_irq_request_resources() local
677 if (pmic_arb->apid_data[apid].irq_ee != pmic_arb->ee) { in qpnpint_irq_request_resources()
678 …dev_err(&pmic_arb->spmic->dev, "failed to xlate sid = %#x, periph = %#x, irq = %u: ee=%u but owner… in qpnpint_irq_request_resources()
679 sid, periph, irq, pmic_arb->ee, in qpnpint_irq_request_resources()
680 pmic_arb->apid_data[apid].irq_ee); in qpnpint_irq_request_resources()
706 struct spmi_pmic_arb *pmic_arb = d->host_data; in qpnpint_irq_domain_dt_translate() local
710 dev_dbg(&pmic_arb->spmic->dev, "intspec[0] 0x%1x intspec[1] 0x%02x intspec[2] 0x%02x\n", in qpnpint_irq_domain_dt_translate()
721 rc = pmic_arb->ver_ops->ppid_to_apid(pmic_arb, ppid); in qpnpint_irq_domain_dt_translate()
723 dev_err(&pmic_arb->spmic->dev, "failed to xlate sid = %#x, periph = %#x, irq = %u rc = %d\n", in qpnpint_irq_domain_dt_translate()
730 if (apid > pmic_arb->max_apid) in qpnpint_irq_domain_dt_translate()
731 pmic_arb->max_apid = apid; in qpnpint_irq_domain_dt_translate()
732 if (apid < pmic_arb->min_apid) in qpnpint_irq_domain_dt_translate()
733 pmic_arb->min_apid = apid; in qpnpint_irq_domain_dt_translate()
738 dev_dbg(&pmic_arb->spmic->dev, "out_hwirq = %lu\n", *out_hwirq); in qpnpint_irq_domain_dt_translate()
747 struct spmi_pmic_arb *pmic_arb = d->host_data; in qpnpint_irq_domain_map() local
749 dev_dbg(&pmic_arb->spmic->dev, "virq = %u, hwirq = %lu\n", virq, hwirq); in qpnpint_irq_domain_map()
757 static int pmic_arb_ppid_to_apid_v1(struct spmi_pmic_arb *pmic_arb, u16 ppid) in pmic_arb_ppid_to_apid_v1() argument
759 u32 *mapping_table = pmic_arb->mapping_table; in pmic_arb_ppid_to_apid_v1()
765 apid_valid = pmic_arb->ppid_to_apid[ppid]; in pmic_arb_ppid_to_apid_v1()
772 if (!test_and_set_bit(index, pmic_arb->mapping_table_valid)) in pmic_arb_ppid_to_apid_v1()
773 mapping_table[index] = readl_relaxed(pmic_arb->cnfg + in pmic_arb_ppid_to_apid_v1()
783 pmic_arb->ppid_to_apid[ppid] in pmic_arb_ppid_to_apid_v1()
785 pmic_arb->apid_data[apid].ppid = ppid; in pmic_arb_ppid_to_apid_v1()
793 pmic_arb->ppid_to_apid[ppid] in pmic_arb_ppid_to_apid_v1()
795 pmic_arb->apid_data[apid].ppid = ppid; in pmic_arb_ppid_to_apid_v1()
805 static int pmic_arb_offset_v1(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr, in pmic_arb_offset_v1() argument
808 return 0x800 + 0x80 * pmic_arb->channel; in pmic_arb_offset_v1()
811 static u16 pmic_arb_find_apid(struct spmi_pmic_arb *pmic_arb, u16 ppid) in pmic_arb_find_apid() argument
813 struct apid_data *apidd = &pmic_arb->apid_data[pmic_arb->last_apid]; in pmic_arb_find_apid()
817 for (apid = pmic_arb->last_apid; ; apid++, apidd++) { in pmic_arb_find_apid()
818 offset = pmic_arb->ver_ops->apid_map_offset(apid); in pmic_arb_find_apid()
819 if (offset >= pmic_arb->core_size) in pmic_arb_find_apid()
822 regval = readl_relaxed(pmic_arb->cnfg + in pmic_arb_find_apid()
827 regval = readl_relaxed(pmic_arb->core + offset); in pmic_arb_find_apid()
832 pmic_arb->ppid_to_apid[id] = apid | PMIC_ARB_APID_VALID; in pmic_arb_find_apid()
839 pmic_arb->last_apid = apid & ~PMIC_ARB_APID_VALID; in pmic_arb_find_apid()
844 static int pmic_arb_ppid_to_apid_v2(struct spmi_pmic_arb *pmic_arb, u16 ppid) in pmic_arb_ppid_to_apid_v2() argument
848 apid_valid = pmic_arb->ppid_to_apid[ppid]; in pmic_arb_ppid_to_apid_v2()
850 apid_valid = pmic_arb_find_apid(pmic_arb, ppid); in pmic_arb_ppid_to_apid_v2()
857 static int pmic_arb_read_apid_map_v5(struct spmi_pmic_arb *pmic_arb) in pmic_arb_read_apid_map_v5() argument
859 struct apid_data *apidd = pmic_arb->apid_data; in pmic_arb_read_apid_map_v5()
873 offset = pmic_arb->ver_ops->apid_map_offset(i); in pmic_arb_read_apid_map_v5()
874 if (offset >= pmic_arb->core_size) in pmic_arb_read_apid_map_v5()
877 regval = readl_relaxed(pmic_arb->core + offset); in pmic_arb_read_apid_map_v5()
883 regval = readl_relaxed(pmic_arb->cnfg + in pmic_arb_read_apid_map_v5()
889 valid = pmic_arb->ppid_to_apid[ppid] & PMIC_ARB_APID_VALID; in pmic_arb_read_apid_map_v5()
890 apid = pmic_arb->ppid_to_apid[ppid] & ~PMIC_ARB_APID_VALID; in pmic_arb_read_apid_map_v5()
891 prev_apidd = &pmic_arb->apid_data[apid]; in pmic_arb_read_apid_map_v5()
894 prev_apidd->write_ee == pmic_arb->ee) { in pmic_arb_read_apid_map_v5()
902 pmic_arb->ppid_to_apid[ppid] = i | PMIC_ARB_APID_VALID; in pmic_arb_read_apid_map_v5()
906 pmic_arb->last_apid = i; in pmic_arb_read_apid_map_v5()
910 dev_dbg(&pmic_arb->spmic->dev, "PPID APID Write-EE IRQ-EE\n"); in pmic_arb_read_apid_map_v5()
912 apid = pmic_arb->ppid_to_apid[ppid]; in pmic_arb_read_apid_map_v5()
915 apidd = &pmic_arb->apid_data[apid]; in pmic_arb_read_apid_map_v5()
916 dev_dbg(&pmic_arb->spmic->dev, "%#03X %3u %2u %2u\n", in pmic_arb_read_apid_map_v5()
924 static int pmic_arb_ppid_to_apid_v5(struct spmi_pmic_arb *pmic_arb, u16 ppid) in pmic_arb_ppid_to_apid_v5() argument
926 if (!(pmic_arb->ppid_to_apid[ppid] & PMIC_ARB_APID_VALID)) in pmic_arb_ppid_to_apid_v5()
929 return pmic_arb->ppid_to_apid[ppid] & ~PMIC_ARB_APID_VALID; in pmic_arb_ppid_to_apid_v5()
933 static int pmic_arb_offset_v2(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr, in pmic_arb_offset_v2() argument
941 rc = pmic_arb_ppid_to_apid_v2(pmic_arb, ppid); in pmic_arb_offset_v2()
946 return 0x1000 * pmic_arb->ee + 0x8000 * apid; in pmic_arb_offset_v2()
953 static int pmic_arb_offset_v5(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr, in pmic_arb_offset_v5() argument
961 rc = pmic_arb_ppid_to_apid_v5(pmic_arb, ppid); in pmic_arb_offset_v5()
968 offset = 0x10000 * pmic_arb->ee + 0x80 * apid; in pmic_arb_offset_v5()
989 pmic_arb_owner_acc_status_v1(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) in pmic_arb_owner_acc_status_v1() argument
991 return pmic_arb->intr + 0x20 * m + 0x4 * n; in pmic_arb_owner_acc_status_v1()
995 pmic_arb_owner_acc_status_v2(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) in pmic_arb_owner_acc_status_v2() argument
997 return pmic_arb->intr + 0x100000 + 0x1000 * m + 0x4 * n; in pmic_arb_owner_acc_status_v2()
1001 pmic_arb_owner_acc_status_v3(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) in pmic_arb_owner_acc_status_v3() argument
1003 return pmic_arb->intr + 0x200000 + 0x1000 * m + 0x4 * n; in pmic_arb_owner_acc_status_v3()
1007 pmic_arb_owner_acc_status_v5(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) in pmic_arb_owner_acc_status_v5() argument
1009 return pmic_arb->intr + 0x10000 * m + 0x4 * n; in pmic_arb_owner_acc_status_v5()
1013 pmic_arb_acc_enable_v1(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_acc_enable_v1() argument
1015 return pmic_arb->intr + 0x200 + 0x4 * n; in pmic_arb_acc_enable_v1()
1019 pmic_arb_acc_enable_v2(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_acc_enable_v2() argument
1021 return pmic_arb->intr + 0x1000 * n; in pmic_arb_acc_enable_v2()
1025 pmic_arb_acc_enable_v5(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_acc_enable_v5() argument
1027 return pmic_arb->wr_base + 0x100 + 0x10000 * n; in pmic_arb_acc_enable_v5()
1031 pmic_arb_irq_status_v1(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_irq_status_v1() argument
1033 return pmic_arb->intr + 0x600 + 0x4 * n; in pmic_arb_irq_status_v1()
1037 pmic_arb_irq_status_v2(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_irq_status_v2() argument
1039 return pmic_arb->intr + 0x4 + 0x1000 * n; in pmic_arb_irq_status_v2()
1043 pmic_arb_irq_status_v5(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_irq_status_v5() argument
1045 return pmic_arb->wr_base + 0x104 + 0x10000 * n; in pmic_arb_irq_status_v5()
1049 pmic_arb_irq_clear_v1(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_irq_clear_v1() argument
1051 return pmic_arb->intr + 0xA00 + 0x4 * n; in pmic_arb_irq_clear_v1()
1055 pmic_arb_irq_clear_v2(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_irq_clear_v2() argument
1057 return pmic_arb->intr + 0x8 + 0x1000 * n; in pmic_arb_irq_clear_v2()
1061 pmic_arb_irq_clear_v5(struct spmi_pmic_arb *pmic_arb, u16 n) in pmic_arb_irq_clear_v5() argument
1063 return pmic_arb->wr_base + 0x108 + 0x10000 * n; in pmic_arb_irq_clear_v5()
1135 struct spmi_pmic_arb *pmic_arb; in spmi_pmic_arb_probe() local
1143 ctrl = spmi_controller_alloc(&pdev->dev, sizeof(*pmic_arb)); in spmi_pmic_arb_probe()
1147 pmic_arb = spmi_controller_get_drvdata(ctrl); in spmi_pmic_arb_probe()
1148 pmic_arb->spmic = ctrl; in spmi_pmic_arb_probe()
1157 pmic_arb->core_size = resource_size(res); in spmi_pmic_arb_probe()
1159 pmic_arb->ppid_to_apid = devm_kcalloc(&ctrl->dev, PMIC_ARB_MAX_PPID, in spmi_pmic_arb_probe()
1160 sizeof(*pmic_arb->ppid_to_apid), in spmi_pmic_arb_probe()
1162 if (!pmic_arb->ppid_to_apid) { in spmi_pmic_arb_probe()
1170 pmic_arb->ver_ops = &pmic_arb_v1; in spmi_pmic_arb_probe()
1171 pmic_arb->wr_base = core; in spmi_pmic_arb_probe()
1172 pmic_arb->rd_base = core; in spmi_pmic_arb_probe()
1174 pmic_arb->core = core; in spmi_pmic_arb_probe()
1177 pmic_arb->ver_ops = &pmic_arb_v2; in spmi_pmic_arb_probe()
1179 pmic_arb->ver_ops = &pmic_arb_v3; in spmi_pmic_arb_probe()
1181 pmic_arb->ver_ops = &pmic_arb_v5; in spmi_pmic_arb_probe()
1185 pmic_arb->rd_base = devm_ioremap_resource(&ctrl->dev, res); in spmi_pmic_arb_probe()
1186 if (IS_ERR(pmic_arb->rd_base)) { in spmi_pmic_arb_probe()
1187 err = PTR_ERR(pmic_arb->rd_base); in spmi_pmic_arb_probe()
1193 pmic_arb->wr_base = devm_ioremap_resource(&ctrl->dev, res); in spmi_pmic_arb_probe()
1194 if (IS_ERR(pmic_arb->wr_base)) { in spmi_pmic_arb_probe()
1195 err = PTR_ERR(pmic_arb->wr_base); in spmi_pmic_arb_probe()
1201 pmic_arb->ver_ops->ver_str, hw_ver); in spmi_pmic_arb_probe()
1204 pmic_arb->intr = devm_ioremap_resource(&ctrl->dev, res); in spmi_pmic_arb_probe()
1205 if (IS_ERR(pmic_arb->intr)) { in spmi_pmic_arb_probe()
1206 err = PTR_ERR(pmic_arb->intr); in spmi_pmic_arb_probe()
1211 pmic_arb->cnfg = devm_ioremap_resource(&ctrl->dev, res); in spmi_pmic_arb_probe()
1212 if (IS_ERR(pmic_arb->cnfg)) { in spmi_pmic_arb_probe()
1213 err = PTR_ERR(pmic_arb->cnfg); in spmi_pmic_arb_probe()
1217 pmic_arb->irq = platform_get_irq_byname(pdev, "periph_irq"); in spmi_pmic_arb_probe()
1218 if (pmic_arb->irq < 0) { in spmi_pmic_arb_probe()
1219 err = pmic_arb->irq; in spmi_pmic_arb_probe()
1236 pmic_arb->channel = channel; in spmi_pmic_arb_probe()
1250 pmic_arb->ee = ee; in spmi_pmic_arb_probe()
1258 pmic_arb->mapping_table = mapping_table; in spmi_pmic_arb_probe()
1261 pmic_arb->max_apid = 0; in spmi_pmic_arb_probe()
1262 pmic_arb->min_apid = PMIC_ARB_MAX_PERIPHS - 1; in spmi_pmic_arb_probe()
1265 raw_spin_lock_init(&pmic_arb->lock); in spmi_pmic_arb_probe()
1272 err = pmic_arb_read_apid_map_v5(pmic_arb); in spmi_pmic_arb_probe()
1281 pmic_arb->domain = irq_domain_add_tree(pdev->dev.of_node, in spmi_pmic_arb_probe()
1282 &pmic_arb_irq_domain_ops, pmic_arb); in spmi_pmic_arb_probe()
1283 if (!pmic_arb->domain) { in spmi_pmic_arb_probe()
1289 irq_set_chained_handler_and_data(pmic_arb->irq, pmic_arb_chained_irq, in spmi_pmic_arb_probe()
1290 pmic_arb); in spmi_pmic_arb_probe()
1298 irq_set_chained_handler_and_data(pmic_arb->irq, NULL, NULL); in spmi_pmic_arb_probe()
1299 irq_domain_remove(pmic_arb->domain); in spmi_pmic_arb_probe()
1308 struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); in spmi_pmic_arb_remove() local
1310 irq_set_chained_handler_and_data(pmic_arb->irq, NULL, NULL); in spmi_pmic_arb_remove()
1311 irq_domain_remove(pmic_arb->domain); in spmi_pmic_arb_remove()