Changeset 04803bf in mainline for uspace/srv/hid/kbd/port/ns16550.c


Ignore:
Timestamp:
2011-03-21T22:00:17Z (15 years ago)
Author:
Jiri Svoboda <jiri@…>
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.
Message:

Merge mainline changes (needs fixes).

File:
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/kbd/port/ns16550.c

    rb50b5af2 r04803bf  
    3030 * @ingroup  kbd
    3131 * @{
    32  */ 
     32 */
    3333/** @file
    34  * @brief       NS16550 port driver.
     34 * @brief NS16550 port driver.
    3535 */
    3636
    37 #include <ipc/ipc.h>
    38 #include <ipc/bus.h>
     37#include <ipc/irc.h>
    3938#include <async.h>
    4039#include <sysinfo.h>
     
    4342#include <sun.h>
    4443#include <ddi.h>
     44#include <errno.h>
    4545
    4646/* 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. */
    5454
    55 #define LSR_DATA_READY  0x01
     55#define LSR_DATA_READY  0x01
    5656
    5757static irq_cmd_t ns16550_cmds[] = {
    5858        {
    5959                .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 */
    6161                .dstarg = 1
    6262        },
     
    7474        {
    7575                .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 */
    7777                .dstarg = 2
    7878        },
     
    9696        void *vaddr;
    9797
    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       
    102108        ns16550_kbd.cmds[0].addr = (void *) (ns16550_kernel + LSR_REG);
    103109        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       
    106114        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 {
    115115}
    116116
     
    121121       
    122122        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));
    125125}
    126126
Note: See TracChangeset for help on using the changeset viewer.