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;
static void ar5315_restart(char *command)
{
- unsigned int reg;
for(;;) {
/* reset the system */
sysRegWrite(AR5315_COLD_RESET,AR5317_RESET_SYSTEM);
void __init ar5315_prom_init(void)
{
- u32 memsize, memcfg;
+ u32 memsize, memcfg, devid;
is_5315 = 1;
memcfg = sysRegRead(AR5315_MEM_CFG);
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)
#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>
{
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 */