ar71xx-generic: Fix flash layout and MAC addresses of Meraki MR12/MR16
Fixes #993. Only verified for MR16.
This commit is contained in:
		
							parent
							
								
									850499fdb3
								
							
						
					
					
						commit
						846725750a
					
				| @ -112,6 +112,11 @@ ar71xx-generic | |||||||
|   - WZR-HP-G300NH2 |   - WZR-HP-G300NH2 | ||||||
|   - WZR-HP-G450H |   - WZR-HP-G450H | ||||||
| 
 | 
 | ||||||
|  | * Cisco Meraki | ||||||
|  | 
 | ||||||
|  |   - MR12 / MR62 | ||||||
|  |   - MR16 / MR66 | ||||||
|  | 
 | ||||||
| * D-Link | * D-Link | ||||||
| 
 | 
 | ||||||
|   - DIR-505 (A1, A2) |   - DIR-505 (A1, A2) | ||||||
|  | |||||||
| @ -33,6 +33,7 @@ elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus', 'carambola2', | |||||||
|                                             'mr600', 'mr600v2', |                                             'mr600', 'mr600v2', | ||||||
|                                             'mr900', 'mr900v2', |                                             'mr900', 'mr900v2', | ||||||
|                                             'mr1750', 'mr1750v2', |                                             'mr1750', 'mr1750v2', | ||||||
|  |                                             'mr12', 'mr16', 'mr66', | ||||||
|                                             'om2p', 'om2pv2', |                                             'om2p', 'om2pv2', | ||||||
|                                             'om2p-hs', 'om2p-hsv2', 'om2p-hsv3', |                                             'om2p-hs', 'om2p-hsv2', 'om2p-hsv3', | ||||||
|                                             'om2p-lc', |                                             'om2p-lc', | ||||||
|  | |||||||
| @ -0,0 +1,128 @@ | |||||||
|  | From: Oleander Reis <oleander@oleander.cc> | ||||||
|  | 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 | ||||||
| @ -408,8 +408,6 @@ $(eval $(call GluonModel,ALFANX,alfa-nx,alfa-network-n2-n5)) | |||||||
| 
 | 
 | ||||||
| ## Meraki
 | ## Meraki
 | ||||||
| 
 | 
 | ||||||
| # BROKEN: MAC address uniqueness issues
 |  | ||||||
| ifneq ($(BROKEN),) |  | ||||||
| # Meraki MR12/MR62
 | # Meraki MR12/MR62
 | ||||||
| $(eval $(call GluonProfile,MR12,rssileds)) | $(eval $(call GluonProfile,MR12,rssileds)) | ||||||
| $(eval $(call GluonProfileFactorySuffix,MR12)) | $(eval $(call GluonProfileFactorySuffix,MR12)) | ||||||
| @ -421,7 +419,6 @@ $(eval $(call GluonProfile,MR16,rssileds)) | |||||||
| $(eval $(call GluonProfileFactorySuffix,MR16)) | $(eval $(call GluonProfileFactorySuffix,MR16)) | ||||||
| $(eval $(call GluonModel,MR16,mr16,meraki-mr16)) | $(eval $(call GluonModel,MR16,mr16,meraki-mr16)) | ||||||
| $(eval $(call GluonModelAlias,MR16,meraki-mr16,meraki-mr66)) | $(eval $(call GluonModelAlias,MR16,meraki-mr16,meraki-mr66)) | ||||||
| endif |  | ||||||
| 
 | 
 | ||||||
| ## 8devices
 | ## 8devices
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user