Changeset d9fae235 in mainline for uspace/srv/hid
- Timestamp:
- 2010-04-17T01:28:38Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9d6bfa5
- Parents:
- 9256ad29
- Location:
- uspace/srv/hid
- Files:
-
- 15 edited
-
fb/ega.c (modified) (1 diff)
-
fb/fb.c (modified) (1 diff)
-
fb/main.c (modified) (7 diffs)
-
fb/msim.c (modified) (4 diffs)
-
fb/niagara.c (modified) (1 diff)
-
fb/sgcn.c (modified) (1 diff)
-
kbd/generic/kbd.c (modified) (3 diffs)
-
kbd/port/gxemul.c (modified) (2 diffs)
-
kbd/port/msim.c (modified) (3 diffs)
-
kbd/port/niagara.c (modified) (3 diffs)
-
kbd/port/ns16550.c (modified) (4 diffs)
-
kbd/port/pl050.c (modified) (1 diff)
-
kbd/port/sgcn.c (modified) (3 diffs)
-
kbd/port/sun.c (modified) (2 diffs)
-
kbd/port/z8530.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/fb/ega.c
r9256ad29 rd9fae235 415 415 void *ega_ph_addr; 416 416 size_t sz; 417 418 ega_ph_addr = (void *) sysinfo_value("fb.address.physical"); 419 scr_width = sysinfo_value("fb.width"); 420 scr_height = sysinfo_value("fb.height"); 421 422 if (sysinfo_value("fb.blinking")) { 417 418 sysarg_t paddr; 419 if (sysinfo_get_value("fb.address.physical", &paddr) != EOK) 420 return -1; 421 422 sysarg_t width; 423 if (sysinfo_get_value("fb.width", &width) != EOK) 424 return -1; 425 426 sysarg_t height; 427 if (sysinfo_get_value("fb.width", &height) != EOK) 428 return -1; 429 430 sysarg_t blinking; 431 if (sysinfo_get_value("fb.blinking", &blinking) != EOK) 432 blinking = false; 433 434 ega_ph_addr = (void *) paddr; 435 scr_width = width; 436 scr_height = height; 437 if (blinking) { 423 438 ega_normal_color &= 0x77; 424 439 ega_inverted_color &= 0x77; 425 440 } 426 441 427 442 style = NORMAL_COLOR; 428 443 429 444 iospace_enable(task_get_id(), (void *) EGA_IO_BASE, 2); 430 445 431 446 sz = scr_width * scr_height * 2; 432 447 scr_addr = as_get_mappable_page(sz); 433 448 434 449 if (physmem_map(ega_ph_addr, scr_addr, ALIGN_UP(sz, PAGE_SIZE) >> 435 450 PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE) != 0) -
uspace/srv/hid/fb/fb.c
r9256ad29 rd9fae235 1756 1756 async_set_client_connection(fb_client_connection); 1757 1757 1758 void *fb_ph_addr = (void *) sysinfo_value("fb.address.physical"); 1759 unsigned int fb_offset = sysinfo_value("fb.offset"); 1760 unsigned int fb_width = sysinfo_value("fb.width"); 1761 unsigned int fb_height = sysinfo_value("fb.height"); 1762 unsigned int fb_scanline = sysinfo_value("fb.scanline"); 1763 unsigned int fb_visual = sysinfo_value("fb.visual"); 1764 1765 unsigned int fbsize = fb_scanline * fb_height; 1758 sysarg_t fb_ph_addr; 1759 if (sysinfo_get_value("fb.address.physical", &fb_ph_addr) != EOK) 1760 return -1; 1761 1762 sysarg_t fb_offset; 1763 if (sysinfo_get_value("fb.offset", &fb_offset) != EOK) 1764 fb_offset = 0; 1765 1766 sysarg_t fb_width; 1767 if (sysinfo_get_value("fb.width", &fb_width) != EOK) 1768 return -1; 1769 1770 sysarg_t fb_height; 1771 if (sysinfo_get_value("fb.height", &fb_height) != EOK) 1772 return -1; 1773 1774 sysarg_t fb_scanline; 1775 if (sysinfo_get_value("fb.scanline", &fb_scanline) != EOK) 1776 return -1; 1777 1778 sysarg_t fb_visual; 1779 if (sysinfo_get_value("fb.visual", &fb_visual) != EOK) 1780 return -1; 1781 1782 sysarg_t fbsize = fb_scanline * fb_height; 1766 1783 void *fb_addr = as_get_mappable_page(fbsize); 1767 1768 if (physmem_map( fb_ph_addr + fb_offset, fb_addr,1784 1785 if (physmem_map((void *) fb_ph_addr + fb_offset, fb_addr, 1769 1786 ALIGN_UP(fbsize, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE) != 0) 1770 1787 return -1; 1771 1788 1772 1789 if (screen_init(fb_addr, fb_width, fb_height, fb_scanline, fb_visual)) 1773 1790 return 0; 1774 1791 1775 1792 return -1; 1776 1793 } -
uspace/srv/hid/fb/main.c
r9256ad29 rd9fae235 60 60 int main(int argc, char *argv[]) 61 61 { 62 printf( NAME ": HelenOS Framebuffer service\n");62 printf("%s: HelenOS Framebuffer service\n", NAME); 63 63 64 ipcarg_t phonead;65 64 bool initialized = false; 65 sysarg_t fb_present; 66 sysarg_t fb_kind; 67 68 if (sysinfo_get_value("fb", &fb_present) != EOK) 69 fb_present = false; 70 71 if (sysinfo_get_value("fb.kind", &fb_kind) != EOK) { 72 printf("%s: Unable to detect framebuffer configuration\n", NAME); 73 return -1; 74 } 66 75 67 76 #ifdef FB_ENABLED 68 if ( sysinfo_value("fb.kind") == 1) {77 if ((!initialized) && (fb_kind == 1)) { 69 78 if (fb_init() == 0) 70 79 initialized = true; … … 72 81 #endif 73 82 #ifdef EGA_ENABLED 74 if ((!initialized) && ( sysinfo_value("fb.kind")== 2)) {83 if ((!initialized) && (fb_kind == 2)) { 75 84 if (ega_init() == 0) 76 85 initialized = true; … … 78 87 #endif 79 88 #ifdef MSIM_ENABLED 80 if ((!initialized) && ( sysinfo_value("fb.kind")== 3)) {89 if ((!initialized) && (fb_kind == 3)) { 81 90 if (msim_init() == 0) 82 91 initialized = true; … … 84 93 #endif 85 94 #ifdef SGCN_ENABLED 86 if ((!initialized) && ( sysinfo_value("fb.kind")== 4)) {95 if ((!initialized) && (fb_kind == 4)) { 87 96 if (sgcn_init() == 0) 88 97 initialized = true; … … 90 99 #endif 91 100 #ifdef NIAGARA_ENABLED 92 if ((!initialized) && ( sysinfo_value("fb.kind")== 5)) {101 if ((!initialized) && (fb_kind == 5)) { 93 102 if (niagara_init() == 0) 94 103 initialized = true; … … 96 105 #endif 97 106 #ifdef SKI_ENABLED 98 if ((!initialized) && ( sysinfo_value("fb") != true)) {107 if ((!initialized) && (!fb_present)) { 99 108 if (ski_init() == 0) 100 109 initialized = true; … … 105 114 return -1; 106 115 116 ipcarg_t phonead; 107 117 if (ipc_connect_to_me(PHONE_NS, SERVICE_VIDEO, 0, 0, &phonead) != 0) 108 118 return -1; 109 119 110 printf( NAME ": Accepting connections\n");120 printf("%s: Accepting connections\n", NAME); 111 121 async_manager(); 112 122 -
uspace/srv/hid/fb/msim.c
r9256ad29 rd9fae235 29 29 30 30 /** @defgroup msimfb MSIM text console 31 * @brief HelenOS MSIM text console.31 * @brief HelenOS MSIM text console. 32 32 * @ingroup fbs 33 33 * @{ 34 */ 34 */ 35 35 /** @file 36 36 */ … … 41 41 #include <as.h> 42 42 #include <ddi.h> 43 #include <errno.h> 43 44 44 45 #include "serial_console.h" … … 57 58 int msim_init(void) 58 59 { 59 void *phys_addr = (void *) sysinfo_value("fb.address.physical"); 60 sysarg_t phys_addr; 61 if (sysinfo_get_value("fb.address.physical", &phys_addr) != EOK) 62 return -1; 63 60 64 virt_addr = (char *) as_get_mappable_page(1); 61 65 62 if (physmem_map(phys_addr, virt_addr, 1, AS_AREA_READ | AS_AREA_WRITE) != 0) 66 if (physmem_map((void *) phys_addr, virt_addr, 1, 67 AS_AREA_READ | AS_AREA_WRITE) != 0) 63 68 return -1; 64 69 … … 69 74 } 70 75 71 /** 72 * @} 76 /** @} 73 77 */ -
uspace/srv/hid/fb/niagara.c
r9256ad29 rd9fae235 91 91 int niagara_init(void) 92 92 { 93 sysarg_t paddr; 94 if (sysinfo_get_value("niagara.outbuf.address", &paddr) != EOK) 95 return -1; 96 93 97 output_buffer_addr = (uintptr_t) as_get_mappable_page(PAGE_SIZE); 94 int result = physmem_map( 95 (void *) sysinfo_value("niagara.outbuf.address"), 96 (void *) output_buffer_addr, 97 1, AS_AREA_READ | AS_AREA_WRITE); 98 int result = physmem_map((void *) paddr, 99 (void *) output_buffer_addr, 1, 100 AS_AREA_READ | AS_AREA_WRITE); 98 101 99 102 if (result != 0) { -
uspace/srv/hid/fb/sgcn.c
r9256ad29 rd9fae235 122 122 int sgcn_init(void) 123 123 { 124 sram_virt_addr = (uintptr_t) as_get_mappable_page(sysinfo_value("sram.area.size")); 124 sysarg_t sram_paddr; 125 if (sysinfo_get_value("sram.address.physical", &sram_paddr) != EOK) 126 return -1; 125 127 126 if (physmem_map((void *) sysinfo_value("sram.address.physical"), 127 (void *) sram_virt_addr, sysinfo_value("sram.area.size") / PAGE_SIZE, 128 AS_AREA_READ | AS_AREA_WRITE) != 0) 128 sysarg_t sram_size; 129 if (sysinfo_get_value("sram.area.size", &sram_size) != EOK) 130 return -1; 131 132 if (sysinfo_get_value("sram.buffer.offset", &sram_buffer_offset) != EOK) 133 sram_buffer_offset = 0; 134 135 sram_virt_addr = (uintptr_t) as_get_mappable_page(sram_size); 136 137 if (physmem_map((void *) sram_paddr, (void *) sram_virt_addr, 138 sram_size / PAGE_SIZE, AS_AREA_READ | AS_AREA_WRITE) != 0) 129 139 return -1; 130 140 131 141 serial_console_init(sgcn_putc, WIDTH, HEIGHT); 132 133 sram_buffer_offset = sysinfo_value("sram.buffer.offset");134 142 135 143 async_set_client_connection(serial_client_connection); -
uspace/srv/hid/kbd/generic/kbd.c
r9256ad29 rd9fae235 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/gxemul.c
r9256ad29 rd9fae235 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
r9256ad29 rd9fae235 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 = (void *) 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/niagara.c
r9256ad29 rd9fae235 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 /** … … 57 58 * kernel/arch/sparc64/src/drivers/niagara.c. 58 59 */ 59 #define INPUT_BUFFER_SIZE ((PAGE_SIZE) - 2 * 8) 60 #define INPUT_BUFFER_SIZE ((PAGE_SIZE) - 2 * 8) 61 60 62 typedef volatile struct { 61 63 uint64_t write_ptr; … … 79 81 int kbd_port_init(void) 80 82 { 83 sysarg_t paddr; 84 if (sysinfo_get_value("niagara.inbuf.address", &paddr) != EOK) 85 return -1; 86 81 87 input_buffer_addr = (uintptr_t) as_get_mappable_page(PAGE_SIZE); 82 int result = physmem_map( 83 (void *) sysinfo_value("niagara.inbuf.address"), 84 (void *) input_buffer_addr, 85 1, AS_AREA_READ | AS_AREA_WRITE); 86 87 if (result != 0) { 88 int rc = physmem_map((void *) paddr, (void *) input_buffer_addr, 89 1, AS_AREA_READ | AS_AREA_WRITE); 90 91 if (rc != 0) { 88 92 printf("Niagara: uspace driver couldn't map physical memory: %d\n", 89 result); 90 } 91 92 input_buffer = (input_buffer_t) input_buffer_addr; 93 94 thread_id_t tid; 95 int rc; 96 97 rc = thread_create(niagara_thread_impl, NULL, "kbd_poll", &tid); 98 if (rc != 0) { 93 rc); 99 94 return rc; 100 95 } 96 97 input_buffer = (input_buffer_t) input_buffer_addr; 98 99 thread_id_t tid; 100 rc = thread_create(niagara_thread_impl, NULL, "kbd_poll", &tid); 101 if (rc != 0) 102 return rc; 103 101 104 return 0; 102 105 } -
uspace/srv/hid/kbd/port/ns16550.c
r9256ad29 rd9fae235 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 116 } -
uspace/srv/hid/kbd/port/pl050.c
r9256ad29 rd9fae235 83 83 int kbd_port_init(void) 84 84 { 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 85 if (sysinfo_get_value("kbd.address.status", &pl050_kbd.cmds[0].addr) != EOK) 86 return -1; 87 88 if (sysinfo_get_value("kbd.address.data", &pl050_kbd.cmds[3].addr) != EOK) 89 return -1; 90 91 sysarg_t inr; 92 if (sysinfo_get_value("kbd.inr", &inr) != EOK) 93 return -1; 94 89 95 async_set_interrupt_received(pl050_irq_handler); 90 91 ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 0, &pl050_kbd); 92 96 ipc_register_irq(inr, device_assign_devno(), 0, &pl050_kbd); 97 93 98 return 0; 94 99 } -
uspace/srv/hid/kbd/port/sgcn.c
r9256ad29 rd9fae235 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 { … … 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 } -
uspace/srv/hid/kbd/port/sun.c
r9256ad29 rd9fae235 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
r9256ad29 rd9fae235 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 104 }
Note:
See TracChangeset
for help on using the changeset viewer.
