Changeset 04803bf in mainline for uspace/srv/hid/kbd/port/ns16550.c
- Timestamp:
- 2011-03-21T22:00:17Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 143932e3
- Parents:
- b50b5af2 (diff), 7308e84 (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. - File:
-
- 1 moved
-
uspace/srv/hid/kbd/port/ns16550.c (moved) (moved from uspace/srv/kbd/port/ns16550.c ) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/kbd/port/ns16550.c
rb50b5af2 r04803bf 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 37 #include <ipc/ipc.h> 38 #include <ipc/bus.h> 37 #include <ipc/irc.h> 39 38 #include <async.h> 40 39 #include <sysinfo.h> … … 43 42 #include <sun.h> 44 43 #include <ddi.h> 44 #include <errno.h> 45 45 46 46 /* 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. */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. */ 54 54 55 #define LSR_DATA_READY 0x0155 #define LSR_DATA_READY 0x01 56 56 57 57 static irq_cmd_t ns16550_cmds[] = { 58 58 { 59 59 .cmd = CMD_PIO_READ_8, 60 .addr = (void *) 0, /* will be patched in run-time */60 .addr = (void *) 0, /* Will be patched in run-time */ 61 61 .dstarg = 1 62 62 }, … … 74 74 { 75 75 .cmd = CMD_PIO_READ_8, 76 .addr = (void *) 0, /* will be patched in run-time */76 .addr = (void *) 0, /* Will be patched in run-time */ 77 77 .dstarg = 2 78 78 }, … … 96 96 void *vaddr; 97 97 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"); 98 if (sysinfo_get_value("kbd.address.physical", &ns16550_physical) != EOK) 99 return -1; 100 101 if (sysinfo_get_value("kbd.address.kernel", &ns16550_kernel) != EOK) 102 return -1; 103 104 sysarg_t inr; 105 if (sysinfo_get_value("kbd.inr", &inr) != EOK) 106 return -1; 107 102 108 ns16550_kbd.cmds[0].addr = (void *) (ns16550_kernel + LSR_REG); 103 109 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); 110 111 async_set_interrupt_received(ns16550_irq_handler); 112 register_irq(inr, device_assign_devno(), inr, &ns16550_kbd); 113 106 114 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 115 } 116 116 … … 121 121 122 122 if (cir_service) 123 async_msg_1(cir_phone, BUS_CLEAR_INTERRUPT,124 IPC_GET_ METHOD(*call));123 async_msg_1(cir_phone, IRC_CLEAR_INTERRUPT, 124 IPC_GET_IMETHOD(*call)); 125 125 } 126 126
Note:
See TracChangeset
for help on using the changeset viewer.
