aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/atheros/files/arch/mips/atheros/ar5315/board.c34
-rw-r--r--target/linux/atheros/files/arch/mips/atheros/ar5315/pci.c4
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 */