mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-21 20:56:59 +08:00
bsps/riscv: UART - Read reg-shift from DTB to properly set/get registers
This commit is contained in:
@@ -161,12 +161,19 @@ static void riscv_console_probe(void)
|
||||
ns16550_context *ctx;
|
||||
fdt32_t *val;
|
||||
int len;
|
||||
int reg_shift;
|
||||
|
||||
ctx = &ns16550_instances[ns16550_devices];
|
||||
ctx->initial_baud = BSP_CONSOLE_BAUD;
|
||||
|
||||
if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750")) {
|
||||
ctx->has_precision_clock_synthesizer = true;
|
||||
/* Get register shift property of the UART device */
|
||||
val = (fdt32_t *) fdt_getprop(fdt, node, "reg-shift", &len);
|
||||
|
||||
if (val) {
|
||||
reg_shift = fdt32_to_cpu(val[0]);
|
||||
}
|
||||
|
||||
if (reg_shift == 2) {
|
||||
ctx->get_reg = riscv_console_get_reg_32;
|
||||
ctx->set_reg = riscv_console_set_reg_32;
|
||||
} else {
|
||||
@@ -174,6 +181,10 @@ static void riscv_console_probe(void)
|
||||
ctx->set_reg = riscv_console_set_reg_8;
|
||||
}
|
||||
|
||||
if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750")) {
|
||||
ctx->has_precision_clock_synthesizer = true;
|
||||
}
|
||||
|
||||
ctx->port = (uintptr_t) riscv_fdt_get_address(fdt, node);
|
||||
|
||||
if (ctx->port == 0) {
|
||||
|
||||
Reference in New Issue
Block a user