[ltp] Question on X60

Dieter Jurzitza linux-thinkpad@linux-thinkpad.org
Wed, 28 Feb 2007 21:04:40 +0100


--Boundary-00=_YBe5F0gUcRd1Vvz
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Dear Matt,
thank you for looking into this. I (think) I found the bug in the meantime =
and=20
I wonder whether other people could share my findings.

=2D X60 comes with i945 graphics.This one is apparently not detected correc=
tly=20
by the acpi-daemon (or the ibm_acpi module)

=2D this is why (IMHO) pressing FN-F7 generates acpi-events, but they do no=
t do=20
the right things.

=2D in SuSE's case those events end in /usr/lib/dockutils/dockhandler what =
IMHO=20
is not the right place (but that's worth a bug-report for SuSE, a different=
=20
story I'll work on later).

=2D /proc/acpi/ibm/video does not react to video_switch events as expected.=
=20
(echo video_switch > /proc/acpi/ibm/video) IMHO this is a bug.

=2D there is one tool available called i810switch that can be patched (Patc=
h=20
provided by Debian) to treat the 945 as a 855. Applying the patch one can=20
turn the display on and off with that tool. The latest release (0.6.5) can =
be=20
downloaded from http://www16.oaka,ir,ho/mano-a-mano/i810switch.html

=2D the next step is to follow the rules pointed out in the very nice=20
description at http://www.kai-hildebrandt.de/linux/thinkpad/tp_acpi.html,=20
(but this is only for the smart people speaking German :-)))) ).

=2D please find attached the patch for i810switch what may be downloaded fr=
om=20
Debian, too. I did some additional eye-candy with the Path and so on - matt=
er=20
of taste.

=2D for those using SuSE I can provide more SuSE-specific details on reques=
t.=20
got FN-F7 working now, what was my target.

I assume the problem is buried somewhere down in the acpi-subsystem, maybe =
in=20
ibm_acpi.ko; but I could not track that down until now. I think it is not=20
related to the X-server.

Thanks again for helping (and listening!),
take care



Dieter Jurzitza

Am Dienstag, 27. Februar 2007 22:38 schrieb Matt Graham:
> On Tuesday 27 February 2007 15:13, after a long battle with technology,
>
> Dieter Jurzitza wrote:
> > I am using openSUSE 10.2 on the lenovo X60. Everything is working to
*****

=2D-=20
=2D----------------------------------------------------------

                               |
                                \
                 /\_/\           |
                | ~x~ |/-----\   /
                 \   /-       \_/
  ^^__   _        /  _  ____   /
 <=B0=B0__ \- \_/     |  |/    |  |
  ||  ||         _| _|    _| _|

if you really want to see the pictures above - use some font
with constant spacing like courier! :-)
=2D----------------------------------------------------------

--Boundary-00=_YBe5F0gUcRd1Vvz
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="i810switch-0.6.5.i945.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="i810switch-0.6.5.i945.diff"

--- i810switch-0.6.5/i810switch.c.original	2005-06-12 06:36:36.000000000 +0200
+++ i810switch-0.6.5/i810switch.c	2007-02-28 15:05:49.000000000 +0100
@@ -60,6 +60,7 @@
 #define I855STR			"8086:3582"
 //#define I865STR			"8086:2572"
 #define I915STR			"8086:2592"
+#define I945STR			"8086:27a2"
 #define MEMSTR			"Memory at"
 #define NONPRSTR		"32-bit, non-prefetchable"
 
@@ -272,7 +273,8 @@
 			return p;
 		}
 
-		i = (p = strstr(*buff_ptr, I855STR)) != NULL;
+		i = (p = strstr(*buff_ptr, I855STR)) != NULL ||
+		    (p = strstr(*buff_ptr, I945STR)) != NULL;
 		if (i)
 		{
 			*chiptype = I855;
--- i810switch-0.6.5/Makefile	2007-02-28 16:20:44.000000000 +0100
+++ i810switch-0.6.5/Makefile	2007-02-28 16:20:44.000000000 +0100
@@ -9,14 +9,14 @@
 	$(CC) $(CFLAGS) -o $@ $(OBJECTS)
 
 install: i810switch
-	install -d $(DESTDIR)/usr/bin
+	install -d $(DESTDIR)/usr/sbin
 	install -d $(DESTDIR)/usr/share/man/man1
-	install i810switch i810rotate $(DESTDIR)/usr/bin
+	install i810switch i810rotate $(DESTDIR)/usr/sbin
 	install i810switch.1.gz i810rotate.1.gz $(DESTDIR)/usr/share/man/man1
 
 uninstall:
-	rm -f $(DESTDIR)/usr/bin/i810switch
-	rm -f $(DESTDIR)/usr/bin/i810rotate
+	rm -f $(DESTDIR)/usr/sbin/i810switch
+	rm -f $(DESTDIR)/usr/sbin/i810rotate
 	rm -f $(DESTDIR)/usr/share/man/man1/i810switch.1.gz
 	rm -f $(DESTDIR)/usr/share/man/man1/i810rotate.1.gz
 
--- i810switch-0.6.5/i810rotate	2007-02-28 19:47:23.000000000 +0100
+++ i810switch-0.6.5/i810rotate	2007-02-28 19:47:23.000000000 +0100
@@ -1,12 +1,13 @@
 #!/bin/sh -
+I810SWITCH="/usr/sbin/i810switch"
 
-dev=`i810switch`
+dev=`${I810SWITCH}`
 dev=`echo $dev`
 
 if [ "$dev" = "CRT: off LCD: on" ] ; then
-	i810switch crt on lcd on  > /dev/null
+	${I810SWITCH} crt on lcd on  > /dev/null
 elif [ "$dev" = "CRT: on LCD: off" ] ; then
-	i810switch crt off lcd on > /dev/null
+	${I810SWITCH} crt off lcd on > /dev/null
 else
-	i810switch crt on lcd off > /dev/null
+	${I810SWITCH} crt on lcd off > /dev/null
 fi

--Boundary-00=_YBe5F0gUcRd1Vvz--