mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-10 07:44:23 +08:00
iwlwifi: support new csr addresses for hw address
In future devices we use different csr addresses for hw addresses. Update csr addresses to support new and legacy devices. Signed-off-by: Golan Ben Ami <golan.ben.ami@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
bf1ad8978b
commit
18e8f43ff1
@ -313,6 +313,10 @@ struct iwl_pwr_tx_backoff {
|
||||
* @flag_master_dis: disable master
|
||||
* @flag_stop_master: stop master
|
||||
* @addr_sw_reset: address for resetting the device
|
||||
* @mac_addr0_otp: first part of MAC address from OTP
|
||||
* @mac_addr1_otp: second part of MAC address from OTP
|
||||
* @mac_addr0_strap: first part of MAC address from strap
|
||||
* @mac_addr1_strap: second part of MAC address from strap
|
||||
*/
|
||||
struct iwl_csr_params {
|
||||
u8 flag_sw_reset;
|
||||
@ -323,6 +327,10 @@ struct iwl_csr_params {
|
||||
u8 flag_master_dis;
|
||||
u8 flag_stop_master;
|
||||
u8 addr_sw_reset;
|
||||
u32 mac_addr0_otp;
|
||||
u32 mac_addr1_otp;
|
||||
u32 mac_addr0_strap;
|
||||
u32 mac_addr1_strap;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -451,7 +459,11 @@ static const struct iwl_csr_params iwl_csr_v1 = {
|
||||
.flag_sw_reset = 7,
|
||||
.flag_master_dis = 8,
|
||||
.flag_stop_master = 9,
|
||||
.addr_sw_reset = (CSR_BASE + 0x020)
|
||||
.addr_sw_reset = (CSR_BASE + 0x020),
|
||||
.mac_addr0_otp = 0x380,
|
||||
.mac_addr1_otp = 0x384,
|
||||
.mac_addr0_strap = 0x388,
|
||||
.mac_addr1_strap = 0x38C
|
||||
};
|
||||
|
||||
static const struct iwl_csr_params iwl_csr_v2 = {
|
||||
@ -462,7 +474,11 @@ static const struct iwl_csr_params iwl_csr_v2 = {
|
||||
.flag_master_dis = 28,
|
||||
.flag_stop_master = 29,
|
||||
.flag_sw_reset = 31,
|
||||
.addr_sw_reset = (CSR_BASE + 0x024)
|
||||
.addr_sw_reset = (CSR_BASE + 0x024),
|
||||
.mac_addr0_otp = 0x30,
|
||||
.mac_addr1_otp = 0x34,
|
||||
.mac_addr0_strap = 0x38,
|
||||
.mac_addr1_strap = 0x3C
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -579,8 +579,12 @@ static void iwl_flip_hw_address(__le32 mac_addr0, __le32 mac_addr1, u8 *dest)
|
||||
static void iwl_set_hw_address_from_csr(struct iwl_trans *trans,
|
||||
struct iwl_nvm_data *data)
|
||||
{
|
||||
__le32 mac_addr0 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR0_STRAP));
|
||||
__le32 mac_addr1 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR1_STRAP));
|
||||
__le32 mac_addr0 =
|
||||
cpu_to_le32(iwl_read32(trans,
|
||||
trans->cfg->csr->mac_addr0_strap));
|
||||
__le32 mac_addr1 =
|
||||
cpu_to_le32(iwl_read32(trans,
|
||||
trans->cfg->csr->mac_addr1_strap));
|
||||
|
||||
iwl_flip_hw_address(mac_addr0, mac_addr1, data->hw_addr);
|
||||
/*
|
||||
@ -590,8 +594,10 @@ static void iwl_set_hw_address_from_csr(struct iwl_trans *trans,
|
||||
if (is_valid_ether_addr(data->hw_addr))
|
||||
return;
|
||||
|
||||
mac_addr0 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR0_OTP));
|
||||
mac_addr1 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR1_OTP));
|
||||
mac_addr0 = cpu_to_le32(iwl_read32(trans,
|
||||
trans->cfg->csr->mac_addr0_otp));
|
||||
mac_addr1 = cpu_to_le32(iwl_read32(trans,
|
||||
trans->cfg->csr->mac_addr1_otp));
|
||||
|
||||
iwl_flip_hw_address(mac_addr0, mac_addr1, data->hw_addr);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user