Changeset c47e1a8 in mainline for uspace/srv/hid/kbd
- Timestamp:
- 2010-05-21T07:50:04Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d51ee2b
- Parents:
- cf8cc36 (diff), 15b592b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/srv/hid/kbd
- Files:
-
- 1 added
- 2 deleted
- 12 edited
-
Makefile (modified) (1 diff)
-
Makefile.build (deleted)
-
Makefile.common (deleted)
-
generic/kbd.c (modified) (3 diffs)
-
port/adb.c (modified) (1 diff)
-
port/chardev.c (modified) (1 diff)
-
port/gxemul.c (modified) (2 diffs)
-
port/msim.c (modified) (3 diffs)
-
port/niagara.c (added)
-
port/ns16550.c (modified) (4 diffs)
-
port/pl050.c (modified) (3 diffs)
-
port/sgcn.c (modified) (5 diffs)
-
port/ski.c (modified) (2 diffs)
-
port/sun.c (modified) (2 diffs)
-
port/z8530.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/kbd/Makefile
rcf8cc36 rc47e1a8 28 28 # 29 29 30 include Makefile.common 30 USPACE_PREFIX = ../../.. 31 ROOT_PATH = $(USPACE_PREFIX)/.. 31 32 32 .PHONY: all clean 33 COMMON_MAKEFILE = $(ROOT_PATH)/Makefile.common 34 CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config 33 35 34 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS) 35 -[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV) 36 $(MAKE) -f Makefile.build PRECHECK=$(PRECHECK) 36 EXTRA_CFLAGS = -Iinclude 37 BINARY = kbd 37 38 38 clean: 39 rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm 40 find . -name '*.o' -follow -exec rm \{\} \; 39 -include $(COMMON_MAKEFILE) 40 -include $(CONFIG_MAKEFILE) 41 42 ## Sources 43 # 44 45 SOURCES = \ 46 generic/kbd.c \ 47 genarch/gsp.c \ 48 genarch/stroke.c \ 49 layout/cz.c \ 50 layout/us_qwerty.c \ 51 layout/us_dvorak.c 52 53 ifeq ($(UARCH),amd64) 54 SOURCES += \ 55 port/chardev.c \ 56 ctl/pc.c 57 endif 58 59 ifeq ($(UARCH),arm32) 60 ifeq ($(MACHINE),testarm) 61 SOURCES += \ 62 port/gxemul.c 63 64 ifeq ($(CONFIG_FB),y) 65 SOURCES += \ 66 ctl/gxe_fb.c 67 else 68 SOURCES += \ 69 ctl/stty.c 70 endif 71 endif 72 ifeq ($(MACHINE),integratorcp) 73 SOURCES += \ 74 port/pl050.c \ 75 ctl/pl050.c 76 endif 77 endif 78 79 ifeq ($(UARCH),ia32) 80 SOURCES += \ 81 port/chardev.c \ 82 ctl/pc.c 83 endif 84 85 ifeq ($(MACHINE),i460GX) 86 SOURCES += \ 87 port/chardev.c \ 88 ctl/pc.c 89 endif 90 91 ifeq ($(MACHINE),ski) 92 SOURCES += \ 93 port/ski.c \ 94 ctl/stty.c 95 endif 96 97 ifeq ($(MACHINE),msim) 98 SOURCES += \ 99 port/msim.c \ 100 ctl/stty.c 101 endif 102 103 ifeq ($(MACHINE),lgxemul) 104 SOURCES += \ 105 port/gxemul.c 106 107 ifeq ($(CONFIG_FB),y) 108 SOURCES += \ 109 ctl/gxe_fb.c 110 else 111 SOURCES += \ 112 ctl/stty.c 113 endif 114 endif 115 116 ifeq ($(MACHINE),bgxemul) 117 SOURCES += \ 118 port/gxemul.c 119 120 ifeq ($(CONFIG_FB),y) 121 SOURCES += \ 122 ctl/gxe_fb.c 123 else 124 SOURCES += \ 125 ctl/stty.c 126 endif 127 endif 128 129 ifeq ($(UARCH),ppc32) 130 SOURCES += \ 131 port/adb.c \ 132 ctl/apple.c 133 endif 134 135 ifeq ($(UARCH),sparc64) 136 ifeq ($(PROCESSOR),sun4v) 137 SOURCES += \ 138 port/niagara.c \ 139 ctl/stty.c 140 else 141 ifeq ($(MACHINE),serengeti) 142 SOURCES += \ 143 port/sgcn.c \ 144 ctl/stty.c 145 endif 146 ifeq ($(MACHINE),generic) 147 SOURCES += \ 148 port/sun.c \ 149 port/z8530.c \ 150 port/ns16550.c \ 151 ctl/sun.c 152 endif 153 endif 154 endif 155 156 ifeq ($(UARCH),abs32le) 157 SOURCES += \ 158 port/dummy.c \ 159 ctl/pc.c 160 endif 161 162 include $(USPACE_PREFIX)/Makefile.common -
uspace/srv/hid/kbd/generic/kbd.c
rcf8cc36 rc47e1a8 212 212 int main(int argc, char **argv) 213 213 { 214 printf(NAME ": HelenOS Keyboard service\n"); 215 216 if (sysinfo_value("kbd.cir.fhc") == 1) 214 printf("%s: HelenOS Keyboard service\n", NAME); 215 216 sysarg_t fhc; 217 sysarg_t obio; 218 219 if ((sysinfo_get_value("kbd.cir.fhc", &fhc) == EOK) && (fhc)) 217 220 cir_service = SERVICE_FHC; 218 else if ( sysinfo_value("kbd.cir.obio") == 1)221 else if ((sysinfo_get_value("kbd.cir.obio", &obio) == EOK) && (obio)) 219 222 cir_service = SERVICE_OBIO; 220 223 … … 240 243 int rc = devmap_driver_register(NAME, client_connection); 241 244 if (rc < 0) { 242 printf( NAME ": Unable to register driver (%d)\n", rc);245 printf("%s: Unable to register driver (%d)\n", NAME, rc); 243 246 return -1; 244 247 } … … 249 252 dev_handle_t dev_handle; 250 253 if (devmap_device_register(kbd, &dev_handle) != EOK) { 251 printf( NAME ": Unable to register device %s\n", kbd);254 printf("%s: Unable to register device %s\n", NAME, kbd); 252 255 return -1; 253 256 } -
uspace/srv/hid/kbd/port/adb.c
rcf8cc36 rc47e1a8 53 53 int kbd_port_init(void) 54 54 { 55 c har *input = "/dev/adb/kbd";55 const char *input = "/dev/adb/kbd"; 56 56 int input_fd; 57 57 -
uspace/srv/hid/kbd/port/chardev.c
rcf8cc36 rc47e1a8 52 52 int kbd_port_init(void) 53 53 { 54 c har *input = "/dev/char/ps2a";54 const char *input = "/dev/char/ps2a"; 55 55 int input_fd; 56 56 -
uspace/srv/hid/kbd/port/gxemul.c
rcf8cc36 rc47e1a8 41 41 #include <kbd.h> 42 42 #include <ddi.h> 43 #include <errno.h> 43 44 44 45 static irq_cmd_t gxemul_cmds[] = { … … 63 64 int kbd_port_init(void) 64 65 { 66 sysarg_t addr; 67 if (sysinfo_get_value("kbd.address.virtual", &addr) != EOK) 68 return -1; 69 70 sysarg_t inr; 71 if (sysinfo_get_value("kbd.inr", &inr) != EOK) 72 return -1; 73 65 74 async_set_interrupt_received(gxemul_irq_handler); 66 gxemul_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual"); 67 ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 68 0, &gxemul_kbd); 75 gxemul_cmds[0].addr = (void *) addr; 76 ipc_register_irq(inr, device_assign_devno(), 0, &gxemul_kbd); 69 77 return 0; 70 78 } -
uspace/srv/hid/kbd/port/msim.c
rcf8cc36 rc47e1a8 30 30 * @ingroup kbd 31 31 * @{ 32 */ 32 */ 33 33 /** @file 34 * @brief Msim keyboard port driver.34 * @brief Msim keyboard port driver. 35 35 */ 36 36 … … 41 41 #include <kbd.h> 42 42 #include <ddi.h> 43 #include <errno.h> 43 44 44 45 irq_cmd_t msim_cmds[] = { … … 63 64 int kbd_port_init(void) 64 65 { 66 sysarg_t vaddr; 67 if (sysinfo_get_value("kbd.address.virtual", &vaddr) != EOK) 68 return -1; 69 70 sysarg_t inr; 71 if (sysinfo_get_value("kbd.inr", &inr) != EOK) 72 return -1; 73 74 msim_cmds[0].addr = (void *) vaddr; 65 75 async_set_interrupt_received(msim_irq_handler); 66 msim_cmds[0].addr = sysinfo_value("kbd.address.virtual"); 67 ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 68 0, &msim_kbd); 76 ipc_register_irq(inr, device_assign_devno(), 0, &msim_kbd); 77 69 78 return 0; 70 79 } -
uspace/srv/hid/kbd/port/ns16550.c
rcf8cc36 rc47e1a8 30 30 * @ingroup kbd 31 31 * @{ 32 */ 32 */ 33 33 /** @file 34 * @brief NS16550 port driver.34 * @brief NS16550 port driver. 35 35 */ 36 36 … … 43 43 #include <sun.h> 44 44 #include <ddi.h> 45 #include <errno.h> 45 46 46 47 /* NS16550 registers */ 47 #define RBR_REG 0/** Receiver Buffer Register. */48 #define IER_REG 1/** Interrupt Enable Register. */49 #define IIR_REG 2/** Interrupt Ident Register (read). */50 #define FCR_REG 2/** FIFO control register (write). */51 #define LCR_REG 3/** Line Control register. */52 #define MCR_REG 4/** Modem Control Register. */53 #define LSR_REG 5/** Line Status Register. */48 #define RBR_REG 0 /** Receiver Buffer Register. */ 49 #define IER_REG 1 /** Interrupt Enable Register. */ 50 #define IIR_REG 2 /** Interrupt Ident Register (read). */ 51 #define FCR_REG 2 /** FIFO control register (write). */ 52 #define LCR_REG 3 /** Line Control register. */ 53 #define MCR_REG 4 /** Modem Control Register. */ 54 #define LSR_REG 5 /** Line Status Register. */ 54 55 55 #define LSR_DATA_READY 0x0156 #define LSR_DATA_READY 0x01 56 57 57 58 static irq_cmd_t ns16550_cmds[] = { 58 59 { 59 60 .cmd = CMD_PIO_READ_8, 60 .addr = (void *) 0, /* will be patched in run-time */61 .addr = (void *) 0, /* Will be patched in run-time */ 61 62 .dstarg = 1 62 63 }, … … 74 75 { 75 76 .cmd = CMD_PIO_READ_8, 76 .addr = (void *) 0, /* will be patched in run-time */77 .addr = (void *) 0, /* Will be patched in run-time */ 77 78 .dstarg = 2 78 79 }, … … 96 97 void *vaddr; 97 98 98 async_set_interrupt_received(ns16550_irq_handler); 99 100 ns16550_physical = sysinfo_value("kbd.address.physical"); 101 ns16550_kernel = sysinfo_value("kbd.address.kernel"); 99 if (sysinfo_get_value("kbd.address.physical", &ns16550_physical) != EOK) 100 return -1; 101 102 if (sysinfo_get_value("kbd.address.kernel", &ns16550_kernel) != EOK) 103 return -1; 104 105 sysarg_t inr; 106 if (sysinfo_get_value("kbd.inr", &inr) != EOK) 107 return -1; 108 102 109 ns16550_kbd.cmds[0].addr = (void *) (ns16550_kernel + LSR_REG); 103 110 ns16550_kbd.cmds[3].addr = (void *) (ns16550_kernel + RBR_REG); 104 ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 105 sysinfo_value("kbd.inr"), &ns16550_kbd); 111 112 async_set_interrupt_received(ns16550_irq_handler); 113 ipc_register_irq(inr, device_assign_devno(), inr, &ns16550_kbd); 114 106 115 return pio_enable((void *) ns16550_physical, 8, &vaddr); 107 }108 109 void ns16550_port_yield(void)110 {111 }112 113 void ns16550_port_reclaim(void)114 {115 116 } 116 117 -
uspace/srv/hid/kbd/port/pl050.c
rcf8cc36 rc47e1a8 45 45 #include <ddi.h> 46 46 #include <stdio.h> 47 #include <errno.h> 47 48 48 #define PL050_STAT_RXFULL (1 << 4) 49 #define PL050_STAT_RXFULL (1 << 4) 50 49 51 static irq_cmd_t pl050_cmds[] = { 50 52 { … … 66 68 { 67 69 .cmd = CMD_PIO_READ_8, 68 .addr = NULL, /* will be patched in run-time */70 .addr = NULL, /* Will be patched in run-time */ 69 71 .dstarg = 2 70 72 }, … … 83 85 int kbd_port_init(void) 84 86 { 85 86 pl050_kbd.cmds[0].addr = (void *) sysinfo_value("kbd.address.status"); 87 pl050_kbd.cmds[3].addr = (void *) sysinfo_value("kbd.address.data"); 88 87 sysarg_t addr; 88 if (sysinfo_get_value("kbd.address.status", &addr) != EOK) 89 return -1; 90 91 pl050_kbd.cmds[0].addr = (void *) addr; 92 93 if (sysinfo_get_value("kbd.address.data", &addr) != EOK) 94 return -1; 95 96 pl050_kbd.cmds[3].addr = (void *) addr; 97 98 sysarg_t inr; 99 if (sysinfo_get_value("kbd.inr", &inr) != EOK) 100 return -1; 101 89 102 async_set_interrupt_received(pl050_irq_handler); 90 91 ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 0, &pl050_kbd); 92 103 ipc_register_irq(inr, device_assign_devno(), 0, &pl050_kbd); 104 93 105 return 0; 94 106 } -
uspace/srv/hid/kbd/port/sgcn.c
rcf8cc36 rc47e1a8 30 30 * @ingroup kbd 31 31 * @{ 32 */ 32 */ 33 33 /** @file 34 * @brief SGCN (Serengeti Console) keyboard port driver.34 * @brief SGCN (Serengeti Console) keyboard port driver. 35 35 */ 36 36 … … 44 44 #include <thread.h> 45 45 #include <bool.h> 46 #include <errno.h> 46 47 47 #define POLL_INTERVAL 1000048 #define POLL_INTERVAL 10000 48 49 49 50 /** 50 51 * SGCN buffer header. It is placed at the very beginning of the SGCN 51 * buffer. 52 * buffer. 52 53 */ 53 54 typedef struct { … … 92 93 93 94 /* polling thread */ 94 static void *sgcn_thread_impl(void *arg);95 static void sgcn_thread_impl(void *arg); 95 96 96 97 static volatile bool polling_disabled = false; … … 102 103 int kbd_port_init(void) 103 104 { 104 sram_virt_addr = (uintptr_t) as_get_mappable_page(sysinfo_value("sram.area.size")); 105 if (physmem_map((void *) sysinfo_value("sram.address.physical"), 106 (void *) sram_virt_addr, sysinfo_value("sram.area.size") / PAGE_SIZE, 107 AS_AREA_READ | AS_AREA_WRITE) != 0) { 105 sysarg_t sram_paddr; 106 if (sysinfo_get_value("sram.address.physical", &sram_paddr) != EOK) 107 return -1; 108 109 sysarg_t sram_size; 110 if (sysinfo_get_value("sram.area.size", &sram_size) != EOK) 111 return -1; 112 113 if (sysinfo_get_value("sram.buffer.offset", &sram_buffer_offset) != EOK) 114 sram_buffer_offset = 0; 115 116 sram_virt_addr = (uintptr_t) as_get_mappable_page(sram_size); 117 118 if (physmem_map((void *) sram_paddr, (void *) sram_virt_addr, 119 sram_size / PAGE_SIZE, AS_AREA_READ | AS_AREA_WRITE) != 0) { 108 120 printf("SGCN: uspace driver could not map physical memory."); 109 121 return -1; 110 122 } 111 123 112 sram_buffer_offset = sysinfo_value("sram.buffer.offset");113 114 124 thread_id_t tid; 115 int rc; 116 117 rc = thread_create(sgcn_thread_impl, NULL, "kbd_poll", &tid); 118 if (rc != 0) { 125 int rc = thread_create(sgcn_thread_impl, NULL, "kbd_poll", &tid); 126 if (rc != 0) 119 127 return rc; 120 } 121 128 122 129 return 0; 123 130 } … … 167 174 * Thread to poll SGCN for keypresses. 168 175 */ 169 static void *sgcn_thread_impl(void *arg)176 static void sgcn_thread_impl(void *arg) 170 177 { 171 178 (void) arg; -
uspace/srv/hid/kbd/port/ski.c
rcf8cc36 rc47e1a8 49 49 #define POLL_INTERVAL 10000 50 50 51 static void *ski_thread_impl(void *arg);51 static void ski_thread_impl(void *arg); 52 52 static int32_t ski_getchar(void); 53 53 … … 84 84 85 85 /** Thread to poll Ski for keypresses. */ 86 static void *ski_thread_impl(void *arg)86 static void ski_thread_impl(void *arg) 87 87 { 88 88 int32_t c; -
uspace/srv/hid/kbd/port/sun.c
rcf8cc36 rc47e1a8 39 39 #include <sun.h> 40 40 #include <sysinfo.h> 41 #include <errno.h> 42 #include <bool.h> 41 43 42 44 /** Sun keyboard virtual port driver. … … 50 52 int kbd_port_init(void) 51 53 { 52 if (sysinfo_value("kbd.type.z8530")) { 54 sysarg_t z8530; 55 if (sysinfo_get_value("kbd.type.z8530", &z8530) != EOK) 56 z8530 = false; 57 58 sysarg_t ns16550; 59 if (sysinfo_get_value("kbd.type.ns16550", &ns16550) != EOK) 60 ns16550 = false; 61 62 if (z8530) { 53 63 if (z8530_port_init() == 0) 54 64 return 0; 55 65 } 56 66 57 if ( sysinfo_value("kbd.type.ns16550")) {67 if (ns16550) { 58 68 if (ns16550_port_init() == 0) 59 69 return 0; -
uspace/srv/hid/kbd/port/z8530.c
rcf8cc36 rc47e1a8 30 30 * @ingroup kbd 31 31 * @{ 32 */ 32 */ 33 33 /** @file 34 * @brief Z8530 keyboard port driver.34 * @brief Z8530 keyboard port driver. 35 35 */ 36 36 … … 44 44 #include <sys/types.h> 45 45 #include <ddi.h> 46 #include <errno.h> 46 47 47 #define CHAN_A_STATUS 448 #define CHAN_A_DATA 648 #define CHAN_A_STATUS 4 49 #define CHAN_A_DATA 6 49 50 50 #define RR0_RCA 151 #define RR0_RCA 1 51 52 52 53 static irq_cmd_t z8530_cmds[] = { 53 54 { 54 55 .cmd = CMD_PIO_READ_8, 55 .addr = (void *) 0, /* will be patched in run-time */56 .addr = (void *) 0, /* Will be patched in run-time */ 56 57 .dstarg = 1 57 58 }, … … 69 70 { 70 71 .cmd = CMD_PIO_READ_8, 71 .addr = (void *) 0, /* will be patched in run-time */72 .addr = (void *) 0, /* Will be patched in run-time */ 72 73 .dstarg = 2 73 74 }, … … 86 87 int z8530_port_init(void) 87 88 { 89 sysarg_t kaddr; 90 if (sysinfo_get_value("kbd.address.kernel", &kaddr) != EOK) 91 return -1; 92 93 sysarg_t inr; 94 if (sysinfo_get_value("kbd.inr", &inr) != EOK) 95 return -1; 96 97 z8530_cmds[0].addr = (void *) kaddr + CHAN_A_STATUS; 98 z8530_cmds[3].addr = (void *) kaddr + CHAN_A_DATA; 99 88 100 async_set_interrupt_received(z8530_irq_handler); 89 z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.kernel") + 90 CHAN_A_STATUS; 91 z8530_cmds[3].addr = (void *) sysinfo_value("kbd.address.kernel") + 92 CHAN_A_DATA; 93 ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 94 sysinfo_value("kbd.inr"), &z8530_kbd); 101 ipc_register_irq(inr, device_assign_devno(), inr, &z8530_kbd); 102 95 103 return 0; 96 }97 98 void z8530_port_yield(void)99 {100 }101 102 void z8530_port_reclaim(void)103 {104 104 } 105 105
Note:
See TracChangeset
for help on using the changeset viewer.
