Lines Matching refs:cb

45 static struct crossbar_device *cb;
49 writel(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]);
54 writew(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]);
59 writeb(cb_no, cb->crossbar_base + cb->register_offsets[irq_no]);
66 for (i = cb->int_max - 1; i >= 0; i--)
67 if (cb->irq_map[i] == cb_no)
77 for (i = cb->int_max - 1; i >= 0; i--) {
78 if (cb->irq_map[i] == IRQ_FREE) {
79 cb->irq_map[i] = cb_no;
92 cb_no = cb->irq_map[hw - GIC_IRQ_START];
104 cb->write(hw - GIC_IRQ_START, cb->irq_map[hw - GIC_IRQ_START]);
125 cb->irq_map[hw - GIC_IRQ_START] = IRQ_FREE;
126 cb->write(hw - GIC_IRQ_START, cb->safe_map);
140 if (req_num >= cb->max_crossbar_sources) {
141 direct_map_num = req_num - cb->max_crossbar_sources;
142 if (direct_map_num < cb->int_max) {
143 ret = cb->irq_map[direct_map_num];
152 __func__, req_num, cb->max_crossbar_sources);
182 cb = kzalloc(sizeof(*cb), GFP_KERNEL);
184 if (!cb)
187 cb->crossbar_base = of_iomap(node, 0);
188 if (!cb->crossbar_base)
192 &cb->max_crossbar_sources);
193 if (!cb->max_crossbar_sources) {
205 cb->irq_map = kcalloc(max, sizeof(int), GFP_KERNEL);
206 if (!cb->irq_map)
209 cb->int_max = max;
212 cb->irq_map[i] = IRQ_FREE;
228 cb->irq_map[entry] = IRQ_RESERVED;
246 cb->irq_map[entry] = IRQ_SKIP;
251 cb->register_offsets = kcalloc(max, sizeof(int), GFP_KERNEL);
252 if (!cb->register_offsets)
259 cb->write = crossbar_writeb;
262 cb->write = crossbar_writew;
265 cb->write = crossbar_writel;
279 if (cb->irq_map[i] == IRQ_RESERVED)
282 cb->register_offsets[i] = reserved;
286 of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map);
289 if (cb->irq_map[i] == IRQ_RESERVED ||
290 cb->irq_map[i] == IRQ_SKIP)
293 cb->write(i, cb->safe_map);
300 kfree(cb->register_offsets);
302 kfree(cb->irq_map);
304 iounmap(cb->crossbar_base);
306 kfree(cb);
308 cb = NULL;