refactor: decouple the executable file implementations with execve functionality.
[lunaix-os.git] / lunaix-os / includes / lunaix / peripheral / serial.h
1 #ifndef __LUNAIX_SERIAL_H
2 #define __LUNAIX_SERIAL_H
3
4 #include <lunaix/types.h>
5
6 #define SERIAL_COM1 0x3f8
7 #define SERIAL_COM2 0x2f8
8
9 #define COM1_IRQ 4
10 #define COM2_IRQ 3
11
12 #define BAUD_115200 1
13 #define BAUD_57600 2
14 #define BAUD_38400 3
15 #define BAUD_9600 12
16
17 #define COM_RRXTX(port) (port)
18 #define COM_RIE(port) (port + 1)
19 #define COM_RCFIFO(port) (port + 2)
20 #define COM_RCLINE(port) (port + 3)
21 #define COM_RCMODEM(port) (port + 4)
22 #define COM_RSLINE(port) (port + 5)
23 #define COM_RSMODEM(port) (port + 6)
24
25 void
26 serial_init();
27
28 char
29 serial_rx_byte(uintptr_t port);
30
31 void
32 serial_rx_buffer(uintptr_t port, char* data, size_t len);
33
34 void
35 serial_tx_byte(uintptr_t port, char data);
36
37 void
38 serial_tx_buffer(uintptr_t port, char* data, size_t len);
39
40 void
41 serial_clear_fifo(uintptr_t port);
42
43 void
44 serial_disable_irq(uintptr_t port);
45
46 void
47 serial_enable_irq(uintptr_t port);
48
49 #endif /* __LUNAIX_SERIAL_H */