X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/cc6a33cf19bc80cd38322e0ea2de9e1051d0dfc7..37925d03657db662fdbfe701089bd2c2bd88f40d:/target/linux/atheros/patches-2.6.28/100-board.patch diff --git a/target/linux/atheros/patches-2.6.28/100-board.patch b/target/linux/atheros/patches-2.6.28/100-board.patch index 7c4fad185..587094d26 100644 --- a/target/linux/atheros/patches-2.6.28/100-board.patch +++ b/target/linux/atheros/patches-2.6.28/100-board.patch @@ -82,7 +82,7 @@ +obj-$(CONFIG_ATHEROS_AR2315) += ar2315.o --- /dev/null +++ b/arch/mips/ar231x/board.c -@@ -0,0 +1,247 @@ +@@ -0,0 +1,249 @@ +/* + * 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 @@ -251,6 +251,8 @@ + config = ar231x_board.config; + if (!memcmp(config->enet0_mac, "\x00\x00\x00\x00\x00\x00", 6)) { + printk(KERN_INFO "Fixing up empty mac addresses\n"); ++ random_ether_addr(config->wlan0_mac); ++ config->wlan0_mac[0] &= ~0x06; + random_ether_addr(config->enet0_mac); + random_ether_addr(config->enet1_mac); + } @@ -1803,7 +1805,6 @@ + .name = "leds-gpio", + .id = -1, + .dev.platform_data = (void *) &ar5312_led_data, -+ .num_resources = 1, +}; +#endif + @@ -1925,7 +1926,7 @@ + if (!ar231x_board.radio) + return 0; + -+ if (*((u32 *) ar231x_board.radio) & AR531X_RADIO0_MASK) ++ if (*((u32 *) radio) & AR531X_RADIO0_MASK) + ar231x_add_wmac(0, AR531X_WLAN0, + AR5312_IRQ_WLAN0_INTRS); + @@ -1949,7 +1950,7 @@ + break; + } + -+ if (*((u32 *) ar231x_board.radio) & AR531X_RADIO1_MASK) ++ if (*((u32 *) radio) & AR531X_RADIO1_MASK) + ar231x_add_wmac(1, AR531X_WLAN1, + AR5312_IRQ_WLAN1_INTRS); + @@ -1993,7 +1994,7 @@ + if ((result = ar231x_read_reg(AR5312_SCRATCH))) + return result; + -+ devid = ar231x_board.devid; ++ devid = ar231x_read_reg(AR531X_REV); + devid &= AR531X_REV_MAJ; + devid >>= AR531X_REV_MAJ_S; + if (devid == AR531X_REV_MAJ_AR2313) { @@ -2064,9 +2065,6 @@ + if (!IS_5312()) + return; + -+ devid = ar231x_read_reg(AR531X_REV); -+ devid &= AR531X_REV_MAJ | AR531X_REV_MIN; -+ + /* Detect memory size */ + memcfg = ar231x_read_reg(AR531X_MEM_CFG1); + bank0AC = (memcfg & MEM_CFG1_AC0) >> MEM_CFG1_AC0_S; @@ -2075,8 +2073,12 @@ + + (bank1AC ? (1 << (bank1AC+1)) : 0); + memsize <<= 20; + 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_gpiodev = &ar5312_gpiodev; +} + +void __init @@ -2096,7 +2098,7 @@ + --- /dev/null +++ b/arch/mips/ar231x/ar2315.c -@@ -0,0 +1,673 @@ +@@ -0,0 +1,677 @@ +/* + * 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 @@ -2149,10 +2151,8 @@ + + if (pend) { + bit = fls(pend) - 1; -+ printk("GPIO IRQ: pend=0x%08x, val=%08x, bit=%d\n", pend, gpiointval, bit); + pend &= ~(1 << bit); + gpiointval ^= (1 << bit); -+ printk("AFTER IRQ: pend=0x%08x, val=%08x, bit=%d\n", pend, gpiointval, bit); + } + + if (!pend) @@ -2371,6 +2371,9 @@ +{ + int i; + ++ if (!IS_2315()) ++ return; ++ + ar231x_irq_dispatch = ar2315_irq_dispatch; + gpiointval = ar231x_read_reg(AR2315_GPIO_DI); + for (i = 0; i < AR531X_MISC_IRQ_COUNT; i++) { @@ -2719,6 +2722,9 @@ +void __init +ar2315_time_init(void) +{ ++ if (!IS_2315()) ++ return; ++ + mips_hpt_frequency = ar2315_cpu_frequency() / 2; +} + @@ -2885,13 +2891,13 @@ +static inline u32 +ar231x_read_reg(u32 reg) +{ -+ return __raw_readl((u32 *) reg); ++ return __raw_readl((u32 *) KSEG1ADDR(reg)); +} + +static inline void +ar231x_write_reg(u32 reg, u32 val) +{ -+ __raw_writel(val, (u32 *)reg); ++ __raw_writel(val, (u32 *) KSEG1ADDR(reg)); +} + +static inline u32