This is a note to let you know that I've just added the patch titled drm/radeon: fix panel scaling with eDP and LVDS bridges to the 3.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: drm-radeon-fix-panel-scaling-with-edp-and-lvds-bridges.patch and it can be found in the queue-3.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From b8f6513652249d566a4c7b6feaf13eee789ccd7a Mon Sep 17 00:00:00 2001 From: Alex Deucher <alexander.deucher@xxxxxxx> Date: Fri, 13 Sep 2013 18:33:16 -0400 Subject: drm/radeon: fix panel scaling with eDP and LVDS bridges From: Alex Deucher <alexander.deucher@xxxxxxx> commit 855f5f1d882a34e4e9dd27b299737cd3508a5624 upstream. We were using the wrong set_properly callback so we always ended up with Full scaling even if something else (Center or Full aspect) was selected. Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> [bwh: Backported to 3.2: adjust context] Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> Cc: Weng Meiling <wengmeiling.weng@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/radeon/radeon_connectors.c | 34 ++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c @@ -1423,6 +1423,24 @@ struct drm_connector_funcs radeon_dp_con .force = radeon_dvi_force, }; +static const struct drm_connector_funcs radeon_edp_connector_funcs = { + .dpms = drm_helper_connector_dpms, + .detect = radeon_dp_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = radeon_lvds_set_property, + .destroy = radeon_dp_connector_destroy, + .force = radeon_dvi_force, +}; + +static const struct drm_connector_funcs radeon_lvds_bridge_connector_funcs = { + .dpms = drm_helper_connector_dpms, + .detect = radeon_dp_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = radeon_lvds_set_property, + .destroy = radeon_dp_connector_destroy, + .force = radeon_dvi_force, +}; + void radeon_add_atom_connector(struct drm_device *dev, uint32_t connector_id, @@ -1514,8 +1532,6 @@ radeon_add_atom_connector(struct drm_dev goto failed; radeon_dig_connector->igp_lane_info = igp_lane_info; radeon_connector->con_priv = radeon_dig_connector; - drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type); - drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs); if (i2c_bus->valid) { /* add DP i2c bus */ if (connector_type == DRM_MODE_CONNECTOR_eDP) @@ -1532,6 +1548,10 @@ radeon_add_atom_connector(struct drm_dev case DRM_MODE_CONNECTOR_VGA: case DRM_MODE_CONNECTOR_DVIA: default: + drm_connector_init(dev, &radeon_connector->base, + &radeon_dp_connector_funcs, connector_type); + drm_connector_helper_add(&radeon_connector->base, + &radeon_dp_connector_helper_funcs); connector->interlace_allowed = true; connector->doublescan_allowed = true; radeon_connector->dac_load_detect = true; @@ -1544,6 +1564,10 @@ radeon_add_atom_connector(struct drm_dev case DRM_MODE_CONNECTOR_HDMIA: case DRM_MODE_CONNECTOR_HDMIB: case DRM_MODE_CONNECTOR_DisplayPort: + drm_connector_init(dev, &radeon_connector->base, + &radeon_dp_connector_funcs, connector_type); + drm_connector_helper_add(&radeon_connector->base, + &radeon_dp_connector_helper_funcs); drm_connector_attach_property(&radeon_connector->base, rdev->mode_info.underscan_property, UNDERSCAN_OFF); @@ -1568,6 +1592,10 @@ radeon_add_atom_connector(struct drm_dev break; case DRM_MODE_CONNECTOR_LVDS: case DRM_MODE_CONNECTOR_eDP: + drm_connector_init(dev, &radeon_connector->base, + &radeon_lvds_bridge_connector_funcs, connector_type); + drm_connector_helper_add(&radeon_connector->base, + &radeon_dp_connector_helper_funcs); drm_connector_attach_property(&radeon_connector->base, dev->mode_config.scaling_mode_property, DRM_MODE_SCALE_FULLSCREEN); @@ -1731,7 +1759,7 @@ radeon_add_atom_connector(struct drm_dev goto failed; radeon_dig_connector->igp_lane_info = igp_lane_info; radeon_connector->con_priv = radeon_dig_connector; - drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type); + drm_connector_init(dev, &radeon_connector->base, &radeon_edp_connector_funcs, connector_type); drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs); if (i2c_bus->valid) { /* add DP i2c bus */ Patches currently in stable-queue which might be from alexander.deucher@xxxxxxx are queue-3.4/drm-radeon-add-connector-table-for-mac-g4-silver.patch queue-3.4/drm-radeon-fix-atpx-detection-on-non-vga-gpus.patch queue-3.4/drm-radeon-cleanup-properly-if-mmio-mapping-fails.patch queue-3.4/drm-radeon-call-drm_edid_to_eld-when-we-update-the-edid.patch queue-3.4/drm-radeon-fix-amd-afusion-gpu-setup-aka-sumo-v2.patch queue-3.4/drm-radeon-dce32-use-fractional-fb-dividers-for-high-clocks.patch queue-3.4/drm-fix-documentation-for-drm_crtc_set_mode.patch queue-3.4/drm-radeon-fix-panel-scaling-with-edp-and-lvds-bridges.patch queue-3.4/drm-radeon-add-connector-table-for-sam440ep-embedded-board.patch queue-3.4/drm-radeon-fix-typo-in-evergreen_mc_resume.patch queue-3.4/drm-radeon-another-card-with-wrong-primary-dac-adj.patch queue-3.4/drm-radeon-use-frac-fb-div-on-rs780-rs880.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html