eint 50 drivers/pinctrl/mediatek/mtk-eint.c static void __iomem *mtk_eint_get_offset(struct mtk_eint *eint, eint 57 drivers/pinctrl/mediatek/mtk-eint.c if (eint_num >= eint->hw->ap_num) eint 58 drivers/pinctrl/mediatek/mtk-eint.c eint_base = eint->hw->ap_num; eint 60 drivers/pinctrl/mediatek/mtk-eint.c reg = eint->base + offset + ((eint_num - eint_base) / 32) * 4; eint 65 drivers/pinctrl/mediatek/mtk-eint.c static unsigned int mtk_eint_can_en_debounce(struct mtk_eint *eint, eint 70 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = mtk_eint_get_offset(eint, eint_num, eint 71 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->sens); eint 78 drivers/pinctrl/mediatek/mtk-eint.c if (eint_num < eint->hw->db_cnt && sens != MTK_EINT_EDGE_SENSITIVE) eint 84 drivers/pinctrl/mediatek/mtk-eint.c static int mtk_eint_flip_edge(struct mtk_eint *eint, int hwirq) eint 89 drivers/pinctrl/mediatek/mtk-eint.c u32 port = (hwirq >> 5) & eint->hw->port_mask; eint 90 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = eint->base + (port << 2); eint 92 drivers/pinctrl/mediatek/mtk-eint.c curr_level = eint->gpio_xlate->get_gpio_state(eint->pctl, hwirq); eint 97 drivers/pinctrl/mediatek/mtk-eint.c reg_offset = eint->regs->pol_clr; eint 99 drivers/pinctrl/mediatek/mtk-eint.c reg_offset = eint->regs->pol_set; eint 102 drivers/pinctrl/mediatek/mtk-eint.c curr_level = eint->gpio_xlate->get_gpio_state(eint->pctl, eint 111 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_data_get_irq_chip_data(d); eint 113 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = mtk_eint_get_offset(eint, d->hwirq, eint 114 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->mask_set); eint 116 drivers/pinctrl/mediatek/mtk-eint.c eint->cur_mask[d->hwirq >> 5] &= ~mask; eint 123 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_data_get_irq_chip_data(d); eint 125 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = mtk_eint_get_offset(eint, d->hwirq, eint 126 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->mask_clr); eint 128 drivers/pinctrl/mediatek/mtk-eint.c eint->cur_mask[d->hwirq >> 5] |= mask; eint 132 drivers/pinctrl/mediatek/mtk-eint.c if (eint->dual_edge[d->hwirq]) eint 133 drivers/pinctrl/mediatek/mtk-eint.c mtk_eint_flip_edge(eint, d->hwirq); eint 136 drivers/pinctrl/mediatek/mtk-eint.c static unsigned int mtk_eint_get_mask(struct mtk_eint *eint, eint 140 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = mtk_eint_get_offset(eint, eint_num, eint 141 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->mask); eint 148 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_data_get_irq_chip_data(d); eint 150 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = mtk_eint_get_offset(eint, d->hwirq, eint 151 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->ack); eint 158 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_data_get_irq_chip_data(d); eint 164 drivers/pinctrl/mediatek/mtk-eint.c dev_err(eint->dev, eint 171 drivers/pinctrl/mediatek/mtk-eint.c eint->dual_edge[d->hwirq] = 1; eint 173 drivers/pinctrl/mediatek/mtk-eint.c eint->dual_edge[d->hwirq] = 0; eint 176 drivers/pinctrl/mediatek/mtk-eint.c reg = mtk_eint_get_offset(eint, d->hwirq, eint->regs->pol_clr); eint 179 drivers/pinctrl/mediatek/mtk-eint.c reg = mtk_eint_get_offset(eint, d->hwirq, eint->regs->pol_set); eint 184 drivers/pinctrl/mediatek/mtk-eint.c reg = mtk_eint_get_offset(eint, d->hwirq, eint->regs->sens_clr); eint 187 drivers/pinctrl/mediatek/mtk-eint.c reg = mtk_eint_get_offset(eint, d->hwirq, eint->regs->sens_set); eint 191 drivers/pinctrl/mediatek/mtk-eint.c if (eint->dual_edge[d->hwirq]) eint 192 drivers/pinctrl/mediatek/mtk-eint.c mtk_eint_flip_edge(eint, d->hwirq); eint 199 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_data_get_irq_chip_data(d); eint 204 drivers/pinctrl/mediatek/mtk-eint.c eint->wake_mask[reg] |= BIT(shift); eint 206 drivers/pinctrl/mediatek/mtk-eint.c eint->wake_mask[reg] &= ~BIT(shift); eint 211 drivers/pinctrl/mediatek/mtk-eint.c static void mtk_eint_chip_write_mask(const struct mtk_eint *eint, eint 217 drivers/pinctrl/mediatek/mtk-eint.c for (port = 0; port < eint->hw->ports; port++) { eint 219 drivers/pinctrl/mediatek/mtk-eint.c writel_relaxed(~buf[port], reg + eint->regs->mask_set); eint 220 drivers/pinctrl/mediatek/mtk-eint.c writel_relaxed(buf[port], reg + eint->regs->mask_clr); eint 226 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_data_get_irq_chip_data(d); eint 231 drivers/pinctrl/mediatek/mtk-eint.c err = eint->gpio_xlate->get_gpio_n(eint->pctl, d->hwirq, eint 234 drivers/pinctrl/mediatek/mtk-eint.c dev_err(eint->dev, "Can not find pin\n"); eint 240 drivers/pinctrl/mediatek/mtk-eint.c dev_err(eint->dev, "unable to lock HW IRQ %lu for IRQ\n", eint 245 drivers/pinctrl/mediatek/mtk-eint.c err = eint->gpio_xlate->set_gpio_as_eint(eint->pctl, d->hwirq); eint 247 drivers/pinctrl/mediatek/mtk-eint.c dev_err(eint->dev, "Can not eint mode\n"); eint 256 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_data_get_irq_chip_data(d); eint 260 drivers/pinctrl/mediatek/mtk-eint.c eint->gpio_xlate->get_gpio_n(eint->pctl, d->hwirq, &gpio_n, eint 278 drivers/pinctrl/mediatek/mtk-eint.c static unsigned int mtk_eint_hw_init(struct mtk_eint *eint) eint 280 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = eint->base + eint->regs->dom_en; eint 283 drivers/pinctrl/mediatek/mtk-eint.c for (i = 0; i < eint->hw->ap_num; i += 32) { eint 292 drivers/pinctrl/mediatek/mtk-eint.c mtk_eint_debounce_process(struct mtk_eint *eint, int index) eint 297 drivers/pinctrl/mediatek/mtk-eint.c ctrl_offset = (index / 4) * 4 + eint->regs->dbnc_ctrl; eint 298 drivers/pinctrl/mediatek/mtk-eint.c dbnc = readl(eint->base + ctrl_offset); eint 301 drivers/pinctrl/mediatek/mtk-eint.c ctrl_offset = (index / 4) * 4 + eint->regs->dbnc_set; eint 303 drivers/pinctrl/mediatek/mtk-eint.c writel(rst, eint->base + ctrl_offset); eint 310 drivers/pinctrl/mediatek/mtk-eint.c struct mtk_eint *eint = irq_desc_get_handler_data(desc); eint 313 drivers/pinctrl/mediatek/mtk-eint.c void __iomem *reg = mtk_eint_get_offset(eint, 0, eint->regs->stat); eint 317 drivers/pinctrl/mediatek/mtk-eint.c for (eint_num = 0; eint_num < eint->hw->ap_num; eint_num += 32, eint 324 drivers/pinctrl/mediatek/mtk-eint.c virq = irq_find_mapping(eint->domain, index); eint 333 drivers/pinctrl/mediatek/mtk-eint.c if (eint->wake_mask[mask_offset] & BIT(offset) && eint 334 drivers/pinctrl/mediatek/mtk-eint.c !(eint->cur_mask[mask_offset] & BIT(offset))) { eint 336 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->stat + eint 337 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->mask_set); eint 340 drivers/pinctrl/mediatek/mtk-eint.c dual_edge = eint->dual_edge[index]; eint 346 drivers/pinctrl/mediatek/mtk-eint.c writel(BIT(offset), reg - eint->regs->stat + eint 347 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->soft_clr); eint 350 drivers/pinctrl/mediatek/mtk-eint.c eint->gpio_xlate->get_gpio_state(eint->pctl, eint 357 drivers/pinctrl/mediatek/mtk-eint.c curr_level = mtk_eint_flip_edge(eint, index); eint 365 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->stat + eint 366 drivers/pinctrl/mediatek/mtk-eint.c eint->regs->soft_set); eint 369 drivers/pinctrl/mediatek/mtk-eint.c if (index < eint->hw->db_cnt) eint 370 drivers/pinctrl/mediatek/mtk-eint.c mtk_eint_debounce_process(eint, index); eint 376 drivers/pinctrl/mediatek/mtk-eint.c int mtk_eint_do_suspend(struct mtk_eint *eint) eint 378 drivers/pinctrl/mediatek/mtk-eint.c mtk_eint_chip_write_mask(eint, eint->base, eint->wake_mask); eint 383 drivers/pinctrl/mediatek/mtk-eint.c int mtk_eint_do_resume(struct mtk_eint *eint) eint 385 drivers/pinctrl/mediatek/mtk-eint.c mtk_eint_chip_write_mask(eint, eint->base, eint->cur_mask); eint 390 drivers/pinctrl/mediatek/mtk-eint.c int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_num, eint 400 drivers/pinctrl/mediatek/mtk-eint.c virq = irq_find_mapping(eint->domain, eint_num); eint 404 drivers/pinctrl/mediatek/mtk-eint.c set_offset = (eint_num / 4) * 4 + eint->regs->dbnc_set; eint 405 drivers/pinctrl/mediatek/mtk-eint.c clr_offset = (eint_num / 4) * 4 + eint->regs->dbnc_clr; eint 407 drivers/pinctrl/mediatek/mtk-eint.c if (!mtk_eint_can_en_debounce(eint, eint_num)) eint 418 drivers/pinctrl/mediatek/mtk-eint.c if (!mtk_eint_get_mask(eint, eint_num)) { eint 426 drivers/pinctrl/mediatek/mtk-eint.c writel(clr_bit, eint->base + clr_offset); eint 431 drivers/pinctrl/mediatek/mtk-eint.c writel(rst | bit, eint->base + set_offset); eint 444 drivers/pinctrl/mediatek/mtk-eint.c int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n) eint 448 drivers/pinctrl/mediatek/mtk-eint.c irq = irq_find_mapping(eint->domain, eint_n); eint 455 drivers/pinctrl/mediatek/mtk-eint.c int mtk_eint_do_init(struct mtk_eint *eint) eint 460 drivers/pinctrl/mediatek/mtk-eint.c if (!eint->regs) eint 461 drivers/pinctrl/mediatek/mtk-eint.c eint->regs = &mtk_generic_eint_regs; eint 463 drivers/pinctrl/mediatek/mtk-eint.c eint->wake_mask = devm_kcalloc(eint->dev, eint->hw->ports, eint 464 drivers/pinctrl/mediatek/mtk-eint.c sizeof(*eint->wake_mask), GFP_KERNEL); eint 465 drivers/pinctrl/mediatek/mtk-eint.c if (!eint->wake_mask) eint 468 drivers/pinctrl/mediatek/mtk-eint.c eint->cur_mask = devm_kcalloc(eint->dev, eint->hw->ports, eint 469 drivers/pinctrl/mediatek/mtk-eint.c sizeof(*eint->cur_mask), GFP_KERNEL); eint 470 drivers/pinctrl/mediatek/mtk-eint.c if (!eint->cur_mask) eint 473 drivers/pinctrl/mediatek/mtk-eint.c eint->dual_edge = devm_kcalloc(eint->dev, eint->hw->ap_num, eint 475 drivers/pinctrl/mediatek/mtk-eint.c if (!eint->dual_edge) eint 478 drivers/pinctrl/mediatek/mtk-eint.c eint->domain = irq_domain_add_linear(eint->dev->of_node, eint 479 drivers/pinctrl/mediatek/mtk-eint.c eint->hw->ap_num, eint 481 drivers/pinctrl/mediatek/mtk-eint.c if (!eint->domain) eint 484 drivers/pinctrl/mediatek/mtk-eint.c mtk_eint_hw_init(eint); eint 485 drivers/pinctrl/mediatek/mtk-eint.c for (i = 0; i < eint->hw->ap_num; i++) { eint 486 drivers/pinctrl/mediatek/mtk-eint.c int virq = irq_create_mapping(eint->domain, i); eint 490 drivers/pinctrl/mediatek/mtk-eint.c irq_set_chip_data(virq, eint); eint 493 drivers/pinctrl/mediatek/mtk-eint.c irq_set_chained_handler_and_data(eint->irq, mtk_eint_irq_handler, eint 494 drivers/pinctrl/mediatek/mtk-eint.c eint); eint 72 drivers/pinctrl/mediatek/mtk-eint.h int mtk_eint_do_init(struct mtk_eint *eint); eint 73 drivers/pinctrl/mediatek/mtk-eint.h int mtk_eint_do_suspend(struct mtk_eint *eint); eint 74 drivers/pinctrl/mediatek/mtk-eint.h int mtk_eint_do_resume(struct mtk_eint *eint); eint 75 drivers/pinctrl/mediatek/mtk-eint.h int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n, eint 77 drivers/pinctrl/mediatek/mtk-eint.h int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n); eint 80 drivers/pinctrl/mediatek/mtk-eint.h static inline int mtk_eint_do_init(struct mtk_eint *eint) eint 85 drivers/pinctrl/mediatek/mtk-eint.h static inline int mtk_eint_do_suspend(struct mtk_eint *eint) eint 90 drivers/pinctrl/mediatek/mtk-eint.h static inline int mtk_eint_do_resume(struct mtk_eint *eint) eint 95 drivers/pinctrl/mediatek/mtk-eint.h static inline int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n, eint 101 drivers/pinctrl/mediatek/mtk-eint.h static inline int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n) eint 474 drivers/pinctrl/mediatek/pinctrl-moore.c if (!hw->eint) eint 479 drivers/pinctrl/mediatek/pinctrl-moore.c if (desc->eint.eint_n == (u16)EINT_NA) eint 482 drivers/pinctrl/mediatek/pinctrl-moore.c return mtk_eint_find_irq(hw->eint, desc->eint.eint_n); eint 494 drivers/pinctrl/mediatek/pinctrl-moore.c if (!hw->eint || eint 496 drivers/pinctrl/mediatek/pinctrl-moore.c desc->eint.eint_n == (u16)EINT_NA) eint 501 drivers/pinctrl/mediatek/pinctrl-moore.c return mtk_eint_set_debounce(hw->eint, desc->eint.eint_n, debounce); eint 32 drivers/pinctrl/mediatek/pinctrl-moore.h .eint = { \ eint 221 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c if (desc[i].eint.eint_n == eint_n) eint 240 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c if (desc[eint_n].eint.eint_n == eint_n) eint 284 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c desc->eint.eint_m); eint 322 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c hw->eint = devm_kzalloc(hw->dev, sizeof(*hw->eint), GFP_KERNEL); eint 323 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c if (!hw->eint) eint 332 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c hw->eint->base = devm_ioremap_resource(&pdev->dev, res); eint 333 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c if (IS_ERR(hw->eint->base)) eint 334 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c return PTR_ERR(hw->eint->base); eint 336 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c hw->eint->irq = irq_of_parse_and_map(np, 0); eint 337 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c if (!hw->eint->irq) eint 343 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c hw->eint->dev = &pdev->dev; eint 344 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c hw->eint->hw = hw->soc->eint_hw; eint 345 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c hw->eint->pctl = hw; eint 346 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c hw->eint->gpio_xlate = &mtk_eint_xt; eint 348 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c return mtk_eint_do_init(hw->eint); eint 178 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h struct mtk_eint_desc eint; eint 246 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h struct mtk_eint *eint; eint 705 drivers/pinctrl/mediatek/pinctrl-mtk-common.c if (pin->eint.eintnum == eint_num) eint 832 drivers/pinctrl/mediatek/pinctrl-mtk-common.c if (pin->eint.eintnum == NO_EINT_SUPPORT) eint 835 drivers/pinctrl/mediatek/pinctrl-mtk-common.c eint_n = pin->eint.eintnum; eint 837 drivers/pinctrl/mediatek/pinctrl-mtk-common.c return mtk_eint_find_irq(pctl->eint, eint_n); eint 852 drivers/pinctrl/mediatek/pinctrl-mtk-common.c if (pin->eint.eintnum == NO_EINT_SUPPORT) eint 856 drivers/pinctrl/mediatek/pinctrl-mtk-common.c eint_n = pin->eint.eintnum; eint 858 drivers/pinctrl/mediatek/pinctrl-mtk-common.c return mtk_eint_set_debounce(pctl->eint, eint_n, debounce); eint 879 drivers/pinctrl/mediatek/pinctrl-mtk-common.c return mtk_eint_do_suspend(pctl->eint); eint 886 drivers/pinctrl/mediatek/pinctrl-mtk-common.c return mtk_eint_do_resume(pctl->eint); eint 965 drivers/pinctrl/mediatek/pinctrl-mtk-common.c mtk_pmx_set_mode(pctl->pctl_dev, pin->pin.number, pin->eint.eintmux); eint 990 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint = devm_kzalloc(pctl->dev, sizeof(*pctl->eint), GFP_KERNEL); eint 991 drivers/pinctrl/mediatek/pinctrl-mtk-common.c if (!pctl->eint) eint 995 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint->base = devm_ioremap_resource(&pdev->dev, res); eint 996 drivers/pinctrl/mediatek/pinctrl-mtk-common.c if (IS_ERR(pctl->eint->base)) eint 997 drivers/pinctrl/mediatek/pinctrl-mtk-common.c return PTR_ERR(pctl->eint->base); eint 999 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint->irq = irq_of_parse_and_map(np, 0); eint 1000 drivers/pinctrl/mediatek/pinctrl-mtk-common.c if (!pctl->eint->irq) eint 1003 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint->dev = &pdev->dev; eint 1008 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint->regs = pctl->devdata->eint_regs; eint 1009 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint->hw = &pctl->devdata->eint_hw; eint 1010 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint->pctl = pctl; eint 1011 drivers/pinctrl/mediatek/pinctrl-mtk-common.c pctl->eint->gpio_xlate = &mtk_eint_xt; eint 1013 drivers/pinctrl/mediatek/pinctrl-mtk-common.c return mtk_eint_do_init(pctl->eint); eint 37 drivers/pinctrl/mediatek/pinctrl-mtk-common.h const struct mtk_desc_eint eint; eint 44 drivers/pinctrl/mediatek/pinctrl-mtk-common.h .eint = _eint, \ eint 270 drivers/pinctrl/mediatek/pinctrl-mtk-common.h struct mtk_eint *eint; eint 748 drivers/pinctrl/mediatek/pinctrl-paris.c if (!hw->eint) eint 753 drivers/pinctrl/mediatek/pinctrl-paris.c if (desc->eint.eint_n == EINT_NA) eint 756 drivers/pinctrl/mediatek/pinctrl-paris.c return mtk_eint_find_irq(hw->eint, desc->eint.eint_n); eint 768 drivers/pinctrl/mediatek/pinctrl-paris.c if (!hw->eint || eint 770 drivers/pinctrl/mediatek/pinctrl-paris.c desc->eint.eint_n == EINT_NA) eint 775 drivers/pinctrl/mediatek/pinctrl-paris.c return mtk_eint_set_debounce(hw->eint, desc->eint.eint_n, debounce); eint 934 drivers/pinctrl/mediatek/pinctrl-paris.c return mtk_eint_do_suspend(pctl->eint); eint 941 drivers/pinctrl/mediatek/pinctrl-paris.c return mtk_eint_do_resume(pctl->eint); eint 46 drivers/pinctrl/mediatek/pinctrl-paris.h .eint = _eint, \