[PATCH v2] ACPI / video: Add systems that should favor native backlight interface
Igor Gnatenko
i.gnatenko.brain at gmail.com
Wed Nov 20 12:56:22 PST 2013
On Fri, 2013-11-15 at 14:07 +0800, Aaron Lu wrote:
> Some system's ACPI video backlight control interface is broken and the
> native backlight control interface should be used by default. This patch
> sets the use_native_backlight parameter to true for those systems so
> that video backlight control interface will not be created. To be
> specific, the ThinkPad T430s/X230, Lenovo Yoga 13, Dell Inspiron 7520
> and Acer Aspire 5733Z are added here, if they appear in some other DMI
> table before, they are removed from there.
>
> Note that the user specified kernel cmdline option will always have the
> highest priority, i.e. if use_native_backlight=0 is specified and the
> system is in the DMI table, the video module will not skip registering
> backlight interface for it.
>
> Thinkpad T430s:
> Reported-by: Theodore Tso <tytso at mit.edu>
> Reported-and-tested-by: Peter Weber <bugs at ttyhoney.com>
> Reference: https://bugzilla.kernel.org/show_bug.cgi?id=51231
> Thinkpad X230:
> Reported-and-tested-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>
> Reference: https://bugzilla.kernel.org/show_bug.cgi?id=51231
> Lenovo Yoga 13:
> Reported-by: Lennart Poettering <lennart at poettering.net>
> Reported-and-tested-by: Kevin Smith <thirdwiggin at gmail.com>
> Reference: https://bugzilla.kernel.org/show_bug.cgi?id=63811
> Dell Inspiron 7520:
> Reported-by: Rinat Ibragimov <ibragimovrinat at mail.ru>
> Acer Aspire 5733Z:
> Reported-by: <sov.info at mail.ru>
> Reference: https://bugzilla.kernel.org/show_bug.cgi?id=62941
>
> Signed-off-by: Aaron Lu <aaron.lu at intel.com>
> ---
> v2:
> Add Acer Aspire 5733Z, see bug #62941;
> Remove Inspiron 7520 from acpi_osi_dmi_table and Yoga 13 from
> video_detect_dmi_table.
>
> Based on top of Rafael's linux-next branch + the following patch:
> [PATCH] ACPI / video: clean up DMI table for initial black screen problem
> http://marc.info/?l=linux-acpi&m=138448583006432&w=2
>
> drivers/acpi/blacklist.c | 8 ------
> drivers/acpi/video.c | 65 +++++++++++++++++++++++++++++++++++++++++----
> drivers/acpi/video_detect.c | 8 ------
> 3 files changed, 60 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
> index 078c4f7fe2dd..2b6a76b6d59a 100644
> --- a/drivers/acpi/blacklist.c
> +++ b/drivers/acpi/blacklist.c
> @@ -261,14 +261,6 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
> },
> {
> .callback = dmi_disable_osi_win8,
> - .ident = "Dell Inspiron 15R SE",
> - .matches = {
> - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7520"),
> - },
> - },
> - {
> - .callback = dmi_disable_osi_win8,
> .ident = "ThinkPad Edge E530",
> .matches = {
> DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
> index 4ccb89e5c4ad..49abe0348b03 100644
> --- a/drivers/acpi/video.c
> +++ b/drivers/acpi/video.c
> @@ -89,11 +89,12 @@ static bool use_bios_initial_backlight = 1;
> module_param(use_bios_initial_backlight, bool, 0644);
>
> /*
> - * For Windows 8 systems: if set ture and the GPU driver has
> - * registered a backlight interface, skip registering ACPI video's.
> + * For Windows 8 systems: used to decide if video module
> + * should skip registering backlight interface of its own.
> */
> -static bool use_native_backlight = false;
> -module_param(use_native_backlight, bool, 0644);
> +static int use_native_backlight_param = -1;
> +module_param_named(use_native_backlight, use_native_backlight_param, int, 0444);
> +static bool use_native_backlight_dmi = false;
>
> static int register_count;
> static struct mutex video_list_lock;
> @@ -239,9 +240,17 @@ static int acpi_video_get_next_level(struct acpi_video_device *device,
> static int acpi_video_switch_brightness(struct acpi_video_device *device,
> int event);
>
> +static bool acpi_video_use_native_backlight(void)
> +{
> + if (use_native_backlight_param != -1)
> + return !!use_native_backlight_param;
> + else
> + return use_native_backlight_dmi;
> +}
> +
> static bool acpi_video_verify_backlight_support(void)
> {
> - if (acpi_osi_is_win8() && use_native_backlight &&
> + if (acpi_osi_is_win8() && acpi_video_use_native_backlight() &&
> backlight_device_registered(BACKLIGHT_RAW))
> return false;
> return acpi_video_backlight_support();
> @@ -412,6 +421,12 @@ static int video_ignore_initial_backlight(const struct dmi_system_id *d)
> return 0;
> }
>
> +static int __init video_set_use_native_backlight(const struct dmi_system_id *d)
> +{
> + use_native_backlight_dmi = true;
> + return 0;
> +}
> +
> static struct dmi_system_id video_dmi_table[] __initdata = {
> /*
> * Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121
> @@ -456,6 +471,46 @@ static struct dmi_system_id video_dmi_table[] __initdata = {
> DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7720"),
> },
> },
> + {
> + .callback = video_set_use_native_backlight,
> + .ident = "ThinkPad T430s",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430s"),
> + },
> + },
> + {
> + .callback = video_set_use_native_backlight,
> + .ident = "ThinkPad X230",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X230"),
> + },
> + },
> + {
> + .callback = video_set_use_native_backlight,
> + .ident = "Lenovo Yoga 13",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo IdeaPad Yoga 13"),
> + },
> + },
> + {
> + .callback = video_set_use_native_backlight,
> + .ident = "Dell Inspiron 7520",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_VERSION, "Inspiron 7520"),
> + },
> + },
> + {
> + .callback = video_set_use_native_backlight,
> + .ident = "Acer Aspire 5733Z",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5733Z"),
> + },
> + },
> {}
> };
>
> diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
> index 84875fd4c74f..b6399343de51 100644
> --- a/drivers/acpi/video_detect.c
> +++ b/drivers/acpi/video_detect.c
> @@ -168,14 +168,6 @@ static struct dmi_system_id video_detect_dmi_table[] = {
> DMI_MATCH(DMI_PRODUCT_NAME, "UL30A"),
> },
> },
> - {
> - .callback = video_detect_force_vendor,
> - .ident = "Lenovo Yoga 13",
> - .matches = {
> - DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> - DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo IdeaPad Yoga 13"),
> - },
> - },
> { },
> };
>
Any news here? If no - I think we need re-send patch as new..
--
Igor Gnatenko
Fedora release 20 (Heisenbug)
Linux 3.11.8-300.fc20.x86_64
More information about the dri-devel
mailing list