/* * linux/arch/mips/tx4938/common/setup.c * * common tx4938 setup routines * * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the * terms of the GNU General Public License version 2. This program is * licensed "as is" without any warranty of any kind, whether express * or implied. * * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com) */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include extern void toshiba_rbtx4938_setup(void); extern void rbtx4938_time_init(void); void __init tx4938_setup(void); void __init tx4938_time_init(void); void __init tx4938_timer_setup(struct irqaction *irq); void dump_cp0(char *key); void (*__wbflush) (void); static void tx4938_write_buffer_flush(void) { mmiowb(); __asm__ __volatile__( ".set push\n\t" ".set noreorder\n\t" "lw $0,%0\n\t" "nop\n\t" ".set pop" : /* no output */ : "m" (*(int *)KSEG1) : "memory"); } void __init plat_setup(void) { board_time_init = tx4938_time_init; board_timer_setup = tx4938_timer_setup; __wbflush = tx4938_write_buffer_flush; toshiba_rbtx4938_setup(); } void __init tx4938_time_init(void) { rbtx4938_time_init(); } void __init tx4938_timer_setup(struct irqaction *irq) { u32 count; u32 c1; u32 c2; setup_irq(TX4938_IRQ_CPU_TIMER, irq); c1 = read_c0_count(); count = c1 + (mips_hpt_frequency / HZ); write_c0_compare(count); c2 = read_c0_count(); }