Re: [PATCH 2/2] Fix console handling during suspend/resume

Linus Torvalds
2006-06-25T02:32:36Z

On Sat, 24 Jun 2006, Alan Stern wrote:
>
> Is this an okay place to point out that after resume-from-disk, the i8042
> keyboard auto-repeat rate settings are messed up?

Does this fix it for you?

(Totally untested - I don't have PS/2 keyboards any more on the machines I
actually use..)

> The VT console font is not restored either.

I don't think it ever has been, has it? That needs to be done by user
space, it would be pretty wasteful to do it from the kernel..

Linus

---
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index fad04b6..d648242 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -39,6 +39,8 @@ static int atkbd_set = 2;
module_param_named(set, atkbd_set, int, 0);
MODULE_PARM_DESC(set, "Select keyboard code set (2 = default, 3 = PS/2 native)");

+static int atkbd_repeatrate;
+
#if defined(__i386__) || defined(__x86_64__) || defined(__hppa__)
static int atkbd_reset;
#else
@@ -477,7 +479,7 @@ static void atkbd_event_work(void *data)
j++;
dev->rep[REP_PERIOD] = period[i];
dev->rep[REP_DELAY] = delay[j];
- param[0] = i | (j << 5);
+ param[0] = atkbd_repeatrate = i | (j << 5);
ps2_command(&atkbd->ps2dev, param, ATKBD_CMD_SETREP);
}

@@ -679,7 +681,7 @@ static int atkbd_activate(struct atkbd *
* Set autorepeat to fastest possible.
*/

- param[0] = 0;
+ param[0] = atkbd_repeatrate;
if (ps2_command(ps2dev, param, ATKBD_CMD_SETREP))
return -1;