[PATCH] drm/gma500: Add CedarView LVDS blacklist
Hans de Goede
hdegoede at redhat.com
Tue Apr 9 14:44:50 UTC 2019
Hi,
On 09-04-19 14:05, Patrik Jakobsson wrote:
> 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.
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 <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