aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/Kconfig17
-rw-r--r--drivers/misc/thinkpad_acpi.c20
2 files changed, 30 insertions, 7 deletions
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 1abc95ca9dfa..982e27b86d10 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -258,6 +258,23 @@ config THINKPAD_ACPI_BAY
258 258
259 If you are not sure, say Y here. 259 If you are not sure, say Y here.
260 260
261config THINKPAD_ACPI_VIDEO
262 bool "Video output control support"
263 depends on THINKPAD_ACPI
264 default y
265 ---help---
266 Allows the thinkpad_acpi driver to provide an interface to control
267 the various video output ports.
268
269 This feature often won't work well, depending on ThinkPad model,
270 display state, video output devices in use, whether there is a X
271 server running, phase of the moon, and the current mood of
272 Schroedinger's cat. If you can use X.org's RandR to control
273 your ThinkPad's video output ports instead of this feature,
274 don't think twice: do it and say N here to save some memory.
275
276 If you are not sure, say Y here.
277
261config THINKPAD_ACPI_HOTKEY_POLL 278config THINKPAD_ACPI_HOTKEY_POLL
262 bool "Suport NVRAM polling for hot keys" 279 bool "Suport NVRAM polling for hot keys"
263 depends on THINKPAD_ACPI 280 depends on THINKPAD_ACPI
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index 02f946516584..4ea3866ddf90 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -301,6 +301,13 @@ TPACPI_HANDLE(hkey, ec, "\\_SB.HKEY", /* 600e/x, 770e, 770x */
301 "HKEY", /* all others */ 301 "HKEY", /* all others */
302 ); /* 570 */ 302 ); /* 570 */
303 303
304TPACPI_HANDLE(vid, root, "\\_SB.PCI.AGP.VGA", /* 570 */
305 "\\_SB.PCI0.AGP0.VID0", /* 600e/x, 770x */
306 "\\_SB.PCI0.VID0", /* 770e */
307 "\\_SB.PCI0.VID", /* A21e, G4x, R50e, X30, X40 */
308 "\\_SB.PCI0.AGP.VID", /* all others */
309 ); /* R30, R31 */
310
304 311
305/************************************************************************* 312/*************************************************************************
306 * ACPI helpers 313 * ACPI helpers
@@ -2680,6 +2687,8 @@ static struct ibm_struct wan_driver_data = {
2680 * Video subdriver 2687 * Video subdriver
2681 */ 2688 */
2682 2689
2690#ifdef CONFIG_THINKPAD_ACPI_VIDEO
2691
2683enum video_access_mode { 2692enum video_access_mode {
2684 TPACPI_VIDEO_NONE = 0, 2693 TPACPI_VIDEO_NONE = 0,
2685 TPACPI_VIDEO_570, /* 570 */ 2694 TPACPI_VIDEO_570, /* 570 */
@@ -2707,13 +2716,6 @@ static int video_orig_autosw;
2707static int video_autosw_get(void); 2716static int video_autosw_get(void);
2708static int video_autosw_set(int enable); 2717static int video_autosw_set(int enable);
2709 2718
2710TPACPI_HANDLE(vid, root, "\\_SB.PCI.AGP.VGA", /* 570 */
2711 "\\_SB.PCI0.AGP0.VID0", /* 600e/x, 770x */
2712 "\\_SB.PCI0.VID0", /* 770e */
2713 "\\_SB.PCI0.VID", /* A21e, G4x, R50e, X30, X40 */
2714 "\\_SB.PCI0.AGP.VID", /* all others */
2715 ); /* R30, R31 */
2716
2717TPACPI_HANDLE(vid2, root, "\\_SB.PCI0.AGPB.VID"); /* G41 */ 2719TPACPI_HANDLE(vid2, root, "\\_SB.PCI0.AGPB.VID"); /* G41 */
2718 2720
2719static int __init video_init(struct ibm_init_struct *iibm) 2721static int __init video_init(struct ibm_init_struct *iibm)
@@ -3023,6 +3025,8 @@ static struct ibm_struct video_driver_data = {
3023 .exit = video_exit, 3025 .exit = video_exit,
3024}; 3026};
3025 3027
3028#endif /* CONFIG_THINKPAD_ACPI_VIDEO */
3029
3026/************************************************************************* 3030/*************************************************************************
3027 * Light (thinklight) subdriver 3031 * Light (thinklight) subdriver
3028 */ 3032 */
@@ -5807,10 +5811,12 @@ static struct ibm_init_struct ibms_init[] __initdata = {
5807 .init = wan_init, 5811 .init = wan_init,
5808 .data = &wan_driver_data, 5812 .data = &wan_driver_data,
5809 }, 5813 },
5814#ifdef CONFIG_THINKPAD_ACPI_VIDEO
5810 { 5815 {
5811 .init = video_init, 5816 .init = video_init,
5812 .data = &video_driver_data, 5817 .data = &video_driver_data,
5813 }, 5818 },
5819#endif
5814 { 5820 {
5815 .init = light_init, 5821 .init = light_init,
5816 .data = &light_driver_data, 5822 .data = &light_driver_data,