atheros: don't try to enable pci on AR2317 (fixes #3533)
[openwrt-10.03/.git] / target / linux / atheros / files / arch / mips / atheros / ar5315 / board.c
index f7c45bae2ee2908f1b5994238dad9d947f3265a8..0ac7d0036872f3c6ee1825fcd972a6f21cf2bda7 100644 (file)
@@ -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)