mirror of
https://github.com/drasko/codezero.git
synced 2026-01-15 20:33:16 +01:00
54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
#include <arch/pl011_uart.h>
|
|
|
|
/* TODO: May need to remove this */
|
|
struct pl011_uart uart = {
|
|
.base = PL011_USR_BASE,
|
|
};
|
|
|
|
/*
|
|
* Initialises the uart class data structures, and the device.
|
|
* Terminal-like operation is assumed for default settings.
|
|
*/
|
|
int pl011_initialise(struct pl011_uart * uart)
|
|
{
|
|
uart->frame_errors = 0;
|
|
uart->parity_errors = 0;
|
|
uart->break_errors = 0;
|
|
uart->overrun_errors = 0;
|
|
|
|
/* Initialise data register for 8 bit data read/writes */
|
|
pl011_set_word_width(uart->base, 8);
|
|
|
|
/*
|
|
* Fifos are disabled because by default it is assumed the port
|
|
* will be used as a user terminal, and in that case the typed
|
|
* characters will only show up when fifos are flushed, rather than
|
|
* when each character is typed. We avoid this by not using fifos.
|
|
*/
|
|
pl011_disable_fifos(uart->base);
|
|
|
|
/* Set default baud rate of 38400 */
|
|
pl011_set_baudrate(uart->base, 38400, 24000000);
|
|
|
|
/* Set default settings of 1 stop bit, no parity, no hw flow ctrl */
|
|
pl011_set_stopbits(uart->base, 1);
|
|
pl011_parity_disable(uart->base);
|
|
|
|
/* Disable all irqs */
|
|
pl011_set_irq_mask(uart->base, 0x3FF);
|
|
|
|
/* Enable rx, tx, and uart chip */
|
|
pl011_tx_enable(uart->base);
|
|
pl011_rx_enable(uart->base);
|
|
pl011_uart_enable(uart->base);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void platform_init(void)
|
|
{
|
|
uart.base = PL011_USR_BASE;
|
|
pl011_initialise(&uart);
|
|
}
|
|
|