Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e13b2ac1 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: DCE3/4 transmitter fixes



- INIT action takes the actual connector type id, not the enum id
- some evergreen cards have the ENABLE_OUTPUT/DISABLE_OUTPUT actions

Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 5137ee94
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -843,7 +843,8 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t

	args.v1.ucAction = action;
	if (action == ATOM_TRANSMITTER_ACTION_INIT) {
		args.v1.usInitInfo = radeon_connector->connector_object_id;
		args.v1.usInitInfo =
			(radeon_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
	} else if (action == ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH) {
		args.v1.asMode.ucLaneSel = lane_num;
		args.v1.asMode.ucLaneSet = lane_set;
@@ -1072,7 +1073,6 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
	if (is_dig) {
		switch (mode) {
		case DRM_MODE_DPMS_ON:
			if (!ASIC_IS_DCE4(rdev))
			atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0);
			if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_DP) {
				struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
@@ -1085,7 +1085,6 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
		case DRM_MODE_DPMS_STANDBY:
		case DRM_MODE_DPMS_SUSPEND:
		case DRM_MODE_DPMS_OFF:
			if (!ASIC_IS_DCE4(rdev))
			atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0);
			if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_DP) {
				if (ASIC_IS_DCE4(rdev))