vserver 1.9.5.x5
[linux-2.6.git] / drivers / tc / lk201.h
index 5a7450e..99f3203 100644 (file)
  *     Commands to the keyboard processor
  */
 
-#define        LK_PARAM                0x80    /* start/end parameter list */
-
-#define        LK_CMD_RESUME           0x8b
-#define        LK_CMD_INHIBIT          0xb9
-#define        LK_CMD_LEDS_ON          0x13    /* 1 param: led bitmask */
-#define        LK_CMD_LEDS_OFF         0x11    /* 1 param: led bitmask */
-#define        LK_CMD_DIS_KEYCLK       0x99
-#define        LK_CMD_ENB_KEYCLK       0x1b    /* 1 param: volume */
-#define        LK_CMD_DIS_CTLCLK       0xb9
-#define        LK_CMD_ENB_CTLCLK       0xbb
-#define        LK_CMD_SOUND_CLK        0x9f
-#define        LK_CMD_DIS_BELL         0xa1
-#define        LK_CMD_ENB_BELL         0x23    /* 1 param: volume */
-#define        LK_CMD_BELL             0xa7
-#define        LK_CMD_TMP_NORPT        0xc1
-#define        LK_CMD_ENB_RPT          0xe3
-#define        LK_CMD_DIS_RPT          0xe1
-#define        LK_CMD_RPT_TO_DOWN      0xd9
-#define        LK_CMD_REQ_ID           0xab
-#define        LK_CMD_POWER_UP         0xfd
-#define        LK_CMD_TEST_MODE        0xcb
-#define        LK_CMD_SET_DEFAULTS     0xd3
+#define LK_PARAM               0x80    /* start/end parameter list */
+
+#define LK_CMD_RESUME          0x8b    /* resume transmission to the host */
+#define LK_CMD_INHIBIT         0x89    /* stop transmission to the host */
+#define LK_CMD_LEDS_ON         0x13    /* light LEDs */
+                                       /* 1st param: led bitmask */
+#define LK_CMD_LEDS_OFF                0x11    /* turn off LEDs */
+                                       /* 1st param: led bitmask */
+#define LK_CMD_DIS_KEYCLK      0x99    /* disable the keyclick */
+#define LK_CMD_ENB_KEYCLK      0x1b    /* enable the keyclick */
+                                       /* 1st param: volume */
+#define LK_CMD_DIS_CTLCLK      0xb9    /* disable the Ctrl keyclick */
+#define LK_CMD_ENB_CTLCLK      0xbb    /* enable the Ctrl keyclick */
+#define LK_CMD_SOUND_CLK       0x9f    /* emit a keyclick */
+#define LK_CMD_DIS_BELL                0xa1    /* disable the bell */
+#define LK_CMD_ENB_BELL                0x23    /* enable the bell */
+                                       /* 1st param: volume */
+#define LK_CMD_BELL            0xa7    /* emit a bell */
+#define LK_CMD_TMP_NORPT       0xd1    /* disable typematic */
+                                       /* for the currently pressed key */
+#define LK_CMD_ENB_RPT         0xe3    /* enable typematic */
+                                       /* for RPT_DOWN groups */
+#define LK_CMD_DIS_RPT         0xe1    /* disable typematic */
+                                       /* for RPT_DOWN groups */
+#define LK_CMD_RPT_TO_DOWN     0xd9    /* set RPT_DOWN groups to DOWN */
+#define LK_CMD_REQ_ID          0xab    /* request the keyboard ID */
+#define LK_CMD_POWER_UP                0xfd    /* init power-up sequence */
+#define LK_CMD_TEST_MODE       0xcb    /* enter the factory test mode */
+#define LK_CMD_TEST_EXIT       0x80    /* exit the factory test mode */
+#define LK_CMD_SET_DEFAULTS    0xd3    /* set power-up defaults */
+
+#define LK_CMD_MODE(m,div)     (LK_PARAM|(((div)&0xf)<<3)|(((m)&0x3)<<1))
+                                       /* select the repeat mode */
+                                       /* for the selected key group */
+#define LK_CMD_MODE_AR(m,div)  ((((div)&0xf)<<3)|(((m)&0x3)<<1))
+                                       /* select the repeat mode */
+                                       /* and the repeat register */
+                                       /* for the selected key group */
+                                       /* 1st param: register number */
+#define LK_CMD_RPT_RATE(r)     (0x78|(((r)&0x3)<<1))
+                                       /* set the delay and repeat rate */
+                                       /* for the selected repeat register */
+                                       /* 1st param: initial delay */
+                                       /* 2nd param: repeat rate */
 
 /* there are 4 leds, represent them in the low 4 bits of a byte */
