Kyle McMartin 592f4fb
From baa7ac7527ee3990007fb28b59ec1d73b922ddaa Mon Sep 17 00:00:00 2001
Kyle McMartin 592f4fb
From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Kyle McMartin 592f4fb
Date: Mon, 9 Aug 2010 23:48:19 -0300
Kyle McMartin 592f4fb
Subject: [PATCH] thinkpad-acpi: untangle ACPI/vendor backlight selection
Kyle McMartin 592f4fb
Kyle McMartin 592f4fb
acpi_video_backlight_support() already tells us if ACPI is handling
Kyle McMartin 592f4fb
backlight control through the generic ACPI handle.  It is better to just
Kyle McMartin 592f4fb
trust it.
Kyle McMartin 592f4fb
Kyle McMartin 592f4fb
While at it, adjust down a printk priority, and test earlier for
Kyle McMartin 592f4fb
brightness_enable=0.
Kyle McMartin 592f4fb
Kyle McMartin 592f4fb
Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Kyle McMartin 592f4fb
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Kyle McMartin 592f4fb
---
Kyle McMartin 592f4fb
 Documentation/laptops/thinkpad-acpi.txt |    4 +++
Kyle McMartin 592f4fb
 drivers/platform/x86/thinkpad_acpi.c    |   42 ++++++++++++++----------------
Kyle McMartin 592f4fb
 2 files changed, 24 insertions(+), 22 deletions(-)
Kyle McMartin 592f4fb
Kyle McMartin 592f4fb
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
Kyle McMartin 592f4fb
index fc15538..720ba04 100644
Kyle McMartin 592f4fb
--- a/Documentation/laptops/thinkpad-acpi.txt
Kyle McMartin 592f4fb
+++ b/Documentation/laptops/thinkpad-acpi.txt
Kyle McMartin 592f4fb
@@ -1073,6 +1073,10 @@ ThinkPad-specific interface.  The driver will disable its native
Kyle McMartin 592f4fb
 backlight brightness control interface if it detects that the standard
Kyle McMartin 592f4fb
 ACPI interface is available in the ThinkPad.
Jesse Keating 7a32965
 
Kyle McMartin 592f4fb
+If you want to use the thinkpad-acpi backlight brightness control
Kyle McMartin 592f4fb
+instead of the generic ACPI video backlight brightness control for some
Kyle McMartin 592f4fb
+reason, you should use the acpi_backlight=vendor kernel parameter.
Kyle McMartin 592f4fb
+
Kyle McMartin 592f4fb
 The brightness_enable module parameter can be used to control whether
Kyle McMartin 592f4fb
 the LCD brightness control feature will be enabled when available.
Kyle McMartin 592f4fb
 brightness_enable=0 forces it to be disabled.  brightness_enable=1
Kyle McMartin 592f4fb
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
Kyle McMartin 592f4fb
index 4bdb137..b383cc6 100644
Kyle McMartin 592f4fb
--- a/drivers/platform/x86/thinkpad_acpi.c
Kyle McMartin 592f4fb
+++ b/drivers/platform/x86/thinkpad_acpi.c
Kyle McMartin 592f4fb
@@ -6313,28 +6313,6 @@ static int __init brightness_init(struct ibm_init_struct *iibm)
Kyle McMartin 592f4fb
 	if (tp_features.bright_unkfw)
Kyle McMartin 592f4fb
 		return 1;
Jesse Keating 7a32965
 
Kyle McMartin 592f4fb
-	if (tp_features.bright_acpimode) {
Jesse Keating 7a32965
-		if (acpi_video_backlight_support()) {
Jesse Keating 7a32965
-			if (brightness_enable > 1) {
Jesse Keating 7a32965
-				printk(TPACPI_NOTICE
Jesse Keating 7a32965
-				       "Standard ACPI backlight interface "
Jesse Keating 7a32965
-				       "available, not loading native one.\n");
Jesse Keating 7a32965
-				return 1;
Jesse Keating 7a32965
-			} else if (brightness_enable == 1) {
Jesse Keating 7a32965
-				printk(TPACPI_NOTICE
Jesse Keating 7a32965
-				       "Backlight control force enabled, even if standard "
Jesse Keating 7a32965
-				       "ACPI backlight interface is available\n");
Jesse Keating 7a32965
-			}
Jesse Keating 7a32965
-		} else {
Jesse Keating 7a32965
-			if (brightness_enable > 1) {
Jesse Keating 7a32965
-				printk(TPACPI_NOTICE
Jesse Keating 7a32965
-				       "Standard ACPI backlight interface not "
Jesse Keating 7a32965
-				       "available, thinkpad_acpi native "
Jesse Keating 7a32965
-				       "brightness control enabled\n");
Jesse Keating 7a32965
-			}
Kyle McMartin 592f4fb
-		}
Kyle McMartin 592f4fb
-	}
Kyle McMartin 592f4fb
-
Kyle McMartin 592f4fb
 	if (!brightness_enable) {
Kyle McMartin 592f4fb
 		dbg_printk(TPACPI_DBG_INIT | TPACPI_DBG_BRGHT,
Kyle McMartin 592f4fb
 			   "brightness support disabled by "
Kyle McMartin 592f4fb
@@ -6342,6 +6320,26 @@ static int __init brightness_init(struct ibm_init_struct *iibm)
Kyle McMartin 592f4fb
 		return 1;
Kyle McMartin 592f4fb
 	}
Kyle McMartin 592f4fb
 
Jesse Keating 7a32965
+	if (acpi_video_backlight_support()) {
Jesse Keating 7a32965
+		if (brightness_enable > 1) {
Kyle McMartin 592f4fb
+			printk(TPACPI_INFO
Jesse Keating 7a32965
+			       "Standard ACPI backlight interface "
Jesse Keating 7a32965
+			       "available, not loading native one.\n");
Jesse Keating 7a32965
+			return 1;
Jesse Keating 7a32965
+		} else if (brightness_enable == 1) {
Kyle McMartin 592f4fb
+			printk(TPACPI_WARN
Kyle McMartin 592f4fb
+				"Cannot enable backlight brightness support, "
Kyle McMartin 592f4fb
+				"ACPI is already handling it.  Refer to the "
Kyle McMartin 592f4fb
+				"acpi_backlight kernel parameter\n");
Kyle McMartin 592f4fb
+			return 1;
Jesse Keating 7a32965
+		}
Kyle McMartin 592f4fb
+	} else if (tp_features.bright_acpimode && brightness_enable > 1) {
Kyle McMartin 592f4fb
+		printk(TPACPI_NOTICE
Kyle McMartin 592f4fb
+			"Standard ACPI backlight interface not "
Kyle McMartin 592f4fb
+			"available, thinkpad_acpi native "
Kyle McMartin 592f4fb
+			"brightness control enabled\n");
Kyle McMartin 592f4fb
+	}
Kyle McMartin 592f4fb
+
Kyle McMartin 592f4fb
 	/*
Kyle McMartin 592f4fb
 	 * Check for module parameter bogosity, note that we
Kyle McMartin 592f4fb
 	 * init brightness_mode to TPACPI_BRGHT_MODE_MAX in order to be
Kyle McMartin 592f4fb
-- 
Kyle McMartin 592f4fb
1.7.3.2
Kyle McMartin 592f4fb