Lines Matching refs:ipa

43 	struct ipa *ipa;  member
52 struct ipa *ipa = interrupt->ipa; in ipa_interrupt_suspend_clear_all() local
56 unit_count = DIV_ROUND_UP(ipa->endpoint_count, 32); in ipa_interrupt_suspend_clear_all()
61 reg = ipa_reg(ipa, IRQ_SUSPEND_INFO); in ipa_interrupt_suspend_clear_all()
62 val = ioread32(ipa->reg_virt + reg_n_offset(reg, unit)); in ipa_interrupt_suspend_clear_all()
65 if (!val || ipa->version == IPA_VERSION_3_0) in ipa_interrupt_suspend_clear_all()
68 reg = ipa_reg(ipa, IRQ_SUSPEND_CLR); in ipa_interrupt_suspend_clear_all()
69 iowrite32(val, ipa->reg_virt + reg_n_offset(reg, unit)); in ipa_interrupt_suspend_clear_all()
76 struct ipa *ipa = interrupt->ipa; in ipa_interrupt_process() local
81 reg = ipa_reg(ipa, IPA_IRQ_CLR); in ipa_interrupt_process()
90 iowrite32(mask, ipa->reg_virt + offset); in ipa_interrupt_process()
91 ipa_uc_interrupt_handler(ipa, irq_id); in ipa_interrupt_process()
104 iowrite32(mask, ipa->reg_virt + offset); in ipa_interrupt_process()
113 struct ipa *ipa = interrupt->ipa; in ipa_isr_thread() local
115 struct device *dev = ipa->dev; in ipa_isr_thread()
130 reg = ipa_reg(ipa, IPA_IRQ_STTS); in ipa_isr_thread()
132 pending = ioread32(ipa->reg_virt + offset); in ipa_isr_thread()
141 pending = ioread32(ipa->reg_virt + offset); in ipa_isr_thread()
148 reg = ipa_reg(ipa, IPA_IRQ_CLR); in ipa_isr_thread()
149 iowrite32(pending, ipa->reg_virt + reg_offset(reg)); in ipa_isr_thread()
158 static void ipa_interrupt_enabled_update(struct ipa *ipa) in ipa_interrupt_enabled_update() argument
160 const struct reg *reg = ipa_reg(ipa, IPA_IRQ_EN); in ipa_interrupt_enabled_update()
162 iowrite32(ipa->interrupt->enabled, ipa->reg_virt + reg_offset(reg)); in ipa_interrupt_enabled_update()
166 void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq) in ipa_interrupt_enable() argument
169 ipa->interrupt->enabled |= BIT(ipa_irq); in ipa_interrupt_enable()
170 ipa_interrupt_enabled_update(ipa); in ipa_interrupt_enable()
174 void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id ipa_irq) in ipa_interrupt_disable() argument
177 ipa->interrupt->enabled &= ~BIT(ipa_irq); in ipa_interrupt_disable()
178 ipa_interrupt_enabled_update(ipa); in ipa_interrupt_disable()
181 void ipa_interrupt_irq_disable(struct ipa *ipa) in ipa_interrupt_irq_disable() argument
183 disable_irq(ipa->interrupt->irq); in ipa_interrupt_irq_disable()
186 void ipa_interrupt_irq_enable(struct ipa *ipa) in ipa_interrupt_irq_enable() argument
188 enable_irq(ipa->interrupt->irq); in ipa_interrupt_irq_enable()
195 struct ipa *ipa = interrupt->ipa; in ipa_interrupt_suspend_control() local
203 WARN_ON(!test_bit(endpoint_id, ipa->available)); in ipa_interrupt_suspend_control()
206 if (ipa->version == IPA_VERSION_3_0) in ipa_interrupt_suspend_control()
209 weight = bitmap_weight(interrupt->suspend_enabled, ipa->endpoint_count); in ipa_interrupt_suspend_control()
211 ipa_interrupt_disable(ipa, IPA_IRQ_TX_SUSPEND); in ipa_interrupt_suspend_control()
213 reg = ipa_reg(ipa, IRQ_SUSPEND_EN); in ipa_interrupt_suspend_control()
215 val = ioread32(ipa->reg_virt + offset); in ipa_interrupt_suspend_control()
223 iowrite32(val, ipa->reg_virt + offset); in ipa_interrupt_suspend_control()
226 ipa_interrupt_enable(ipa, IPA_IRQ_TX_SUSPEND); in ipa_interrupt_suspend_control()
250 int ipa_interrupt_config(struct ipa *ipa) in ipa_interrupt_config() argument
252 struct ipa_interrupt *interrupt = ipa->interrupt; in ipa_interrupt_config()
254 struct device *dev = ipa->dev; in ipa_interrupt_config()
258 interrupt->ipa = ipa; in ipa_interrupt_config()
262 interrupt->suspend_enabled = bitmap_zalloc(ipa->endpoint_count, in ipa_interrupt_config()
270 reg = ipa_reg(ipa, IPA_IRQ_EN); in ipa_interrupt_config()
271 iowrite32(0, ipa->reg_virt + reg_offset(reg)); in ipa_interrupt_config()
293 ipa->interrupt = interrupt; in ipa_interrupt_config()
310 void ipa_interrupt_deconfig(struct ipa *ipa) in ipa_interrupt_deconfig() argument
312 struct ipa_interrupt *interrupt = ipa->interrupt; in ipa_interrupt_deconfig()
313 struct device *dev = ipa->dev; in ipa_interrupt_deconfig()
315 ipa->interrupt = NULL; in ipa_interrupt_deconfig()