diff options
Diffstat (limited to 'arch/mips/txx9/rbtx4927')
-rw-r--r-- | arch/mips/txx9/rbtx4927/irq.c | 11 | ||||
-rw-r--r-- | arch/mips/txx9/rbtx4927/prom.c | 1 | ||||
-rw-r--r-- | arch/mips/txx9/rbtx4927/setup.c | 25 |
3 files changed, 27 insertions, 10 deletions
diff --git a/arch/mips/txx9/rbtx4927/irq.c b/arch/mips/txx9/rbtx4927/irq.c index 00cd5231da30..9c14ebb26cb4 100644 --- a/arch/mips/txx9/rbtx4927/irq.c +++ b/arch/mips/txx9/rbtx4927/irq.c | |||
@@ -133,15 +133,20 @@ static int toshiba_rbtx4927_irq_nested(int sw_irq) | |||
133 | u8 level3; | 133 | u8 level3; |
134 | 134 | ||
135 | level3 = readb(rbtx4927_imstat_addr) & 0x1f; | 135 | level3 = readb(rbtx4927_imstat_addr) & 0x1f; |
136 | if (level3) | 136 | if (unlikely(!level3)) |
137 | sw_irq = RBTX4927_IRQ_IOC + fls(level3) - 1; | 137 | return -1; |
138 | return sw_irq; | 138 | return RBTX4927_IRQ_IOC + __fls8(level3); |
139 | } | 139 | } |
140 | 140 | ||
141 | static void __init toshiba_rbtx4927_irq_ioc_init(void) | 141 | static void __init toshiba_rbtx4927_irq_ioc_init(void) |
142 | { | 142 | { |
143 | int i; | 143 | int i; |
144 | 144 | ||
145 | /* mask all IOC interrupts */ | ||
146 | writeb(0, rbtx4927_imask_addr); | ||
147 | /* clear SoftInt interrupts */ | ||
148 | writeb(0, rbtx4927_softint_addr); | ||
149 | |||
145 | for (i = RBTX4927_IRQ_IOC; | 150 | for (i = RBTX4927_IRQ_IOC; |
146 | i < RBTX4927_IRQ_IOC + RBTX4927_NR_IRQ_IOC; i++) | 151 | i < RBTX4927_IRQ_IOC + RBTX4927_NR_IRQ_IOC; i++) |
147 | set_irq_chip_and_handler(i, &toshiba_rbtx4927_irq_ioc_type, | 152 | set_irq_chip_and_handler(i, &toshiba_rbtx4927_irq_ioc_type, |
diff --git a/arch/mips/txx9/rbtx4927/prom.c b/arch/mips/txx9/rbtx4927/prom.c index 1dc0a5b1956b..cc97c6a6011b 100644 --- a/arch/mips/txx9/rbtx4927/prom.c +++ b/arch/mips/txx9/rbtx4927/prom.c | |||
@@ -36,7 +36,6 @@ | |||
36 | 36 | ||
37 | void __init rbtx4927_prom_init(void) | 37 | void __init rbtx4927_prom_init(void) |
38 | { | 38 | { |
39 | prom_init_cmdline(); | ||
40 | add_memory_region(0, tx4927_get_mem_size(), BOOT_MEM_RAM); | 39 | add_memory_region(0, tx4927_get_mem_size(), BOOT_MEM_RAM); |
41 | txx9_sio_putchar_init(TX4927_SIO_REG(0) & 0xfffffffffULL); | 40 | txx9_sio_putchar_init(TX4927_SIO_REG(0) & 0xfffffffffULL); |
42 | } | 41 | } |
diff --git a/arch/mips/txx9/rbtx4927/setup.c b/arch/mips/txx9/rbtx4927/setup.c index 0d39bafea794..4a74423b2ba8 100644 --- a/arch/mips/txx9/rbtx4927/setup.c +++ b/arch/mips/txx9/rbtx4927/setup.c | |||
@@ -48,6 +48,7 @@ | |||
48 | #include <linux/ioport.h> | 48 | #include <linux/ioport.h> |
49 | #include <linux/platform_device.h> | 49 | #include <linux/platform_device.h> |
50 | #include <linux/delay.h> | 50 | #include <linux/delay.h> |
51 | #include <linux/gpio.h> | ||
51 | #include <asm/io.h> | 52 | #include <asm/io.h> |
52 | #include <asm/reboot.h> | 53 | #include <asm/reboot.h> |
53 | #include <asm/txx9/generic.h> | 54 | #include <asm/txx9/generic.h> |
@@ -185,14 +186,8 @@ static void __init rbtx4937_clock_init(void); | |||
185 | 186 | ||
186 | static void __init rbtx4927_mem_setup(void) | 187 | static void __init rbtx4927_mem_setup(void) |
187 | { | 188 | { |
188 | u32 cp0_config; | ||
189 | char *argptr; | 189 | char *argptr; |
190 | 190 | ||
191 | /* enable caches -- HCP5 does this, pmon does not */ | ||
192 | cp0_config = read_c0_config(); | ||
193 | cp0_config = cp0_config & ~(TX49_CONF_IC | TX49_CONF_DC); | ||
194 | write_c0_config(cp0_config); | ||
195 | |||
196 | if (TX4927_REV_PCODE() == 0x4927) { | 191 | if (TX4927_REV_PCODE() == 0x4927) { |
197 | rbtx4927_clock_init(); | 192 | rbtx4927_clock_init(); |
198 | tx4927_setup(); | 193 | tx4927_setup(); |
@@ -212,6 +207,14 @@ static void __init rbtx4927_mem_setup(void) | |||
212 | set_io_port_base(KSEG1 + RBTX4927_ISA_IO_OFFSET); | 207 | set_io_port_base(KSEG1 + RBTX4927_ISA_IO_OFFSET); |
213 | #endif | 208 | #endif |
214 | 209 | ||
210 | /* TX4927-SIO DTR on (PIO[15]) */ | ||
211 | gpio_request(15, "sio-dtr"); | ||
212 | gpio_direction_output(15, 1); | ||
213 | gpio_request(0, "led"); | ||
214 | gpio_direction_output(0, 1); | ||
215 | gpio_request(1, "led"); | ||
216 | gpio_direction_output(1, 1); | ||
217 | |||
215 | tx4927_sio_init(0, 0); | 218 | tx4927_sio_init(0, 0); |
216 | #ifdef CONFIG_SERIAL_TXX9_CONSOLE | 219 | #ifdef CONFIG_SERIAL_TXX9_CONSOLE |
217 | argptr = prom_getcmdline(); | 220 | argptr = prom_getcmdline(); |
@@ -304,11 +307,21 @@ static void __init rbtx4927_ne_init(void) | |||
304 | platform_device_register_simple("ne", -1, res, ARRAY_SIZE(res)); | 307 | platform_device_register_simple("ne", -1, res, ARRAY_SIZE(res)); |
305 | } | 308 | } |
306 | 309 | ||
310 | static void __init rbtx4927_mtd_init(void) | ||
311 | { | ||
312 | int i; | ||
313 | |||
314 | for (i = 0; i < 2; i++) | ||
315 | tx4927_mtd_init(i); | ||
316 | } | ||
317 | |||
307 | static void __init rbtx4927_device_init(void) | 318 | static void __init rbtx4927_device_init(void) |
308 | { | 319 | { |
309 | toshiba_rbtx4927_rtc_init(); | 320 | toshiba_rbtx4927_rtc_init(); |
310 | rbtx4927_ne_init(); | 321 | rbtx4927_ne_init(); |
311 | tx4927_wdt_init(); | 322 | tx4927_wdt_init(); |
323 | rbtx4927_mtd_init(); | ||
324 | txx9_iocled_init(RBTX4927_LED_ADDR - IO_BASE, -1, 3, 1, "green", NULL); | ||
312 | } | 325 | } |
313 | 326 | ||
314 | struct txx9_board_vec rbtx4927_vec __initdata = { | 327 | struct txx9_board_vec rbtx4927_vec __initdata = { |