public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] kvm tools, i8042: Sort status register bits
@ 2011-06-02 10:56 Pekka Enberg
  2011-06-02 10:56 ` [PATCH 2/3] kmv tools, i8042: Use kernel status register bit names Pekka Enberg
  2011-06-02 10:56 ` [PATCH 3/3] kvm tools, i8042: Use kernel command names Pekka Enberg
  0 siblings, 2 replies; 7+ messages in thread
From: Pekka Enberg @ 2011-06-02 10:56 UTC (permalink / raw)
  To: kvm; +Cc: Pekka Enberg, Ingo Molnar, Sasha Levin

This patch sorts the status register bits in preparation for switching over to
kernel constant names.

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 |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/tools/kvm/hw/i8042.c b/tools/kvm/hw/i8042.c
index de0e73b..d3f5d9a 100644
--- a/tools/kvm/hw/i8042.c
+++ b/tools/kvm/hw/i8042.c
@@ -39,11 +39,14 @@
 #define AUX_DEFAULT_RESOLUTION	0x2
 #define AUX_DEFAULT_SAMPLE	100
 
-#define KBD_STATUS_SYS		0x4
-#define KBD_STATUS_A2		0x8
+/*
+ * Status register bits
+ */
+#define KBD_STATUS_AUX_OBF	0x20
 #define KBD_STATUS_INH		0x10
+#define KBD_STATUS_A2		0x08
+#define KBD_STATUS_SYS		0x04
 #define KBD_STATUS_OBF		0x01
-#define KBD_STATUS_AUX_OBF	0x20
 
 #define KBD_MODE_KBD_INT	0x01
 #define KBD_MODE_SYS		0x02
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] kmv tools, i8042: Use kernel status register bit names
  2011-06-02 10:56 [PATCH 1/3] kvm tools, i8042: Sort status register bits Pekka Enberg
@ 2011-06-02 10:56 ` Pekka Enberg
  2011-06-02 10:56 ` [PATCH 3/3] kvm tools, i8042: Use kernel command names Pekka Enberg
  1 sibling, 0 replies; 7+ messages in thread
From: Pekka Enberg @ 2011-06-02 10:56 UTC (permalink / raw)
  To: kvm; +Cc: Pekka Enberg, Ingo Molnar, Sasha Levin

This patch renames the status register bit constant names to be identical with
drivers/input/serio/i8042.h. This makes code review easier.

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 |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/tools/kvm/hw/i8042.c b/tools/kvm/hw/i8042.c
index d3f5d9a..48a3c9d 100644
--- a/tools/kvm/hw/i8042.c
+++ b/tools/kvm/hw/i8042.c
@@ -42,11 +42,11 @@
 /*
  * Status register bits
  */
-#define KBD_STATUS_AUX_OBF	0x20
-#define KBD_STATUS_INH		0x10
-#define KBD_STATUS_A2		0x08
-#define KBD_STATUS_SYS		0x04
-#define KBD_STATUS_OBF		0x01
+#define I8042_STR_AUXDATA	0x20
+#define I8042_STR_KEYLOCK	0x10
+#define I8042_STR_CMDDAT	0x08
+#define I8042_STR_MUXERR	0x04
+#define I8042_STR_OBF		0x01
 
 #define KBD_MODE_KBD_INT	0x01
 #define KBD_MODE_SYS		0x02
@@ -92,16 +92,16 @@ static void kbd_update_irq(void)
 	u8 mlevel = 0;
 
 	/* First, clear the kbd and aux output buffer full bits */
-	state.status &= ~(KBD_STATUS_OBF | KBD_STATUS_AUX_OBF);
+	state.status &= ~(I8042_STR_OBF | I8042_STR_AUXDATA);
 
 	if (state.kcount > 0) {
-		state.status |= KBD_STATUS_OBF;
+		state.status |= I8042_STR_OBF;
 		klevel = 1;
 	}
 
 	/* Keyboard has higher priority than mouse */
 	if (klevel == 0 && state.mcount != 0) {
-		state.status |= KBD_STATUS_OBF | KBD_STATUS_AUX_OBF;
+		state.status |= I8042_STR_OBF | I8042_STR_AUXDATA;
 		mlevel = 1;
 	}
 
