Ignore:
File:
1 edited

Legend:

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

    r6ecf5b8 r448e093  
    3838#define KERN_NS16550_H_
    3939
     40#include <ddi/ddi.h>
    4041#include <ddi/irq.h>
    4142#include <typedefs.h>
     
    4950
    5051/** NS16550 registers. */
    51 typedef struct {
    52         ioport8_t rbr;      /**< Receiver Buffer Register. */
    53         ioport8_t ier;      /**< Interrupt Enable Register. */
    54         union {
    55                 ioport8_t iir;  /**< Interrupt Ident Register (read). */
    56                 ioport8_t fcr;  /**< FIFO control register (write). */
    57         } __attribute__ ((packed));
    58         ioport8_t lcr;      /**< Line Control register. */
    59         ioport8_t mcr;      /**< Modem Control Register. */
    60         ioport8_t lsr;      /**< Line Status Register. */
    61 } __attribute__ ((packed)) ns16550_t;
     52typedef enum {
     53        NS16550_REG_RBR = 0,  /**< Receiver Buffer Register (read). */
     54        NS16550_REG_THR = 0,  /**< Transmitter Holder Register (write). */
     55        NS16550_REG_IER = 1,  /**< Interrupt Enable Register. */
     56        NS16550_REG_IIR = 2,  /**< Interrupt Ident Register (read). */
     57        NS16550_REG_FCR = 2,  /**< FIFO control register (write). */
     58        NS16550_REG_LCR = 3,  /**< Line Control register. */
     59        NS16550_REG_MCR = 4,  /**< Modem Control Register. */
     60        NS16550_REG_LSR = 5,  /**< Line Status Register. */
     61} ns16550_reg_t;
    6262
    6363/** Structure representing the ns16550 device. */
    6464typedef struct {
    6565        irq_t irq;
    66         ns16550_t *ns16550;
    67         indev_t *kbrdin;
     66        volatile ioport8_t *ns16550;
     67        indev_t *input;
     68        outdev_t *output;
     69        parea_t parea;
     70        int reg_shift;
    6871} ns16550_instance_t;
    6972
    70 extern ns16550_instance_t *ns16550_init(ns16550_t *, inr_t, cir_t, void *);
     73extern ns16550_instance_t *ns16550_init(ioport8_t *, unsigned, inr_t, cir_t,
     74    void *, outdev_t **);
    7175extern void ns16550_wire(ns16550_instance_t *, indev_t *);
    7276
Note: See TracChangeset for help on using the changeset viewer.