diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 81 | 
1 files changed, 47 insertions, 34 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h index 270309e7f5f5..7c2538db3cd5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h @@ -71,7 +71,7 @@ struct smc_firmware_header_v2_1 {          uint32_t pptable_entry_offset;  }; -struct psp_fw_bin_desc { +struct psp_fw_legacy_bin_desc {  	uint32_t fw_version;  	uint32_t offset_bytes;  	uint32_t size_bytes; @@ -80,50 +80,67 @@ struct psp_fw_bin_desc {  /* version_major=1, version_minor=0 */  struct psp_firmware_header_v1_0 {  	struct common_firmware_header header; -	struct psp_fw_bin_desc sos; +	struct psp_fw_legacy_bin_desc sos;  };  /* version_major=1, version_minor=1 */  struct psp_firmware_header_v1_1 {  	struct psp_firmware_header_v1_0 v1_0; -	struct psp_fw_bin_desc toc; -	struct psp_fw_bin_desc kdb; +	struct psp_fw_legacy_bin_desc toc; +	struct psp_fw_legacy_bin_desc kdb;  };  /* version_major=1, version_minor=2 */  struct psp_firmware_header_v1_2 {  	struct psp_firmware_header_v1_0 v1_0; -	struct psp_fw_bin_desc res; -	struct psp_fw_bin_desc kdb; +	struct psp_fw_legacy_bin_desc res; +	struct psp_fw_legacy_bin_desc kdb;  };  /* version_major=1, version_minor=3 */  struct psp_firmware_header_v1_3 {  	struct psp_firmware_header_v1_1 v1_1; -	struct psp_fw_bin_desc spl; -	struct psp_fw_bin_desc rl; -	struct psp_fw_bin_desc sys_drv_aux; -	struct psp_fw_bin_desc sos_aux; +	struct psp_fw_legacy_bin_desc spl; +	struct psp_fw_legacy_bin_desc rl; +	struct psp_fw_legacy_bin_desc sys_drv_aux; +	struct psp_fw_legacy_bin_desc sos_aux; +}; + +struct psp_fw_bin_desc { +	uint32_t fw_type; +	uint32_t fw_version; +	uint32_t offset_bytes; +	uint32_t size_bytes; +}; + +enum psp_fw_type { +	PSP_FW_TYPE_UNKOWN, +	PSP_FW_TYPE_PSP_SOS, +	PSP_FW_TYPE_PSP_SYS_DRV, +	PSP_FW_TYPE_PSP_KDB, +	PSP_FW_TYPE_PSP_TOC, +	PSP_FW_TYPE_PSP_SPL, +	PSP_FW_TYPE_PSP_RL, +	PSP_FW_TYPE_PSP_SOC_DRV, +	PSP_FW_TYPE_PSP_INTF_DRV, +	PSP_FW_TYPE_PSP_DBG_DRV, +}; + +/* version_major=2, version_minor=0 */ +struct psp_firmware_header_v2_0 { +	struct common_firmware_header header; +	uint32_t psp_fw_bin_count; +	struct psp_fw_bin_desc psp_fw_bin[];  };  /* version_major=1, version_minor=0 */  struct ta_firmware_header_v1_0 {  	struct common_firmware_header header; -	uint32_t ta_xgmi_ucode_version; -	uint32_t ta_xgmi_offset_bytes; -	uint32_t ta_xgmi_size_bytes; -	uint32_t ta_ras_ucode_version; -	uint32_t ta_ras_offset_bytes; -	uint32_t ta_ras_size_bytes; -	uint32_t ta_hdcp_ucode_version; -	uint32_t ta_hdcp_offset_bytes; -	uint32_t ta_hdcp_size_bytes; -	uint32_t ta_dtm_ucode_version; -	uint32_t ta_dtm_offset_bytes; -	uint32_t ta_dtm_size_bytes; -	uint32_t ta_securedisplay_ucode_version; -	uint32_t ta_securedisplay_offset_bytes; -	uint32_t ta_securedisplay_size_bytes; +	struct psp_fw_legacy_bin_desc xgmi; +	struct psp_fw_legacy_bin_desc ras; +	struct psp_fw_legacy_bin_desc hdcp; +	struct psp_fw_legacy_bin_desc dtm; +	struct psp_fw_legacy_bin_desc securedisplay;  };  enum ta_fw_type { @@ -138,18 +155,11 @@ enum ta_fw_type {  	TA_FW_TYPE_MAX_INDEX,  }; -struct ta_fw_bin_desc { -	uint32_t fw_type; -	uint32_t fw_version; -	uint32_t offset_bytes; -	uint32_t size_bytes; -}; -  /* version_major=2, version_minor=0 */  struct ta_firmware_header_v2_0 {  	struct common_firmware_header header;  	uint32_t ta_fw_bin_count; -	struct ta_fw_bin_desc ta_fw_bin[]; +	struct psp_fw_bin_desc ta_fw_bin[];  };  /* version_major=1, version_minor=0 */ @@ -312,6 +322,7 @@ union amdgpu_firmware_header {  	struct psp_firmware_header_v1_0 psp;  	struct psp_firmware_header_v1_1 psp_v1_1;  	struct psp_firmware_header_v1_3 psp_v1_3; +	struct psp_firmware_header_v2_0 psp_v2_0;  	struct ta_firmware_header_v1_0 ta;  	struct ta_firmware_header_v2_0 ta_v2_0;  	struct gfx_firmware_header_v1_0 gfx; @@ -326,7 +337,7 @@ union amdgpu_firmware_header {  	uint8_t raw[0x100];  }; -#define UCODE_MAX_TA_PACKAGING ((sizeof(union amdgpu_firmware_header) - sizeof(struct common_firmware_header) - 4) / sizeof(struct ta_fw_bin_desc)) +#define UCODE_MAX_PSP_PACKAGING ((sizeof(union amdgpu_firmware_header) - sizeof(struct common_firmware_header) - 4) / sizeof(struct psp_fw_bin_desc))  /*   * fw loading support @@ -449,4 +460,6 @@ void amdgpu_ucode_sysfs_fini(struct amdgpu_device *adev);  enum amdgpu_firmware_load_type  amdgpu_ucode_get_load_type(struct amdgpu_device *adev, int load_type); +const char *amdgpu_ucode_name(enum AMDGPU_UCODE_ID ucode_id); +  #endif  | 
