--- a/arch/mips/ath79/dev-wmac.c +++ b/arch/mips/ath79/dev-wmac.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -22,6 +23,7 @@ #include #include "dev-wmac.h" +static u8 ath79_wmac_mac[ETH_ALEN]; static struct ath9k_platform_data ath79_wmac_data; static struct resource ath79_wmac_resources[] = { @@ -160,7 +162,7 @@ static void qca955x_wmac_setup(void) ath79_wmac_data.is_clk_25mhz = true; } -void __init ath79_register_wmac(u8 *cal_data) +void __init ath79_register_wmac(u8 *cal_data, u8 *mac_addr) { if (soc_is_ar913x()) ar913x_wmac_setup(); @@ -177,5 +179,10 @@ void __init ath79_register_wmac(u8 *cal_ memcpy(ath79_wmac_data.eeprom_data, cal_data, sizeof(ath79_wmac_data.eeprom_data)); + if (mac_addr) { + memcpy(ath79_wmac_mac, mac_addr, sizeof(ath79_wmac_mac)); + ath79_wmac_data.macaddr = ath79_wmac_mac; + } + platform_device_register(&ath79_wmac_device); } --- a/arch/mips/ath79/dev-wmac.h +++ b/arch/mips/ath79/dev-wmac.h @@ -12,6 +12,6 @@ #ifndef _ATH79_DEV_WMAC_H #define _ATH79_DEV_WMAC_H -void ath79_register_wmac(u8 *cal_data); +void ath79_register_wmac(u8 *cal_data, u8 *mac_addr); #endif /* _ATH79_DEV_WMAC_H */ --- a/arch/mips/ath79/mach-ap81.c +++ b/arch/mips/ath79/mach-ap81.c @@ -98,7 +98,7 @@ static void __init ap81_setup(void) ap81_gpio_keys); ath79_register_spi(&ap81_spi_data, ap81_spi_info, ARRAY_SIZE(ap81_spi_info)); - ath79_register_wmac(cal_data); + ath79_register_wmac(cal_data, NULL); ath79_register_usb(); } --- a/arch/mips/ath79/mach-db120.c +++ b/arch/mips/ath79/mach-db120.c @@ -134,7 +134,7 @@ static void __init db120_setup(void) ath79_register_spi(&db120_spi_data, db120_spi_info, ARRAY_SIZE(db120_spi_info)); ath79_register_usb(); - ath79_register_wmac(art + DB120_WMAC_CALDATA_OFFSET); + ath79_register_wmac(art + DB120_WMAC_CALDATA_OFFSET, NULL); db120_pci_init(art + DB120_PCIE_CALDATA_OFFSET); } --- a/arch/mips/ath79/mach-ap121.c +++ b/arch/mips/ath79/mach-ap121.c @@ -91,7 +91,7 @@ static void __init ap121_setup(void) ath79_register_spi(&ap121_spi_data, ap121_spi_info, ARRAY_SIZE(ap121_spi_info)); ath79_register_usb(); - ath79_register_wmac(cal_data); + ath79_register_wmac(cal_data, NULL); } MIPS_MACHINE(ATH79_MACH_AP121, "AP121", "Atheros AP121 reference board",