lkml.org 
[lkml]   [2003]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[2.6] i8042 module prevents APM suspend on ThinkPad 770
Date
I think I isolated my ThinkPad 770's APM suspend problem[1] to the i8042 
driver. Basically, every time I try and suspend the laptop (apm -s, the
lid switch, or the power/hibernate button), the laptop goes out to lunch
for a little while (display is still on), and then prints "apm: suspend:
Unable to enter requested state" after about 30 seconds.

Around 2.5.31 (continuing through 2.6.0-test3), I could get by with the
old keyboard driver. However, in later kernels, unless I make the i8042
driver a module, and (warning: kludge ahead) have the APM scripts remove
and reinsert it before and after suspend, the APM BIOS rejects the
suspend request.

Other subsystems, such as the UHCI USB HC driver, are properly shut down
and restarted through the driver framework. Maybe the i8042 driver needs
to do something similar?

Here are the relevant .config bits that make things work:

# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y # <-- probably not necessary
# CONFIG_INPUT_EVBUG is not set

#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
CONFIG_SERIO=m
CONFIG_SERIO_I8042=m
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=m
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

CONFIG_SERIO and CONFIG_KEYBOARD_ATKBD could probably both be =y, as I
had both modules loaded when suspend started to work again (although
i8042 still had to be unloaded).

I will try some other configurations later (as well as 2.6.0-test4,
although I didn't see any i8042 code changes in the -test4 announcement).

My only guess is that the i8042_timer routine is reading the data
register after the APM BIOS expects the system to quiesce. I can't back
that up quite yet, but I'll try and test that later.

Thanks to Stephen Rothwell and Alan Cox for convincing me that this
regression wasn't due to any of the APM changes between 2.5.31 and
2.5.32 :-)

[1] http://marc.theaimsgroup.com/?l=linux-kernel&m=105949030715144&w=4

--
Charles Lepple <ghz.cc!clepple>
http://www.ghz.cc/charles/


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:48    [W:0.047 / U:2.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site