Lines Matching refs:ipa

28 #include "ipa.h"
37 * @ipa: IPA pointer
42 struct ipa *ipa;
50 struct ipa *ipa = interrupt->ipa;
54 unit_count = DIV_ROUND_UP(ipa->endpoint_count, 32);
59 reg = ipa_reg(ipa, IRQ_SUSPEND_INFO);
60 val = ioread32(ipa->reg_virt + reg_n_offset(reg, unit));
63 if (!val || ipa->version == IPA_VERSION_3_0)
66 reg = ipa_reg(ipa, IRQ_SUSPEND_CLR);
67 iowrite32(val, ipa->reg_virt + reg_n_offset(reg, unit));
74 struct ipa *ipa = interrupt->ipa;
79 reg = ipa_reg(ipa, IPA_IRQ_CLR);
88 iowrite32(mask, ipa->reg_virt + offset);
89 ipa_uc_interrupt_handler(ipa, irq_id);
102 iowrite32(mask, ipa->reg_virt + offset);
111 struct ipa *ipa = interrupt->ipa;
113 struct device *dev = ipa->dev;
128 reg = ipa_reg(ipa, IPA_IRQ_STTS);
130 pending = ioread32(ipa->reg_virt + offset);
139 pending = ioread32(ipa->reg_virt + offset);
146 reg = ipa_reg(ipa, IPA_IRQ_CLR);
147 iowrite32(pending, ipa->reg_virt + reg_offset(reg));
156 static void ipa_interrupt_enabled_update(struct ipa *ipa)
158 const struct reg *reg = ipa_reg(ipa, IPA_IRQ_EN);
160 iowrite32(ipa->interrupt->enabled, ipa->reg_virt + reg_offset(reg));
164 void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq)
167 ipa->interrupt->enabled |= BIT(ipa_irq);
168 ipa_interrupt_enabled_update(ipa);
172 void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id ipa_irq)
175 ipa->interrupt->enabled &= ~BIT(ipa_irq);
176 ipa_interrupt_enabled_update(ipa);
179 void ipa_interrupt_irq_disable(struct ipa *ipa)
181 disable_irq(ipa->interrupt->irq);
184 void ipa_interrupt_irq_enable(struct ipa *ipa)
186 enable_irq(ipa->interrupt->irq);
193 struct ipa *ipa = interrupt->ipa;
200 WARN_ON(!test_bit(endpoint_id, ipa->available));
203 if (ipa->version == IPA_VERSION_3_0)
206 reg = ipa_reg(ipa, IRQ_SUSPEND_EN);
208 val = ioread32(ipa->reg_virt + offset);
215 iowrite32(val, ipa->reg_virt + offset);
239 int ipa_interrupt_config(struct ipa *ipa)
241 struct ipa_interrupt *interrupt = ipa->interrupt;
243 struct device *dev = ipa->dev;
247 interrupt->ipa = ipa;
250 reg = ipa_reg(ipa, IPA_IRQ_EN);
251 iowrite32(0, ipa->reg_virt + reg_offset(reg));
254 "ipa", interrupt);
256 dev_err(dev, "error %d requesting \"ipa\" IRQ\n", ret);
262 dev_err(dev, "error %d registering \"ipa\" IRQ as wakeirq\n",
267 ipa->interrupt = interrupt;
280 void ipa_interrupt_deconfig(struct ipa *ipa)
282 struct ipa_interrupt *interrupt = ipa->interrupt;
283 struct device *dev = ipa->dev;
285 ipa->interrupt = NULL;
298 irq = platform_get_irq_byname(pdev, "ipa");
300 dev_err(dev, "DT error %d getting \"ipa\" IRQ property\n", irq);