11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Carsten Langgaard, carstenl@mips.com 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. 452d65cf87f439c5264527c3628d12a26322524ebDmitri Vorobiev * Copyright (C) 2008 Dmitri Vorobiev 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is free software; you can distribute it and/or modify it 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * under the terms of the GNU General Public License (Version 2) as 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * published by the Free Software Foundation. 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is distributed in the hope it will be useful, but WITHOUT 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * for more details. 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * You should have received a copy of the GNU General Public License along 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * with this program; if not, write to the Free Software Foundation, Inc., 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1954bf038e2216212b1728861b1a15fc0cc1ad1d2eDmitri Vorobiev#include <linux/cpu.h> 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/init.h> 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/sched.h> 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/ioport.h> 2354bf038e2216212b1728861b1a15fc0cc1ad1d2eDmitri Vorobiev#include <linux/irq.h> 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/pci.h> 25894673ee6122a3ce1958e1fe096901ba5356a96bJon Smirl#include <linux/screen_info.h> 2654bf038e2216212b1728861b1a15fc0cc1ad1d2eDmitri Vorobiev#include <linux/time.h> 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/bootinfo.h> 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/mips-boards/generic.h> 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/mips-boards/prom.h> 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/mips-boards/malta.h> 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/mips-boards/maltaint.h> 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/dma.h> 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/traps.h> 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_VT 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/console.h> 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3939b8d5254246ac56342b72f812255c8f7a74dca9Ralf Baechleextern void malta_be_init(void); 4039b8d5254246ac56342b72f812255c8f7a74dca9Ralf Baechleextern int malta_be_handler(struct pt_regs *regs, int is_fixup); 4139b8d5254246ac56342b72f812255c8f7a74dca9Ralf Baechle 4252d65cf87f439c5264527c3628d12a26322524ebDmitri Vorobievstatic struct resource standard_io_resources[] = { 434ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev { 444ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .name = "dma1", 454ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .start = 0x00, 464ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .end = 0x1f, 474ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .flags = IORESOURCE_BUSY 484ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev }, 494ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev { 504ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .name = "timer", 514ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .start = 0x40, 524ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .end = 0x5f, 534ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .flags = IORESOURCE_BUSY 544ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev }, 554ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev { 564ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .name = "keyboard", 574ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .start = 0x60, 584ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .end = 0x6f, 594ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .flags = IORESOURCE_BUSY 604ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev }, 614ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev { 624ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .name = "dma page reg", 634ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .start = 0x80, 644ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .end = 0x8f, 654ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .flags = IORESOURCE_BUSY 664ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev }, 674ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev { 684ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .name = "dma2", 694ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .start = 0xc0, 704ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .end = 0xdf, 714ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev .flags = IORESOURCE_BUSY 724ca765135414e85c80f0a68bb35189472bb9ad1eDmitri Vorobiev }, 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconst char *get_system_type(void) 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return "MIPS Malta"; 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8079894c7b47f78decaa3511f1d6646aa06e2c6bedRalf Baechle#if defined(CONFIG_MIPS_MT_SMTC) 8179894c7b47f78decaa3511f1d6646aa06e2c6bedRalf Baechleconst char display_string[] = " SMTC LINUX ON MALTA "; 8279894c7b47f78decaa3511f1d6646aa06e2c6bedRalf Baechle#else 8379894c7b47f78decaa3511f1d6646aa06e2c6bedRalf Baechleconst char display_string[] = " LINUX ON MALTA "; 8479894c7b47f78decaa3511f1d6646aa06e2c6bedRalf Baechle#endif /* CONFIG_MIPS_MT_SMTC */ 8579894c7b47f78decaa3511f1d6646aa06e2c6bedRalf Baechle 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_BLK_DEV_FD 87ef7645cfe6f785de3bdc2ae6016924f46f614d61Dmitri Vorobievstatic void __init fd_activate(void) 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Activate Floppy Controller in the SMSC FDC37M817 Super I/O 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Controller. 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Done by YAMON 2.00 onwards 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Entering config state. */ 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds SMSC_WRITE(SMSC_CONFIG_ENTER, SMSC_CONFIG_REG); 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Activate floppy controller. */ 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds SMSC_WRITE(SMSC_CONFIG_DEVNUM, SMSC_CONFIG_REG); 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds SMSC_WRITE(SMSC_CONFIG_DEVNUM_FLOPPY, SMSC_DATA_REG); 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds SMSC_WRITE(SMSC_CONFIG_ACTIVATE, SMSC_CONFIG_REG); 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds SMSC_WRITE(SMSC_CONFIG_ACTIVATE_ENABLE, SMSC_DATA_REG); 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Exit config state. */ 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds SMSC_WRITE(SMSC_CONFIG_EXIT, SMSC_CONFIG_REG); 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 108f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev#ifdef CONFIG_BLK_DEV_IDE 109f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobievstatic void __init pci_clock_check(void) 110f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev{ 111f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev unsigned int __iomem *jmpr_p = 112f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev (unsigned int *) ioremap(MALTA_JMPRS_REG, sizeof(unsigned int)); 113f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev int jmpr = (__raw_readl(jmpr_p) >> 2) & 0x07; 114f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev static const int pciclocks[] __initdata = { 115f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev 33, 20, 25, 30, 12, 16, 37, 10 116f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev }; 117f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev int pciclock = pciclocks[jmpr]; 118f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev char *argptr = prom_getcmdline(); 119f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev 120f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev if (pciclock != 33 && !strstr(argptr, "idebus=")) { 121f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev printk(KERN_WARNING "WARNING: PCI clock is %dMHz, " 122f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev "setting idebus\n", pciclock); 123f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev argptr += strlen(argptr); 124f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev sprintf(argptr, " idebus=%d", pciclock); 125f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev if (pciclock < 20 || pciclock > 66) 126f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev printk(KERN_WARNING "WARNING: IDE timing " 127f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev "calculations will be incorrect\n"); 128f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev } 129f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev} 130f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev#endif 131f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev 132a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev#if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) 133a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobievstatic void __init screen_info_setup(void) 134a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev{ 135a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev screen_info = (struct screen_info) { 136a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_x = 0, 137a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_y = 25, 138a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .ext_mem_k = 0, 139a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_video_page = 0, 140a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_video_mode = 0, 141a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_video_cols = 80, 142a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .unused2 = 0, 143a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_video_ega_bx = 0, 144a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .unused3 = 0, 145a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_video_lines = 25, 146a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_video_isVGA = VIDEO_TYPE_VGAC, 147a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev .orig_video_points = 16 148a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev }; 149a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev} 150a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev#endif 151a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev 152750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobievstatic void __init bonito_quirks_setup(void) 153750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev{ 154750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev char *argptr; 155750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev 156750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev argptr = prom_getcmdline(); 157750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev if (strstr(argptr, "debug")) { 158750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_BONGENCFG |= BONITO_BONGENCFG_DEBUGMODE; 159750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev printk(KERN_INFO "Enabled Bonito debug mode\n"); 160750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev } else 161750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_BONGENCFG &= ~BONITO_BONGENCFG_DEBUGMODE; 162750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev 163750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev#ifdef CONFIG_DMA_COHERENT 164750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev if (BONITO_PCICACHECTRL & BONITO_PCICACHECTRL_CPUCOH_PRES) { 165750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_PCICACHECTRL |= BONITO_PCICACHECTRL_CPUCOH_EN; 166750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev printk(KERN_INFO "Enabled Bonito CPU coherency\n"); 167750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev 168750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev argptr = prom_getcmdline(); 169750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev if (strstr(argptr, "iobcuncached")) { 170750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_PCICACHECTRL &= ~BONITO_PCICACHECTRL_IOBCCOH_EN; 171750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_PCIMEMBASECFG = BONITO_PCIMEMBASECFG & 172750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev ~(BONITO_PCIMEMBASECFG_MEMBASE0_CACHED | 173750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_PCIMEMBASECFG_MEMBASE1_CACHED); 174750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev printk(KERN_INFO "Disabled Bonito IOBC coherency\n"); 175750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev } else { 176750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_PCICACHECTRL |= BONITO_PCICACHECTRL_IOBCCOH_EN; 177750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_PCIMEMBASECFG |= 178750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev (BONITO_PCIMEMBASECFG_MEMBASE0_CACHED | 179750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev BONITO_PCIMEMBASECFG_MEMBASE1_CACHED); 180750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev printk(KERN_INFO "Enabled Bonito IOBC coherency\n"); 181750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev } 182750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev } else 183750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev panic("Hardware DMA cache coherency not supported"); 184750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev#endif 185750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev} 186750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev 1872925aba4223f4532e85f0c6f64584b3e0b2849c3Ralf Baechlevoid __init plat_mem_setup(void) 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int i; 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 191c83cfc9c9477d0bc0e0a1ba29dfc58e0d42b2fafRalf Baechle mips_pcibios_init(); 192c83cfc9c9477d0bc0e0a1ba29dfc58e0d42b2fafRalf Baechle 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Request I/O space for devices used on the Malta board. */ 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds for (i = 0; i < ARRAY_SIZE(standard_io_resources); i++) 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds request_resource(&ioport_resource, standard_io_resources+i); 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Enable DMA channel 4 (cascade channel) in the PIIX4 south bridge. 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds enable_dma(4); 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_DMA_COHERENT 203750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev if (mips_revision_sconid != MIPS_REVISION_SCON_BONITO) 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds panic("Hardware DMA cache coherency not supported"); 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 207750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev if (mips_revision_sconid == MIPS_REVISION_SCON_BONITO) 208750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev bonito_quirks_setup(); 209750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_BLK_DEV_IDE 211f3a4ce9587cd1e810f31c87ecb89033d5fd269ceDmitri Vorobiev pci_clock_check(); 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 213750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_BLK_DEV_FD 21549a89efbbbcc178a39555c43bd59a7593c429664Ralf Baechle fd_activate(); 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 217750dc31c480e5062b526134f090a029afd7e17fdDmitri Vorobiev 218a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev#if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) 219a382963edc55815b9ec56259c87b1405083acadfDmitri Vorobiev screen_info_setup(); 2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 22139b8d5254246ac56342b72f812255c8f7a74dca9Ralf Baechle 22239b8d5254246ac56342b72f812255c8f7a74dca9Ralf Baechle board_be_init = malta_be_init; 22339b8d5254246ac56342b72f812255c8f7a74dca9Ralf Baechle board_be_handler = malta_be_handler; 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 225