Re: [V2 PATCH 1/2] drivers-gpu-drm-allow-to-load-edid-firmware.patch

From: Paul Menzel
Date: Thu Mar 15 2012 - 03:14:27 EST


Dear Carsten,


Am Donnerstag, den 15.03.2012, 00:35 +0100 schrieb Carsten Emde:
> Einfaches Textdokument-Anlage
> (drivers-gpu-drm-allow-to-load-edid-firmware.patch)

somehow your message was send as an attachment. Could you configure your
mailer (quilt) that it is send inline?

> Broken monitors and/or broken graphic boards may send erroneous or no
> EDID data. This also applies to broken KVM devices that are unable to
> correctly forward the EDID data of the connected monitor but invent
> their own fantasy data.
>
> This patch allows to specify an EDID data set to be used instead of
> probing the monitor for it. It contains built-in data sets of frequently
> used screen resolutions. In addition, a particular EDID data set may be
> provided in the /lib/firmware directory and loaded via the firmware
> interface. The name is passed to the kernel as module parameter of the
> drm_kms_helper module either when loaded
> options drm_kms_helper edid_firmware=edid/1280x1024.bin
> or as kernel commandline parameter
> drm_kms_helper.edid_firmware=edid/1280x1024.bin
>
> The built-in data sets are
> Resolution Name
> --------------------------------
> 1024x768 edid/1024x768.bin
> 1280x1024 edid/1280x1024.bin
> 1680x1050 edid/1680x1050.bin
> 1920x1080 edid/1920x1080.bin
>
> They are ignored, if a file with the same name is available in the
> /lib/firmware directory.
>
> The built-in EDID data sets are based on standard timings that may not
> apply to a particular monitor and even crash it. Ideally, EDID data of
> the connected monitor should be used. They may be obtained through the
> drm/cardX/cardX-<connector>/edid entry in the /sys/devices PCI directory
> of a correctly working graphics adapter.
>
> It is also possible to specify the name of an EDID data set on-the-fly
> via the /sys/module interface, e.g.
> echo edid/myedid.bin >/sys/module/drm_kms_helper/parameters/edid_firmware
> The new screen mode is considered when the related kernel function is
> called for the first time after the change. Such calls are made when the
> X server is started or when the display settings dialog is opened in an
> already running X server.
>
> Signed-off-by: Carsten Emde <C.Emde@xxxxxxxxx>
>
> ---
> Documentation/EDID/1024x768.S | 44 ++++++
> Documentation/EDID/1280x1024.S | 44 ++++++
> Documentation/EDID/1680x1050.S | 44 ++++++
> Documentation/EDID/1920x1080.S | 44 ++++++
> Documentation/EDID/HOWTO.txt | 39 +++++
> Documentation/EDID/Makefile | 25 +++
> Documentation/EDID/edid.S | 261 ++++++++++++++++++++++++++++++++++++
> Documentation/EDID/hex | 1
> Documentation/kernel-parameters.txt | 10 +
> drivers/gpu/drm/Kconfig | 11 +
> drivers/gpu/drm/Makefile | 3
> drivers/gpu/drm/drm_crtc_helper.c | 8 -
> drivers/gpu/drm/drm_edid.c | 4
> drivers/gpu/drm/drm_edid_load.c | 241 +++++++++++++++++++++++++++++++++
> include/drm/drm_crtc.h | 1
> include/drm/drm_edid.h | 1
> 16 files changed, 778 insertions(+), 3 deletions(-)

[â]

> Index: linux-3.3-rc6/Documentation/kernel-parameters.txt
> ===================================================================
> --- linux-3.3-rc6.orig/Documentation/kernel-parameters.txt
> +++ linux-3.3-rc6/Documentation/kernel-parameters.txt
> @@ -713,6 +713,16 @@ bytes respectively. Such letter suffixes
> The filter can be disabled or changed to another
> driver later using sysfs.
>
> + drm_kms_helper.edid_firmware=<file>
> + Broken monitors, graphic adapters and KVMs may
> + send no or broken EDID data sets. This parameter
> + allows to specify an EDID data set in the
> + /lib/firmware directory that is used instead.
> + Generic built-in EDID data sets are used, if one of
> + edid/1024x768.bin, edid/1280x1024.bin,
> + edid/1680x1050.bin, or edid/1920x1080.bin is given
> + and no file with the same name exists.

Maybe a hint to look into `Documentation/EDID` could be added?

> +
> dscc4.setup= [NET]
>
> earlycon= [KNL] Output early console device and options.
> Index: linux-3.3-rc6/drivers/gpu/drm/Kconfig
> ===================================================================
> --- linux-3.3-rc6.orig/drivers/gpu/drm/Kconfig
> +++ linux-3.3-rc6/drivers/gpu/drm/Kconfig
> @@ -27,6 +27,17 @@ config DRM_KMS_HELPER
> help
> FB and CRTC helpers for KMS drivers.
>
> +config DRM_LOAD_EDID_FIRMWARE
> + bool "Allow to specify an EDID data set instead of probing for it"
> + depends on DRM_KMS_HELPER
> + help
> + Say Y here, if you want to use EDID data to be loaded from the
> + /lib/firmware directory or one of the provided built-in
> + data sets. This may be necessary, if the graphics adapter or
> + monitor are unable to provide appropriate EDID data. Since this
> + feature is provided as a workaround for broken hardware, the
> + default case is N.

Dito.

> +
> config DRM_TTM
> tristate
> depends on DRM

[â]


Thanks,

Paul

Attachment: signature.asc
Description: This is a digitally signed message part