From b692ca07e0df86fa2017cf2e331cb0692424c8d9 Mon Sep 17 00:00:00 2001 From: nbd Date: Fri, 19 Sep 2008 14:19:59 +0000 Subject: [PATCH] atheros: don't try to enable pci on AR2317 (fixes #3533) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12633 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/arch/mips/atheros/ar5315/board.c | 34 +++++++------------ .../files/arch/mips/atheros/ar5315/pci.c | 4 +++ 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c b/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c index f7c45bae2..0ac7d0036 100644 --- a/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c +++ b/target/linux/atheros/files/arch/mips/atheros/ar5315/board.c @@ -219,23 +219,6 @@ int __init ar5315_init_devices(void) ar531x_find_config(ar5315_flash_limit()); bcfg = (struct ar531x_boarddata *) board_config; -#if 0 - { - /* Detect the hardware based on the device ID */ - u32 devid = sysRegRead(AR5315_SREV) & AR5315_REV_MAJ >> AR5315_REV_MAJ_S; - switch(devid) { - case 0x9: - mips_machtype = MACH_ATHEROS_AR2317; - break; - /* FIXME: how can we detect AR2316? */ - case 0x8: - default: - mips_machtype = MACH_ATHEROS_AR2315; - break; - } - } -#endif - config = (struct ar531x_config *) kzalloc(sizeof(struct ar531x_config), GFP_KERNEL); config->board = board_config; config->radio = radio_config; @@ -296,7 +279,6 @@ static void ar5315_power_off(void) static void ar5315_restart(char *command) { - unsigned int reg; for(;;) { /* reset the system */ sysRegWrite(AR5315_COLD_RESET,AR5317_RESET_SYSTEM); @@ -380,7 +362,7 @@ static void __init ar5315_time_init(void) void __init ar5315_prom_init(void) { - u32 memsize, memcfg; + u32 memsize, memcfg, devid; is_5315 = 1; memcfg = sysRegRead(AR5315_MEM_CFG); @@ -390,9 +372,17 @@ void __init ar5315_prom_init(void) memsize <<= 3; add_memory_region(0, memsize, BOOT_MEM_RAM); - /* Initialize it to AR2315 for now. Real detection will be done - * in ar5315_init_devices() */ - mips_machtype = MACH_ATHEROS_AR2315; + /* Detect the hardware based on the device ID */ + devid = sysRegRead(AR5315_SREV) & AR5315_REV_CHIP; + switch(devid) { + case 0x90: + case 0x91: + mips_machtype = MACH_ATHEROS_AR2317; + break; + default: + mips_machtype = MACH_ATHEROS_AR2315; + break; + } } void __init ar5315_plat_setup(void) diff --git a/target/linux/atheros/files/arch/mips/atheros/ar5315/pci.c b/target/linux/atheros/files/arch/mips/atheros/ar5315/pci.c index 9040a43ec..166fa1cf9 100644 --- a/target/linux/atheros/files/arch/mips/atheros/ar5315/pci.c +++ b/target/linux/atheros/files/arch/mips/atheros/ar5315/pci.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -186,6 +187,9 @@ int __init ar5315_pci_init(void) { u32 reg; + if (mips_machtype != MACH_ATHEROS_AR2315) + return -ENODEV; + printk("AR531x PCI init... \n"); cfgaddr = (u32) ioremap_nocache(0x80000000, 1*1024*1024); /* Remap PCI config space */