Changeset 3c79afe in mainline for kernel/genarch/include/drivers/ns16550/ns16550.h
- Timestamp:
- 2009-03-12T17:54:24Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3a1c048
- Parents:
- a0e1b48
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/include/drivers/ns16550/ns16550.h
ra0e1b48 r3c79afe 27 27 */ 28 28 29 /** @addtogroup genarch 29 /** @addtogroup genarch 30 30 * @{ 31 31 */ 32 32 /** 33 33 * @file 34 * @brief 34 * @brief Headers for NS 16550 serial controller. 35 35 */ 36 36 … … 42 42 #include <console/chardev.h> 43 43 44 #define IER_ERBFI 0x01/** Enable Receive Buffer Full Interrupt. */44 #define IER_ERBFI 0x01 /** Enable Receive Buffer Full Interrupt. */ 45 45 46 #define LCR_DLAB 0x80/** Divisor Latch Access bit. */46 #define LCR_DLAB 0x80 /** Divisor Latch Access bit. */ 47 47 48 #define MCR_OUT2 0x08/** OUT2. */48 #define MCR_OUT2 0x08 /** OUT2. */ 49 49 50 50 /** NS16550 registers. */ 51 struct ns16550{52 ioport8_t rbr; 53 ioport8_t ier; 51 typedef struct { 52 ioport8_t rbr; /**< Receiver Buffer Register. */ 53 ioport8_t ier; /**< Interrupt Enable Register. */ 54 54 union { 55 ioport8_t iir; 56 ioport8_t fcr; 55 ioport8_t iir; /**< Interrupt Ident Register (read). */ 56 ioport8_t fcr; /**< FIFO control register (write). */ 57 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)); 62 typedef struct ns16550 ns16550_t; 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; 63 62 64 63 /** Structure representing the ns16550 device. */ 65 typedef struct ns16550_instance{64 typedef struct { 66 65 devno_t devno; 67 66 ns16550_t *ns16550; 68 67 irq_t irq; 69 chardev_t *devout;68 indev_t kbrdin; 70 69 } ns16550_instance_t; 71 70 72 extern bool ns16550_init(ns16550_t *, devno_t, inr_t, cir_t, void *, 73 chardev_t *); 74 extern irq_ownership_t ns16550_claim(irq_t *); 75 extern void ns16550_irq_handler(irq_t *); 71 extern indev_t *ns16550_init(ns16550_t *, devno_t, inr_t, cir_t, void *) 76 72 77 73 #endif
Note:
See TracChangeset
for help on using the changeset viewer.