diff mbox

[3/3] kvm tools, i8042: Use kernel command names

Message ID 1307012202-14875-3-git-send-email-penberg@kernel.org (mailing list archive)
State New, archived
Headers show

Commit Message

Pekka Enberg June 2, 2011, 10:56 a.m. UTC
This patch renames the command constants in hw/i8042.c to use similar names as
in <linux/i8042.h>. Note: we cannot use <linux/i8042.h> constants directly
because they include the command and data.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
---
 tools/kvm/hw/i8042.c |   37 ++++++++++++++++++++-----------------
 1 files changed, 20 insertions(+), 17 deletions(-)

Comments

Ingo Molnar June 2, 2011, 11:04 a.m. UTC | #1
nice!

Acked-by: Ingo Molnar <mingo@elte.hu>

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ingo Molnar June 2, 2011, 11:19 a.m. UTC | #2
ok, with the shared commands it place here's some 
feature-completeness comparison of the kernel driver and the 
emulator:

                                guest driver i8042.h   |   hw/i8042.c emu
/*
 * Status register bits
 */
#define I8042_STR_PARITY        0x80                   |  missing
#define I8042_STR_TIMEOUT       0x40                   |  missing
#define I8042_STR_AUXDATA       0x20                   |  ok
#define I8042_STR_KEYLOCK       0x10                   |  ok
#define I8042_STR_CMDDAT        0x08                   |  ok
#define I8042_STR_MUXERR        0x04                   |  ok
#define I8042_STR_IBF           0x02                   |  missing
#define I8042_STR_OBF           0x01                   |  ok

The missing bits might be uninteresting, but wanted to map them out.

There's more divergence for commands:

                                guest driver i8042.h   |   hw/i8042.c emu

/*
 * Standard commands.
 */

#define I8042_CMD_CTL_RCTR      0x0120                 != 0x20
#define I8042_CMD_CTL_WCTR      0x1060                 != 0x60
#define I8042_CMD_CTL_TEST      0x01aa                 | missing

#define I8042_CMD_KBD_DISABLE   0x00ad                 | missing
#define I8042_CMD_KBD_ENABLE    0x00ae                 | missing
#define I8042_CMD_KBD_TEST      0x01ab                 | missing
#define I8042_CMD_KBD_LOOP      0x11d2                 | missing

#define I8042_CMD_AUX_DISABLE   0x00a7                 | ok
#define I8042_CMD_AUX_ENABLE    0x00a8                 | ok
#define I8042_CMD_AUX_TEST      0x01a9                 | != 0xa9
#define I8042_CMD_AUX_SEND      0x10d4                 | != 0xd4
#define I8042_CMD_AUX_LOOP      0x11d3                 | != 0xd3

#define I8042_CMD_MUX_PFX       0x0090                 | missing
#define I8042_CMD_MUX_SEND      0x1090                 | missing


Now the missing high word might just be some command symbol encoding 
difference, but it might be something more substantial as well.

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Pekka Enberg June 2, 2011, 11:22 a.m. UTC | #3
On Thu, Jun 2, 2011 at 2:19 PM, Ingo Molnar <mingo@elte.hu> wrote:
>
> ok, with the shared commands it place here's some
> feature-completeness comparison of the kernel driver and the
> emulator:
>
>                                guest driver i8042.h   |   hw/i8042.c emu
> /*
>  * Status register bits
>  */
> #define I8042_STR_PARITY        0x80                   |  missing
> #define I8042_STR_TIMEOUT       0x40                   |  missing
> #define I8042_STR_AUXDATA       0x20                   |  ok
> #define I8042_STR_KEYLOCK       0x10                   |  ok
> #define I8042_STR_CMDDAT        0x08                   |  ok
> #define I8042_STR_MUXERR        0x04                   |  ok
> #define I8042_STR_IBF           0x02                   |  missing
> #define I8042_STR_OBF           0x01                   |  ok
>
> The missing bits might be uninteresting, but wanted to map them out.
>
> There's more divergence for commands:
>
>                                guest driver i8042.h   |   hw/i8042.c emu
>
> /*
>  * Standard commands.
>  */
>
> #define I8042_CMD_CTL_RCTR      0x0120                 != 0x20
> #define I8042_CMD_CTL_WCTR      0x1060                 != 0x60
> #define I8042_CMD_CTL_TEST      0x01aa                 | missing
>
> #define I8042_CMD_KBD_DISABLE   0x00ad                 | missing
> #define I8042_CMD_KBD_ENABLE    0x00ae                 | missing
> #define I8042_CMD_KBD_TEST      0x01ab                 | missing
> #define I8042_CMD_KBD_LOOP      0x11d2                 | missing
>
> #define I8042_CMD_AUX_DISABLE   0x00a7                 | ok
> #define I8042_CMD_AUX_ENABLE    0x00a8                 | ok
> #define I8042_CMD_AUX_TEST      0x01a9                 | != 0xa9
> #define I8042_CMD_AUX_SEND      0x10d4                 | != 0xd4
> #define I8042_CMD_AUX_LOOP      0x11d3                 | != 0xd3
>
> #define I8042_CMD_MUX_PFX       0x0090                 | missing
> #define I8042_CMD_MUX_SEND      0x1090                 | missing
>
> Now the missing high word might just be some command symbol encoding
> difference, but it might be something more substantial as well.

