[PATCH] drm/gma500: Add CedarView LVDS blacklist
Hans de Goede
hdegoede at redhat.com
Tue Apr 9 10:20:29 UTC 2019
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.
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