[PATCH] drm/gma500: Add CedarView LVDS blacklist
Patrik Jakobsson
patrik.r.jakobsson at gmail.com
Tue Apr 9 12:05:39 UTC 2019
On Tue, Apr 9, 2019 at 12:20 PM Hans de Goede <hdegoede at redhat.com> wrote:
>
> Hi,
>
> On 09-04-19 11:47, Patrik Jakobsson wrote:
> > 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?
>
> I've asked the reporter to test, but even if there is a BIOS option it
> seems that the BIOS default setting is wrong and we cannot expect every
> user to go into the BIOS to fix a wrong BIOS setting.
>
> According to this blogpost, which is about the Linux the device ships with:
> https://astroweasel.blogspot.com/2016/02/updating-thecus-n5550-nas-to-report.html
>
> The pre-installed grub config includes 'video=LVDS-1:d' on the kernel
> commandline, so this clearly seems to be a case where the system is just
> shipping with a broken BIOS or at least with default BIOS settings which
> is just as bad.
I agree that we should try to fix a broken default but are you sure
this will only affect the n5550? IIUC Milstead / Granite Well is an
Intel product / board name and perhaps some of those use LVDS.
Also, if the pre-installed OS solves this on the cmdline then it's
only a problem if the user is trying to install a custom OS on the
device. I would expect such a user to be able to change bios settings.
I'm not totally against this but not sure about the consequences. Is
there perhaps a better dmi string to match against?
>
> Regards,
>
> Hans
>
>
>
> >> 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