Lines Matching full:cb

43 static struct crossbar_device *cb;  variable
47 writel(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]); in crossbar_writel()
52 writew(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]); in crossbar_writew()
57 writeb(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]); in crossbar_writeb()
84 raw_spin_lock(&cb->lock); in allocate_gic_irq()
85 for (i = cb->int_max - 1; i >= 0; i--) { in allocate_gic_irq()
86 if (cb->irq_map[i] == IRQ_FREE) { in allocate_gic_irq()
87 cb->irq_map[i] = hwirq; in allocate_gic_irq()
91 raw_spin_unlock(&cb->lock); in allocate_gic_irq()
104 cb->irq_map[i] = IRQ_FREE; in allocate_gic_irq()
106 cb->write(i, hwirq); in allocate_gic_irq()
124 if ((hwirq + nr_irqs) > cb->max_crossbar_sources) in crossbar_domain_alloc()
157 raw_spin_lock(&cb->lock); in crossbar_domain_free()
162 cb->irq_map[d->hwirq] = IRQ_FREE; in crossbar_domain_free()
163 cb->write(d->hwirq, cb->safe_map); in crossbar_domain_free()
165 raw_spin_unlock(&cb->lock); in crossbar_domain_free()
202 cb = kzalloc(sizeof(*cb), GFP_KERNEL); in crossbar_of_init()
204 if (!cb) in crossbar_of_init()
207 cb->crossbar_base = of_iomap(node, 0); in crossbar_of_init()
208 if (!cb->crossbar_base) in crossbar_of_init()
212 &cb->max_crossbar_sources); in crossbar_of_init()
213 if (!cb->max_crossbar_sources) { in crossbar_of_init()
225 cb->irq_map = kcalloc(max, sizeof(int), GFP_KERNEL); in crossbar_of_init()
226 if (!cb->irq_map) in crossbar_of_init()
229 cb->int_max = max; in crossbar_of_init()
232 cb->irq_map[i] = IRQ_FREE; in crossbar_of_init()
248 cb->irq_map[entry] = IRQ_RESERVED; in crossbar_of_init()
266 cb->irq_map[entry] = IRQ_SKIP; in crossbar_of_init()
271 cb->register_offsets = kcalloc(max, sizeof(int), GFP_KERNEL); in crossbar_of_init()
272 if (!cb->register_offsets) in crossbar_of_init()
279 cb->write = crossbar_writeb; in crossbar_of_init()
282 cb->write = crossbar_writew; in crossbar_of_init()
285 cb->write = crossbar_writel; in crossbar_of_init()
299 if (cb->irq_map[i] == IRQ_RESERVED) in crossbar_of_init()
302 cb->register_offsets[i] = reserved; in crossbar_of_init()
306 of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map); in crossbar_of_init()
309 if (cb->irq_map[i] == IRQ_RESERVED || in crossbar_of_init()
310 cb->irq_map[i] == IRQ_SKIP) in crossbar_of_init()
313 cb->write(i, cb->safe_map); in crossbar_of_init()
316 raw_spin_lock_init(&cb->lock); in crossbar_of_init()
321 kfree(cb->register_offsets); in crossbar_of_init()
323 kfree(cb->irq_map); in crossbar_of_init()
325 iounmap(cb->crossbar_base); in crossbar_of_init()
327 kfree(cb); in crossbar_of_init()
329 cb = NULL; in crossbar_of_init()
355 cb->max_crossbar_sources, in irqcrossbar_init()