mirror of
https://github.com/torvalds/linux.git
synced 2026-04-25 01:52:32 -04:00
drm/amd/display: Add DCN36 DM Support
Add DM handling for DCN36. Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Wayne Lin <Wayne.Lin@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -155,6 +155,9 @@ MODULE_FIRMWARE(FIRMWARE_DCN_35_DMUB);
|
||||
#define FIRMWARE_DCN_351_DMUB "amdgpu/dcn_3_5_1_dmcub.bin"
|
||||
MODULE_FIRMWARE(FIRMWARE_DCN_351_DMUB);
|
||||
|
||||
#define FIRMWARE_DCN_36_DMUB "amdgpu/dcn_3_6_dmcub.bin"
|
||||
MODULE_FIRMWARE(FIRMWARE_DCN_36_DMUB);
|
||||
|
||||
#define FIRMWARE_DCN_401_DMUB "amdgpu/dcn_4_0_1_dmcub.bin"
|
||||
MODULE_FIRMWARE(FIRMWARE_DCN_401_DMUB);
|
||||
|
||||
@@ -1269,6 +1272,7 @@ static int dm_dmub_hw_init(struct amdgpu_device *adev)
|
||||
case IP_VERSION(3, 1, 4):
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
case IP_VERSION(4, 0, 1):
|
||||
hw_params.dpia_supported = true;
|
||||
hw_params.disable_dpia = adev->dm.dc->debug.dpia_debug.bits.disable_dpia;
|
||||
@@ -1280,6 +1284,7 @@ static int dm_dmub_hw_init(struct amdgpu_device *adev)
|
||||
switch (amdgpu_ip_version(adev, DCE_HWIP, 0)) {
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
hw_params.ips_sequential_ono = adev->external_rev_id > 0x10;
|
||||
break;
|
||||
default:
|
||||
@@ -1834,6 +1839,7 @@ static enum dmub_ips_disable_type dm_get_default_ips_mode(
|
||||
|
||||
switch (amdgpu_ip_version(adev, DCE_HWIP, 0)) {
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
/*
|
||||
* On DCN35 systems with Z8 enabled, it's possible for IPS2 + Z8 to
|
||||
* cause a hard hang. A fix exists for newer PMFW.
|
||||
@@ -2337,6 +2343,7 @@ static int load_dmcu_fw(struct amdgpu_device *adev)
|
||||
case IP_VERSION(3, 2, 1):
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
case IP_VERSION(4, 0, 1):
|
||||
return 0;
|
||||
default:
|
||||
@@ -2462,6 +2469,9 @@ static int dm_dmub_sw_init(struct amdgpu_device *adev)
|
||||
case IP_VERSION(3, 5, 1):
|
||||
dmub_asic = DMUB_ASIC_DCN35;
|
||||
break;
|
||||
case IP_VERSION(3, 6, 0):
|
||||
dmub_asic = DMUB_ASIC_DCN36;
|
||||
break;
|
||||
case IP_VERSION(4, 0, 1):
|
||||
dmub_asic = DMUB_ASIC_DCN401;
|
||||
break;
|
||||
@@ -5069,6 +5079,7 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
|
||||
case IP_VERSION(2, 1, 0):
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
case IP_VERSION(4, 0, 1):
|
||||
if (register_outbox_irq_handlers(dm->adev)) {
|
||||
DRM_ERROR("DM: Failed to initialize IRQ\n");
|
||||
@@ -5092,6 +5103,7 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
|
||||
case IP_VERSION(3, 2, 1):
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
case IP_VERSION(4, 0, 1):
|
||||
psr_feature_enabled = true;
|
||||
break;
|
||||
@@ -5109,6 +5121,7 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
|
||||
case IP_VERSION(3, 2, 1):
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
replay_feature_enabled = true;
|
||||
break;
|
||||
|
||||
@@ -5258,6 +5271,7 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
|
||||
case IP_VERSION(3, 2, 1):
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
case IP_VERSION(4, 0, 1):
|
||||
if (dcn10_register_irq_handlers(dm->adev)) {
|
||||
DRM_ERROR("DM: Failed to initialize IRQ\n");
|
||||
@@ -5400,6 +5414,9 @@ static int dm_init_microcode(struct amdgpu_device *adev)
|
||||
case IP_VERSION(3, 5, 1):
|
||||
fw_name_dmub = FIRMWARE_DCN_351_DMUB;
|
||||
break;
|
||||
case IP_VERSION(3, 6, 0):
|
||||
fw_name_dmub = FIRMWARE_DCN_36_DMUB;
|
||||
break;
|
||||
case IP_VERSION(4, 0, 1):
|
||||
fw_name_dmub = FIRMWARE_DCN_401_DMUB;
|
||||
break;
|
||||
@@ -5528,6 +5545,7 @@ static int dm_early_init(struct amdgpu_ip_block *ip_block)
|
||||
case IP_VERSION(3, 2, 1):
|
||||
case IP_VERSION(3, 5, 0):
|
||||
case IP_VERSION(3, 5, 1):
|
||||
case IP_VERSION(3, 6, 0):
|
||||
case IP_VERSION(4, 0, 1):
|
||||
adev->mode_info.num_crtc = 4;
|
||||
adev->mode_info.num_hpd = 4;
|
||||
|
||||
Reference in New Issue
Block a user