| From: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> |
| Date: Tue, 16 Apr 2019 13:46:07 +0200 |
| Subject: drm/gma500/cdv: Check vbt config bits when detecting lvds panels |
| |
| commit 7c420636860a719049fae9403e2c87804f53bdde upstream. |
| |
| Some machines have an lvds child device in vbt even though a panel is |
| not attached. To make detection more reliable we now also check the lvds |
| config bits available in the vbt. |
| |
| Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1665766 |
| Reviewed-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20190416114607.1072-1-patrik.r.jakobsson@gmail.com |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/gpu/drm/gma500/cdv_intel_lvds.c | 3 +++ |
| drivers/gpu/drm/gma500/intel_bios.c | 3 +++ |
| drivers/gpu/drm/gma500/psb_drv.h | 1 + |
| 3 files changed, 7 insertions(+) |
| |
| --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c |
| +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c |
| @@ -620,6 +620,9 @@ void cdv_intel_lvds_init(struct drm_devi |
| int pipe; |
| u8 pin; |
| |
| + if (!dev_priv->lvds_enabled_in_vbt) |
| + return; |
| + |
| pin = GMBUS_PORT_PANEL; |
| if (!lvds_is_present_in_vbt(dev, &pin)) { |
| DRM_DEBUG_KMS("LVDS is not present in VBT\n"); |
| --- a/drivers/gpu/drm/gma500/intel_bios.c |
| +++ b/drivers/gpu/drm/gma500/intel_bios.c |
| @@ -436,6 +436,9 @@ parse_driver_features(struct drm_psb_pri |
| if (driver->lvds_config == BDB_DRIVER_FEATURE_EDP) |
| dev_priv->edp.support = 1; |
| |
| + dev_priv->lvds_enabled_in_vbt = driver->lvds_config != 0; |
| + DRM_DEBUG_KMS("LVDS VBT config bits: 0x%x\n", driver->lvds_config); |
| + |
| /* This bit means to use 96Mhz for DPLL_A or not */ |
| if (driver->primary_lfp_id) |
| dev_priv->dplla_96mhz = true; |
| --- a/drivers/gpu/drm/gma500/psb_drv.h |
| +++ b/drivers/gpu/drm/gma500/psb_drv.h |
| @@ -533,6 +533,7 @@ struct drm_psb_private { |
| int lvds_ssc_freq; |
| bool is_lvds_on; |
| bool is_mipi_on; |
| + bool lvds_enabled_in_vbt; |
| u32 mipi_ctrl_display; |
| |
| unsigned int core_freq; |