summaryrefslogtreecommitdiff
path: root/lib/utils/timer/fdt_timer_clint.c
diff options
context:
space:
mode:
authorAnup Patel <[email protected]>2021-05-20 15:32:46 +0530
committerAnup Patel <[email protected]>2021-06-24 09:39:53 +0530
commit03d6bb51ba96a16a8ac9a2fcbaebec9f6c31d900 (patch)
tree7c3bf68142845f2ec0567db92643f973b0e58c2c /lib/utils/timer/fdt_timer_clint.c
parent56fc5f7618b70a83425a764cafd67ffcf3605b5d (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.c57
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,
-};