diff options
Diffstat (limited to 'drivers/net/wwan/iosm/iosm_ipc_flash.h')
-rw-r--r-- | drivers/net/wwan/iosm/iosm_ipc_flash.h | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/drivers/net/wwan/iosm/iosm_ipc_flash.h b/drivers/net/wwan/iosm/iosm_ipc_flash.h deleted file mode 100644 index aee848927228..000000000000 --- a/drivers/net/wwan/iosm/iosm_ipc_flash.h +++ /dev/null @@ -1,271 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only - * - * Copyright (C) 2020-2021 Intel Corporation. - */ - -#ifndef _IOSM_IPC_FLASH_H -#define _IOSM_IPC_FLASH_H - -/* Buffer size used to read the fls image */ -#define IOSM_FLS_BUF_SIZE 0x00100000 -/* Full erase start address */ -#define IOSM_ERASE_START_ADDR 0x00000000 -/* Erase length for NAND flash */ -#define IOSM_ERASE_LEN 0xFFFFFFFF -/* EBL response Header size */ -#define IOSM_EBL_HEAD_SIZE 8 -/* EBL payload size */ -#define IOSM_EBL_W_PAYL_SIZE 2048 -/* Total EBL pack size */ -#define IOSM_EBL_W_PACK_SIZE (IOSM_EBL_HEAD_SIZE + IOSM_EBL_W_PAYL_SIZE) -/* EBL payload size */ -#define IOSM_EBL_DW_PAYL_SIZE 16384 -/* Total EBL pack size */ -#define IOSM_EBL_DW_PACK_SIZE (IOSM_EBL_HEAD_SIZE + IOSM_EBL_DW_PAYL_SIZE) -/* EBL name size */ -#define IOSM_EBL_NAME 32 -/* Maximum supported error types */ -#define IOSM_MAX_ERRORS 8 -/* Read size for RPSI/EBL response */ -#define IOSM_READ_SIZE 2 -/* Link establishment response ack size */ -#define IOSM_LER_ACK_SIZE 2 -/* PSI ACK len */ -#define IOSM_PSI_ACK 8 -/* SWID capability for packed swid type */ -#define IOSM_EXT_CAP_SWID_OOS_PACK 0x02 -/* EBL error response buffer */ -#define IOSM_EBL_RSP_BUFF 0x0041 -/* SWID string length */ -#define IOSM_SWID_STR 64 -/* Load EBL command size */ -#define IOSM_RPSI_LOAD_SIZE 0 -/* EBL payload checksum */ -#define IOSM_EBL_CKSM 0x0000FFFF -/* SWID msg len and argument */ -#define IOSM_MSG_LEN_ARG 0 -/* Data to be sent to modem */ -#define IOSM_MDM_SEND_DATA 0x0000 -/* Data received from modem as part of erase check */ -#define IOSM_MDM_ERASE_RSP 0x0001 -/* Bit shift to calculate Checksum */ -#define IOSM_EBL_PAYL_SHIFT 16 -/* Flag To be set */ -#define IOSM_SET_FLAG 1 -/* Set flash erase check timeout to 100 msec */ -#define IOSM_FLASH_ERASE_CHECK_TIMEOUT 100 -/* Set flash erase check interval to 20 msec */ -#define IOSM_FLASH_ERASE_CHECK_INTERVAL 20 -/* Link establishment response ack size */ -#define IOSM_LER_RSP_SIZE 60 - -/** - * enum iosm_flash_package_type - Enum for the flashing operations - * @FLASH_SET_PROT_CONF: Write EBL capabilities - * @FLASH_SEC_START: Start writing the secpack - * @FLASH_SEC_END: Validate secpack end - * @FLASH_SET_ADDRESS: Set the address for flashing - * @FLASH_ERASE_START: Start erase before flashing - * @FLASH_ERASE_CHECK: Validate the erase functionality - * @FLASH_OOS_CONTROL: Retrieve data based on oos actions - * @FLASH_OOS_DATA_READ: Read data from EBL - * @FLASH_WRITE_IMAGE_RAW: Write the raw image to flash - */ -enum iosm_flash_package_type { - FLASH_SET_PROT_CONF = 0x0086, - FLASH_SEC_START = 0x0204, - FLASH_SEC_END, - FLASH_SET_ADDRESS = 0x0802, - FLASH_ERASE_START = 0x0805, - FLASH_ERASE_CHECK, - FLASH_OOS_CONTROL = 0x080C, - FLASH_OOS_DATA_READ = 0x080E, - FLASH_WRITE_IMAGE_RAW, -}; - -/** - * enum iosm_out_of_session_action - Actions possible over the - * OutOfSession command interface - * @FLASH_OOSC_ACTION_READ: Read data according to its type - * @FLASH_OOSC_ACTION_ERASE: Erase data according to its type - */ -enum iosm_out_of_session_action { - FLASH_OOSC_ACTION_READ = 2, - FLASH_OOSC_ACTION_ERASE = 3, -}; - -/** - * enum iosm_out_of_session_type - Data types that can be handled over the - * Out Of Session command Interface - * @FLASH_OOSC_TYPE_ALL_FLASH: The whole flash area - * @FLASH_OOSC_TYPE_SWID_TABLE: Read the swid table from the target - */ -enum iosm_out_of_session_type { - FLASH_OOSC_TYPE_ALL_FLASH = 8, - FLASH_OOSC_TYPE_SWID_TABLE = 16, -}; - -/** - * enum iosm_ebl_caps - EBL capability settings - * @IOSM_CAP_NOT_ENHANCED: If capability not supported - * @IOSM_CAP_USE_EXT_CAP: To be set if extended capability is set - * @IOSM_EXT_CAP_ERASE_ALL: Set Erase all capability - * @IOSM_EXT_CAP_COMMIT_ALL: Set the commit all capability - */ -enum iosm_ebl_caps { - IOSM_CAP_NOT_ENHANCED = 0x00, - IOSM_CAP_USE_EXT_CAP = 0x01, - IOSM_EXT_CAP_ERASE_ALL = 0x08, - IOSM_EXT_CAP_COMMIT_ALL = 0x20, -}; - -/** - * enum iosm_ebl_rsp - EBL response field - * @EBL_CAPS_FLAG: EBL capability flag - * @EBL_SKIP_ERASE: EBL skip erase flag - * @EBL_SKIP_CRC: EBL skip wr_pack crc - * @EBL_EXT_CAPS_HANDLED: EBL extended capability handled flag - * @EBL_OOS_CONFIG: EBL oos configuration - * @EBL_RSP_SW_INFO_VER: EBL SW info version - */ -enum iosm_ebl_rsp { - EBL_CAPS_FLAG = 50, - EBL_SKIP_ERASE = 54, - EBL_SKIP_CRC = 55, - EBL_EXT_CAPS_HANDLED = 57, - EBL_OOS_CONFIG = 64, - EBL_RSP_SW_INFO_VER = 70, -}; - -/** - * enum iosm_mdm_send_recv_data - Data to send to modem - * @IOSM_MDM_SEND_2: Send 2 bytes of payload - * @IOSM_MDM_SEND_4: Send 4 bytes of payload - * @IOSM_MDM_SEND_8: Send 8 bytes of payload - * @IOSM_MDM_SEND_16: Send 16 bytes of payload - */ -enum iosm_mdm_send_recv_data { - IOSM_MDM_SEND_2 = 2, - IOSM_MDM_SEND_4 = 4, - IOSM_MDM_SEND_8 = 8, - IOSM_MDM_SEND_16 = 16, -}; - -/** - * struct iosm_ebl_one_error - Structure containing error details - * @error_class: Error type- standard, security and text error - * @error_code: Specific error from error type - */ -struct iosm_ebl_one_error { - u16 error_class; - u16 error_code; -}; - -/** - * struct iosm_ebl_error- Structure with max error type supported - * @error: Array of one_error structure with max errors - */ -struct iosm_ebl_error { - struct iosm_ebl_one_error error[IOSM_MAX_ERRORS]; -}; - -/** - * struct iosm_swid_table - SWID table data for modem - * @number_of_data_sets: Number of swid types - * @sw_id_type: SWID type - SWID - * @sw_id_val: SWID value - * @rf_engine_id_type: RF engine ID type - RF_ENGINE_ID - * @rf_engine_id_val: RF engine ID value - */ -struct iosm_swid_table { - u32 number_of_data_sets; - char sw_id_type[IOSM_EBL_NAME]; - u32 sw_id_val; - char rf_engine_id_type[IOSM_EBL_NAME]; - u32 rf_engine_id_val; -}; - -/** - * struct iosm_flash_msg_control - Data sent to modem - * @action: Action to be performed - * @type: Type of action - * @length: Length of the action - * @arguments: Argument value sent to modem - */ -struct iosm_flash_msg_control { - __le32 action; - __le32 type; - __le32 length; - __le32 arguments; -}; - -/** - * struct iosm_flash_data - Header Data to be sent to modem - * @checksum: Checksum value calculated for the payload data - * @pack_id: Flash Action type - * @msg_length: Payload length - */ -struct iosm_flash_data { - __le16 checksum; - __le16 pack_id; - __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 |