diff options
Diffstat (limited to 'drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 30 | 
1 files changed, 29 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 407065cd8d57..e4b33c67b634 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -97,6 +97,8 @@ MODULE_FIRMWARE(FIRMWARE_RENOIR_DMUB);  #if defined(CONFIG_DRM_AMD_DC_DCN3_0)  #define FIRMWARE_SIENNA_CICHLID_DMUB "amdgpu/sienna_cichlid_dmcub.bin"  MODULE_FIRMWARE(FIRMWARE_SIENNA_CICHLID_DMUB); +#define FIRMWARE_NAVY_FLOUNDER_DMUB "amdgpu/navy_flounder_dmcub.bin" +MODULE_FIRMWARE(FIRMWARE_NAVY_FLOUNDER_DMUB);  #endif  #define FIRMWARE_RAVEN_DMCU		"amdgpu/raven_dmcu.bin" @@ -1185,10 +1187,13 @@ static int dm_dmub_sw_init(struct amdgpu_device *adev)  		break;  #if defined(CONFIG_DRM_AMD_DC_DCN3_0)  	case CHIP_SIENNA_CICHLID: -	case CHIP_NAVY_FLOUNDER:  		dmub_asic = DMUB_ASIC_DCN30;  		fw_name_dmub = FIRMWARE_SIENNA_CICHLID_DMUB;  		break; +	case CHIP_NAVY_FLOUNDER: +		dmub_asic = DMUB_ASIC_DCN30; +		fw_name_dmub = FIRMWARE_NAVY_FLOUNDER_DMUB; +		break;  #endif  	default: @@ -8544,6 +8549,29 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,  	if (ret)  		goto fail; +	/* Check connector changes */ +	for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) { +		struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state); +		struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state); + +		/* Skip connectors that are disabled or part of modeset already. */ +		if (!old_con_state->crtc && !new_con_state->crtc) +			continue; + +		if (!new_con_state->crtc) +			continue; + +		new_crtc_state = drm_atomic_get_crtc_state(state, new_con_state->crtc); +		if (IS_ERR(new_crtc_state)) { +			ret = PTR_ERR(new_crtc_state); +			goto fail; +		} + +		if (dm_old_con_state->abm_level != +		    dm_new_con_state->abm_level) +			new_crtc_state->connectors_changed = true; +	} +  #if defined(CONFIG_DRM_AMD_DC_DCN)  	if (adev->asic_type >= CHIP_NAVI10) {  		for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {  | 
