From: Thomas Renninger <trenn@suse.de>
To: Yves-Alexis Perez <corsac@debian.org>
Cc: Zhang Rui <rui.zhang@intel.com>,
ak@linux.intel.com, nokos@gmx.net, linux-acpi@vger.kernel.org,
mjg59@srcf.ucam.org, hmh@debian.org
Subject: Re: Check for ACPI backlight support otherwise use vendor ACPIdrivers - version 4
Date: Mon, 4 Aug 2008 12:20:28 +0200 [thread overview]
Message-ID: <200808041220.29892.trenn@suse.de> (raw)
In-Reply-To: <1217830192.4580.8.camel@hidalgo>
On Monday 04 August 2008 08:09:52 Yves-Alexis Perez wrote:
> On lun, 2008-08-04 at 09:16 +0800, Zhang Rui wrote:
> > I think you're using the laptop that this patch does break.
> > Please try acpi_backlight=vendor.
>
> When booting to single user with acpi_backlight=vendor, thinkpad-acpi
> takes over backlight:
>
> Aug 4 07:54:38 hidalgo kernel: thinkpad_acpi: ThinkPad ACPI Extras v0.21
> Aug 4 07:54:38 hidalgo kernel: thinkpad_acpi: http://ibm-acpi.sf.net/
> Aug 4 07:54:38 hidalgo kernel: thinkpad_acpi: ThinkPad BIOS 7LETB9WW (2.19
> ), EC 7KHT24WW-1.08 Aug 4 07:54:38 hidalgo kernel: thinkpad_acpi: Lenovo
> ThinkPad T61, model 8897CTO Aug 4 07:54:38 hidalgo kernel: thinkpad_acpi:
> radio switch found; radios are enabled Aug 4 07:54:38 hidalgo kernel:
> thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness
> control, supported by the ACPI video driver Aug 4 07:54:38 hidalgo kernel:
> thinkpad_acpi: Disabling thinkpad-acpi brightness events by default... Aug
> 4 07:54:38 hidalgo kernel: Registered led device: tpacpi::thinklight Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi::power Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi:orange:batt Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi:green:batt Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi::dock_active Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi::bay_active Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi::dock_batt Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi::unknown_led Aug 4
> 07:54:38 hidalgo kernel: Registered led device: tpacpi::standby Aug 4
> 07:54:38 hidalgo kernel: thinkpad_acpi: Standard ACPI backlight interface
> not available, thinkpad_acpi driver will take over control Aug 4 07:54:38
> hidalgo kernel: thinkpad_acpi: detected a 16-level brightness capable
> ThinkPad Aug 4 07:54:38 hidalgo kernel: input: ThinkPad Extra Buttons as
> /devices/virtual/input/input6 Aug 4 07:54:38 hidalgo kernel: usb 1-1: new
> full speed USB device using uhci_hcd and address 4 Aug 4 07:54:38 hidalgo
> kernel: usb 1-1: configuration #1 chosen from 1 choice
>
> But when in user mode, brightness keys doesn't do anything either.
> Echo'ing to /proc/acpi/ibm/brightness doesn't work, but echoing
> to /sys/class/backlight/thinkpad_screen/brightness works.
That /proc/acpi/ibm/brightness does not and
/sys/class/backlight/thinkpad_screen/brightness
works is strange, this should be a bug?
I wonder whether /proc/acpi/ibm/brightness can be removed soon, people had
some time to make use of the generic interface.
What you describe very much reminds me when I tested on a ThinkPad with an IGD
device. I removed the check for IGD devices in favour of a working IGD driver.
Attached patch might help you (with acpi_backlight=vendor)?
You should be able to apply this on my latest patchset, but use this patch
instead of the thinkpad_acpi one.
> Cat'ing /proc/acpi/events still gives:
> video LCD0 00000086 00000000
> video LCD0 00000087 00000000
>
> At one time I get the 750ms delay, but I don't have the
> ibm/hotkey HKEY 00000080 00005010 at all.
Hmm, on my machine it was 1010 and 1011 key event values for up/down
brightness. If you do not see those, the patch might not work.
> In X, same thing, no brightness keys, but xbacklight does work in
> standard mode (“kernel”).
>
> (btw it seems my mails don't reach linux-acpi, I don't really know why
> and postmaster don't answer, maybe they didn't have my mail either).
I expect you have an IGD device and this should by default be served by
Matthew's/Hong's patches. Matthew said something about a needed peace
that came in in latest BIOSes? But I expect you already run on the latest?
If not, you should update.
Thomas
diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
index 85c3d2c..c9ed761 100644
--- a/drivers/acpi/video_detect.c
+++ b/drivers/acpi/video_detect.c
@@ -93,6 +93,11 @@ long acpi_is_video_device(struct acpi_device *device)
ACPI_SUCCESS(acpi_get_handle(device->handle, "_SPD", &h_dummy)))
video_caps |= ACPI_VIDEO_DEVICE_POSTING;
+ if (ACPI_SUCCESS(acpi_get_handle(device->handle, "DRDY", &h_dummy))) {
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found IGD device\n"));
+ video_caps |= ACPI_VIDEO_IGD;
+ }
+
/* Only check for backlight functionality if one of the above hit. */
if (video_caps)
acpi_walk_namespace(ACPI_TYPE_DEVICE, device->handle,
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index d3eb790..c68c6b1 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -240,6 +240,7 @@ static struct {
u32 light_status:1;
u32 bright_16levels:1;
u32 bright_acpimode:1;
+ u32 bright_igdmode:1;
u32 wan:1;
u32 fan_ctrl_status_undef:1;
u32 input_device_registered:1;
@@ -2353,6 +2354,9 @@ err_exit:
return (res < 0)? res : 1;
}
+static struct backlight_device *ibm_backlight_device;
+static int brightness_update_status(struct backlight_device *bd);
+
static void hotkey_notify(struct ibm_struct *ibm, u32 event)
{
u32 hkey;
@@ -2391,6 +2395,28 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
case 1:
/* 0x1000-0x1FFF: key presses */
scancode = hkey & 0xfff;
+ if (tp_features.bright_igdmode) {
+ /* ToDo:
+ * Is there an already defined key?
+ */
+ if (hkey == 0x1011) {
+ if (ibm_backlight_device->
+ props.brightness > 0) {
+ ibm_backlight_device->
+ props.brightness--;
+ }
+ } else if (hkey == 0x1010) {
+ if (ibm_backlight_device->
+ props.brightness <
+ ibm_backlight_device->
+ props.max_brightness) {
+ ibm_backlight_device->
+ props.brightness++;
+ }
+ }
+ brightness_update_status(ibm_backlight_device);
+ }
+
if (scancode > 0 && scancode < 0x21) {
scancode--;
if (!(hotkey_source_mask & (1 << scancode))) {
@@ -4771,7 +4797,6 @@ enum {
TP_EC_BACKLIGHT_MAPSW = 0x20,
};
-static struct backlight_device *ibm_backlight_device;
static int brightness_mode;
static unsigned int brightness_enable = 2; /* 2 = auto, 0 = no, 1 = yes */
@@ -4910,7 +4935,7 @@ static struct backlight_ops ibm_backlight_data = {
static int __init brightness_init(struct ibm_init_struct *iibm)
{
int b;
-
+ long acpi_video_support;
vdbg_printk(TPACPI_DBG_INIT, "initializing brightness subdriver\n");
mutex_init(&brightness_mutex);
@@ -4922,17 +4947,43 @@ static int __init brightness_init(struct ibm_init_struct *iibm)
*/
b = tpacpi_check_std_acpi_brightness_support();
if (b > 0) {
- if (thinkpad_id.vendor == PCI_VENDOR_ID_LENOVO) {
- printk(TPACPI_NOTICE
- "Lenovo BIOS switched to ACPI backlight "
- "control mode\n");
- }
- if (brightness_enable > 1) {
- printk(TPACPI_NOTICE
- "standard ACPI backlight interface "
- "available, not loading native one...\n");
- return 1;
- }
+
+ if (acpi_video_backlight_support()) {
+ if (brightness_enable > 1) {
+ printk(TPACPI_NOTICE
+ "standard ACPI backlight interface "
+ "available, not loading native one.\n");
+ return 1;
+ } else if (brightness_enable == 1) {
+ printk(TPACPI_NOTICE
+ "Backlight control force, even standard "
+ "ACPI backlight interface available\n");
+ }
+ } else {
+ if (brightness_enable > 1) {
+ printk(TPACPI_NOTICE
+ "Standard ACPI backlight interface "
+ "available, but thinkpad_acpi driver "
+ "will take over control\n");
+ }
+ /* We have an Integrated Graphics Device and BIOS
+ * won't switch. By default the IGD driver should take
+ * care about backlight and display output switching.
+ * People can still run into this code path and let
+ * thinkpad_acpi take over control by passing:
+ * acpi_backlight=vendor or acpi_display_output=vendor
+ * boot params.
+ */
+ acpi_video_support = acpi_video_get_capabilities(NULL);
+ vdbg_printk(TPACPI_DBG_INIT, "XXXXXk\n");
+
+ if (acpi_video_support & ACPI_VIDEO_IGD) {
+ vdbg_printk(TPACPI_DBG_INIT, "IGD device"
+ " detected - take over backlight"
+ " switching\n");
+ tp_features.bright_igdmode = 1;
+ }
+ }
}
if (!brightness_enable) {
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index eb51726..cd012a3 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -214,6 +214,7 @@ extern bool wmi_has_guid(const char *guid);
#define ACPI_VIDEO_BACKLIGHT_DMI_VIDEO 0x0200
#define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VENDOR 0x0400
#define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VIDEO 0x0800
+#define ACPI_VIDEO_IGD 0x1000
#if defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE)
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2008-08-04 10:20 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-01 15:37 Check for ACPI backlight support otherwise use vendor ACPI drivers - version 4 Thomas Renninger
2008-08-01 15:37 ` [PATCH 01/10] ACPI: video: Ignore devices that aren't present in hardware Thomas Renninger
2008-08-01 15:37 ` [PATCH 02/10] Check for ACPI backlight support otherwise use vendor ACPI drivers Thomas Renninger
2008-08-04 1:56 ` Zhang Rui
2008-11-14 22:27 ` Bjorn Helgaas
2008-11-16 22:07 ` Thomas Renninger
2008-11-17 19:51 ` Bjorn Helgaas
2008-11-18 2:31 ` Thomas Renninger
2008-08-01 15:37 ` [PATCH 03/10] Acer-WMI: fingers off backlight if video.ko is serving this functionality Thomas Renninger
2008-08-01 21:52 ` Carlos Corbacho
2008-08-01 15:37 ` [PATCH 04/10] asus-acpi: " Thomas Renninger
2008-08-01 15:37 ` [PATCH 05/10] compal: " Thomas Renninger
2008-08-01 15:37 ` [PATCH 06/10] eeepc-laptop: " Thomas Renninger
2008-08-01 15:38 ` [PATCH 07/10] fujitsu-laptop: " Thomas Renninger
2008-08-01 15:38 ` [PATCH 08/10] msi-laptop: " Thomas Renninger
2008-08-01 15:38 ` [PATCH 09/10] sony-laptop: " Thomas Renninger
2008-08-01 15:38 ` [PATCH 10/10] thinkpad_acpi: " Thomas Renninger
2008-08-01 17:50 ` Henrique de Moraes Holschuh
2008-11-08 5:45 ` Len Brown
2008-08-01 20:49 ` Check for ACPI backlight support otherwise use vendor ACPI drivers - version 4 Andi Kleen
[not found] ` <1217632817.4610.6.camel@hidalgo>
2008-08-02 16:57 ` Do not return true to all kind of Windows OSI calls Thomas Renninger
2008-08-02 16:59 ` Matthew Garrett
2008-08-02 16:48 ` Thomas Renninger
2008-08-02 17:31 ` Matthew Garrett
2008-08-02 17:30 ` Thomas Renninger
2008-08-02 19:48 ` Matthew Garrett
2008-08-03 4:43 ` Henrique de Moraes Holschuh
2008-08-03 6:33 ` Matthew Garrett
2008-08-03 13:31 ` Thomas Renninger
2008-08-03 14:12 ` Matthew Garrett
2008-08-03 16:24 ` Thomas Renninger
2008-08-06 17:12 ` Moore, Robert
2008-08-02 16:57 ` [PATCH 1/2] ACPI: Provide a OSI interface that does not return true for Windows Thomas Renninger
2008-08-02 16:57 ` [PATCH 2/2] patch acpi_lenovo_thinkpad_only_return_vista.patch Thomas Renninger
2008-08-02 16:28 ` Thomas Renninger
2008-08-04 1:16 ` Check for ACPI backlight support otherwise use vendor ACPIdrivers - version 4 Zhang Rui
2008-08-04 6:09 ` Yves-Alexis Perez
2008-08-04 6:20 ` Yves-Alexis Perez
2008-08-04 10:20 ` Thomas Renninger [this message]
2008-08-04 10:39 ` Yves-Alexis Perez
2008-08-04 11:19 ` Thomas Renninger
2008-08-04 13:24 ` Matthew Garrett
2008-08-04 13:30 ` Yves-Alexis Perez
2008-08-04 13:40 ` Thomas Renninger
2008-08-04 13:47 ` Yves-Alexis Perez
2008-08-05 0:01 ` Henrique de Moraes Holschuh
2008-08-05 5:55 ` Yves-Alexis Perez
2008-08-05 9:13 ` Thomas Renninger
2008-08-05 12:00 ` Yves-Alexis Perez
2008-08-05 13:37 ` Henrique de Moraes Holschuh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200808041220.29892.trenn@suse.de \
--to=trenn@suse.de \
--cc=ak@linux.intel.com \
--cc=corsac@debian.org \
--cc=hmh@debian.org \
--cc=linux-acpi@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=nokos@gmx.net \
--cc=rui.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox