fix fsbl and opensbi serial ports print baud --form https://community.milkv.io/t/set-the-baud-rate-to-115200-before-uboot/959
This commit is contained in:
@ -46,8 +46,34 @@ int dec_verify_image(const void *image, size_t size, size_t dec_skip, struct fip
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Start of addition
|
||||||
|
#define UART_DLL 0x04140000
|
||||||
|
#define UART_DLH 0x04140004
|
||||||
|
#define UART_LCR 0x0414000C
|
||||||
|
|
||||||
|
void set_baudrate()
|
||||||
|
{
|
||||||
|
// 14 for 115200, 13 for 128000
|
||||||
|
int baud_divisor = 14;
|
||||||
|
|
||||||
|
// set DLAB to 1 to set dll and dlh
|
||||||
|
*(volatile uint32_t*)(UART_LCR) |= (uint32_t)0x80;
|
||||||
|
|
||||||
|
// set divisor
|
||||||
|
*(volatile uint32_t*)(UART_DLL) = (uint32_t)(baud_divisor & 0xff);
|
||||||
|
*(volatile uint32_t*)(UART_DLH) = (uint32_t)((baud_divisor >> 8) & 0xff);
|
||||||
|
|
||||||
|
// set DLAB back to 0
|
||||||
|
*(volatile uint32_t*)(UART_LCR) &= (uint32_t)(~0x80);
|
||||||
|
}
|
||||||
|
// End of addition
|
||||||
|
|
||||||
void bl2_main(void)
|
void bl2_main(void)
|
||||||
{
|
{
|
||||||
|
// Start of addition
|
||||||
|
set_baudrate();
|
||||||
|
// End of addition
|
||||||
|
|
||||||
ATF_STATE = ATF_STATE_BL2_MAIN;
|
ATF_STATE = ATF_STATE_BL2_MAIN;
|
||||||
time_records->fsbl_start = read_time_ms();
|
time_records->fsbl_start = read_time_ms();
|
||||||
|
|
||||||
|
|||||||
@ -101,7 +101,7 @@ int uart8250_init(unsigned long base, u32 in_freq, u32 baudrate, u32 reg_shift,
|
|||||||
uart8250_in_freq = in_freq;
|
uart8250_in_freq = in_freq;
|
||||||
uart8250_baudrate = baudrate;
|
uart8250_baudrate = baudrate;
|
||||||
|
|
||||||
bdiv = uart8250_in_freq / (16 * uart8250_baudrate);
|
bdiv = (uart8250_in_freq + 8 * uart8250_baudrate) / (16 * uart8250_baudrate);
|
||||||
|
|
||||||
/* Disable all interrupts */
|
/* Disable all interrupts */
|
||||||
set_reg(UART_IER_OFFSET, 0x00);
|
set_reg(UART_IER_OFFSET, 0x00);
|
||||||
|
|||||||
Reference in New Issue
Block a user