[PATCH] drm/gma500: Add CedarView LVDS blacklist

Patrik Jakobsson patrik.r.jakobsson at gmail.com
Tue Apr 9 09:47:02 UTC 2019


On Tue, Apr 9, 2019 at 8:51 AM Hans de Goede <hdegoede at redhat.com> wrote:
>
> Some CedarView VBT-s claim that there is a LVDS panel, while there is none.
> Specifically this happens on the Thecus N2800 / N5550 NAS models.
>
> This commit adds a LVDS blacklist to deal with this and adds an entry for
> the Thecus NAS-es.

Hi Hans,
Sometimes LVDS can be configured in the BIOS on CDV devices. Can you
check that it's not just a bad BIOS configuration first?

Thanks
Patrik

>
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1665766
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
>  drivers/gpu/drm/gma500/cdv_intel_lvds.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> index de9531caaca0..268643af114c 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> @@ -572,6 +572,20 @@ static bool lvds_is_present_in_vbt(struct drm_device *dev,
>         return false;
>  }
>
> +static const struct dmi_system_id cdv_intel_lvds_blacklist[] = {
> +       {
> +               /* Thecus N2800 and N5550 family NAS-es */
> +               .matches = {
> +                       DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
> +                       DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Milstead Platform"),
> +                       DMI_EXACT_MATCH(DMI_BOARD_NAME, "Granite Well"),
> +                       /* BIOS version is CDV_T<version> X64 */
> +                       DMI_MATCH(DMI_BIOS_VERSION, "CDV_T"),
> +               },
> +       },
> +       {}
> +};
> +
>  /**
>   * cdv_intel_lvds_init - setup LVDS connectors on this device
>   * @dev: drm device
> @@ -594,6 +608,15 @@ void cdv_intel_lvds_init(struct drm_device *dev,
>         int pipe;
>         u8 pin;
>
> +       /*
> +        * Check blacklist for machines with BIOSes that list an LVDS panel
> +        * without actually having one.
> +        */
> +       if (dmi_check_system(cdv_intel_lvds_blacklist)) {
> +               dev_info(&dev->pdev->dev, "System is on LVDS blacklist, skipping LVDS panel detection\n");
> +               return;
> +       }
> +
>         pin = GMBUS_PORT_PANEL;
>         if (!lvds_is_present_in_vbt(dev, &pin)) {
>                 DRM_DEBUG_KMS("LVDS is not present in VBT\n");
> --
> 2.21.0
>


More information about the dri-devel mailing list