Lines Matching refs:ipa
27 #include "ipa.h"
36 * @ipa: IPA pointer
41 struct ipa *ipa;
49 struct ipa *ipa = interrupt->ipa;
54 reg = ipa_reg(ipa, IPA_IRQ_CLR);
63 iowrite32(mask, ipa->reg_virt + offset);
64 ipa_uc_interrupt_handler(ipa, irq_id);
73 ipa_power_suspend_handler(ipa, irq_id);
77 iowrite32(mask, ipa->reg_virt + offset);
86 struct ipa *ipa = interrupt->ipa;
95 dev = &ipa->pdev->dev;
104 reg = ipa_reg(ipa, IPA_IRQ_STTS);
106 pending = ioread32(ipa->reg_virt + offset);
115 pending = ioread32(ipa->reg_virt + offset);
122 reg = ipa_reg(ipa, IPA_IRQ_CLR);
123 iowrite32(pending, ipa->reg_virt + reg_offset(reg));
132 static void ipa_interrupt_enabled_update(struct ipa *ipa)
134 const struct reg *reg = ipa_reg(ipa, IPA_IRQ_EN);
136 iowrite32(ipa->interrupt->enabled, ipa->reg_virt + reg_offset(reg));
140 void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq)
143 ipa->interrupt->enabled |= BIT(ipa_irq);
144 ipa_interrupt_enabled_update(ipa);
148 void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id ipa_irq)
151 ipa->interrupt->enabled &= ~BIT(ipa_irq);
152 ipa_interrupt_enabled_update(ipa);
155 void ipa_interrupt_irq_disable(struct ipa *ipa)
157 disable_irq(ipa->interrupt->irq);
160 void ipa_interrupt_irq_enable(struct ipa *ipa)
162 enable_irq(ipa->interrupt->irq);
169 struct ipa *ipa = interrupt->ipa;
176 WARN_ON(!test_bit(endpoint_id, ipa->available));
179 if (ipa->version == IPA_VERSION_3_0)
182 reg = ipa_reg(ipa, IRQ_SUSPEND_EN);
184 val = ioread32(ipa->reg_virt + offset);
191 iowrite32(val, ipa->reg_virt + offset);
211 struct ipa *ipa = interrupt->ipa;
215 unit_count = DIV_ROUND_UP(ipa->endpoint_count, 32);
220 reg = ipa_reg(ipa, IRQ_SUSPEND_INFO);
221 val = ioread32(ipa->reg_virt + reg_n_offset(reg, unit));
224 if (ipa->version == IPA_VERSION_3_0)
227 reg = ipa_reg(ipa, IRQ_SUSPEND_CLR);
228 iowrite32(val, ipa->reg_virt + reg_n_offset(reg, unit));
239 struct ipa_interrupt *ipa_interrupt_config(struct ipa *ipa)
241 struct device *dev = &ipa->pdev->dev;
247 ret = platform_get_irq_byname(ipa->pdev, "ipa");
249 dev_err(dev, "DT error %d getting \"ipa\" IRQ property\n",
258 interrupt->ipa = ipa;
262 reg = ipa_reg(ipa, IPA_IRQ_EN);
263 iowrite32(0, ipa->reg_virt + reg_offset(reg));
266 "ipa", interrupt);
268 dev_err(dev, "error %d requesting \"ipa\" IRQ\n", ret);
274 dev_err(dev, "error %d registering \"ipa\" IRQ as wakeirq\n", ret);
291 struct device *dev = &interrupt->ipa->pdev->dev;