Lines Matching refs:cb
47 static struct crossbar_device *cb; variable
51 writel(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]); in crossbar_writel()
56 writew(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]); in crossbar_writew()
61 writeb(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]); in crossbar_writeb()
88 raw_spin_lock(&cb->lock); in allocate_gic_irq()
89 for (i = cb->int_max - 1; i >= 0; i--) { in allocate_gic_irq()
90 if (cb->irq_map[i] == IRQ_FREE) { in allocate_gic_irq()
91 cb->irq_map[i] = hwirq; in allocate_gic_irq()
95 raw_spin_unlock(&cb->lock); in allocate_gic_irq()
108 cb->irq_map[i] = IRQ_FREE; in allocate_gic_irq()
110 cb->write(i, hwirq); in allocate_gic_irq()
128 if ((hwirq + nr_irqs) > cb->max_crossbar_sources) in crossbar_domain_alloc()
161 raw_spin_lock(&cb->lock); in crossbar_domain_free()
166 cb->irq_map[d->hwirq] = IRQ_FREE; in crossbar_domain_free()
167 cb->write(d->hwirq, cb->safe_map); in crossbar_domain_free()
169 raw_spin_unlock(&cb->lock); in crossbar_domain_free()
205 cb = kzalloc(sizeof(*cb), GFP_KERNEL); in crossbar_of_init()
207 if (!cb) in crossbar_of_init()
210 cb->crossbar_base = of_iomap(node, 0); in crossbar_of_init()
211 if (!cb->crossbar_base) in crossbar_of_init()
215 &cb->max_crossbar_sources); in crossbar_of_init()
216 if (!cb->max_crossbar_sources) { in crossbar_of_init()
228 cb->irq_map = kcalloc(max, sizeof(int), GFP_KERNEL); in crossbar_of_init()
229 if (!cb->irq_map) in crossbar_of_init()
232 cb->int_max = max; in crossbar_of_init()
235 cb->irq_map[i] = IRQ_FREE; in crossbar_of_init()
251 cb->irq_map[entry] = IRQ_RESERVED; in crossbar_of_init()
269 cb->irq_map[entry] = IRQ_SKIP; in crossbar_of_init()
274 cb->register_offsets = kcalloc(max, sizeof(int), GFP_KERNEL); in crossbar_of_init()
275 if (!cb->register_offsets) in crossbar_of_init()
282 cb->write = crossbar_writeb; in crossbar_of_init()
285 cb->write = crossbar_writew; in crossbar_of_init()
288 cb->write = crossbar_writel; in crossbar_of_init()
302 if (cb->irq_map[i] == IRQ_RESERVED) in crossbar_of_init()
305 cb->register_offsets[i] = reserved; in crossbar_of_init()
309 of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map); in crossbar_of_init()
312 if (cb->irq_map[i] == IRQ_RESERVED || in crossbar_of_init()
313 cb->irq_map[i] == IRQ_SKIP) in crossbar_of_init()
316 cb->write(i, cb->safe_map); in crossbar_of_init()
319 raw_spin_lock_init(&cb->lock); in crossbar_of_init()
324 kfree(cb->register_offsets); in crossbar_of_init()
326 kfree(cb->irq_map); in crossbar_of_init()
328 iounmap(cb->crossbar_base); in crossbar_of_init()
330 kfree(cb); in crossbar_of_init()
332 cb = NULL; in crossbar_of_init()
358 cb->max_crossbar_sources, in irqcrossbar_init()