Changeset 3e53ab7 in mainline for kernel/genarch/include/kbd/ns16550.h


Ignore:
Timestamp:
2008-11-28T19:33:10Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7905360
Parents:
4c4ddbe9
Message:

Initial support for interrupt driven driver for ns16550.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/include/kbd/ns16550.h

    r4c4ddbe9 r3e53ab7  
    5959#define FCR_REG         2       /** FIFO control register (write). */
    6060#define LCR_REG         3       /** Line Control register. */
     61#define MCR_REG         4       /** Modem Control Register. */
    6162#define LSR_REG         5       /** Line Status Register. */
    6263
     
    6566#define LCR_DLAB        0x80    /** Divisor Latch Access bit. */
    6667
     68#define MCR_OUT2        0x08    /** OUT2. */
     69
    6770/** Structure representing the ns16550 device. */
    6871typedef struct {
    6972        devno_t devno;
    70         volatile ioport_t io_port;      /** Memory mapped registers of the ns16550. */
     73        /** Memory mapped registers of the ns16550. */
     74        volatile ioport_t io_port;
    7175} ns16550_t;
    7276
    7377static inline uint8_t ns16550_rbr_read(ns16550_t *dev)
    7478{
    75         return inb(dev->io_port+RBR_REG);
     79        return inb(dev->io_port + RBR_REG);
    7680}
    7781static inline void ns16550_rbr_write(ns16550_t *dev, uint8_t v)
    7882{
    79         outb(dev->io_port+RBR_REG,v);
     83        outb(dev->io_port + RBR_REG, v);
    8084}
    8185
    8286static inline uint8_t ns16550_ier_read(ns16550_t *dev)
    8387{
    84         return inb(dev->io_port+IER_REG);
     88        return inb(dev->io_port + IER_REG);
    8589}
    8690
    8791static inline void ns16550_ier_write(ns16550_t *dev, uint8_t v)
    8892{
    89         outb(dev->io_port+IER_REG,v);
     93        outb(dev->io_port + IER_REG, v);
    9094}
    9195
    9296static inline uint8_t ns16550_iir_read(ns16550_t *dev)
    9397{
    94         return inb(dev->io_port+IIR_REG);
     98        return inb(dev->io_port + IIR_REG);
    9599}
    96100
    97101static inline void ns16550_fcr_write(ns16550_t *dev, uint8_t v)
    98102{
    99         outb(dev->io_port+FCR_REG,v);
     103        outb(dev->io_port + FCR_REG, v);
    100104}
    101105
    102106static inline uint8_t ns16550_lcr_read(ns16550_t *dev)
    103107{
    104         return inb(dev->io_port+LCR_REG);
     108        return inb(dev->io_port + LCR_REG);
    105109}
    106110
    107111static inline void ns16550_lcr_write(ns16550_t *dev, uint8_t v)
    108112{
    109         outb(dev->io_port+LCR_REG,v);
     113        outb(dev->io_port + LCR_REG, v);
    110114}
    111115
    112116static inline uint8_t ns16550_lsr_read(ns16550_t *dev)
    113117{
    114         return inb(dev->io_port+LSR_REG);
     118        return inb(dev->io_port + LSR_REG);
    115119}
    116120
     121static inline uint8_t ns16550_mcr_read(ns16550_t *dev)
     122{
     123        return inb(dev->io_port + MCR_REG);
     124}
    117125
     126static inline void ns16550_mcr_write(ns16550_t *dev, uint8_t v)
     127{
     128        outb(dev->io_port + MCR_REG, v);
     129}
    118130
    119131#endif
Note: See TracChangeset for help on using the changeset viewer.