git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rework external irq system, introduce hierarchical irq
[lunaix-os.git]
/
lunaix-os
/
hal
/
char
/
uart
/
16x50.h
diff --git
a/lunaix-os/hal/char/uart/16x50.h
b/lunaix-os/hal/char/uart/16x50.h
index addedfaa828de493b192aa2e507e742a89ea722c..4a2c8a5b61e9b6012b380ffbd68db82fdfbf076d 100644
(file)
--- a/
lunaix-os/hal/char/uart/16x50.h
+++ b/
lunaix-os/hal/char/uart/16x50.h
@@
-2,6
+2,7
@@
#define __LUNAIX_16550_H
#include <hal/serial.h>
#define __LUNAIX_16550_H
#include <hal/serial.h>
+#include <hal/irq.h>
#include <lunaix/types.h>
#define UART_rRxTX 0
#include <lunaix/types.h>
#define UART_rRxTX 0
@@
-69,7
+70,8
@@
struct uart16550
struct llist_header local_ports;
struct serial_dev* sdev;
ptr_t base_addr;
struct llist_header local_ports;
struct serial_dev* sdev;
ptr_t base_addr;
- int iv;
+ unsigned int base_clk;
+ irq_t irq;
struct
{
struct
{
@@
-118,12
+120,12
@@
void
uart_free(struct uart16550*);
static inline int
uart_free(struct uart16550*);
static inline int
-uart_baud_divisor(struct uart16550* uart, int div)
+uart_baud_divisor(struct uart16550* uart,
unsigned
int div)
{
u32_t rlc = uart->read_reg(uart, UART_rLC);
uart->write_reg(uart, UART_rLC, UART_rLC_DLAB | rlc);
{
u32_t rlc = uart->read_reg(uart, UART_rLC);
uart->write_reg(uart, UART_rLC, UART_rLC_DLAB | rlc);
- u8_t ls = (div & 0xff), ms = (div & 0xff00) >> 8;
+ u8_t ls = (div & 0x
00
ff), ms = (div & 0xff00) >> 8;
uart->write_reg(uart, UART_rLS, ls);
uart->write_reg(uart, UART_rMS, ms);
uart->write_reg(uart, UART_rLS, ls);
uart->write_reg(uart, UART_rMS, ms);
@@
-226,10
+228,10
@@
int
uart_general_tx(struct serial_dev* sdev, u8_t* data, size_t len);
void
uart_general_tx(struct serial_dev* sdev, u8_t* data, size_t len);
void
-uart_handle_irq_overlap(i
nt iv
, struct llist_header* ports);
+uart_handle_irq_overlap(i
rq_t irq
, struct llist_header* ports);
void
void
-uart_handle_irq(i
nt iv
, struct uart16550 *uart);
+uart_handle_irq(i
rq_t irq
, struct uart16550 *uart);
static inline struct serial_dev*
uart_create_serial(struct uart16550* uart, struct devclass* class,
static inline struct serial_dev*
uart_create_serial(struct uart16550* uart, struct devclass* class,