Lines Matching +full:board +full:- +full:2
1 // SPDX-License-Identifier: GPL-2.0
29 * SBUS interrupts are encodes as a combination of board, level and slot.
38 static unsigned int sun4d_encode_irq(int board, int lvl, int slot) in sun4d_encode_irq() argument
40 return (board + 1) << 5 | (lvl << 2) | slot; in sun4d_encode_irq()
55 /* Specify which cpu handle interrupts from which board.
56 * Index is board - value is cpu.
64 2,
82 /* SBUS interrupts are encoded integers including the board number
92 * 2) For each bus showing interrupt pending from #1, read the
107 sbil = (sbusl << 2); in sun4d_sbus_handler_irq()
138 next = p->next; in sun4d_sbus_handler_irq()
139 generic_handle_irq(p->irq); in sun4d_sbus_handler_irq()
150 /* SBUS IRQ level (1 - 7) */ in sun4d_handler_irq()
177 next = p->next; in sun4d_handler_irq()
178 generic_handle_irq(p->irq); in sun4d_handler_irq()
195 int cpuid = handler_data->cpuid; in sun4d_mask_irq()
198 real_irq = handler_data->real_irq; in sun4d_mask_irq()
213 int cpuid = handler_data->cpuid; in sun4d_unmask_irq()
216 real_irq = handler_data->real_irq; in sun4d_unmask_irq()
229 irq_link(data->irq); in sun4d_startup_irq()
237 irq_unlink(data->irq); in sun4d_shutdown_irq()
256 if (cpuid == -1) in sun4d_distribute_irqs()
259 int devid = of_getintprop_default(dp, "device-id", 0); in sun4d_distribute_irqs()
260 int board = of_getintprop_default(dp, "board#", 0); in sun4d_distribute_irqs() local
261 board_to_cpu[board] = cpuid; in sun4d_distribute_irqs()
270 sbus_readl(&sun4d_timers->l10_timer_limit); in sun4d_clear_clock_irq()
291 unsigned int board) in _sun4d_build_device_irq() argument
299 real_irq, pil, board); in _sun4d_build_device_irq()
312 handler_data->cpuid = board_to_cpu[board]; in _sun4d_build_device_irq()
313 handler_data->real_irq = real_irq; in _sun4d_build_device_irq()
327 struct device_node *dp = op->dev.of_node; in sun4d_build_device_irq()
328 struct device_node *board_parent, *bus = dp->parent; in sun4d_build_device_irq()
333 int board, slot; in sun4d_build_device_irq() local
339 bus_connection = "io-unit"; in sun4d_build_device_irq()
344 bus_connection = "cpu-unit"; in sun4d_build_device_irq()
348 bus = bus->parent; in sun4d_build_device_irq()
357 slot = regs->which_io; in sun4d_build_device_irq()
360 * If Bus nodes parent is not io-unit/cpu-unit or the io-unit/cpu-unit in sun4d_build_device_irq()
361 * lacks a "board#" property, something is very wrong. in sun4d_build_device_irq()
363 if (!of_node_name_eq(bus->parent, bus_connection)) { in sun4d_build_device_irq()
368 board_parent = bus->parent; in sun4d_build_device_irq()
369 board = of_getintprop_default(board_parent, "board#", -1); in sun4d_build_device_irq()
370 if (board == -1) { in sun4d_build_device_irq()
371 printk(KERN_ERR "%pOF: Error, lacks board# property.\n", in sun4d_build_device_irq()
378 pil = sun4d_encode_irq(board, sbusl, slot); in sun4d_build_device_irq()
382 irq = _sun4d_build_device_irq(real_irq, pil, board); in sun4d_build_device_irq()
387 static unsigned int sun4d_build_timer_irq(unsigned int board, in sun4d_build_timer_irq() argument
390 return _sun4d_build_device_irq(real_irq, real_irq, board); in sun4d_build_timer_irq()
398 struct tt_entry *trap_table = &sparc_ttable[SP_TRAP_IRQ1 + (14 - 1)]; in sun4d_fixup_trap_table()
401 lvl14_save[2] += smp4d_ticker - real_irq_entry; in sun4d_fixup_trap_table()
409 trap_table->inst_one = lvl14_save[0]; in sun4d_fixup_trap_table()
410 trap_table->inst_two = lvl14_save[1]; in sun4d_fixup_trap_table()
411 trap_table->inst_three = lvl14_save[2]; in sun4d_fixup_trap_table()
412 trap_table->inst_four = lvl14_save[3]; in sun4d_fixup_trap_table()
413 local_ops->cache_all(); in sun4d_fixup_trap_table()
425 int board; in sun4d_init_timers() local
427 dp = of_find_node_by_name(NULL, "cpu-unit"); in sun4d_init_timers()
429 prom_printf("sun4d_init_timers: Unable to find cpu-unit\n"); in sun4d_init_timers()
433 /* Which cpu-unit we use is arbitrary, we can view the bootbus timer in sun4d_init_timers()
443 board = of_getintprop_default(dp, "board#", -1); in sun4d_init_timers()
444 if (board == -1) { in sun4d_init_timers()
445 prom_printf("sun4d_init_timers: No board# property on cpu-unit\n"); in sun4d_init_timers()
452 res.end = reg[2] - 1; in sun4d_init_timers()
462 sparc_config.cs_period = SBUS_CLOCK_RATE * 2; /* 2 seconds */ in sun4d_init_timers()
469 &sun4d_timers->l10_timer_limit); in sun4d_init_timers()
471 master_l10_counter = &sun4d_timers->l10_cur_count; in sun4d_init_timers()
473 irq = sun4d_build_timer_irq(board, SUN4D_TIMER_IRQ); in sun4d_init_timers()
491 int devid = of_getintprop_default(dp, "device-id", 0); in sun4d_init_sbi_irq()
492 int board = of_getintprop_default(dp, "board#", 0); in sun4d_init_sbi_irq() local
496 board_to_cpu[board] = target_cpu; in sun4d_init_sbi_irq()
502 mask, board); in sun4d_init_sbi_irq()