From: Oleander Reis Date: Sat, 14 Jan 2017 05:59:00 +0100 Subject: ar71xx-generic: Fix flash layout and MAC addresses of Meraki MR12/MR16 Fixes #993. Only verified for MR16. diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c index 12c9a1cb5d932d0b579e865f122f653b03b47170..fc547f8d7e9eadd84855d48d9958ed32218a18d4 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c @@ -42,8 +42,9 @@ #define MR12_WAN_PHYMASK BIT(4) -#define MR12_WMAC0_MAC_OFFSET 0x120c -#define MR12_CALDATA0_OFFSET 0x1000 +#define MR12_MAC 0xbf090000 +#define MR12_ART 0xbfff0000 +#define MR12_CALDATA0_OFFSET 0x1000 static struct gpio_led MR12_leds_gpio[] __initdata = { { @@ -90,8 +91,11 @@ static struct gpio_keys_button MR12_gpio_keys[] __initdata = { static void __init MR12_setup(void) { - u8 *mac = (u8 *) KSEG1ADDR(0xbfff0000); - + u8 *mac = (u8 *) KSEG1ADDR(MR12_MAC); + u8 *art = (u8 *) KSEG1ADDR(MR12_ART); + + u8 wlan0_mac[ETH_ALEN]; + ath79_register_mdio(0,0x0); ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); @@ -99,6 +103,8 @@ static void __init MR12_setup(void) ath79_eth0_data.phy_mask = MR12_WAN_PHYMASK; ath79_register_eth(0); + ath79_init_mac(wlan0_mac, mac, 1); + ath79_register_m25p80(NULL); ath79_register_leds_gpio(-1, ARRAY_SIZE(MR12_leds_gpio), @@ -107,9 +113,8 @@ static void __init MR12_setup(void) ARRAY_SIZE(MR12_gpio_keys), MR12_gpio_keys); - ap91_pci_init(mac + MR12_CALDATA0_OFFSET, - mac + MR12_WMAC0_MAC_OFFSET); + ap91_pci_init(art + MR12_CALDATA0_OFFSET, wlan0_mac); } -MIPS_MACHINE(ATH79_MACH_MR12, "MR12", "Meraki MR12", MR12_setup); \ No newline at end of file +MIPS_MACHINE(ATH79_MACH_MR12, "MR12", "Meraki MR12", MR12_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c index 9f08e3d4c04c337e6e9d768e3881381ac17b2ddc..0cf61f92ebf6b643162fc7c316600f2076b75a74 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c @@ -42,8 +42,8 @@ #define MR16_WAN_PHYMASK BIT(0) -#define MR16_WMAC0_MAC_OFFSET 0x120c -#define MR16_WMAC1_MAC_OFFSET 0x520c +#define MR16_MAC 0xbf080066 +#define MR16_ART 0xbfff0000 #define MR16_CALDATA0_OFFSET 0x1000 #define MR16_CALDATA1_OFFSET 0x5000 @@ -92,8 +92,12 @@ static struct gpio_keys_button MR16_gpio_keys[] __initdata = { static void __init MR16_setup(void) { - u8 *mac = (u8 *) KSEG1ADDR(0xbfff0000); - + u8 *mac = (u8 *) KSEG1ADDR(MR16_MAC); + u8 *art = (u8 *) KSEG1ADDR(MR16_ART); + + u8 wlan0_mac[ETH_ALEN]; + u8 wlan1_mac[ETH_ALEN]; + ath79_register_mdio(0,0x0); ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); @@ -101,6 +105,9 @@ static void __init MR16_setup(void) ath79_eth0_data.phy_mask = MR16_WAN_PHYMASK; ath79_register_eth(0); + ath79_init_mac(wlan0_mac, mac, 1); + ath79_init_mac(wlan1_mac, mac, 2); + ath79_register_m25p80(NULL); ath79_register_leds_gpio(-1, ARRAY_SIZE(MR16_leds_gpio), @@ -109,10 +116,8 @@ static void __init MR16_setup(void) ARRAY_SIZE(MR16_gpio_keys), MR16_gpio_keys); - ap94_pci_init(mac + MR16_CALDATA0_OFFSET, - mac + MR16_WMAC0_MAC_OFFSET, - mac + MR16_CALDATA1_OFFSET, - mac + MR16_WMAC1_MAC_OFFSET); + ap94_pci_init(art + MR16_CALDATA0_OFFSET, wlan0_mac, + art + MR16_CALDATA1_OFFSET, wlan1_mac); } -MIPS_MACHINE(ATH79_MACH_MR16, "MR16", "Meraki MR16", MR16_setup); \ No newline at end of file +MIPS_MACHINE(ATH79_MACH_MR16, "MR16", "Meraki MR16", MR16_setup); diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 61e221255f6742f9594da168b11af7716d6a720e..5ead0677f9e082b5393e3ecb4741aab37f840679 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1136,8 +1136,8 @@ dlrtdev_mtdlayout_fat=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,7168k(firmware dragino2_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,16000k(firmware),64k(config)ro,64k(art)ro dw33d_mtdlayout=mtdparts=spi0.0:256k(u-boot),64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware);ar934x-nfc:96m(rootfs_data),32m(backup)ro hiwifi_hc6361_mtdlayout=mtdparts=spi0.0:64k(u-boot)ro,64k(bdinfo)ro,1280k(kernel),14848k(rootfs),64k(backup)ro,64k(art)ro,16128k@0x20000(firmware) -mr12_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,13440k(rootfs),2304k(kernel),128k(art)ro,15744k@0x80000(firmware) -mr16_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,13440k(rootfs),2304k(kernel),128k(art)ro,15744k@0x80000(firmware) +mr12_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,128k(config)ro,13312k(rootfs),2304k(kernel),128k(art)ro,15616k@0xa0000(firmware) +mr16_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,128k(config)ro,13312k(rootfs),2304k(kernel),128k(art)ro,15616k@0xa0000(firmware) pb92_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,2752k(rootfs),896k(kernel),64k(nvram),64k(art)ro,3648k@0x50000(firmware) planex_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7744k(firmware),128k(art)ro ubntxm_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7552k(firmware),256k(cfg)ro,64k(EEPROM)ro