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