diff options
| author | Anup Patel <[email protected]> | 2021-05-20 15:32:46 +0530 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2021-06-24 09:39:53 +0530 |
| commit | 03d6bb51ba96a16a8ac9a2fcbaebec9f6c31d900 (patch) | |
| tree | 7c3bf68142845f2ec0567db92643f973b0e58c2c /lib/utils/timer/fdt_timer_clint.c | |
| parent | 56fc5f7618b70a83425a764cafd67ffcf3605b5d (diff) | |
lib: utils/timer: Add FDT based ACLINT MTIMER driver
We add a new FDT based ACLINT MTIMER driver which works for
both CLINT device and standalone ACLINT MTIMER device.
Signed-off-by: Anup Patel <[email protected]>
Reviewed-by: Bin Meng <[email protected]>
Reviewed-by: Xiang W <[email protected]>
Diffstat (limited to 'lib/utils/timer/fdt_timer_clint.c')
| -rw-r--r-- | lib/utils/timer/fdt_timer_clint.c | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/lib/utils/timer/fdt_timer_clint.c b/lib/utils/timer/fdt_timer_clint.c deleted file mode 100644 index 63d6586b..00000000 --- a/lib/utils/timer/fdt_timer_clint.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2020 Western Digital Corporation or its affiliates. - * - * Authors: - * Anup Patel <[email protected]> - */ - -#include <libfdt.h> -#include <sbi/sbi_error.h> -#include <sbi_utils/fdt/fdt_helper.h> -#include <sbi_utils/timer/fdt_timer.h> -#include <sbi_utils/sys/clint.h> - -#define CLINT_TIMER_MAX_NR 16 - -static unsigned long clint_timer_count = 0; -static struct clint_data clint_timer[CLINT_TIMER_MAX_NR]; - -static int timer_clint_cold_init(void *fdt, int nodeoff, - const struct fdt_match *match) -{ - int rc; - unsigned long ctsize; - struct clint_data *ct, *ctmaster = NULL; - - if (CLINT_TIMER_MAX_NR <= clint_timer_count) - return SBI_ENOSPC; - ct = &clint_timer[clint_timer_count++]; - if (1 < clint_timer_count) - ctmaster = &clint_timer[0]; - - rc = fdt_parse_aclint_node(fdt, nodeoff, true, &ct->addr, &ctsize, - &ct->first_hartid, &ct->hart_count); - if (rc) - return rc; - - ct->has_64bit_mmio = true; - if (fdt_getprop(fdt, nodeoff, "clint,has-no-64bit-mmio", &rc)) - ct->has_64bit_mmio = false; - - return clint_cold_timer_init(ct, ctmaster); -} - -static const struct fdt_match timer_clint_match[] = { - { .compatible = "riscv,clint0" }, - { .compatible = "sifive,clint0" }, - { }, -}; - -struct fdt_timer fdt_timer_clint = { - .match_table = timer_clint_match, - .cold_init = timer_clint_cold_init, - .warm_init = clint_warm_timer_init, - .exit = NULL, -}; |
