Lines Matching full:hwirq
63 static void sg204x_msi_free_hwirq(struct sg204x_msi_chipdata *data, int hwirq, int num_req) in sg204x_msi_free_hwirq() argument
66 bitmap_release_region(data->msi_map, hwirq, get_count_order(num_req)); in sg204x_msi_free_hwirq()
72 int bit_off = d->hwirq; in sg2042_msi_irq_ack()
85 msg->data = 1 << d->hwirq; in sg2042_msi_irq_compose_msi_msg()
105 writel(0, (u32 __iomem *)data->reg_clr + d->hwirq); in sg2044_msi_irq_ack()
112 phys_addr_t doorbell = data->doorbell_addr + 4 * (d->hwirq / 32); in sg2044_msi_irq_compose_msi_msg()
116 msg->data = d->hwirq % 32; in sg2044_msi_irq_compose_msi_msg()
132 static int sg204x_msi_parent_domain_alloc(struct irq_domain *domain, unsigned int virq, int hwirq) in sg204x_msi_parent_domain_alloc() argument
141 fwspec.param[0] = data->irq_first + hwirq; in sg204x_msi_parent_domain_alloc()
156 int hwirq, err, i; in sg204x_msi_middle_domain_alloc() local
158 hwirq = sg204x_msi_allocate_hwirq(data, nr_irqs); in sg204x_msi_middle_domain_alloc()
159 if (hwirq < 0) in sg204x_msi_middle_domain_alloc()
160 return hwirq; in sg204x_msi_middle_domain_alloc()
163 err = sg204x_msi_parent_domain_alloc(domain, virq + i, hwirq + i); in sg204x_msi_middle_domain_alloc()
167 irq_domain_set_hwirq_and_chip(domain, virq + i, hwirq + i, in sg204x_msi_middle_domain_alloc()
173 sg204x_msi_free_hwirq(data, hwirq, nr_irqs); in sg204x_msi_middle_domain_alloc()
185 sg204x_msi_free_hwirq(data, d->hwirq, nr_irqs); in sg204x_msi_middle_domain_free()