mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Changed formatting and added new UART divsor calculation from OpenSBI.
This commit is contained in:
parent
336a413f31
commit
a36e846b02
@ -31,7 +31,9 @@ void write_serial(char a)
|
|||||||
|
|
||||||
void init_uart(uint32_t freq, uint32_t baud)
|
void init_uart(uint32_t freq, uint32_t baud)
|
||||||
{
|
{
|
||||||
uint32_t divisor = freq / (baud << 4);
|
// Alternative divisor calculation. From OpenSBI code.
|
||||||
|
// Reduces error for every possible frequency.
|
||||||
|
uint32_t divisor = (freq + 8 * baud) /(baud << 4);
|
||||||
|
|
||||||
write_reg_u8(UART_IER, 0x00); // Disable all interrupts
|
write_reg_u8(UART_IER, 0x00); // Disable all interrupts
|
||||||
write_reg_u8(UART_LCR, 0x80); // Enable DLAB (set baud rate divisor)
|
write_reg_u8(UART_LCR, 0x80); // Enable DLAB (set baud rate divisor)
|
||||||
@ -44,8 +46,7 @@ void init_uart(uint32_t freq, uint32_t baud)
|
|||||||
void print_uart(const char *str)
|
void print_uart(const char *str)
|
||||||
{
|
{
|
||||||
const char *cur = &str[0];
|
const char *cur = &str[0];
|
||||||
while (*cur != '\0')
|
while (*cur != '\0') {
|
||||||
{
|
|
||||||
write_serial((uint8_t)*cur);
|
write_serial((uint8_t)*cur);
|
||||||
++cur;
|
++cur;
|
||||||
}
|
}
|
||||||
@ -64,8 +65,7 @@ void bin_to_hex(uint8_t inp, uint8_t res[2])
|
|||||||
void print_uart_int(uint32_t addr)
|
void print_uart_int(uint32_t addr)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 3; i > -1; i--)
|
for (i = 3; i > -1; i--) {
|
||||||
{
|
|
||||||
uint8_t cur = (addr >> (i * 8)) & 0xff;
|
uint8_t cur = (addr >> (i * 8)) & 0xff;
|
||||||
uint8_t hex[2];
|
uint8_t hex[2];
|
||||||
bin_to_hex(cur, hex);
|
bin_to_hex(cur, hex);
|
||||||
@ -77,8 +77,7 @@ void print_uart_int(uint32_t addr)
|
|||||||
void print_uart_addr(uint64_t addr)
|
void print_uart_addr(uint64_t addr)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 7; i > -1; i--)
|
for (i = 7; i > -1; i--) {
|
||||||
{
|
|
||||||
uint8_t cur = (addr >> (i * 8)) & 0xff;
|
uint8_t cur = (addr >> (i * 8)) & 0xff;
|
||||||
uint8_t hex[2];
|
uint8_t hex[2];
|
||||||
bin_to_hex(cur, hex);
|
bin_to_hex(cur, hex);
|
||||||
|
Loading…
Reference in New Issue
Block a user