-#define        LK_PARAM_LED_MASK(ledbmap)      (LK_PARAM|(ledbmap))
+#define LK_PARAM_LED_MASK(ledbmap)     (LK_PARAM|((ledbmap)&0xf))
+#define LK_LED_WAIT            0x1     /* Wait LED */
+#define LK_LED_COMP            0x2     /* Compose LED */
+#define LK_LED_LOCK            0x4     /* Lock LED */
+#define LK_LED_HOLD            0x8     /* Hold Screen LED */
 
 /* max volume is 0, lowest is 0x7 */
-#define        LK_PARAM_VOLUME(v)              (LK_PARAM|((v)&0x7))
+#define LK_PARAM_VOLUME(v)             (LK_PARAM|((v)&0x7))
+
+/* mode set command details, div is a key group number */
+#define LK_MODE_DOWN           0x0     /* make only */
+#define LK_MODE_RPT_DOWN       0x1     /* make and typematic */
+#define LK_MODE_DOWN_UP                0x3     /* make and release */
 
-/* mode set command(s) details */
-#define        LK_MODE_DOWN            0x0
-#define        LK_MODE_RPT_DOWN        0x2
-#define        LK_MODE_DOWN_UP         0x6
-#define        LK_CMD_MODE(m,div)      (LK_PARAM|(div<<3)|m)
+/* there are 4 repeat registers */
+#define LK_PARAM_AR(r)         (LK_PARAM|((v)&0x3))
+
+/*
+ * Mappings between key groups and keycodes are as follows:
+ *
+ *  1: 0xbf - 0xff -- alphanumeric,
+ *  2: 0x91 - 0xa5 -- numeric keypad,
+ *  3: 0xbc        -- Backspace,
+ *  4: 0xbd - 0xbe -- Tab, Return,
+ *  5: 0xb0 - 0xb2 -- Lock, Compose Character,
+ *  6: 0xad - 0xaf -- Ctrl, Shift,
+ *  7: 0xa6 - 0xa8 -- Left Arrow, Right Arrow,
+ *  8: 0xa9 - 0xac -- Up Arrow, Down Arrow, Right Shift,
+ *  9: 0x88 - 0x90 -- editor keypad,
+ * 10: 0x56 - 0x62 -- F1 - F5,
+ * 11: 0x63 - 0x6e -- F6 - F10,
+ * 12: 0x6f - 0x7a -- F11 - F14,
+ * 13: 0x7b - 0x7d -- Help, Do,
+ * 14: 0x7e - 0x87 -- F17 - F20.
+ *
+ * Notes:
+ * 1. Codes in the 0x00 - 0x40 range are reserved.
+ * 2. The assignment of the 0x41 - 0x55 range is undiscovered, probably 10.
+ */
+
+/* delay is 5 - 630 ms; 0x00 and 0x7f are reserved */
+#define LK_PARAM_DELAY(t)      ((t)&0x7f)
+
+/* rate is 12 - 127 Hz; 0x00 - 0x0b and 0x7d (power-up!) are reserved */
+#define LK_PARAM_RATE(r)       (LK_PARAM|((r)&0x7f))
 
 #define LK_SHIFT 1<<0
 #define LK_CTRL 1<<1
 #define LK_LOCK 1<<2
 #define LK_COMP 1<<3
 
-#define LK_KEY_SHIFT 174
-#define LK_KEY_CTRL 175
-#define LK_KEY_LOCK 176
-#define LK_KEY_COMP 177
-#define LK_KEY_RELEASE 179
-#define LK_KEY_REPEAT 180
-#define LK_KEY_ACK 186
+#define LK_KEY_SHIFT           0xae
+#define LK_KEY_CTRL            0xaf
+#define LK_KEY_LOCK            0xb0
+#define LK_KEY_COMP            0xb1
+
+#define LK_KEY_RELEASE         0xb3    /* all keys released */
+#define LK_KEY_REPEAT          0xb4    /* repeat the last key */
+
+/* status responses */
+#define LK_STAT_RESUME_ERR     0xb5    /* keystrokes lost while inhibited */
+#define LK_STAT_ERROR          0xb6    /* an invalid command received */
+#define LK_STAT_INHIBIT_ACK    0xb7    /* transmission inhibited */
+#define LK_STAT_TEST_ACK       0xb8    /* the factory test mode entered */
+#define LK_STAT_MODE_KEYDOWN   0xb9    /* a key is down on a change */
+                                       /* to the DOWN_UP mode; */
+                                       /* the keycode follows */
+#define LK_STAT_MODE_ACK       0xba    /* the mode command succeeded */
+
+#define LK_STAT_PWRUP_ID       0x01    /* the power-up response start mark */
+#define LK_STAT_PWRUP_OK       0x00    /* the power-up self test OK */
+#define LK_STAT_PWRUP_KDOWN    0x3d    /* a key was down during the test */
+#define LK_STAT_PWRUP_ERROR    0x3e    /* keyboard self test failure */
 
-extern unsigned char scancodeRemap[256];
\ No newline at end of file
+extern unsigned char scancodeRemap[256];