Lines Matching refs:intc
78 static inline unsigned int reg_status(struct bcm7038_l1_chip *intc, in reg_status() argument
81 return (0 * intc->n_words + word) * sizeof(u32); in reg_status()
84 static inline unsigned int reg_mask_status(struct bcm7038_l1_chip *intc, in reg_mask_status() argument
87 return (1 * intc->n_words + word) * sizeof(u32); in reg_mask_status()
90 static inline unsigned int reg_mask_set(struct bcm7038_l1_chip *intc, in reg_mask_set() argument
93 return (2 * intc->n_words + word) * sizeof(u32); in reg_mask_set()
96 static inline unsigned int reg_mask_clr(struct bcm7038_l1_chip *intc, in reg_mask_clr() argument
99 return (3 * intc->n_words + word) * sizeof(u32); in reg_mask_clr()
120 struct bcm7038_l1_chip *intc = irq_desc_get_handler_data(desc); in bcm7038_l1_irq_handle() local
126 cpu = intc->cpus[cpu_logical_map(smp_processor_id())]; in bcm7038_l1_irq_handle()
128 cpu = intc->cpus[0]; in bcm7038_l1_irq_handle()
133 for (idx = 0; idx < intc->n_words; idx++) { in bcm7038_l1_irq_handle()
138 raw_spin_lock_irqsave(&intc->lock, flags); in bcm7038_l1_irq_handle()
139 pending = l1_readl(cpu->map_base + reg_status(intc, idx)) & in bcm7038_l1_irq_handle()
141 raw_spin_unlock_irqrestore(&intc->lock, flags); in bcm7038_l1_irq_handle()
144 generic_handle_irq(irq_find_mapping(intc->domain, in bcm7038_l1_irq_handle()
154 struct bcm7038_l1_chip *intc = irq_data_get_irq_chip_data(d); in __bcm7038_l1_unmask() local
158 intc->cpus[cpu_idx]->mask_cache[word] &= ~mask; in __bcm7038_l1_unmask()
159 l1_writel(mask, intc->cpus[cpu_idx]->map_base + in __bcm7038_l1_unmask()
160 reg_mask_clr(intc, word)); in __bcm7038_l1_unmask()
165 struct bcm7038_l1_chip *intc = irq_data_get_irq_chip_data(d); in __bcm7038_l1_mask() local
169 intc->cpus[cpu_idx]->mask_cache[word] |= mask; in __bcm7038_l1_mask()
170 l1_writel(mask, intc->cpus[cpu_idx]->map_base + in __bcm7038_l1_mask()
171 reg_mask_set(intc, word)); in __bcm7038_l1_mask()
176 struct bcm7038_l1_chip *intc = irq_data_get_irq_chip_data(d); in bcm7038_l1_unmask() local
179 raw_spin_lock_irqsave(&intc->lock, flags); in bcm7038_l1_unmask()
180 __bcm7038_l1_unmask(d, intc->affinity[d->hwirq]); in bcm7038_l1_unmask()
181 raw_spin_unlock_irqrestore(&intc->lock, flags); in bcm7038_l1_unmask()
186 struct bcm7038_l1_chip *intc = irq_data_get_irq_chip_data(d); in bcm7038_l1_mask() local
189 raw_spin_lock_irqsave(&intc->lock, flags); in bcm7038_l1_mask()
190 __bcm7038_l1_mask(d, intc->affinity[d->hwirq]); in bcm7038_l1_mask()
191 raw_spin_unlock_irqrestore(&intc->lock, flags); in bcm7038_l1_mask()
198 struct bcm7038_l1_chip *intc = irq_data_get_irq_chip_data(d); in bcm7038_l1_set_affinity() local
206 raw_spin_lock_irqsave(&intc->lock, flags); in bcm7038_l1_set_affinity()
208 was_disabled = !!(intc->cpus[intc->affinity[hw]]->mask_cache[word] & in bcm7038_l1_set_affinity()
210 __bcm7038_l1_mask(d, intc->affinity[hw]); in bcm7038_l1_set_affinity()
211 intc->affinity[hw] = first_cpu; in bcm7038_l1_set_affinity()
215 raw_spin_unlock_irqrestore(&intc->lock, flags); in bcm7038_l1_set_affinity()
221 struct bcm7038_l1_chip *intc) in bcm7038_l1_init_one() argument
235 else if (!intc->n_words) in bcm7038_l1_init_one()
236 intc->n_words = n_words; in bcm7038_l1_init_one()
237 else if (intc->n_words != n_words) in bcm7038_l1_init_one()
240 cpu = intc->cpus[idx] = kzalloc(sizeof(*cpu) + n_words * sizeof(u32), in bcm7038_l1_init_one()
250 l1_writel(0xffffffff, cpu->map_base + reg_mask_set(intc, i)); in bcm7038_l1_init_one()
260 intc); in bcm7038_l1_init_one()
288 struct bcm7038_l1_chip *intc; in bcm7038_l1_of_init() local
291 intc = kzalloc(sizeof(*intc), GFP_KERNEL); in bcm7038_l1_of_init()
292 if (!intc) in bcm7038_l1_of_init()
295 raw_spin_lock_init(&intc->lock); in bcm7038_l1_of_init()
297 ret = bcm7038_l1_init_one(dn, idx, intc); in bcm7038_l1_of_init()
306 intc->domain = irq_domain_add_linear(dn, IRQS_PER_WORD * intc->n_words, in bcm7038_l1_of_init()
308 intc); in bcm7038_l1_of_init()
309 if (!intc->domain) { in bcm7038_l1_of_init()
315 intc->cpus[0]->map_base, IRQS_PER_WORD * intc->n_words); in bcm7038_l1_of_init()
321 struct bcm7038_l1_cpu *cpu = intc->cpus[idx]; in bcm7038_l1_of_init()
330 kfree(intc); in bcm7038_l1_of_init()