Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:41

0001 /**
0002  * @file
0003  * 
0004  * @ingroup RTEMSBSPsI386
0005  *
0006  * @brief I386 keyboard definitions.
0007  */
0008 
0009 /*
0010  *  linux/include/asm-i386/keyboard.h
0011  *
0012  *  Created 3 Nov 1996 by Geert Uytterhoeven
0013  */
0014 
0015 /*
0016  *  This file contains the i386 architecture specific keyboard definitions
0017  */
0018 
0019 #ifndef _I386_KEYBOARD_H
0020 #define _I386_KEYBOARD_H
0021 
0022 #include  <i386_io.h>
0023 
0024 #define KEYBOARD_IRQ            1
0025 #define DISABLE_KBD_DURING_INTERRUPTS   0
0026 
0027 extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
0028 extern int pckbd_getkeycode(unsigned int scancode);
0029 extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
0030                char raw_mode);
0031 extern char pckbd_unexpected_up(unsigned char keycode);
0032 extern void pckbd_leds(unsigned char leds);
0033 extern void pckbd_init_hw(void);
0034 extern unsigned char pckbd_sysrq_xlate[128];
0035 
0036 #define kbd_setkeycode      pckbd_setkeycode
0037 #define kbd_getkeycode      pckbd_getkeycode
0038 #define kbd_translate       pckbd_translate
0039 #define kbd_unexpected_up   pckbd_unexpected_up
0040 #define kbd_leds              pckbd_leds
0041 #define kbd_init_hw        pckbd_init_hw
0042 #define kbd_sysrq_xlate     pckbd_sysrq_xlate
0043 
0044 #define SYSRQ_KEY 0x54
0045 
0046 /* resource allocation */
0047 #define kbd_request_region()     /* request_region(0x60, 16, "keyboard") */
0048 #define kbd_request_irq(handler) /* request_irq(KEYBOARD_IRQ, handler, 0, "keyboard", NULL) */
0049 
0050 /* How to access the keyboard macros on this platform.  */
0051 #define kbd_read_input() inb(KBD_DATA_REG)
0052 #define kbd_read_status() inb(KBD_STATUS_REG)
0053 #define kbd_write_output(val) outb(val, KBD_DATA_REG)
0054 #define kbd_write_command(val) outb(val, KBD_CNTL_REG)
0055 
0056 /* Some stoneage hardware needs delays after some operations.  */
0057 #define kbd_pause() do { } while(0)
0058 
0059 /*
0060  * Machine specific bits for the PS/2 driver
0061  */
0062 
0063 #define AUX_IRQ 12
0064 
0065 #define aux_request_irq(hand, dev_id)  /* request_irq(AUX_IRQ, hand, SA_SHIRQ, "PS/2 Mouse", dev_id) */
0066 
0067 #define aux_free_irq(dev_id)   /* free_irq(AUX_IRQ, dev_id) */
0068 
0069 /*
0070  *  include/linux/pc_keyb.h
0071  *
0072  *  PC Keyboard And Keyboard Controller
0073  *
0074  *  (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
0075  */
0076 
0077 /*
0078  *  Configuration Switches
0079  */
0080 
0081 #undef KBD_REPORT_ERR           /* Report keyboard errors */
0082 #define KBD_REPORT_UNKN         /* Report unknown scan codes */
0083 #define KBD_REPORT_TIMEOUTS     /* Report keyboard timeouts */
0084 #undef KBD_IS_FOCUS_9000        /* We have the brain-damaged FOCUS-9000 keyboard */
0085 #undef INITIALIZE_MOUSE         /* Define if your PS/2 mouse needs initialization. */
0086 
0087 #define KBD_INIT_TIMEOUT 1000       /* Timeout in ms for initializing the keyboard */
0088 #define KBC_TIMEOUT 250         /* Timeout in ms for sending to keyboard controller */
0089 #define KBD_TIMEOUT 1000        /* Timeout in ms for keyboard command acknowledge */
0090 
0091 /*
0092  *  Internal variables of the driver
0093  */
0094 
0095 extern unsigned char pckbd_read_mask;
0096 extern unsigned char aux_device_present;
0097 
0098 /*
0099  *  Keyboard Controller Registers on normal PCs.
0100  */
0101 
0102 #define KBD_STATUS_REG      0x64    /* Status register (R) */
0103 #define KBD_CNTL_REG        0x64    /* Controller command register (W) */
0104 #define KBD_DATA_REG        0x60    /* Keyboard data register (R/W) */
0105 
0106 /*
0107  *  Keyboard Controller Commands
0108  */
0109 
0110 #define KBD_CCMD_READ_MODE  0x20    /* Read mode bits */
0111 #define KBD_CCMD_WRITE_MODE 0x60    /* Write mode bits */
0112 #define KBD_CCMD_GET_VERSION    0xA1    /* Get controller version */
0113 #define KBD_CCMD_MOUSE_DISABLE  0xA7    /* Disable mouse interface */
0114 #define KBD_CCMD_MOUSE_ENABLE   0xA8    /* Enable mouse interface */
0115 #define KBD_CCMD_TEST_MOUSE 0xA9    /* Mouse interface test */
0116 #define KBD_CCMD_SELF_TEST  0xAA    /* Controller self test */
0117 #define KBD_CCMD_KBD_TEST   0xAB    /* Keyboard interface test */
0118 #define KBD_CCMD_KBD_DISABLE    0xAD    /* Keyboard interface disable */
0119 #define KBD_CCMD_KBD_ENABLE 0xAE    /* Keyboard interface enable */
0120 #define KBD_CCMD_WRITE_AUX_OBUF 0xD3    /* Write to output buffer as if
0121                        initiated by the auxiliary device */
0122 #define KBD_CCMD_WRITE_MOUSE    0xD4    /* Write the following byte to the mouse */
0123 
0124 /*
0125  *  Keyboard Commands
0126  */
0127 
0128 #define KBD_CMD_SET_LEDS    0xED    /* Set keyboard leds */
0129 #define KBD_CMD_SET_RATE    0xF3    /* Set typematic rate */
0130 #define KBD_CMD_ENABLE      0xF4    /* Enable scanning */
0131 #define KBD_CMD_DISABLE     0xF5    /* Disable scanning */
0132 #define KBD_CMD_RESET       0xFF    /* Reset */
0133 
0134 /*
0135  *  Keyboard Replies
0136  */
0137 
0138 #define KBD_REPLY_POR       0xAA    /* Power on reset */
0139 #define KBD_REPLY_ACK       0xFA    /* Command ACK */
0140 #define KBD_REPLY_RESEND    0xFE    /* Command NACK, send the cmd again */
0141 
0142 /*
0143  *  Status Register Bits
0144  */
0145 
0146 #define KBD_STAT_OBF        0x01    /* Keyboard output buffer full */
0147 #define KBD_STAT_IBF        0x02    /* Keyboard input buffer full */
0148 #define KBD_STAT_SELFTEST   0x04    /* Self test successful */
0149 #define KBD_STAT_CMD        0x08    /* Last write was a command write (0=data) */
0150 #define KBD_STAT_UNLOCKED   0x10    /* Zero if keyboard locked */
0151 #define KBD_STAT_MOUSE_OBF  0x20    /* Mouse output buffer full */
0152 #define KBD_STAT_GTO        0x40    /* General receive/xmit timeout */
0153 #define KBD_STAT_PERR       0x80    /* Parity error */
0154 
0155 #define AUX_STAT_OBF (KBD_STAT_OBF | KBD_STAT_MOUSE_OBF)
0156 
0157 /*
0158  *  Controller Mode Register Bits
0159  */
0160 
0161 #define KBD_MODE_KBD_INT    0x01    /* Keyboard data generate IRQ1 */
0162 #define KBD_MODE_MOUSE_INT  0x02    /* Mouse data generate IRQ12 */
0163 #define KBD_MODE_SYS        0x04    /* The system flag (?) */
0164 #define KBD_MODE_NO_KEYLOCK 0x08    /* The keylock doesn't affect the keyboard if set */
0165 #define KBD_MODE_DISABLE_KBD    0x10    /* Disable keyboard interface */
0166 #define KBD_MODE_DISABLE_MOUSE  0x20    /* Disable mouse interface */
0167 #define KBD_MODE_KCC        0x40    /* Scan code conversion to PC format */
0168 #define KBD_MODE_RFU        0x80
0169 
0170 /*
0171  *  Mouse Commands
0172  */
0173 
0174 #define AUX_SET_RES     0xE8    /* Set resolution */
0175 #define AUX_SET_SCALE11     0xE6    /* Set 1:1 scaling */
0176 #define AUX_SET_SCALE21     0xE7    /* Set 2:1 scaling */
0177 #define AUX_GET_SCALE       0xE9    /* Get scaling factor */
0178 #define AUX_SET_STREAM      0xEA    /* Set stream mode */
0179 #define AUX_SET_SAMPLE      0xF3    /* Set sample rate */
0180 #define AUX_ENABLE_DEV      0xF4    /* Enable aux device */
0181 #define AUX_DISABLE_DEV     0xF5    /* Disable aux device */
0182 #define AUX_RESET       0xFF    /* Reset aux device */
0183 #define AUX_ACK         0xFA    /* Command byte ACK. */
0184 
0185 #define AUX_BUF_SIZE        2048    /* This might be better divisible by
0186                        three to make overruns stay in sync
0187                        but then the read function would need
0188                        a lock etc - ick */
0189 
0190 #define  mark_bh(x)
0191 
0192 #endif /* _I386_KEYBOARD_H */