The high byte is the data byte that's written immediately after the
command byte.

                        Pekka
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ingo Molnar June 2, 2011, 12:12 p.m. UTC | #4
oh, the keyboard driver did not work for me due to:

        if (vnc) {
                kbd__init(kvm);
                vesa__init(kvm);
        }

I don't have VNC installed - i just wanted to see whether the 
keyboard gets detected.

With kbd__init() called unconditionally it works fine here:

[    1.658000] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.659000] mousedev: PS/2 mouse device common for all mice

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tools/kvm/hw/i8042.c b/tools/kvm/hw/i8042.c
index 48a3c9d..934ef4e 100644
--- a/tools/kvm/hw/i8042.c
+++ b/tools/kvm/hw/i8042.c
@@ -22,13 +22,16 @@ 
 #define I8042_DATA_REG		0x60
 #define I8042_COMMAND_REG	0x64
 
-#define CMD_READ_MODE		0x20
-#define CMD_WRITE_MODE		0x60
-#define CMD_WRITE_AUX_BUF	0xD3
-#define CMD_WRITE_AUX		0xD4
-#define CMD_TEST_AUX		0xA9
-#define CMD_DISABLE_AUX		0xA7
-#define CMD_ENABLE_AUX		0xA8
+/*
+ * Commands
+ */
+#define I8042_CMD_CTL_RCTR	0x20
+#define I8042_CMD_CTL_WCTR	0x60
+#define I8042_CMD_AUX_LOOP	0xD3
+#define I8042_CMD_AUX_SEND	0xD4
+#define I8042_CMD_AUX_TEST	0xA9
+#define I8042_CMD_AUX_DISABLE	0xA7
+#define I8042_CMD_AUX_ENABLE	0xA8
 
 #define RESPONSE_ACK		0xFA
 
@@ -143,22 +146,22 @@  static void kbd_queue(u8 c)
 static void kbd_write_command(u32 val)
 {
 	switch (val) {
-	case CMD_READ_MODE:
+	case I8042_CMD_CTL_RCTR:
 		kbd_queue(state.mode);
 		break;
-	case CMD_WRITE_MODE:
-	case CMD_WRITE_AUX:
-	case CMD_WRITE_AUX_BUF:
+	case I8042_CMD_CTL_WCTR:
+	case I8042_CMD_AUX_SEND:
+	case I8042_CMD_AUX_LOOP:
 		state.write_cmd = val;
 		break;
-	case CMD_TEST_AUX:
+	case I8042_CMD_AUX_TEST:
 		/* 0 means we're a normal PS/2 mouse */
 		mouse_queue(0);
 		break;
-	case CMD_DISABLE_AUX:
+	case I8042_CMD_AUX_DISABLE:
 		state.mode |= MODE_DISABLE_AUX;
 		break;
-	case CMD_ENABLE_AUX:
+	case I8042_CMD_AUX_ENABLE:
 		state.mode &= ~MODE_DISABLE_AUX;
 		break;
 	default:
@@ -211,15 +214,15 @@  static u32 kbd_read_status(void)
 static void kbd_write_data(u32 val)
 {
 	switch (state.write_cmd) {
-	case CMD_WRITE_MODE:
+	case I8042_CMD_CTL_WCTR:
 		state.mode = val;
 		kbd_update_irq();
 		break;
-	case CMD_WRITE_AUX_BUF:
+	case I8042_CMD_AUX_LOOP:
 		mouse_queue(val);
 		mouse_queue(RESPONSE_ACK);
 		break;
-	case CMD_WRITE_AUX:
+	case I8042_CMD_AUX_SEND:
 		/* The OS wants to send a command to the mouse */
 		mouse_queue(RESPONSE_ACK);
 		switch (val) {