atheros: fix ar5312 support

SVN-Revision: 14983
This commit is contained in:
Felix Fietkau 2009-03-22 22:10:47 +00:00
parent 107f6ea323
commit fd11bfec64

View file

@ -1803,7 +1803,6 @@
+ .name = "leds-gpio", + .name = "leds-gpio",
+ .id = -1, + .id = -1,
+ .dev.platform_data = (void *) &ar5312_led_data, + .dev.platform_data = (void *) &ar5312_led_data,
+ .num_resources = 1,
+}; +};
+#endif +#endif
+ +
@ -1993,7 +1992,7 @@
+ if ((result = ar231x_read_reg(AR5312_SCRATCH))) + if ((result = ar231x_read_reg(AR5312_SCRATCH)))
+ return result; + return result;
+ +
+ devid = ar231x_board.devid; + devid = ar231x_read_reg(AR531X_REV);
+ devid &= AR531X_REV_MAJ; + devid &= AR531X_REV_MAJ;
+ devid >>= AR531X_REV_MAJ_S; + devid >>= AR531X_REV_MAJ_S;
+ if (devid == AR531X_REV_MAJ_AR2313) { + if (devid == AR531X_REV_MAJ_AR2313) {
@ -2064,9 +2063,6 @@
+ if (!IS_5312()) + if (!IS_5312())
+ return; + return;
+ +
+ devid = ar231x_read_reg(AR531X_REV);
+ devid &= AR531X_REV_MAJ | AR531X_REV_MIN;
+
+ /* Detect memory size */ + /* Detect memory size */
+ memcfg = ar231x_read_reg(AR531X_MEM_CFG1); + memcfg = ar231x_read_reg(AR531X_MEM_CFG1);
+ bank0AC = (memcfg & MEM_CFG1_AC0) >> MEM_CFG1_AC0_S; + bank0AC = (memcfg & MEM_CFG1_AC0) >> MEM_CFG1_AC0_S;
@ -2075,8 +2071,12 @@
+ + (bank1AC ? (1 << (bank1AC+1)) : 0); + + (bank1AC ? (1 << (bank1AC+1)) : 0);
+ memsize <<= 20; + memsize <<= 20;
+ add_memory_region(0, memsize, BOOT_MEM_RAM); + add_memory_region(0, memsize, BOOT_MEM_RAM);
+ ar231x_gpiodev = &ar5312_gpiodev; +
+ devid = ar231x_read_reg(AR531X_REV);
+ devid >>= AR531X_REV_WMAC_MIN_S;
+ devid &= AR531X_REV_CHIP;
+ ar231x_board.devid = (u16) devid; + ar231x_board.devid = (u16) devid;
+ ar231x_gpiodev = &ar5312_gpiodev;
+} +}
+ +
+void __init +void __init
@ -2096,7 +2096,7 @@
+ +
--- /dev/null --- /dev/null
+++ b/arch/mips/ar231x/ar2315.c +++ b/arch/mips/ar231x/ar2315.c
@@ -0,0 +1,673 @@ @@ -0,0 +1,679 @@
+/* +/*
+ * This file is subject to the terms and conditions of the GNU General Public + * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive + * License. See the file "COPYING" in the main directory of this archive
@ -2371,6 +2371,9 @@
+{ +{
+ int i; + int i;
+ +
+ if (!IS_2315())
+ return;
+
+ ar231x_irq_dispatch = ar2315_irq_dispatch; + ar231x_irq_dispatch = ar2315_irq_dispatch;
+ gpiointval = ar231x_read_reg(AR2315_GPIO_DI); + gpiointval = ar231x_read_reg(AR2315_GPIO_DI);
+ for (i = 0; i < AR531X_MISC_IRQ_COUNT; i++) { + for (i = 0; i < AR531X_MISC_IRQ_COUNT; i++) {
@ -2719,6 +2722,9 @@
+void __init +void __init
+ar2315_time_init(void) +ar2315_time_init(void)
+{ +{
+ if (!IS_2315())
+ return;
+
+ mips_hpt_frequency = ar2315_cpu_frequency() / 2; + mips_hpt_frequency = ar2315_cpu_frequency() / 2;
+} +}
+ +
@ -2885,13 +2891,13 @@
+static inline u32 +static inline u32
+ar231x_read_reg(u32 reg) +ar231x_read_reg(u32 reg)
+{ +{
+ return __raw_readl((u32 *) reg); + return __raw_readl((u32 *) KSEG1ADDR(reg));
+} +}
+ +
+static inline void +static inline void
+ar231x_write_reg(u32 reg, u32 val) +ar231x_write_reg(u32 reg, u32 val)
+{ +{
+ __raw_writel(val, (u32 *)reg); + __raw_writel(val, (u32 *) KSEG1ADDR(reg));
+} +}
+ +
+static inline u32 +static inline u32