[PATCH] drm/radeon/kms: properly set panel mode for eDP
Alex Deucher
alexdeucher at gmail.com
Fri Oct 28 10:21:22 PDT 2011
Looks like this patch got missed. Dave can you add it and CC: stable?
Alex
On Wed, May 25, 2011 at 2:02 PM, Alex Deucher <alexdeucher at gmail.com> wrote:
> This should make eDP more reliable.
>
> Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
> ---
> drivers/gpu/drm/radeon/atombios_dp.c | 11 +++++++++++
> include/drm/drm_dp_helper.h | 3 +++
> 2 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
> index 8c0f9e3..892b88d 100644
> --- a/drivers/gpu/drm/radeon/atombios_dp.c
> +++ b/drivers/gpu/drm/radeon/atombios_dp.c
> @@ -543,6 +543,7 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
> {
> struct drm_device *dev = encoder->dev;
> struct radeon_device *rdev = dev->dev_private;
> + struct radeon_connector *radeon_connector = to_radeon_connector(connector);
> int panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
>
> if (!ASIC_IS_DCE4(rdev))
> @@ -550,10 +551,20 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
>
> if (radeon_connector_encoder_is_dp_bridge(connector))
> panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
> + else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
> + u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP);
> + if (tmp & 1)
> + panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
> + }
>
> atombios_dig_encoder_setup(encoder,
> ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
> panel_mode);
> +
> + if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) &&
> + (panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) {
> + radeon_write_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_SET, 1);
> + }
> }
>
> void radeon_dp_set_link_config(struct drm_connector *connector,
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index 91567bb..03eb1d6 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -72,6 +72,7 @@
>
> #define DP_MAIN_LINK_CHANNEL_CODING 0x006
>
> +#define DP_EDP_CONFIGURATION_CAP 0x00d
> #define DP_TRAINING_AUX_RD_INTERVAL 0x00e
>
> /* link configuration */
> @@ -133,6 +134,8 @@
> #define DP_MAIN_LINK_CHANNEL_CODING_SET 0x108
> # define DP_SET_ANSI_8B10B (1 << 0)
>
> +#define DP_EDP_CONFIGURATION_SET 0x10a
> +
> #define DP_LANE0_1_STATUS 0x202
> #define DP_LANE2_3_STATUS 0x203
> # define DP_LANE_CR_DONE (1 << 0)
> --
> 1.7.4
>
>
More information about the dri-devel
mailing list