diff options
Diffstat (limited to 'platform')
-rw-r--r-- | platform/fpga/ariane/platform.c | 15 | ||||
-rw-r--r-- | platform/fpga/openpiton/platform.c | 20 | ||||
-rw-r--r-- | platform/kendryte/k210/platform.c | 13 | ||||
-rw-r--r-- | platform/nuclei/ux600/platform.c | 12 | ||||
-rw-r--r-- | platform/sifive/fu540/platform.c | 12 | ||||
-rw-r--r-- | platform/template/platform.c | 21 | ||||
-rw-r--r-- | platform/thead/c910/platform.c | 14 |
7 files changed, 73 insertions, 34 deletions
diff --git a/platform/fpga/ariane/platform.c b/platform/fpga/ariane/platform.c index 275f2ce..a4d437e 100644 --- a/platform/fpga/ariane/platform.c +++ b/platform/fpga/ariane/platform.c @@ -24,13 +24,20 @@ #define ARIANE_PLIC_ADDR 0xc000000 #define ARIANE_PLIC_NUM_SOURCES 3 #define ARIANE_HART_COUNT 1 -#define ARIANE_CLINT_ADDR 0x2000000 +#define ARIANE_CLINT_ADDR 0x2000000 static struct plic_data plic = { .addr = ARIANE_PLIC_ADDR, .num_src = ARIANE_PLIC_NUM_SOURCES, }; +static struct clint_data clint = { + .addr = ARIANE_CLINT_ADDR, + .first_hartid = 0, + .hart_count = ARIANE_HART_COUNT, + .has_64bit_mmio = TRUE, +}; + /* * Ariane platform early initialization. */ @@ -116,8 +123,7 @@ static int ariane_ipi_init(bool cold_boot) int ret; if (cold_boot) { - ret = clint_cold_ipi_init(ARIANE_CLINT_ADDR, - ARIANE_HART_COUNT); + ret = clint_cold_ipi_init(&clint); if (ret) return ret; } @@ -133,8 +139,7 @@ static int ariane_timer_init(bool cold_boot) int ret; if (cold_boot) { - ret = clint_cold_timer_init(ARIANE_CLINT_ADDR, - ARIANE_HART_COUNT, TRUE); + ret = clint_cold_timer_init(&clint, NULL); if (ret) return ret; } diff --git a/platform/fpga/openpiton/platform.c b/platform/fpga/openpiton/platform.c index e56ee51..095004d 100644 --- a/platform/fpga/openpiton/platform.c +++ b/platform/fpga/openpiton/platform.c @@ -35,7 +35,13 @@ static struct plic_data plic = { .addr = OPENPITON_DEFAULT_PLIC_ADDR, .num_src = OPENPITON_DEFAULT_PLIC_NUM_SOURCES, }; -static unsigned long clint_addr = OPENPITON_DEFAULT_CLINT_ADDR; + +static struct clint_data clint = { + .addr = OPENPITON_DEFAULT_CLINT_ADDR, + .first_hartid = 0, + .hart_count = OPENPITON_DEFAULT_HART_COUNT, + .has_64bit_mmio = TRUE, +}; /* * OpenPiton platform early initialization. @@ -45,7 +51,7 @@ static int openpiton_early_init(bool cold_boot) void *fdt; struct platform_uart_data uart_data; struct plic_data plic_data; - unsigned long clint_data; + unsigned long clint_addr; int rc; if (!cold_boot) @@ -60,9 +66,9 @@ static int openpiton_early_init(bool cold_boot) if (!rc) plic = plic_data; - rc = fdt_parse_compat_addr(fdt, &clint_data, "riscv,clint0"); + rc = fdt_parse_compat_addr(fdt, &clint_addr, "riscv,clint0"); if (!rc) - clint_addr = clint_data; + clint.addr = clint_addr; return 0; } @@ -143,8 +149,7 @@ static int openpiton_ipi_init(bool cold_boot) int ret; if (cold_boot) { - ret = clint_cold_ipi_init(clint_addr, - OPENPITON_DEFAULT_HART_COUNT); + ret = clint_cold_ipi_init(&clint); if (ret) return ret; } @@ -160,8 +165,7 @@ static int openpiton_timer_init(bool cold_boot) int ret; if (cold_boot) { - ret = clint_cold_timer_init(clint_addr, - OPENPITON_DEFAULT_HART_COUNT, TRUE); + ret = clint_cold_timer_init(&clint, NULL); if (ret) return ret; } diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c index db2186a..ef0f18f 100644 --- a/platform/kendryte/k210/platform.c +++ b/platform/kendryte/k210/platform.c @@ -22,6 +22,13 @@ static struct plic_data plic = { .num_src = K210_PLIC_NUM_SOURCES, }; +static struct clint_data clint = { + .addr = K210_CLINT_BASE_ADDR, + .first_hartid = 0, + .hart_count = K210_HART_COUNT, + .has_64bit_mmio = TRUE, +}; + static u32 k210_get_clk_freq(void) { u32 clksel0, pll0; @@ -76,8 +83,7 @@ static int k210_ipi_init(bool cold_boot) int rc; if (cold_boot) { - rc = clint_cold_ipi_init(K210_CLINT_BASE_ADDR, - K210_HART_COUNT); + rc = clint_cold_ipi_init(&clint); if (rc) return rc; } @@ -90,8 +96,7 @@ static int k210_timer_init(bool cold_boot) int rc; if (cold_boot) { - rc = clint_cold_timer_init(K210_CLINT_BASE_ADDR, - K210_HART_COUNT, TRUE); + rc = clint_cold_timer_init(&clint, NULL); if (rc) return rc; } diff --git a/platform/nuclei/ux600/platform.c b/platform/nuclei/ux600/platform.c index f999c99..ad4ba2b 100644 --- a/platform/nuclei/ux600/platform.c +++ b/platform/nuclei/ux600/platform.c @@ -48,6 +48,13 @@ static struct plic_data plic = { .num_src = UX600_PLIC_NUM_SOURCES, }; +static struct clint_data clint = { + .addr = UX600_CLINT_TIMER_ADDR, + .first_hartid = 0, + .hart_count = UX600_HART_COUNT, + .has_64bit_mmio = TRUE, +}; + static void ux600_modify_dt(void *fdt) { fdt_fixups(fdt); @@ -92,7 +99,7 @@ static int ux600_ipi_init(bool cold_boot) int rc; if (cold_boot) { - rc = clint_cold_ipi_init(UX600_CLINT_TIMER_ADDR, UX600_HART_COUNT); + rc = clint_cold_ipi_init(&clint); if (rc) return rc; } @@ -105,8 +112,7 @@ static int ux600_timer_init(bool cold_boot) int rc; if (cold_boot) { - rc = clint_cold_timer_init(UX600_CLINT_TIMER_ADDR, - UX600_HART_COUNT, TRUE); + rc = clint_cold_timer_init(&clint, NULL); if (rc) return rc; } diff --git a/platform/sifive/fu540/platform.c b/platform/sifive/fu540/platform.c index 7a62fc3..48d887f 100644 --- a/platform/sifive/fu540/platform.c +++ b/platform/sifive/fu540/platform.c @@ -51,6 +51,13 @@ static struct plic_data plic = { .num_src = FU540_PLIC_NUM_SOURCES, }; +static struct clint_data clint = { + .addr = FU540_CLINT_ADDR, + .first_hartid = 0, + .hart_count = FU540_HART_COUNT, + .has_64bit_mmio = TRUE, +}; + static void fu540_modify_dt(void *fdt) { fdt_cpu_fixup(fdt); @@ -107,7 +114,7 @@ static int fu540_ipi_init(bool cold_boot) int rc; if (cold_boot) { - rc = clint_cold_ipi_init(FU540_CLINT_ADDR, FU540_HART_COUNT); + rc = clint_cold_ipi_init(&clint); if (rc) return rc; } @@ -125,8 +132,7 @@ static int fu540_timer_init(bool cold_boot) int rc; if (cold_boot) { - rc = clint_cold_timer_init(FU540_CLINT_ADDR, - FU540_HART_COUNT, TRUE); + rc = clint_cold_timer_init(&clint, NULL); if (rc) return rc; } diff --git a/platform/template/platform.c b/platform/template/platform.c index c845380..9cd750e 100644 --- a/platform/template/platform.c +++ b/platform/template/platform.c @@ -17,10 +17,10 @@ #include <sbi_utils/serial/uart8250.h> #include <sbi_utils/sys/clint.h> -#define PLATFORM_PLIC_ADDR 0xc000000 -#define PLATFORM_PLIC_NUM_SOURCES 128 -#define PLATFORM_HART_COUNT 4 -#define PLATFORM_CLINT_ADDR 0x2000000 +#define PLATFORM_PLIC_ADDR 0xc000000 +#define PLATFORM_PLIC_NUM_SOURCES 128 +#define PLATFORM_HART_COUNT 4 +#define PLATFORM_CLINT_ADDR 0x2000000 #define PLATFORM_UART_ADDR 0x09000000 #define PLATFORM_UART_INPUT_FREQ 10000000 #define PLATFORM_UART_BAUDRATE 115200 @@ -30,6 +30,13 @@ static struct plic_data plic = { .num_src = PLATFORM_PLIC_NUM_SOURCES, }; +static struct clint_data clint = { + .addr = PLATFORM_CLINT_ADDR, + .first_hartid = 0, + .hart_count = PLATFORM_HART_COUNT, + .has_64bit_mmio = TRUE, +}; + /* * Platform early initialization. */ @@ -100,8 +107,7 @@ static int platform_ipi_init(bool cold_boot) /* Example if the generic CLINT driver is used */ if (cold_boot) { - ret = clint_cold_ipi_init(PLATFORM_CLINT_ADDR, - PLATFORM_HART_COUNT); + ret = clint_cold_ipi_init(&clint, NULL); if (ret) return ret; } @@ -136,8 +142,7 @@ static int platform_timer_init(bool cold_boot) /* Example if the generic CLINT driver is used */ if (cold_boot) { - ret = clint_cold_timer_init(PLATFORM_CLINT_ADDR, - PLATFORM_HART_COUNT, TRUE); + ret = clint_cold_timer_init(&clint); if (ret) return ret; } diff --git a/platform/thead/c910/platform.c b/platform/thead/c910/platform.c index 82f910a..df7658a 100644 --- a/platform/thead/c910/platform.c +++ b/platform/thead/c910/platform.c @@ -15,6 +15,13 @@ static struct c910_regs_struct c910_regs; +static struct clint_data clint = { + .addr = 0, /* Updated at cold boot time */ + .first_hartid = 0, + .hart_count = C910_HART_COUNT, + .has_64bit_mmio = FALSE, +}; + static int c910_early_init(bool cold_boot) { if (cold_boot) { @@ -78,7 +85,8 @@ static int c910_ipi_init(bool cold_boot) int rc; if (cold_boot) { - rc = clint_cold_ipi_init(c910_regs.clint_base_addr, C910_HART_COUNT); + clint.addr = c910_regs.clint_base_addr; + rc = clint_cold_ipi_init(&clint); if (rc) return rc; } @@ -91,8 +99,8 @@ static int c910_timer_init(bool cold_boot) int ret; if (cold_boot) { - ret = clint_cold_timer_init(c910_regs.clint_base_addr, - C910_HART_COUNT, FALSE); + clint.addr = c910_regs.clint_base_addr; + ret = clint_cold_timer_init(&clint, NULL); if (ret) return ret; } |