void __init brcm_setup(void) { char *s; int i; char *value; /* Get global SB handle */ sbh = sb_kattach(); /* Initialize clocks and interrupts */ sb_mips_init(sbh, SBMIPS_VIRTIRQ_BASE); if (BCM330X(current_cpu_data.processor_id) && (read_c0_diag() & BRCM_PFC_AVAIL)) { /* * Now that the sbh is inited set the proper PFC value */ printk("Setting the PFC to its default value\n"); enable_pfc(PFC_AUTO); } #ifdef CONFIG_SERIAL sb_serial_init(sbh, serial_add); /* reverse serial ports if nvram variable starts with console=ttyS1 */ /* Initialize UARTs */ s = nvram_get("kernel_args"); if (!s) s = ""; if (!strncmp(s, "console=ttyS1", 13)) { for (i = num_ports; i; i--) do_serial_add(&ports[i - 1]); } else { for (i = 0; i < num_ports; i++) do_serial_add(&ports[i]); } #endif #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) ide_ops = &std_ide_ops; #endif /* Override default command line arguments */ value = nvram_get("kernel_cmdline"); if (value && strlen(value) && strncmp(value, "empty", 5)) strncpy(arcs_cmdline, value, sizeof(arcs_cmdline)); /* Generic setup */ _machine_restart = bcm947xx_machine_restart; _machine_halt = bcm947xx_machine_halt; _machine_power_off = bcm947xx_machine_halt; board_time_init = bcm947xx_time_init; board_timer_setup = bcm947xx_timer_setup; }
void * osl_init() { uint32 c0reg; sb_t *sbh; /* Disable interrupts */ c0reg = MFC0(C0_STATUS, 0); c0reg &= ~ST0_IE; MTC0(C0_STATUS, 0, c0reg); /* Scan backplane */ sbh = sb_kattach(SB_OSH); sb_mips_init(sbh, 0); sb_serial_init(sbh, serial_add); /* Init malloc */ free_mem_ptr = (ulong) bss_end; free_mem_ptr_end = ((ulong)&c0reg) - 8192; /* Enough stack? */ return ((void *)sbh); }