mirror of https://github.com/garritfra/ditto-os
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.8 KiB
62 lines
1.8 KiB
5 years ago
|
#ifndef INCLUDE_SERIAL
|
||
|
#define INCLUDE_SERIAL
|
||
|
|
||
|
#include "io.h"
|
||
|
|
||
|
/* The I/O ports */
|
||
|
|
||
|
/* All the I/O ports are calculated relative to the data port. This is because
|
||
|
* all serial ports (COM1, COM2, COM3, COM4) have their ports in the same
|
||
|
* order, but they start at different values.
|
||
|
*/
|
||
|
|
||
|
#define SERIAL_COM1_BASE 0x3F8 /* COM1 base port */
|
||
|
|
||
|
#define SERIAL_DATA_PORT(base) (base)
|
||
|
#define SERIAL_FIFO_COMMAND_PORT(base) (base + 2)
|
||
|
#define SERIAL_LINE_COMMAND_PORT(base) (base + 3)
|
||
|
#define SERIAL_MODEM_COMMAND_PORT(base) (base + 4)
|
||
|
#define SERIAL_LINE_STATUS_PORT(base) (base + 5)
|
||
|
|
||
|
/* The I/O port commands */
|
||
|
|
||
|
/* SERIAL_LINE_ENABLE_DLAB:
|
||
|
* Tells the serial port to expect first the highest 8 bits on the data port,
|
||
|
* then the lowest 8 bits will follow
|
||
|
*/
|
||
|
#define SERIAL_LINE_ENABLE_DLAB 0x80
|
||
|
|
||
|
/** serial_configure_baud_rate:
|
||
|
* Sets the speed of the data being sent. The default speed of a serial
|
||
|
* port is 115200 bits/s. The argument is a divisor of that number, hence
|
||
|
* the resulting speed becomes (115200 / divisor) bits/s.
|
||
|
*
|
||
|
* @param com The COM port to configure
|
||
|
* @param divisor The divisor
|
||
|
*/
|
||
|
void serial_configure_baud_rate(unsigned short com, unsigned short divisor);
|
||
|
|
||
|
|
||
|
/** serial_configure_line:
|
||
|
* Configures the line of the given serial port. The port is set to have a
|
||
|
* data length of 8 bits, no parity bits, one stop bit and break control
|
||
|
* disabled.
|
||
|
*
|
||
|
* @param com The serial port to configure
|
||
|
*/
|
||
|
void serial_configure_line(unsigned short com);
|
||
|
|
||
|
|
||
|
/** serial_is_transmit_fifo_empty:
|
||
|
* Checks whether the transmit FIFO queue is empty or not for the given COM
|
||
|
* port.
|
||
|
*
|
||
|
* @param com The COM port
|
||
|
* @return 0 if the transmit FIFO queue is not empty
|
||
|
* 1 if the transmit FIFO queue is empty
|
||
|
*/
|
||
|
int serial_is_transmit_fifo_empty(unsigned int com);
|
||
|
|
||
|
|
||
|
|
||
|
#endif
|