mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	drm/amdgpu: add kicker fws loading for gfx11/smu13/psp13
1. Add kicker firmwares loading for gfx11/smu13/psp13 2. Register additional MODULE_FIRMWARE entries for kicker fws - gc_11_0_0_rlc_kicker.bin - gc_11_0_0_imu_kicker.bin - psp_13_0_0_sos_kicker.bin - psp_13_0_0_ta_kicker.bin - smu_13_0_0_kicker.bin Signed-off-by: Frank Min <Frank.Min@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
		
							parent
							
								
									09aa2b408f
								
							
						
					
					
						commit
						fb5ec2174d
					
				
					 5 changed files with 35 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -3546,6 +3546,10 @@ int psp_init_sos_microcode(struct psp_context *psp, const char *chip_name)
 | 
			
		|||
	uint8_t *ucode_array_start_addr;
 | 
			
		||||
	int err = 0;
 | 
			
		||||
 | 
			
		||||
	if (amdgpu_is_kicker_fw(adev))
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->psp.sos_fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s_sos_kicker.bin", chip_name);
 | 
			
		||||
	else
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->psp.sos_fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s_sos.bin", chip_name);
 | 
			
		||||
	if (err)
 | 
			
		||||
| 
						 | 
				
			
			@ -3823,6 +3827,10 @@ int psp_init_ta_microcode(struct psp_context *psp, const char *chip_name)
 | 
			
		|||
	struct amdgpu_device *adev = psp->adev;
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	if (amdgpu_is_kicker_fw(adev))
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->psp.ta_fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s_ta_kicker.bin", chip_name);
 | 
			
		||||
	else
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->psp.ta_fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s_ta.bin", chip_name);
 | 
			
		||||
	if (err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -85,6 +85,7 @@ MODULE_FIRMWARE("amdgpu/gc_11_0_0_pfp.bin");
 | 
			
		|||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_me.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_mec.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_rlc.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_rlc_kicker.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_rlc_1.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_toc.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_1_pfp.bin");
 | 
			
		||||
| 
						 | 
				
			
			@ -759,6 +760,10 @@ static int gfx_v11_0_init_microcode(struct amdgpu_device *adev)
 | 
			
		|||
			err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw,
 | 
			
		||||
						   AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
						   "amdgpu/gc_11_0_0_rlc_1.bin");
 | 
			
		||||
		else if (amdgpu_is_kicker_fw(adev))
 | 
			
		||||
			err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw,
 | 
			
		||||
						   AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
						   "amdgpu/%s_rlc_kicker.bin", ucode_prefix);
 | 
			
		||||
		else
 | 
			
		||||
			err = amdgpu_ucode_request(adev, &adev->gfx.rlc_fw,
 | 
			
		||||
						   AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,6 +32,7 @@
 | 
			
		|||
#include "gc/gc_11_0_0_sh_mask.h"
 | 
			
		||||
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_imu.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_0_imu_kicker.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_1_imu.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_2_imu.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/gc_11_0_3_imu.bin");
 | 
			
		||||
| 
						 | 
				
			
			@ -51,6 +52,10 @@ static int imu_v11_0_init_microcode(struct amdgpu_device *adev)
 | 
			
		|||
	DRM_DEBUG("\n");
 | 
			
		||||
 | 
			
		||||
	amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_prefix));
 | 
			
		||||
	if (amdgpu_is_kicker_fw(adev))
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->gfx.imu_fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s_imu_kicker.bin", ucode_prefix);
 | 
			
		||||
	else
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->gfx.imu_fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s_imu.bin", ucode_prefix);
 | 
			
		||||
	if (err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,7 +42,9 @@ MODULE_FIRMWARE("amdgpu/psp_13_0_5_ta.bin");
 | 
			
		|||
MODULE_FIRMWARE("amdgpu/psp_13_0_8_toc.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_8_ta.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_0_sos.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_0_sos_kicker.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_0_ta.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_0_ta_kicker.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_7_sos.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_7_ta.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/psp_13_0_10_sos.bin");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,6 +58,7 @@
 | 
			
		|||
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/aldebaran_smc.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/smu_13_0_0.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/smu_13_0_0_kicker.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/smu_13_0_7.bin");
 | 
			
		||||
MODULE_FIRMWARE("amdgpu/smu_13_0_10.bin");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +93,7 @@ const int pmfw_decoded_link_width[7] = {0, 1, 2, 4, 8, 12, 16};
 | 
			
		|||
int smu_v13_0_init_microcode(struct smu_context *smu)
 | 
			
		||||
{
 | 
			
		||||
	struct amdgpu_device *adev = smu->adev;
 | 
			
		||||
	char ucode_prefix[15];
 | 
			
		||||
	char ucode_prefix[30];
 | 
			
		||||
	int err = 0;
 | 
			
		||||
	const struct smc_firmware_header_v1_0 *hdr;
 | 
			
		||||
	const struct common_firmware_header *header;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,6 +104,11 @@ int smu_v13_0_init_microcode(struct smu_context *smu)
 | 
			
		|||
		return 0;
 | 
			
		||||
 | 
			
		||||
	amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucode_prefix));
 | 
			
		||||
 | 
			
		||||
	if (amdgpu_is_kicker_fw(adev))
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->pm.fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s_kicker.bin", ucode_prefix);
 | 
			
		||||
	else
 | 
			
		||||
		err = amdgpu_ucode_request(adev, &adev->pm.fw, AMDGPU_UCODE_REQUIRED,
 | 
			
		||||
					   "amdgpu/%s.bin", ucode_prefix);
 | 
			
		||||
	if (err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue