pmic_arb 186 drivers/spmi/spmi-pmic-arb.c int (*ppid_to_apid)(struct spmi_pmic_arb *pmic_arb, u16 ppid); pmic_arb 188 drivers/spmi/spmi-pmic-arb.c int (*offset)(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr, pmic_arb 193 drivers/spmi/spmi-pmic-arb.c void __iomem *(*owner_acc_status)(struct spmi_pmic_arb *pmic_arb, u8 m, pmic_arb 195 drivers/spmi/spmi-pmic-arb.c void __iomem *(*acc_enable)(struct spmi_pmic_arb *pmic_arb, u16 n); pmic_arb 196 drivers/spmi/spmi-pmic-arb.c void __iomem *(*irq_status)(struct spmi_pmic_arb *pmic_arb, u16 n); pmic_arb 197 drivers/spmi/spmi-pmic-arb.c void __iomem *(*irq_clear)(struct spmi_pmic_arb *pmic_arb, u16 n); pmic_arb 201 drivers/spmi/spmi-pmic-arb.c static inline void pmic_arb_base_write(struct spmi_pmic_arb *pmic_arb, pmic_arb 204 drivers/spmi/spmi-pmic-arb.c writel_relaxed(val, pmic_arb->wr_base + offset); pmic_arb 207 drivers/spmi/spmi-pmic-arb.c static inline void pmic_arb_set_rd_cmd(struct spmi_pmic_arb *pmic_arb, pmic_arb 210 drivers/spmi/spmi-pmic-arb.c writel_relaxed(val, pmic_arb->rd_base + offset); pmic_arb 220 drivers/spmi/spmi-pmic-arb.c pmic_arb_read_data(struct spmi_pmic_arb *pmic_arb, u8 *buf, u32 reg, u8 bc) pmic_arb 222 drivers/spmi/spmi-pmic-arb.c u32 data = __raw_readl(pmic_arb->rd_base + reg); pmic_arb 233 drivers/spmi/spmi-pmic-arb.c static void pmic_arb_write_data(struct spmi_pmic_arb *pmic_arb, const u8 *buf, pmic_arb 239 drivers/spmi/spmi-pmic-arb.c __raw_writel(data, pmic_arb->wr_base + reg); pmic_arb 246 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb 252 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb->ver_ops->offset(pmic_arb, sid, addr, ch_type); pmic_arb 294 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb 300 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb->ver_ops->offset(pmic_arb, sid, 0, PMIC_ARB_CHANNEL_RW); pmic_arb 307 drivers/spmi/spmi-pmic-arb.c raw_spin_lock_irqsave(&pmic_arb->lock, flags); pmic_arb 308 drivers/spmi/spmi-pmic-arb.c pmic_arb_base_write(pmic_arb, offset + PMIC_ARB_CMD, cmd); pmic_arb 309 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb_wait_for_done(ctrl, pmic_arb->wr_base, sid, 0, pmic_arb 311 drivers/spmi/spmi-pmic-arb.c raw_spin_unlock_irqrestore(&pmic_arb->lock, flags); pmic_arb 325 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb 333 drivers/spmi/spmi-pmic-arb.c return pmic_arb->ver_ops->non_data_cmd(ctrl, opc, sid); pmic_arb 339 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb 346 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb->ver_ops->offset(pmic_arb, sid, addr, pmic_arb 368 drivers/spmi/spmi-pmic-arb.c cmd = pmic_arb->ver_ops->fmt_cmd(opc, sid, addr, bc); pmic_arb 370 drivers/spmi/spmi-pmic-arb.c raw_spin_lock_irqsave(&pmic_arb->lock, flags); pmic_arb 371 drivers/spmi/spmi-pmic-arb.c pmic_arb_set_rd_cmd(pmic_arb, offset + PMIC_ARB_CMD, cmd); pmic_arb 372 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb_wait_for_done(ctrl, pmic_arb->rd_base, sid, addr, pmic_arb 377 drivers/spmi/spmi-pmic-arb.c pmic_arb_read_data(pmic_arb, buf, offset + PMIC_ARB_RDATA0, pmic_arb 381 drivers/spmi/spmi-pmic-arb.c pmic_arb_read_data(pmic_arb, buf + 4, offset + PMIC_ARB_RDATA1, pmic_arb 385 drivers/spmi/spmi-pmic-arb.c raw_spin_unlock_irqrestore(&pmic_arb->lock, flags); pmic_arb 392 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb 399 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb->ver_ops->offset(pmic_arb, sid, addr, pmic_arb 423 drivers/spmi/spmi-pmic-arb.c cmd = pmic_arb->ver_ops->fmt_cmd(opc, sid, addr, bc); pmic_arb 426 drivers/spmi/spmi-pmic-arb.c raw_spin_lock_irqsave(&pmic_arb->lock, flags); pmic_arb 427 drivers/spmi/spmi-pmic-arb.c pmic_arb_write_data(pmic_arb, buf, offset + PMIC_ARB_WDATA0, pmic_arb 430 drivers/spmi/spmi-pmic-arb.c pmic_arb_write_data(pmic_arb, buf + 4, offset + PMIC_ARB_WDATA1, pmic_arb 434 drivers/spmi/spmi-pmic-arb.c pmic_arb_base_write(pmic_arb, offset + PMIC_ARB_CMD, cmd); pmic_arb 435 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb_wait_for_done(ctrl, pmic_arb->wr_base, sid, addr, pmic_arb 437 drivers/spmi/spmi-pmic-arb.c raw_spin_unlock_irqrestore(&pmic_arb->lock, flags); pmic_arb 463 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); pmic_arb 467 drivers/spmi/spmi-pmic-arb.c if (pmic_arb_write_cmd(pmic_arb->spmic, SPMI_CMD_EXT_WRITEL, sid, pmic_arb 469 drivers/spmi/spmi-pmic-arb.c dev_err_ratelimited(&pmic_arb->spmic->dev, "failed irqchip transaction on %x\n", pmic_arb 475 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); pmic_arb 479 drivers/spmi/spmi-pmic-arb.c if (pmic_arb_read_cmd(pmic_arb->spmic, SPMI_CMD_EXT_READL, sid, pmic_arb 481 drivers/spmi/spmi-pmic-arb.c dev_err_ratelimited(&pmic_arb->spmic->dev, "failed irqchip transaction on %x\n", pmic_arb 485 drivers/spmi/spmi-pmic-arb.c static void cleanup_irq(struct spmi_pmic_arb *pmic_arb, u16 apid, int id) pmic_arb 487 drivers/spmi/spmi-pmic-arb.c u16 ppid = pmic_arb->apid_data[apid].ppid; pmic_arb 492 drivers/spmi/spmi-pmic-arb.c writel_relaxed(irq_mask, pmic_arb->ver_ops->irq_clear(pmic_arb, apid)); pmic_arb 494 drivers/spmi/spmi-pmic-arb.c if (pmic_arb_write_cmd(pmic_arb->spmic, SPMI_CMD_EXT_WRITEL, sid, pmic_arb 496 drivers/spmi/spmi-pmic-arb.c dev_err_ratelimited(&pmic_arb->spmic->dev, "failed to ack irq_mask = 0x%x for ppid = %x\n", pmic_arb 499 drivers/spmi/spmi-pmic-arb.c if (pmic_arb_write_cmd(pmic_arb->spmic, SPMI_CMD_EXT_WRITEL, sid, pmic_arb 501 drivers/spmi/spmi-pmic-arb.c dev_err_ratelimited(&pmic_arb->spmic->dev, "failed to ack irq_mask = 0x%x for ppid = %x\n", pmic_arb 505 drivers/spmi/spmi-pmic-arb.c static void periph_interrupt(struct spmi_pmic_arb *pmic_arb, u16 apid) pmic_arb 510 drivers/spmi/spmi-pmic-arb.c u8 sid = (pmic_arb->apid_data[apid].ppid >> 8) & 0xF; pmic_arb 511 drivers/spmi/spmi-pmic-arb.c u8 per = pmic_arb->apid_data[apid].ppid & 0xFF; pmic_arb 513 drivers/spmi/spmi-pmic-arb.c status = readl_relaxed(pmic_arb->ver_ops->irq_status(pmic_arb, apid)); pmic_arb 517 drivers/spmi/spmi-pmic-arb.c irq = irq_find_mapping(pmic_arb->domain, pmic_arb 520 drivers/spmi/spmi-pmic-arb.c cleanup_irq(pmic_arb, apid, id); pmic_arb 529 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = irq_desc_get_handler_data(desc); pmic_arb 530 drivers/spmi/spmi-pmic-arb.c const struct pmic_arb_ver_ops *ver_ops = pmic_arb->ver_ops; pmic_arb 532 drivers/spmi/spmi-pmic-arb.c int first = pmic_arb->min_apid >> 5; pmic_arb 533 drivers/spmi/spmi-pmic-arb.c int last = pmic_arb->max_apid >> 5; pmic_arb 534 drivers/spmi/spmi-pmic-arb.c u8 ee = pmic_arb->ee; pmic_arb 542 drivers/spmi/spmi-pmic-arb.c ver_ops->owner_acc_status(pmic_arb, ee, i)); pmic_arb 548 drivers/spmi/spmi-pmic-arb.c ver_ops->acc_enable(pmic_arb, apid)); pmic_arb 550 drivers/spmi/spmi-pmic-arb.c periph_interrupt(pmic_arb, apid); pmic_arb 559 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); pmic_arb 564 drivers/spmi/spmi-pmic-arb.c writel_relaxed(BIT(irq), pmic_arb->ver_ops->irq_clear(pmic_arb, apid)); pmic_arb 580 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); pmic_arb 581 drivers/spmi/spmi-pmic-arb.c const struct pmic_arb_ver_ops *ver_ops = pmic_arb->ver_ops; pmic_arb 587 drivers/spmi/spmi-pmic-arb.c ver_ops->acc_enable(pmic_arb, apid)); pmic_arb 640 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); pmic_arb 642 drivers/spmi/spmi-pmic-arb.c return irq_set_irq_wake(pmic_arb->irq, on); pmic_arb 664 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = irq_data_get_irq_chip_data(d); pmic_arb 670 drivers/spmi/spmi-pmic-arb.c if (pmic_arb->apid_data[apid].irq_ee != pmic_arb->ee) { pmic_arb 671 drivers/spmi/spmi-pmic-arb.c dev_err(&pmic_arb->spmic->dev, "failed to xlate sid = %#x, periph = %#x, irq = %u: ee=%u but owner=%u\n", pmic_arb 672 drivers/spmi/spmi-pmic-arb.c sid, periph, irq, pmic_arb->ee, pmic_arb 673 drivers/spmi/spmi-pmic-arb.c pmic_arb->apid_data[apid].irq_ee); pmic_arb 696 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = d->host_data; pmic_arb 701 drivers/spmi/spmi-pmic-arb.c dev_dbg(&pmic_arb->spmic->dev, "intspec[0] 0x%1x intspec[1] 0x%02x intspec[2] 0x%02x\n", pmic_arb 704 drivers/spmi/spmi-pmic-arb.c if (irq_domain_get_of_node(d) != pmic_arb->spmic->dev.of_node) pmic_arb 712 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb->ver_ops->ppid_to_apid(pmic_arb, ppid); pmic_arb 714 drivers/spmi/spmi-pmic-arb.c dev_err(&pmic_arb->spmic->dev, "failed to xlate sid = %#x, periph = %#x, irq = %u rc = %d\n", pmic_arb 721 drivers/spmi/spmi-pmic-arb.c if (apid > pmic_arb->max_apid) pmic_arb 722 drivers/spmi/spmi-pmic-arb.c pmic_arb->max_apid = apid; pmic_arb 723 drivers/spmi/spmi-pmic-arb.c if (apid < pmic_arb->min_apid) pmic_arb 724 drivers/spmi/spmi-pmic-arb.c pmic_arb->min_apid = apid; pmic_arb 729 drivers/spmi/spmi-pmic-arb.c dev_dbg(&pmic_arb->spmic->dev, "out_hwirq = %lu\n", *out_hwirq); pmic_arb 736 drivers/spmi/spmi-pmic-arb.c static void qpnpint_irq_domain_map(struct spmi_pmic_arb *pmic_arb, pmic_arb 742 drivers/spmi/spmi-pmic-arb.c dev_dbg(&pmic_arb->spmic->dev, "virq = %u, hwirq = %lu, type = %u\n", pmic_arb 753 drivers/spmi/spmi-pmic-arb.c irq_domain_set_info(domain, virq, hwirq, &pmic_arb_irqchip, pmic_arb, pmic_arb 761 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = domain->host_data; pmic_arb 772 drivers/spmi/spmi-pmic-arb.c qpnpint_irq_domain_map(pmic_arb, domain, virq + i, hwirq + i, pmic_arb 778 drivers/spmi/spmi-pmic-arb.c static int pmic_arb_ppid_to_apid_v1(struct spmi_pmic_arb *pmic_arb, u16 ppid) pmic_arb 780 drivers/spmi/spmi-pmic-arb.c u32 *mapping_table = pmic_arb->mapping_table; pmic_arb 786 drivers/spmi/spmi-pmic-arb.c apid_valid = pmic_arb->ppid_to_apid[ppid]; pmic_arb 793 drivers/spmi/spmi-pmic-arb.c if (!test_and_set_bit(index, pmic_arb->mapping_table_valid)) pmic_arb 794 drivers/spmi/spmi-pmic-arb.c mapping_table[index] = readl_relaxed(pmic_arb->cnfg + pmic_arb 804 drivers/spmi/spmi-pmic-arb.c pmic_arb->ppid_to_apid[ppid] pmic_arb 806 drivers/spmi/spmi-pmic-arb.c pmic_arb->apid_data[apid].ppid = ppid; pmic_arb 814 drivers/spmi/spmi-pmic-arb.c pmic_arb->ppid_to_apid[ppid] pmic_arb 816 drivers/spmi/spmi-pmic-arb.c pmic_arb->apid_data[apid].ppid = ppid; pmic_arb 826 drivers/spmi/spmi-pmic-arb.c static int pmic_arb_offset_v1(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr, pmic_arb 829 drivers/spmi/spmi-pmic-arb.c return 0x800 + 0x80 * pmic_arb->channel; pmic_arb 832 drivers/spmi/spmi-pmic-arb.c static u16 pmic_arb_find_apid(struct spmi_pmic_arb *pmic_arb, u16 ppid) pmic_arb 834 drivers/spmi/spmi-pmic-arb.c struct apid_data *apidd = &pmic_arb->apid_data[pmic_arb->last_apid]; pmic_arb 838 drivers/spmi/spmi-pmic-arb.c for (apid = pmic_arb->last_apid; ; apid++, apidd++) { pmic_arb 839 drivers/spmi/spmi-pmic-arb.c offset = pmic_arb->ver_ops->apid_map_offset(apid); pmic_arb 840 drivers/spmi/spmi-pmic-arb.c if (offset >= pmic_arb->core_size) pmic_arb 843 drivers/spmi/spmi-pmic-arb.c regval = readl_relaxed(pmic_arb->cnfg + pmic_arb 848 drivers/spmi/spmi-pmic-arb.c regval = readl_relaxed(pmic_arb->core + offset); pmic_arb 853 drivers/spmi/spmi-pmic-arb.c pmic_arb->ppid_to_apid[id] = apid | PMIC_ARB_APID_VALID; pmic_arb 860 drivers/spmi/spmi-pmic-arb.c pmic_arb->last_apid = apid & ~PMIC_ARB_APID_VALID; pmic_arb 865 drivers/spmi/spmi-pmic-arb.c static int pmic_arb_ppid_to_apid_v2(struct spmi_pmic_arb *pmic_arb, u16 ppid) pmic_arb 869 drivers/spmi/spmi-pmic-arb.c apid_valid = pmic_arb->ppid_to_apid[ppid]; pmic_arb 871 drivers/spmi/spmi-pmic-arb.c apid_valid = pmic_arb_find_apid(pmic_arb, ppid); pmic_arb 878 drivers/spmi/spmi-pmic-arb.c static int pmic_arb_read_apid_map_v5(struct spmi_pmic_arb *pmic_arb) pmic_arb 880 drivers/spmi/spmi-pmic-arb.c struct apid_data *apidd = pmic_arb->apid_data; pmic_arb 894 drivers/spmi/spmi-pmic-arb.c offset = pmic_arb->ver_ops->apid_map_offset(i); pmic_arb 895 drivers/spmi/spmi-pmic-arb.c if (offset >= pmic_arb->core_size) pmic_arb 898 drivers/spmi/spmi-pmic-arb.c regval = readl_relaxed(pmic_arb->core + offset); pmic_arb 904 drivers/spmi/spmi-pmic-arb.c regval = readl_relaxed(pmic_arb->cnfg + pmic_arb 910 drivers/spmi/spmi-pmic-arb.c valid = pmic_arb->ppid_to_apid[ppid] & PMIC_ARB_APID_VALID; pmic_arb 911 drivers/spmi/spmi-pmic-arb.c apid = pmic_arb->ppid_to_apid[ppid] & ~PMIC_ARB_APID_VALID; pmic_arb 912 drivers/spmi/spmi-pmic-arb.c prev_apidd = &pmic_arb->apid_data[apid]; pmic_arb 915 drivers/spmi/spmi-pmic-arb.c prev_apidd->write_ee == pmic_arb->ee) { pmic_arb 923 drivers/spmi/spmi-pmic-arb.c pmic_arb->ppid_to_apid[ppid] = i | PMIC_ARB_APID_VALID; pmic_arb 927 drivers/spmi/spmi-pmic-arb.c pmic_arb->last_apid = i; pmic_arb 931 drivers/spmi/spmi-pmic-arb.c dev_dbg(&pmic_arb->spmic->dev, "PPID APID Write-EE IRQ-EE\n"); pmic_arb 933 drivers/spmi/spmi-pmic-arb.c apid = pmic_arb->ppid_to_apid[ppid]; pmic_arb 936 drivers/spmi/spmi-pmic-arb.c apidd = &pmic_arb->apid_data[apid]; pmic_arb 937 drivers/spmi/spmi-pmic-arb.c dev_dbg(&pmic_arb->spmic->dev, "%#03X %3u %2u %2u\n", pmic_arb 945 drivers/spmi/spmi-pmic-arb.c static int pmic_arb_ppid_to_apid_v5(struct spmi_pmic_arb *pmic_arb, u16 ppid) pmic_arb 947 drivers/spmi/spmi-pmic-arb.c if (!(pmic_arb->ppid_to_apid[ppid] & PMIC_ARB_APID_VALID)) pmic_arb 950 drivers/spmi/spmi-pmic-arb.c return pmic_arb->ppid_to_apid[ppid] & ~PMIC_ARB_APID_VALID; pmic_arb 954 drivers/spmi/spmi-pmic-arb.c static int pmic_arb_offset_v2(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr, pmic_arb 962 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb_ppid_to_apid_v2(pmic_arb, ppid); pmic_arb 967 drivers/spmi/spmi-pmic-arb.c return 0x1000 * pmic_arb->ee + 0x8000 * apid; pmic_arb 974 drivers/spmi/spmi-pmic-arb.c static int pmic_arb_offset_v5(struct spmi_pmic_arb *pmic_arb, u8 sid, u16 addr, pmic_arb 982 drivers/spmi/spmi-pmic-arb.c rc = pmic_arb_ppid_to_apid_v5(pmic_arb, ppid); pmic_arb 989 drivers/spmi/spmi-pmic-arb.c offset = 0x10000 * pmic_arb->ee + 0x80 * apid; pmic_arb 1010 drivers/spmi/spmi-pmic-arb.c pmic_arb_owner_acc_status_v1(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) pmic_arb 1012 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x20 * m + 0x4 * n; pmic_arb 1016 drivers/spmi/spmi-pmic-arb.c pmic_arb_owner_acc_status_v2(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) pmic_arb 1018 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x100000 + 0x1000 * m + 0x4 * n; pmic_arb 1022 drivers/spmi/spmi-pmic-arb.c pmic_arb_owner_acc_status_v3(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) pmic_arb 1024 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x200000 + 0x1000 * m + 0x4 * n; pmic_arb 1028 drivers/spmi/spmi-pmic-arb.c pmic_arb_owner_acc_status_v5(struct spmi_pmic_arb *pmic_arb, u8 m, u16 n) pmic_arb 1030 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x10000 * m + 0x4 * n; pmic_arb 1034 drivers/spmi/spmi-pmic-arb.c pmic_arb_acc_enable_v1(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1036 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x200 + 0x4 * n; pmic_arb 1040 drivers/spmi/spmi-pmic-arb.c pmic_arb_acc_enable_v2(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1042 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x1000 * n; pmic_arb 1046 drivers/spmi/spmi-pmic-arb.c pmic_arb_acc_enable_v5(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1048 drivers/spmi/spmi-pmic-arb.c return pmic_arb->wr_base + 0x100 + 0x10000 * n; pmic_arb 1052 drivers/spmi/spmi-pmic-arb.c pmic_arb_irq_status_v1(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1054 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x600 + 0x4 * n; pmic_arb 1058 drivers/spmi/spmi-pmic-arb.c pmic_arb_irq_status_v2(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1060 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x4 + 0x1000 * n; pmic_arb 1064 drivers/spmi/spmi-pmic-arb.c pmic_arb_irq_status_v5(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1066 drivers/spmi/spmi-pmic-arb.c return pmic_arb->wr_base + 0x104 + 0x10000 * n; pmic_arb 1070 drivers/spmi/spmi-pmic-arb.c pmic_arb_irq_clear_v1(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1072 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0xA00 + 0x4 * n; pmic_arb 1076 drivers/spmi/spmi-pmic-arb.c pmic_arb_irq_clear_v2(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1078 drivers/spmi/spmi-pmic-arb.c return pmic_arb->intr + 0x8 + 0x1000 * n; pmic_arb 1082 drivers/spmi/spmi-pmic-arb.c pmic_arb_irq_clear_v5(struct spmi_pmic_arb *pmic_arb, u16 n) pmic_arb 1084 drivers/spmi/spmi-pmic-arb.c return pmic_arb->wr_base + 0x108 + 0x10000 * n; pmic_arb 1158 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb; pmic_arb 1166 drivers/spmi/spmi-pmic-arb.c ctrl = spmi_controller_alloc(&pdev->dev, sizeof(*pmic_arb)); pmic_arb 1170 drivers/spmi/spmi-pmic-arb.c pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb 1171 drivers/spmi/spmi-pmic-arb.c pmic_arb->spmic = ctrl; pmic_arb 1180 drivers/spmi/spmi-pmic-arb.c pmic_arb->core_size = resource_size(res); pmic_arb 1182 drivers/spmi/spmi-pmic-arb.c pmic_arb->ppid_to_apid = devm_kcalloc(&ctrl->dev, PMIC_ARB_MAX_PPID, pmic_arb 1183 drivers/spmi/spmi-pmic-arb.c sizeof(*pmic_arb->ppid_to_apid), pmic_arb 1185 drivers/spmi/spmi-pmic-arb.c if (!pmic_arb->ppid_to_apid) { pmic_arb 1193 drivers/spmi/spmi-pmic-arb.c pmic_arb->ver_ops = &pmic_arb_v1; pmic_arb 1194 drivers/spmi/spmi-pmic-arb.c pmic_arb->wr_base = core; pmic_arb 1195 drivers/spmi/spmi-pmic-arb.c pmic_arb->rd_base = core; pmic_arb 1197 drivers/spmi/spmi-pmic-arb.c pmic_arb->core = core; pmic_arb 1200 drivers/spmi/spmi-pmic-arb.c pmic_arb->ver_ops = &pmic_arb_v2; pmic_arb 1202 drivers/spmi/spmi-pmic-arb.c pmic_arb->ver_ops = &pmic_arb_v3; pmic_arb 1204 drivers/spmi/spmi-pmic-arb.c pmic_arb->ver_ops = &pmic_arb_v5; pmic_arb 1208 drivers/spmi/spmi-pmic-arb.c pmic_arb->rd_base = devm_ioremap_resource(&ctrl->dev, res); pmic_arb 1209 drivers/spmi/spmi-pmic-arb.c if (IS_ERR(pmic_arb->rd_base)) { pmic_arb 1210 drivers/spmi/spmi-pmic-arb.c err = PTR_ERR(pmic_arb->rd_base); pmic_arb 1216 drivers/spmi/spmi-pmic-arb.c pmic_arb->wr_base = devm_ioremap_resource(&ctrl->dev, res); pmic_arb 1217 drivers/spmi/spmi-pmic-arb.c if (IS_ERR(pmic_arb->wr_base)) { pmic_arb 1218 drivers/spmi/spmi-pmic-arb.c err = PTR_ERR(pmic_arb->wr_base); pmic_arb 1224 drivers/spmi/spmi-pmic-arb.c pmic_arb->ver_ops->ver_str, hw_ver); pmic_arb 1227 drivers/spmi/spmi-pmic-arb.c pmic_arb->intr = devm_ioremap_resource(&ctrl->dev, res); pmic_arb 1228 drivers/spmi/spmi-pmic-arb.c if (IS_ERR(pmic_arb->intr)) { pmic_arb 1229 drivers/spmi/spmi-pmic-arb.c err = PTR_ERR(pmic_arb->intr); pmic_arb 1234 drivers/spmi/spmi-pmic-arb.c pmic_arb->cnfg = devm_ioremap_resource(&ctrl->dev, res); pmic_arb 1235 drivers/spmi/spmi-pmic-arb.c if (IS_ERR(pmic_arb->cnfg)) { pmic_arb 1236 drivers/spmi/spmi-pmic-arb.c err = PTR_ERR(pmic_arb->cnfg); pmic_arb 1240 drivers/spmi/spmi-pmic-arb.c pmic_arb->irq = platform_get_irq_byname(pdev, "periph_irq"); pmic_arb 1241 drivers/spmi/spmi-pmic-arb.c if (pmic_arb->irq < 0) { pmic_arb 1242 drivers/spmi/spmi-pmic-arb.c err = pmic_arb->irq; pmic_arb 1259 drivers/spmi/spmi-pmic-arb.c pmic_arb->channel = channel; pmic_arb 1273 drivers/spmi/spmi-pmic-arb.c pmic_arb->ee = ee; pmic_arb 1281 drivers/spmi/spmi-pmic-arb.c pmic_arb->mapping_table = mapping_table; pmic_arb 1284 drivers/spmi/spmi-pmic-arb.c pmic_arb->max_apid = 0; pmic_arb 1285 drivers/spmi/spmi-pmic-arb.c pmic_arb->min_apid = PMIC_ARB_MAX_PERIPHS - 1; pmic_arb 1288 drivers/spmi/spmi-pmic-arb.c raw_spin_lock_init(&pmic_arb->lock); pmic_arb 1295 drivers/spmi/spmi-pmic-arb.c err = pmic_arb_read_apid_map_v5(pmic_arb); pmic_arb 1304 drivers/spmi/spmi-pmic-arb.c pmic_arb->domain = irq_domain_add_tree(pdev->dev.of_node, pmic_arb 1305 drivers/spmi/spmi-pmic-arb.c &pmic_arb_irq_domain_ops, pmic_arb); pmic_arb 1306 drivers/spmi/spmi-pmic-arb.c if (!pmic_arb->domain) { pmic_arb 1312 drivers/spmi/spmi-pmic-arb.c irq_set_chained_handler_and_data(pmic_arb->irq, pmic_arb_chained_irq, pmic_arb 1313 drivers/spmi/spmi-pmic-arb.c pmic_arb); pmic_arb 1321 drivers/spmi/spmi-pmic-arb.c irq_set_chained_handler_and_data(pmic_arb->irq, NULL, NULL); pmic_arb 1322 drivers/spmi/spmi-pmic-arb.c irq_domain_remove(pmic_arb->domain); pmic_arb 1331 drivers/spmi/spmi-pmic-arb.c struct spmi_pmic_arb *pmic_arb = spmi_controller_get_drvdata(ctrl); pmic_arb 1333 drivers/spmi/spmi-pmic-arb.c irq_set_chained_handler_and_data(pmic_arb->irq, NULL, NULL); pmic_arb 1334 drivers/spmi/spmi-pmic-arb.c irq_domain_remove(pmic_arb->domain);