/* * arch/mips/philips/nino/setup.c * * Copyright (C) 2001 Steven J. Hill (sjhill@realitydiluted.com) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Interrupt and exception initialization for Philips Nino */ #include #include #include #include #include #include #include #include #include #include static void nino_machine_restart(char *command) { static void (*back_to_prom)(void) = (void (*)(void)) 0xbfc00000; /* Reboot */ back_to_prom(); } static void nino_machine_halt(void) { printk("Nino halted.\n"); while(1); } static void nino_machine_power_off(void) { printk("Nino halted. Please turn off power.\n"); while(1); } static void __init nino_board_init() { /* * Set up the master clock module. The value set in * the Clock Control Register by WindowsCE is 0x00432ba. * We set a few values here and let the device drivers * handle the rest. * * NOTE: The UART clocks must be enabled here to provide * enough time for them to settle. */ outl(0x00000000, TX3912_CLK_CTRL); outl((TX3912_CLK_CTRL_SIBMCLKDIR | TX3912_CLK_CTRL_SIBMCLKDIV_2 | TX3912_CLK_CTRL_ENSIBMCLK | TX3912_CLK_CTRL_CSERSEL | TX3912_CLK_CTRL_CSERDIV_3 | TX3912_CLK_CTRL_ENCSERCLK | TX3912_CLK_CTRL_ENUARTACLK | TX3912_CLK_CTRL_ENUARTBCLK), TX3912_CLK_CTRL); } static __init void nino_time_init(void) { /* Load the counter and enable the timer */ outl(TX3912_SYS_TIMER_VALUE, TX3912_TIMER_PERIOD); outl(TX3912_TIMER_CTRL_ENPERTIMER, TX3912_TIMER_CTRL); /* Enable the master timer clock */ outl(inl(TX3912_CLK_CTRL) | TX3912_CLK_CTRL_ENTIMERCLK, TX3912_CLK_CTRL); /* Enable the interrupt */ outl(inl(TX3912_INT5_ENABLE) | TX3912_INT5_PERINT, TX3912_INT5_ENABLE); } static __init void nino_timer_setup(struct irqaction *irq) { irq->dev_id = (void *) irq; setup_irq(0, irq); } void __init nino_setup(void) { extern void nino_irq_setup(void); extern void nino_wait(void); irq_setup = nino_irq_setup; set_io_port_base(KSEG1ADDR(0x10c00000)); _machine_restart = nino_machine_restart; _machine_halt = nino_machine_halt; _machine_power_off = nino_machine_power_off; board_time_init = nino_time_init; board_timer_setup = nino_timer_setup; cpu_wait = nino_wait; #ifdef CONFIG_FB conswitchp = &dummy_con; #endif nino_board_init(); }