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


Ignore:
Timestamp:
2008-11-11T07:50:04Z (16 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
59e4864
Parents:
b24786a
Message:

Support for serial port console on IA64 as a compensation for keyboard - based on SPARC ns16550 driver

File:
1 edited

Legend:

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

    rb24786a ra2a5529  
    4949extern void ns16550_irq_handler(irq_t *irq, void *arg, ...);
    5050
     51#include <arch/types.h>
     52#ifndef ia64
     53#include <arch/drivers/kbd.h>
     54#endif
     55/* NS16550 registers */
     56#define RBR_REG         0       /** Receiver Buffer Register. */
     57#define IER_REG         1       /** Interrupt Enable Register. */
     58#define IIR_REG         2       /** Interrupt Ident Register (read). */
     59#define FCR_REG         2       /** FIFO control register (write). */
     60#define LCR_REG         3       /** Line Control register. */
     61#define LSR_REG         5       /** Line Status Register. */
     62
     63#define IER_ERBFI       0x01    /** Enable Receive Buffer Full Interrupt. */
     64
     65#define LCR_DLAB        0x80    /** Divisor Latch Access bit. */
     66
     67/** Structure representing the ns16550 device. */
     68typedef struct {
     69        devno_t devno;
     70        volatile ioport_t io_port;      /** Memory mapped registers of the ns16550. */
     71} ns16550_t;
     72
     73static inline uint8_t ns16550_rbr_read(ns16550_t *dev)
     74{
     75        return inb(dev->io_port+RBR_REG);
     76}
     77static inline void ns16550_rbr_write(ns16550_t *dev, uint8_t v)
     78{
     79        outb(dev->io_port+RBR_REG,v);
     80}
     81
     82static inline uint8_t ns16550_ier_read(ns16550_t *dev)
     83{
     84        return inb(dev->io_port+IER_REG);
     85}
     86
     87static inline void ns16550_ier_write(ns16550_t *dev, uint8_t v)
     88{
     89        outb(dev->io_port+IER_REG,v);
     90}
     91
     92static inline uint8_t ns16550_iir_read(ns16550_t *dev)
     93{
     94        return inb(dev->io_port+IIR_REG);
     95}
     96
     97static inline void ns16550_fcr_write(ns16550_t *dev, uint8_t v)
     98{
     99        outb(dev->io_port+FCR_REG,v);
     100}
     101
     102static inline uint8_t ns16550_lcr_read(ns16550_t *dev)
     103{
     104        return inb(dev->io_port+LCR_REG);
     105}
     106
     107static inline void ns16550_lcr_write(ns16550_t *dev, uint8_t v)
     108{
     109        outb(dev->io_port+LCR_REG,v);
     110}
     111
     112static inline uint8_t ns16550_lsr_read(ns16550_t *dev)
     113{
     114        return inb(dev->io_port+LSR_REG);
     115}
     116
     117
     118
    51119#endif
    52120
Note: See TracChangeset for help on using the changeset viewer.