From 25dbd4639ca6d63d46ac1fa0a50ff76ff2b05cb2 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 9 Sep 2012 14:05:30 +0000 Subject: ar71xx: use routerboot_find_tag to find wlan data offset on RB751 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33348 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../ar71xx/files/arch/mips/ath79/mach-rb750.c | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'target/linux/ar71xx/files/arch/mips') diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c index 305fa2f87a..bee8bdf9c2 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -26,6 +27,7 @@ #include "dev-usb.h" #include "dev-eth.h" #include "machtypes.h" +#include "routerboot.h" static struct rb750_led_data rb750_leds[] = { { @@ -277,15 +279,16 @@ static void __init rb750gr3_setup(void) MIPS_MACHINE(ATH79_MACH_RB_750G_R3, "750Gr3", "MikroTik RouterBOARD 750GL", rb750gr3_setup); -#define RB751_HARDCONFIG 0x1f00b000 +#define RB751_HARDCONFIG 0x1f00b000 +#define RB751_HARDCONFIG_SIZE 0x1000 #define RB751_MAC_ADDRESS_OFFSET 0xE80 -#define RB751_CALDATA_OFFSET 0x27C -#define RB751_CALDATA_SIZE 0xc00 static void __init rb751_wlan_setup(void) { u8 *hardconfig = (u8 *) KSEG1ADDR(RB751_HARDCONFIG); struct ath9k_platform_data *wmac_data; + u16 tag_len; + u8 *tag; int err; wmac_data = ap9x_pci_get_wmac_data(0); @@ -296,11 +299,15 @@ static void __init rb751_wlan_setup(void) ap9x_pci_setup_wmac_led_pin(0, 9); - err = rle_decode(hardconfig + RB751_CALDATA_OFFSET, - RB751_CALDATA_SIZE, - (unsigned char *) wmac_data->eeprom_data, - sizeof(wmac_data->eeprom_data), - NULL, NULL); + err = routerboot_find_tag(hardconfig, RB751_HARDCONFIG_SIZE, + RB_ID_WLAN_DATA, &tag, &tag_len); + if (err) { + pr_err("rb75x: no calibration data found\n"); + return; + } + + err = rle_decode(tag, tag_len, (unsigned char *) wmac_data->eeprom_data, + sizeof(wmac_data->eeprom_data), NULL, NULL); if (err) { pr_err("rb75x: unable to decode wlan eeprom data\n"); return; -- cgit v1.2.3