[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