[PATCH] APM Screen Blanking fix
- Fix screen blanking on BIOSes that return APM_NOT_ENGAGED when APM enabled screen blanking is not turned on. The original code only tried to set the state on device 0x100, and then 0x1FF, and I added 0x101 to the mix too. - Clean up logic in apm_console_blank(). - Prevent the error message from printing out twice. Cc: Jordan Crouse <jordan.crouse@amd.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
a7a4ad0998
Коммит
3841b0a173
|
@ -1064,22 +1064,23 @@ static int apm_engage_power_management(u_short device, int enable)
|
|||
|
||||
static int apm_console_blank(int blank)
|
||||
{
|
||||
int error;
|
||||
u_short state;
|
||||
int error, i;
|
||||
u_short state;
|
||||
static const u_short dev[3] = { 0x100, 0x1FF, 0x101 };
|
||||
|
||||
state = blank ? APM_STATE_STANDBY : APM_STATE_READY;
|
||||
/* Blank the first display device */
|
||||
error = set_power_state(0x100, state);
|
||||
if ((error != APM_SUCCESS) && (error != APM_NO_ERROR)) {
|
||||
/* try to blank them all instead */
|
||||
error = set_power_state(0x1ff, state);
|
||||
if ((error != APM_SUCCESS) && (error != APM_NO_ERROR))
|
||||
/* try to blank device one instead */
|
||||
error = set_power_state(0x101, state);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(dev); i++) {
|
||||
error = set_power_state(dev[i], state);
|
||||
|
||||
if ((error == APM_SUCCESS) || (error == APM_NO_ERROR))
|
||||
return 1;
|
||||
|
||||
if (error == APM_NOT_ENGAGED)
|
||||
break;
|
||||
}
|
||||
if ((error == APM_SUCCESS) || (error == APM_NO_ERROR))
|
||||
return 1;
|
||||
if (error == APM_NOT_ENGAGED) {
|
||||
|
||||
if (error == APM_NOT_ENGAGED && state != APM_STATE_READY) {
|
||||
static int tried;
|
||||
int eng_error;
|
||||
if (tried++ == 0) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче