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
#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 |