Lines Matching refs:data

109 					struct bcm7120_l2_intc_data *data,  in bcm7120_l2_intc_init_one()  argument
124 for (idx = 0; idx < data->n_words; idx++) { in bcm7120_l2_intc_init_one()
125 if (data->map_mask_prop) { in bcm7120_l2_intc_init_one()
126 data->irq_map_mask[idx] |= in bcm7120_l2_intc_init_one()
127 be32_to_cpup(data->map_mask_prop + in bcm7120_l2_intc_init_one()
128 irq * data->n_words + idx); in bcm7120_l2_intc_init_one()
130 data->irq_map_mask[idx] = 0xffffffff; in bcm7120_l2_intc_init_one()
134 irq_set_handler_data(parent_irq, data); in bcm7120_l2_intc_init_one()
141 struct bcm7120_l2_intc_data *data) in bcm7120_l2_intc_iomap_7120() argument
145 data->map_base[0] = of_iomap(dn, 0); in bcm7120_l2_intc_iomap_7120()
146 if (!data->map_base[0]) { in bcm7120_l2_intc_iomap_7120()
151 data->pair_base[0] = data->map_base[0]; in bcm7120_l2_intc_iomap_7120()
152 data->en_offset[0] = IRQEN; in bcm7120_l2_intc_iomap_7120()
153 data->stat_offset[0] = IRQSTAT; in bcm7120_l2_intc_iomap_7120()
154 data->n_words = 1; in bcm7120_l2_intc_iomap_7120()
157 data->irq_fwd_mask, data->n_words); in bcm7120_l2_intc_iomap_7120()
164 data->map_mask_prop = of_get_property(dn, "brcm,int-map-mask", &ret); in bcm7120_l2_intc_iomap_7120()
165 if (!data->map_mask_prop || in bcm7120_l2_intc_iomap_7120()
166 (ret != (sizeof(__be32) * data->num_parent_irqs * data->n_words))) { in bcm7120_l2_intc_iomap_7120()
175 struct bcm7120_l2_intc_data *data) in bcm7120_l2_intc_iomap_3380() argument
185 data->map_base[map_idx + 0] = en; in bcm7120_l2_intc_iomap_3380()
186 data->map_base[map_idx + 1] = stat; in bcm7120_l2_intc_iomap_3380()
191 data->pair_base[gc_idx] = base; in bcm7120_l2_intc_iomap_3380()
192 data->en_offset[gc_idx] = en - base; in bcm7120_l2_intc_iomap_3380()
193 data->stat_offset[gc_idx] = stat - base; in bcm7120_l2_intc_iomap_3380()
201 data->n_words = gc_idx; in bcm7120_l2_intc_iomap_3380()
212 struct bcm7120_l2_intc_data *data; in bcm7120_l2_intc_probe() local
218 data = kzalloc(sizeof(*data), GFP_KERNEL); in bcm7120_l2_intc_probe()
219 if (!data) in bcm7120_l2_intc_probe()
222 data->num_parent_irqs = of_irq_count(dn); in bcm7120_l2_intc_probe()
223 if (data->num_parent_irqs <= 0) { in bcm7120_l2_intc_probe()
229 ret = iomap_regs_fn(dn, data); in bcm7120_l2_intc_probe()
233 for (idx = 0; idx < data->n_words; idx++) { in bcm7120_l2_intc_probe()
234 __raw_writel(data->irq_fwd_mask[idx], in bcm7120_l2_intc_probe()
235 data->pair_base[idx] + in bcm7120_l2_intc_probe()
236 data->en_offset[idx]); in bcm7120_l2_intc_probe()
239 for (irq = 0; irq < data->num_parent_irqs; irq++) { in bcm7120_l2_intc_probe()
240 ret = bcm7120_l2_intc_init_one(dn, data, irq); in bcm7120_l2_intc_probe()
245 data->domain = irq_domain_add_linear(dn, IRQS_PER_WORD * data->n_words, in bcm7120_l2_intc_probe()
247 if (!data->domain) { in bcm7120_l2_intc_probe()
259 ret = irq_alloc_domain_generic_chips(data->domain, IRQS_PER_WORD, 1, in bcm7120_l2_intc_probe()
267 data->can_wake = true; in bcm7120_l2_intc_probe()
269 for (idx = 0; idx < data->n_words; idx++) { in bcm7120_l2_intc_probe()
271 gc = irq_get_domain_generic_chip(data->domain, irq); in bcm7120_l2_intc_probe()
273 gc->unused = 0xffffffff & ~data->irq_map_mask[idx]; in bcm7120_l2_intc_probe()
274 gc->private = data; in bcm7120_l2_intc_probe()
277 gc->reg_base = data->pair_base[idx]; in bcm7120_l2_intc_probe()
278 ct->regs.mask = data->en_offset[idx]; in bcm7120_l2_intc_probe()
286 if (data->can_wake) { in bcm7120_l2_intc_probe()
297 intc_name, data->map_base[0], data->num_parent_irqs); in bcm7120_l2_intc_probe()
302 irq_domain_remove(data->domain); in bcm7120_l2_intc_probe()
305 if (data->map_base[idx]) in bcm7120_l2_intc_probe()
306 iounmap(data->map_base[idx]); in bcm7120_l2_intc_probe()
308 kfree(data); in bcm7120_l2_intc_probe()