Hi,

On 09-04-19 14:05, Patrik Jakobsson wrote:
On Tue, Apr 9, 2019 at 12:20 PM Hans de Goede <hdego...@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 <hdego...@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.

Milstead is the name of Intel's NAS reference design:

https://www.hardwarezone.com.my/tech-news-intel-unveils-milstead-platform-nas-devices

I seriously doubt that any NAS-es have a LVDS (laptop/tablet) LCD panel.

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?

No there are no better DMI strings to match against I'm afraid.

Regards,

Hans



BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1665766
Signed-off-by: Hans de Goede <hdego...@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

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to