diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/input/serio/i8042-io.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/input/serio/i8042-io.h')
-rw-r--r-- | drivers/input/serio/i8042-io.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/drivers/input/serio/i8042-io.h b/drivers/input/serio/i8042-io.h new file mode 100644 index 000000000000..c9e633d21d90 --- /dev/null +++ b/drivers/input/serio/i8042-io.h | |||
@@ -0,0 +1,93 @@ | |||
1 | #ifndef _I8042_IO_H | ||
2 | #define _I8042_IO_H | ||
3 | |||
4 | /* | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of the GNU General Public License version 2 as published by | ||
7 | * the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | /* | ||
11 | * Names. | ||
12 | */ | ||
13 | |||
14 | #define I8042_KBD_PHYS_DESC "isa0060/serio0" | ||
15 | #define I8042_AUX_PHYS_DESC "isa0060/serio1" | ||
16 | #define I8042_MUX_PHYS_DESC "isa0060/serio%d" | ||
17 | |||
18 | /* | ||
19 | * IRQs. | ||
20 | */ | ||
21 | |||
22 | #ifdef __alpha__ | ||
23 | # define I8042_KBD_IRQ 1 | ||
24 | # define I8042_AUX_IRQ (RTC_PORT(0) == 0x170 ? 9 : 12) /* Jensen is special */ | ||
25 | #elif defined(__arm__) | ||
26 | /* defined in include/asm-arm/arch-xxx/irqs.h */ | ||
27 | #include <asm/irq.h> | ||
28 | #elif defined(CONFIG_SUPERH64) | ||
29 | #include <asm/irq.h> | ||
30 | #else | ||
31 | # define I8042_KBD_IRQ 1 | ||
32 | # define I8042_AUX_IRQ 12 | ||
33 | #endif | ||
34 | |||
35 | |||
36 | /* | ||
37 | * Register numbers. | ||
38 | */ | ||
39 | |||
40 | #define I8042_COMMAND_REG 0x64 | ||
41 | #define I8042_STATUS_REG 0x64 | ||
42 | #define I8042_DATA_REG 0x60 | ||
43 | |||
44 | static inline int i8042_read_data(void) | ||
45 | { | ||
46 | return inb(I8042_DATA_REG); | ||
47 | } | ||
48 | |||
49 | static inline int i8042_read_status(void) | ||
50 | { | ||
51 | return inb(I8042_STATUS_REG); | ||
52 | } | ||
53 | |||
54 | static inline void i8042_write_data(int val) | ||
55 | { | ||
56 | outb(val, I8042_DATA_REG); | ||
57 | } | ||
58 | |||
59 | static inline void i8042_write_command(int val) | ||
60 | { | ||
61 | outb(val, I8042_COMMAND_REG); | ||
62 | } | ||
63 | |||
64 | static inline int i8042_platform_init(void) | ||
65 | { | ||
66 | /* | ||
67 | * On some platforms touching the i8042 data register region can do really | ||
68 | * bad things. Because of this the region is always reserved on such boxes. | ||
69 | */ | ||
70 | #if !defined(__sh__) && !defined(__alpha__) && !defined(__mips__) && !defined(CONFIG_PPC64) | ||
71 | if (!request_region(I8042_DATA_REG, 16, "i8042")) | ||
72 | return -1; | ||
73 | #endif | ||
74 | |||
75 | i8042_reset = 1; | ||
76 | |||
77 | #if defined(CONFIG_PPC64) | ||
78 | if (check_legacy_ioport(I8042_DATA_REG)) | ||
79 | return -1; | ||
80 | if (!request_region(I8042_DATA_REG, 16, "i8042")) | ||
81 | return -1; | ||
82 | #endif | ||
83 | return 0; | ||
84 | } | ||
85 | |||
86 | static inline void i8042_platform_exit(void) | ||
87 | { | ||
88 | #if !defined(__sh__) && !defined(__alpha__) && !defined(CONFIG_PPC64) | ||
89 | release_region(I8042_DATA_REG, 16); | ||
90 | #endif | ||
91 | } | ||
92 | |||
93 | #endif /* _I8042_IO_H */ | ||