Rev 4055 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4055 | Rev 4156 | ||
---|---|---|---|
Line 46... | Line 46... | ||
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 | /** NS16550 registers. */ |
50 | /** NS16550 registers. */ |
51 | struct ns16550 { |
51 | typedef struct { |
52 | ioport8_t rbr; /**< Receiver Buffer Register. */ |
52 | ioport8_t rbr; /**< Receiver Buffer Register. */ |
53 | ioport8_t ier; /**< Interrupt Enable Register. */ |
53 | ioport8_t ier; /**< Interrupt Enable Register. */ |
54 | union { |
54 | union { |
55 | ioport8_t iir; /**< Interrupt Ident Register (read). */ |
55 | ioport8_t iir; /**< Interrupt Ident Register (read). */ |
56 | ioport8_t fcr; /**< FIFO control register (write). */ |
56 | ioport8_t fcr; /**< FIFO control register (write). */ |
57 | } __attribute__ ((packed)); |
57 | } __attribute__ ((packed)); |
58 | ioport8_t lcr; /**< Line Control register. */ |
58 | ioport8_t lcr; /**< Line Control register. */ |
59 | ioport8_t mcr; /**< Modem Control Register. */ |
59 | ioport8_t mcr; /**< Modem Control Register. */ |
60 | ioport8_t lsr; /**< Line Status Register. */ |
60 | ioport8_t lsr; /**< Line Status Register. */ |
61 | } __attribute__ ((packed)); |
61 | } __attribute__ ((packed)) ns16550_t; |
62 | typedef struct ns16550 ns16550_t; |
- | |
63 | 62 | ||
64 | /** Structure representing the ns16550 device. */ |
63 | /** Structure representing the ns16550 device. */ |
65 | typedef struct ns16550_instance { |
64 | typedef struct { |
66 | devno_t devno; |
- | |
67 | ns16550_t *ns16550; |
65 | ns16550_t *ns16550; |
68 | irq_t irq; |
66 | irq_t irq; |
69 | chardev_t *devout; |
67 | indev_t kbrdin; |
70 | } ns16550_instance_t; |
68 | } ns16550_instance_t; |
71 | 69 | ||
72 | extern bool ns16550_init(ns16550_t *, devno_t, inr_t, cir_t, void *, |
70 | extern indev_t *ns16550_init(ns16550_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 *); |
- | |
76 | 71 | ||
77 | #endif |
72 | #endif |
78 | 73 | ||
79 | /** @} |
74 | /** @} |
80 | */ |
75 | */ |