Lines Matching defs:data
57 struct bcm7120_l1_intc_data *data = irq_desc_get_handler_data(desc);
58 struct bcm7120_l2_intc_data *b = data->b;
74 data->irq_map_mask[idx];
109 struct bcm7120_l2_intc_data *data,
112 struct bcm7120_l1_intc_data *l1_data = &data->l1_data[irq];
131 for (idx = 0; idx < data->n_words; idx++) {
132 if (data->map_mask_prop) {
134 be32_to_cpup(data->map_mask_prop +
135 irq * data->n_words + idx);
142 l1_data->b = data;
146 if (data->can_wake)
153 struct bcm7120_l2_intc_data *data)
157 data->map_base[0] = of_iomap(dn, 0);
158 if (!data->map_base[0]) {
163 data->pair_base[0] = data->map_base[0];
164 data->en_offset[0] = IRQEN;
165 data->stat_offset[0] = IRQSTAT;
166 data->n_words = 1;
169 data->irq_fwd_mask, data->n_words);
176 data->map_mask_prop = of_get_property(dn, "brcm,int-map-mask", &ret);
177 if (!data->map_mask_prop ||
178 (ret != (sizeof(__be32) * data->num_parent_irqs * data->n_words))) {
187 struct bcm7120_l2_intc_data *data)
197 data->map_base[map_idx + 0] = en;
198 data->map_base[map_idx + 1] = stat;
203 data->pair_base[gc_idx] = base;
204 data->en_offset[gc_idx] = en - base;
205 data->stat_offset[gc_idx] = stat - base;
213 data->n_words = gc_idx;
224 struct bcm7120_l2_intc_data *data;
231 data = kzalloc(sizeof(*data), GFP_KERNEL);
232 if (!data)
235 data->num_parent_irqs = of_irq_count(dn);
236 if (data->num_parent_irqs <= 0) {
242 data->l1_data = kcalloc(data->num_parent_irqs, sizeof(*data->l1_data),
244 if (!data->l1_data) {
249 ret = iomap_regs_fn(dn, data);
253 data->can_wake = of_property_read_bool(dn, "brcm,irq-can-wake");
255 for (irq = 0; irq < data->num_parent_irqs; irq++) {
256 ret = bcm7120_l2_intc_init_one(dn, data, irq, valid_mask);
261 data->domain = irq_domain_add_linear(dn, IRQS_PER_WORD * data->n_words,
263 if (!data->domain) {
275 ret = irq_alloc_domain_generic_chips(data->domain, IRQS_PER_WORD, 1,
283 for (idx = 0; idx < data->n_words; idx++) {
285 gc = irq_get_domain_generic_chip(data->domain, irq);
288 gc->private = data;
291 gc->reg_base = data->pair_base[idx];
292 ct->regs.mask = data->en_offset[idx];
295 irq_reg_writel(gc, data->irq_fwd_mask[idx],
296 data->en_offset[idx]);
311 if (data->can_wake) {
322 intc_name, dn, data->num_parent_irqs);
327 irq_domain_remove(data->domain);
329 kfree(data->l1_data);
332 if (data->map_base[idx])
333 iounmap(data->map_base[idx]);
335 kfree(data);