Changes in kernel/genarch/include/genarch/drivers/ns16550/ns16550.h [6ecf5b8:448e093] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/include/genarch/drivers/ns16550/ns16550.h
r6ecf5b8 r448e093 38 38 #define KERN_NS16550_H_ 39 39 40 #include <ddi/ddi.h> 40 41 #include <ddi/irq.h> 41 42 #include <typedefs.h> … … 49 50 50 51 /** 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; 52 typedef 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; 62 62 63 63 /** Structure representing the ns16550 device. */ 64 64 typedef struct { 65 65 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; 68 71 } ns16550_instance_t; 69 72 70 extern ns16550_instance_t *ns16550_init(ns16550_t *, inr_t, cir_t, void *); 73 extern ns16550_instance_t *ns16550_init(ioport8_t *, unsigned, inr_t, cir_t, 74 void *, outdev_t **); 71 75 extern void ns16550_wire(ns16550_instance_t *, indev_t *); 72 76
Note:
See TracChangeset
for help on using the changeset viewer.