diff options
-rw-r--r-- | target/linux/atheros/files/arch/mips/atheros/ar5315/board.c | 34 | ||||
-rw-r--r-- | target/linux/atheros/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 f7c45bae2e..0ac7d00368 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 9040a43ecd..166fa1cf97 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 <linux/spinlock.h> #include <linux/delay.h> #include <linux/irq.h> +#include <asm/bootinfo.h> #include <asm/paccess.h> #include <asm/irq_cpu.h> #include <asm/io.h> @@ -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 */ |