该函数在mach-xxx.c中被调用,函数原形如下:
void __init ath79_register_wmac(u8 *cal_data, u8 *mac_addr)
{
if (soc_is_ar913x())
ar913x_wmac_setup();
else if (soc_is_ar933x())
ar933x_wmac_setup();
else if (soc_is_ar934x())
ar934x_wmac_setup();
else if (soc_is_qca953x())
qca953x_wmac_setup();
else if (soc_is_qca955x())
qca955x_wmac_setup();
else if (soc_is_qca956x() || soc_is_tp9343())
qca956x_wmac_setup();
else
BUG();
if (cal_data)
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);
}
cal_data :指向art分区中某个位置,将此位置的内容(一般为4096B)拷贝到eeprom中的数据区
mac_addr :指向wifi的mac地址,若为NULL,则直接使用cal_data中存储的mac,若不为空,则使用此mac,长度为6个字节mac值
若想修改wifi的mac地址可以修改这个文件:
build_dir/target-mips_34kc_musl-1.1.14/linux-ar71xx_generic/linux-4.1.11/arch/mips/ath79/mach-xxx.c