@@ -281,7 +281,7 @@ static void kbd_write_data(u32 val)
 static void kbd_reset(void)
 {
 	state = (struct kbd_state) {
-		.status		= KBD_STATUS_SYS | KBD_STATUS_A2 | KBD_STATUS_INH, /* 0x1c */
+		.status		= I8042_STR_MUXERR | I8042_STR_CMDDAT | I8042_STR_KEYLOCK, /* 0x1c */
 		.mode		= KBD_MODE_KBD_INT | KBD_MODE_SYS, /* 0x3 */
 		.mres		= AUX_DEFAULT_RESOLUTION,
 		.msample	= AUX_DEFAULT_SAMPLE,
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] kvm tools, i8042: Use kernel command names
  2011-06-02 10:56 [PATCH 1/3] kvm tools, i8042: Sort status register bits Pekka Enberg
  2011-06-02 10:56 ` [PATCH 2/3] kmv tools, i8042: Use kernel status register bit names Pekka Enberg
@ 2011-06-02 10:56 ` Pekka Enberg
  2011-06-02 11:04   ` Ingo Molnar
  2011-06-02 11:19   ` Ingo Molnar
  1 sibling, 2 replies; 7+ messages in thread
From: Pekka Enberg @ 2011-06-02 10:56 UTC (permalink / raw)
  To: kvm; +Cc: Pekka Enberg, Ingo Molnar, Sasha Levin

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(-)

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) {
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] kvm tools, i8042: Use kernel command names
  2011-06-02 10:56 ` [PATCH 3/3] kvm tools, i8042: Use kernel command names Pekka Enberg
@ 2011-06-02 11:04   ` Ingo Molnar
  2011-06-02 11:19   ` Ingo Molnar
  1 sibling, 0 replies; 7+ messages in thread
From: Ingo Molnar @ 2011-06-02 11:04 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: kvm, Sasha Levin


nice!

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

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] kvm tools, i8042: Use kernel command names
  2011-06-02 10:56 ` [PATCH 3/3] kvm tools, i8042: Use kernel command names Pekka Enberg
  2011-06-02 11:04   ` Ingo Molnar
@ 2011-06-02 11:19   ` Ingo Molnar
  2011-06-02 11:22     ` Pekka Enberg
  2011-06-02 12:12     ` Ingo Molnar
  1 sibling, 2 replies; 7+ messages in thread
From: Ingo Molnar @ 2011-06-02 11:19 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: kvm, Sasha Levin


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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] kvm tools, i8042: Use kernel command names
  2011-06-02 11:19   ` Ingo Molnar
@ 2011-06-02 11:22     ` Pekka Enberg
  2011-06-02 12:12     ` Ingo Molnar
  1 sibling, 0 replies; 7+ messages in thread
From: Pekka Enberg @ 2011-06-02 11:22 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: kvm, Sasha Levin

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] kvm tools, i8042: Use kernel command names
  2011-06-02 11:19   ` Ingo Molnar
  2011-06-02 11:22     ` Pekka Enberg
@ 2011-06-02 12:12     ` Ingo Molnar
  1 sibling, 0 replies; 7+ messages in thread
From: Ingo Molnar @ 2011-06-02 12:12 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: kvm, Sasha Levin


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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-06-02 12:12 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-02 10:56 [PATCH 1/3] kvm tools, i8042: Sort status register bits Pekka Enberg
2011-06-02 10:56 ` [PATCH 2/3] kmv tools, i8042: Use kernel status register bit names Pekka Enberg
2011-06-02 10:56 ` [PATCH 3/3] kvm tools, i8042: Use kernel command names Pekka Enberg
2011-06-02 11:04   ` Ingo Molnar
2011-06-02 11:19   ` Ingo Molnar
2011-06-02 11:22     ` Pekka Enberg
2011-06-02 12:12     ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox