Lines Matching refs:data
61 struct bcm7120_l1_intc_data *data = irq_desc_get_handler_data(desc); in bcm7120_l2_intc_irq_handle() local
62 struct bcm7120_l2_intc_data *b = data->b; in bcm7120_l2_intc_irq_handle()
78 data->irq_map_mask[idx]; in bcm7120_l2_intc_irq_handle()
113 struct bcm7120_l2_intc_data *data, in bcm7120_l2_intc_init_one() argument
116 struct bcm7120_l1_intc_data *l1_data = &data->l1_data[irq]; in bcm7120_l2_intc_init_one()
135 for (idx = 0; idx < data->n_words; idx++) { in bcm7120_l2_intc_init_one()
136 if (data->map_mask_prop) { in bcm7120_l2_intc_init_one()
138 be32_to_cpup(data->map_mask_prop + in bcm7120_l2_intc_init_one()
139 irq * data->n_words + idx); in bcm7120_l2_intc_init_one()
146 l1_data->b = data; in bcm7120_l2_intc_init_one()
154 struct bcm7120_l2_intc_data *data) in bcm7120_l2_intc_iomap_7120() argument
158 data->map_base[0] = of_iomap(dn, 0); in bcm7120_l2_intc_iomap_7120()
159 if (!data->map_base[0]) { in bcm7120_l2_intc_iomap_7120()
164 data->pair_base[0] = data->map_base[0]; in bcm7120_l2_intc_iomap_7120()
165 data->en_offset[0] = IRQEN; in bcm7120_l2_intc_iomap_7120()
166 data->stat_offset[0] = IRQSTAT; in bcm7120_l2_intc_iomap_7120()
167 data->n_words = 1; in bcm7120_l2_intc_iomap_7120()
170 data->irq_fwd_mask, data->n_words); in bcm7120_l2_intc_iomap_7120()
177 data->map_mask_prop = of_get_property(dn, "brcm,int-map-mask", &ret); in bcm7120_l2_intc_iomap_7120()
178 if (!data->map_mask_prop || in bcm7120_l2_intc_iomap_7120()
179 (ret != (sizeof(__be32) * data->num_parent_irqs * data->n_words))) { in bcm7120_l2_intc_iomap_7120()
188 struct bcm7120_l2_intc_data *data) in bcm7120_l2_intc_iomap_3380() argument
198 data->map_base[map_idx + 0] = en; in bcm7120_l2_intc_iomap_3380()
199 data->map_base[map_idx + 1] = stat; in bcm7120_l2_intc_iomap_3380()
204 data->pair_base[gc_idx] = base; in bcm7120_l2_intc_iomap_3380()
205 data->en_offset[gc_idx] = en - base; in bcm7120_l2_intc_iomap_3380()
206 data->stat_offset[gc_idx] = stat - base; in bcm7120_l2_intc_iomap_3380()
214 data->n_words = gc_idx; in bcm7120_l2_intc_iomap_3380()
225 struct bcm7120_l2_intc_data *data; in bcm7120_l2_intc_probe() local
232 data = kzalloc(sizeof(*data), GFP_KERNEL); in bcm7120_l2_intc_probe()
233 if (!data) in bcm7120_l2_intc_probe()
236 data->num_parent_irqs = of_irq_count(dn); in bcm7120_l2_intc_probe()
237 if (data->num_parent_irqs <= 0) { in bcm7120_l2_intc_probe()
243 data->l1_data = kcalloc(data->num_parent_irqs, sizeof(*data->l1_data), in bcm7120_l2_intc_probe()
245 if (!data->l1_data) { in bcm7120_l2_intc_probe()
250 ret = iomap_regs_fn(dn, data); in bcm7120_l2_intc_probe()
254 for (idx = 0; idx < data->n_words; idx++) { in bcm7120_l2_intc_probe()
255 __raw_writel(data->irq_fwd_mask[idx], in bcm7120_l2_intc_probe()
256 data->pair_base[idx] + in bcm7120_l2_intc_probe()
257 data->en_offset[idx]); in bcm7120_l2_intc_probe()
260 for (irq = 0; irq < data->num_parent_irqs; irq++) { in bcm7120_l2_intc_probe()
261 ret = bcm7120_l2_intc_init_one(dn, data, irq, valid_mask); in bcm7120_l2_intc_probe()
266 data->domain = irq_domain_add_linear(dn, IRQS_PER_WORD * data->n_words, in bcm7120_l2_intc_probe()
268 if (!data->domain) { in bcm7120_l2_intc_probe()
280 ret = irq_alloc_domain_generic_chips(data->domain, IRQS_PER_WORD, 1, in bcm7120_l2_intc_probe()
288 data->can_wake = true; in bcm7120_l2_intc_probe()
290 for (idx = 0; idx < data->n_words; idx++) { in bcm7120_l2_intc_probe()
292 gc = irq_get_domain_generic_chip(data->domain, irq); in bcm7120_l2_intc_probe()
295 gc->private = data; in bcm7120_l2_intc_probe()
298 gc->reg_base = data->pair_base[idx]; in bcm7120_l2_intc_probe()
299 ct->regs.mask = data->en_offset[idx]; in bcm7120_l2_intc_probe()
314 if (data->can_wake) { in bcm7120_l2_intc_probe()
325 intc_name, data->map_base[0], data->num_parent_irqs); in bcm7120_l2_intc_probe()
330 irq_domain_remove(data->domain); in bcm7120_l2_intc_probe()
332 kfree(data->l1_data); in bcm7120_l2_intc_probe()
335 if (data->map_base[idx]) in bcm7120_l2_intc_probe()
336 iounmap(data->map_base[idx]); in bcm7120_l2_intc_probe()
338 kfree(data); in bcm7120_l2_intc_probe()