diff options
author | M Chetan Kumar <m.chetan.kumar@linux.intel.com> | 2021-09-21 19:47:36 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-09-22 16:23:33 +0300 |
commit | 8bea96efa7c0c57dc0c9ec4518ed61e3d5e9261c (patch) | |
tree | 8c8c530a903dea5bc10e3d930785b1461da66307 /drivers/net/wwan | |
parent | a5df6333f1a08380c3b94a02105482263711ed3a (diff) | |
download | linux-8bea96efa7c0c57dc0c9ec4518ed61e3d5e9261c.tar.xz |
net: wwan: iosm: fw flashing and cd improvements
1> Function comments moved to .c file.
2> Use literals in return to improve readability.
3> Do error handling check instead of success check.
4> Redundant ret assignment removed.
Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wwan')
-rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_coredump.c | 23 | ||||
-rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_coredump.h | 16 | ||||
-rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_devlink.c | 40 | ||||
-rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_devlink.h | 18 | ||||
-rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_flash.c | 51 | ||||
-rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_flash.h | 42 |
6 files changed, 87 insertions, 103 deletions
diff --git a/drivers/net/wwan/iosm/iosm_ipc_coredump.c b/drivers/net/wwan/iosm/iosm_ipc_coredump.c index fba3c3454e80..9acd87724c9d 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_coredump.c +++ b/drivers/net/wwan/iosm/iosm_ipc_coredump.c @@ -5,7 +5,15 @@ #include "iosm_ipc_coredump.h" -/* Collect coredump data from modem */ +/** + * ipc_coredump_collect - To collect coredump + * @devlink: Pointer to devlink instance. + * @data: Pointer to snapshot + * @entry: ID of requested snapshot + * @region_size: Region size + * + * Returns: 0 on success, error on failure + */ int ipc_coredump_collect(struct iosm_devlink *devlink, u8 **data, int entry, u32 region_size) { @@ -38,20 +46,27 @@ int ipc_coredump_collect(struct iosm_devlink *devlink, u8 **data, int entry, *data = data_ptr; - return ret; + return 0; + get_cd_fail: vfree(data_ptr); return ret; } -/* Get coredump list to be collected from modem */ +/** + * ipc_coredump_get_list - Get coredump list from modem + * @devlink: Pointer to devlink instance. + * @cmd: RPSI command to be sent + * + * Returns: 0 on success, error on failure + */ int ipc_coredump_get_list(struct iosm_devlink *devlink, u16 cmd) { u32 byte_read, num_entries, file_size; struct iosm_cd_table *cd_table; u8 size[MAX_SIZE_LEN], i; char *filename; - int ret = 0; + int ret; cd_table = kzalloc(MAX_CD_LIST_SIZE, GFP_KERNEL); if (!cd_table) { diff --git a/drivers/net/wwan/iosm/iosm_ipc_coredump.h b/drivers/net/wwan/iosm/iosm_ipc_coredump.h index d5028153c8d1..0809ba664276 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_coredump.h +++ b/drivers/net/wwan/iosm/iosm_ipc_coredump.h @@ -51,25 +51,9 @@ struct iosm_cd_table { struct iosm_cd_list list; } __packed; -/** - * ipc_coredump_collect - To collect coredump - * @devlink: Pointer to devlink instance. - * @data: Pointer to snapshot - * @entry: ID of requested snapshot - * @region_size: Region size - * - * Returns: 0 on success, error on failure - */ int ipc_coredump_collect(struct iosm_devlink *devlink, u8 **data, int entry, u32 region_size); -/** - * ipc_coredump_get_list - Get coredump list - * @devlink: Pointer to devlink instance. - * @cmd: RPSI command to be sent - * - * Returns: 0 on success, error on failure - */ int ipc_coredump_get_list(struct iosm_devlink *devlink, u16 cmd); #endif /* _IOSM_IPC_COREDUMP_H_ */ diff --git a/drivers/net/wwan/iosm/iosm_ipc_devlink.c b/drivers/net/wwan/iosm/iosm_ipc_devlink.c index aa1c8c6276dc..42dbe7fe663c 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_devlink.c +++ b/drivers/net/wwan/iosm/iosm_ipc_devlink.c @@ -134,11 +134,11 @@ static int ipc_devlink_flash_update(struct devlink *devlink, { struct iosm_devlink *ipc_devlink = devlink_priv(devlink); enum iosm_flash_comp_type fls_type; - u32 rc = -EINVAL; + int rc = -EINVAL; u8 *mdm_rsp; if (!params->component) - return rc; + return -EINVAL; mdm_rsp = kzalloc(IOSM_EBL_DW_PACK_SIZE, GFP_KERNEL); if (!mdm_rsp) @@ -153,11 +153,12 @@ static int ipc_devlink_flash_update(struct devlink *devlink, break; case FLASH_COMP_TYPE_EBL: rc = ipc_flash_boot_ebl(ipc_devlink, params->fw); - if (!rc) - rc = ipc_flash_boot_set_capabilities(ipc_devlink, - mdm_rsp); - if (!rc) - rc = ipc_flash_read_swid(ipc_devlink, mdm_rsp); + if (rc) + break; + rc = ipc_flash_boot_set_capabilities(ipc_devlink, mdm_rsp); + if (rc) + break; + rc = ipc_flash_read_swid(ipc_devlink, mdm_rsp); break; case FLASH_COMP_TYPE_FLS: rc = ipc_flash_send_fls(ipc_devlink, params->fw, mdm_rsp); @@ -185,7 +186,14 @@ static const struct devlink_ops devlink_flash_ops = { .flash_update = ipc_devlink_flash_update, }; -/* Send command to modem to collect data */ +/** + * ipc_devlink_send_cmd - Send command to Modem + * @ipc_devlink: Pointer to struct iosm_devlink + * @cmd: Command to be sent to modem + * @entry: Command entry number + * + * Returns: 0 on success and failure value on error + */ int ipc_devlink_send_cmd(struct iosm_devlink *ipc_devlink, u16 cmd, u32 entry) { struct iosm_rpsi_cmd rpsi_cmd; @@ -199,6 +207,7 @@ int ipc_devlink_send_cmd(struct iosm_devlink *ipc_devlink, u16 cmd, u32 entry) sizeof(rpsi_cmd)); } +/* Function to create snapshot */ static int ipc_devlink_coredump_snapshot(struct devlink *dl, const struct devlink_region_ops *ops, struct netlink_ext_ack *extack, @@ -223,7 +232,8 @@ static int ipc_devlink_coredump_snapshot(struct devlink *dl, if (cd_list->entry == (IOSM_NOF_CD_REGION - 1)) ipc_coredump_get_list(ipc_devlink, rpsi_cmd_coredump_end); - return rc; + return 0; + coredump_collect_err: ipc_coredump_get_list(ipc_devlink, rpsi_cmd_coredump_end); return rc; @@ -270,7 +280,12 @@ static void ipc_devlink_destroy_region(struct iosm_devlink *ipc_devlink) devlink_region_destroy(ipc_devlink->cd_regions[i]); } -/* Handle registration to devlink framework */ +/** + * ipc_devlink_init - Initialize/register devlink to IOSM driver + * @ipc_imem: Pointer to struct iosm_imem + * + * Returns: Pointer to iosm_devlink on success and NULL on failure + */ struct iosm_devlink *ipc_devlink_init(struct iosm_imem *ipc_imem) { struct ipc_chnl_cfg chnl_cfg_flash = { 0 }; @@ -335,7 +350,10 @@ devlink_alloc_fail: return NULL; } -/* Handle unregistration of devlink */ +/** + * ipc_devlink_deinit - To unintialize the devlink from IOSM driver. + * @ipc_devlink: Devlink instance + */ void ipc_devlink_deinit(struct iosm_devlink *ipc_devlink) { struct devlink *devlink_ctx = ipc_devlink->devlink_ctx; diff --git a/drivers/net/wwan/iosm/iosm_ipc_devlink.h b/drivers/net/wwan/iosm/iosm_ipc_devlink.h index 392735080cb3..fa2b388a2f8a 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_devlink.h +++ b/drivers/net/wwan/iosm/iosm_ipc_devlink.h @@ -180,28 +180,10 @@ struct iosm_rpsi_cmd { __le16 crc; }; -/** - * ipc_devlink_init - To initialize the devlink to IOSM driver - * @ipc_imem: Pointer to struct iosm_imem - * - * Returns: Pointer to iosm_devlink on success and NULL on failure - */ struct iosm_devlink *ipc_devlink_init(struct iosm_imem *ipc_imem); -/** - * ipc_devlink_deinit - To unintialize the devlink from IOSM driver. - * @ipc_devlink: Devlink instance - */ void ipc_devlink_deinit(struct iosm_devlink *ipc_devlink); -/** - * ipc_devlink_send_cmd - Send command to Modem - * @ipc_devlink: Pointer to struct iosm_devlink - * @cmd: Command to be sent to modem - * @entry: Command entry number - * - * Returns: 0 on success and failure value on error - */ int ipc_devlink_send_cmd(struct iosm_devlink *ipc_devlink, u16 cmd, u32 entry); #endif /* _IOSM_IPC_DEVLINK_H */ diff --git a/drivers/net/wwan/iosm/iosm_ipc_flash.c b/drivers/net/wwan/iosm/iosm_ipc_flash.c index 3d2f1ec6da00..ebceedf7c9f5 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_flash.c +++ b/drivers/net/wwan/iosm/iosm_ipc_flash.c @@ -40,7 +40,6 @@ static int ipc_flash_proc_check_ebl_rsp(void *hdr_rsp, void *payload_rsp) { struct iosm_ebl_error *err_info = payload_rsp; u16 *rsp_code = hdr_rsp; - int res = 0; u32 i; if (*rsp_code == IOSM_EBL_RSP_BUFF) { @@ -51,10 +50,10 @@ static int ipc_flash_proc_check_ebl_rsp(void *hdr_rsp, void *payload_rsp) err_info->error[i].error_code); } } - res = -EINVAL; + return -EINVAL; } - return res; + return 0; } /* Send data to the modem */ @@ -90,7 +89,12 @@ ipc_free_payload: return ret; } -/* Allocate flash channel and read LER data from modem */ +/** + * ipc_flash_link_establish - Flash link establishment + * @ipc_imem: Pointer to struct iosm_imem + * + * Returns: 0 on success and failure value on error + */ int ipc_flash_link_establish(struct iosm_imem *ipc_imem) { u8 ler_data[IOSM_LER_RSP_SIZE]; @@ -109,6 +113,7 @@ int ipc_flash_link_establish(struct iosm_imem *ipc_imem) if (bytes_read != IOSM_LER_RSP_SIZE) goto devlink_read_fail; + return 0; devlink_read_fail: @@ -179,12 +184,16 @@ ipc_flash_send_rcv: return ret; } -/* Set the capabilities for the EBL */ +/** + * ipc_flash_boot_set_capabilities - Set modem boot capabilities in flash + * @ipc_devlink: Pointer to devlink structure + * @mdm_rsp: Pointer to modem response buffer + * + * Returns: 0 on success and failure value on error + */ int ipc_flash_boot_set_capabilities(struct iosm_devlink *ipc_devlink, u8 *mdm_rsp) { - int ret; - ipc_devlink->ebl_ctx.ebl_sw_info_version = ipc_devlink->ebl_ctx.m_ebl_resp[EBL_RSP_SW_INFO_VER]; ipc_devlink->ebl_ctx.m_ebl_resp[EBL_SKIP_ERASE] = IOSM_CAP_NOT_ENHANCED; @@ -205,10 +214,9 @@ int ipc_flash_boot_set_capabilities(struct iosm_devlink *ipc_devlink, /* Write back the EBL capability to modem * Request Set Protcnf command */ - ret = ipc_flash_send_receive(ipc_devlink, FLASH_SET_PROT_CONF, + return ipc_flash_send_receive(ipc_devlink, FLASH_SET_PROT_CONF, ipc_devlink->ebl_ctx.m_ebl_resp, IOSM_EBL_RSP_SIZE, mdm_rsp); - return ret; } /* Read the SWID type and SWID value from the EBL */ @@ -380,7 +388,14 @@ dl_region_fail: return ret; } -/* Flash the individual fls files */ +/** + * ipc_flash_send_fls - Inject Modem subsystem fls file to device + * @ipc_devlink: Pointer to devlink structure + * @fw: FW image + * @mdm_rsp: Pointer to modem response buffer + * + * Returns: 0 on success and failure value on error + */ int ipc_flash_send_fls(struct iosm_devlink *ipc_devlink, const struct firmware *fw, u8 *mdm_rsp) { @@ -420,7 +435,13 @@ ipc_flash_err: return ret; } -/* Inject RPSI */ +/** + * ipc_flash_boot_psi - Inject PSI image + * @ipc_devlink: Pointer to devlink structure + * @fw: FW image + * + * Returns: 0 on success and failure value on error + */ int ipc_flash_boot_psi(struct iosm_devlink *ipc_devlink, const struct firmware *fw) { @@ -470,7 +491,13 @@ ipc_flash_psi_free: return ret; } -/* Inject EBL */ +/** + * ipc_flash_boot_ebl - Inject EBL image + * @ipc_devlink: Pointer to devlink structure + * @fw: FW image + * + * Returns: 0 on success and failure value on error + */ int ipc_flash_boot_ebl(struct iosm_devlink *ipc_devlink, const struct firmware *fw) { diff --git a/drivers/net/wwan/iosm/iosm_ipc_flash.h b/drivers/net/wwan/iosm/iosm_ipc_flash.h index aee848927228..132d59d60fbe 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_flash.h +++ b/drivers/net/wwan/iosm/iosm_ipc_flash.h @@ -211,61 +211,19 @@ struct iosm_flash_data { __le32 msg_length; }; -/** - * ipc_flash_boot_psi - Inject PSI image - * @ipc_devlink: Pointer to devlink structure - * @fw: FW image - * - * Returns: 0 on success and failure value on error - */ int ipc_flash_boot_psi(struct iosm_devlink *ipc_devlink, const struct firmware *fw); -/** - * ipc_flash_boot_ebl - Inject EBL image - * @ipc_devlink: Pointer to devlink structure - * @fw: FW image - * - * Returns: 0 on success and failure value on error - */ int ipc_flash_boot_ebl(struct iosm_devlink *ipc_devlink, const struct firmware *fw); -/** - * ipc_flash_boot_set_capabilities - Set modem bool capabilities in flash - * @ipc_devlink: Pointer to devlink structure - * @mdm_rsp: Pointer to modem response buffer - * - * Returns: 0 on success and failure value on error - */ int ipc_flash_boot_set_capabilities(struct iosm_devlink *ipc_devlink, u8 *mdm_rsp); -/** - * ipc_flash_link_establish - Flash link establishment - * @ipc_imem: Pointer to struct iosm_imem - * - * Returns: 0 on success and failure value on error - */ int ipc_flash_link_establish(struct iosm_imem *ipc_imem); -/** - * ipc_flash_read_swid - Get swid during flash phase - * @ipc_devlink: Pointer to devlink structure - * @mdm_rsp: Pointer to modem response buffer - * - * Returns: 0 on success and failure value on error - */ int ipc_flash_read_swid(struct iosm_devlink *ipc_devlink, u8 *mdm_rsp); -/** - * ipc_flash_send_fls - Inject Modem subsystem fls file to device - * @ipc_devlink: Pointer to devlink structure - * @fw: FW image - * @mdm_rsp: Pointer to modem response buffer - * - * Returns: 0 on success and failure value on error - */ int ipc_flash_send_fls(struct iosm_devlink *ipc_devlink, const struct firmware *fw, u8 *mdm_rsp); #endif |