mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 03:50:53 +07:00
rsi: move common part of firmware load to separate function
Till software bootloader ready state, communication with device is common for 9113 and 9116. Hence moved that part of firmware loading to separate function rsi_prepare_fw_load(). Also LMAC_VER_OFFSET is different for 9113 and 9116, so renamed existing macro to LMAC_VER_OFFSET_9113 Signed-off-by: Siva Rebbagondla <siva8118@gmail.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
54fdb318c1
commit
3ac61578fb
@ -829,21 +829,18 @@ static int auto_fw_upgrade(struct rsi_hw *adapter, u8 *flash_content,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rsi_load_firmware(struct rsi_hw *adapter)
|
||||
static int rsi_hal_prepare_fwload(struct rsi_hw *adapter)
|
||||
{
|
||||
struct rsi_common *common = adapter->priv;
|
||||
struct rsi_host_intf_ops *hif_ops = adapter->host_intf_ops;
|
||||
const struct firmware *fw_entry = NULL;
|
||||
u32 regout_val = 0, content_size;
|
||||
u16 tmp_regout_val = 0;
|
||||
struct ta_metadata *metadata_p;
|
||||
u32 regout_val = 0;
|
||||
int status;
|
||||
|
||||
bl_start_cmd_timer(adapter, BL_CMD_TIMEOUT);
|
||||
|
||||
while (!adapter->blcmd_timer_expired) {
|
||||
status = hif_ops->master_reg_read(adapter, SWBL_REGOUT,
|
||||
®out_val, 2);
|
||||
®out_val,
|
||||
RSI_COMMON_REG_SIZE);
|
||||
if (status < 0) {
|
||||
rsi_dbg(ERR_ZONE,
|
||||
"%s: REGOUT read failed\n", __func__);
|
||||
@ -865,13 +862,26 @@ static int rsi_load_firmware(struct rsi_hw *adapter)
|
||||
(regout_val & 0xff));
|
||||
|
||||
status = hif_ops->master_reg_write(adapter, SWBL_REGOUT,
|
||||
(REGOUT_INVALID | REGOUT_INVALID << 8),
|
||||
2);
|
||||
if (status < 0) {
|
||||
(REGOUT_INVALID |
|
||||
REGOUT_INVALID << 8),
|
||||
RSI_COMMON_REG_SIZE);
|
||||
if (status < 0)
|
||||
rsi_dbg(ERR_ZONE, "%s: REGOUT writing failed..\n", __func__);
|
||||
return status;
|
||||
}
|
||||
mdelay(1);
|
||||
else
|
||||
rsi_dbg(INFO_ZONE,
|
||||
"===> Device is ready to load firmware <===\n");
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static int rsi_load_9113_firmware(struct rsi_hw *adapter)
|
||||
{
|
||||
struct rsi_common *common = adapter->priv;
|
||||
const struct firmware *fw_entry = NULL;
|
||||
u32 content_size;
|
||||
u16 tmp_regout_val = 0;
|
||||
struct ta_metadata *metadata_p;
|
||||
int status;
|
||||
|
||||
status = bl_cmd(adapter, CONFIG_AUTO_READ_MODE, CMD_PASS,
|
||||
"AUTO_READ_CMD");
|
||||
@ -902,13 +912,15 @@ static int rsi_load_firmware(struct rsi_hw *adapter)
|
||||
|
||||
/* Get the firmware version */
|
||||
common->lmac_ver.ver.info.fw_ver[0] =
|
||||
fw_entry->data[LMAC_VER_OFFSET] & 0xFF;
|
||||
fw_entry->data[LMAC_VER_OFFSET_9113] & 0xFF;
|
||||
common->lmac_ver.ver.info.fw_ver[1] =
|
||||
fw_entry->data[LMAC_VER_OFFSET + 1] & 0xFF;
|
||||
common->lmac_ver.major = fw_entry->data[LMAC_VER_OFFSET + 2] & 0xFF;
|
||||
fw_entry->data[LMAC_VER_OFFSET_9113 + 1] & 0xFF;
|
||||
common->lmac_ver.major =
|
||||
fw_entry->data[LMAC_VER_OFFSET_9113 + 2] & 0xFF;
|
||||
common->lmac_ver.release_num =
|
||||
fw_entry->data[LMAC_VER_OFFSET + 3] & 0xFF;
|
||||
common->lmac_ver.minor = fw_entry->data[LMAC_VER_OFFSET + 4] & 0xFF;
|
||||
fw_entry->data[LMAC_VER_OFFSET_9113 + 3] & 0xFF;
|
||||
common->lmac_ver.minor =
|
||||
fw_entry->data[LMAC_VER_OFFSET_9113 + 4] & 0xFF;
|
||||
common->lmac_ver.patch_num = 0;
|
||||
rsi_print_version(common);
|
||||
|
||||
@ -980,10 +992,14 @@ static int rsi_load_firmware(struct rsi_hw *adapter)
|
||||
int rsi_hal_device_init(struct rsi_hw *adapter)
|
||||
{
|
||||
struct rsi_common *common = adapter->priv;
|
||||
int status;
|
||||
|
||||
switch (adapter->device_model) {
|
||||
case RSI_DEV_9113:
|
||||
if (rsi_load_firmware(adapter)) {
|
||||
status = rsi_hal_prepare_fwload(adapter);
|
||||
if (status < 0)
|
||||
return status;
|
||||
if (rsi_load_9113_firmware(adapter)) {
|
||||
rsi_dbg(ERR_ZONE,
|
||||
"%s: Failed to load TA instructions\n",
|
||||
__func__);
|
||||
|
@ -113,7 +113,7 @@
|
||||
#define BBP_INFO_40MHZ 0x6
|
||||
|
||||
#define FW_FLASH_OFFSET 0x820
|
||||
#define LMAC_VER_OFFSET (FW_FLASH_OFFSET + 0x200)
|
||||
#define LMAC_VER_OFFSET_9113 (FW_FLASH_OFFSET + 0x200)
|
||||
#define MAX_DWORD_ALIGN_BYTES 64
|
||||
#define RSI_COMMON_REG_SIZE 2
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user