diff options
| author | Yu Chien Peter Lin <peterlin@andestech.com> | 2022-10-14 08:32:46 +0800 |
|---|---|---|
| committer | Anup Patel <anup@brainfault.org> | 2022-10-23 10:26:39 +0530 |
| commit | ef9f02e7fba47412d6c057ba78fd3d89cb4e5fc3 (patch) | |
| tree | b74d62fd2260c139112ec40eb90975f08ffa2f65 /include/sbi_utils/timer | |
| parent | 88f58a3694c936791eb875d3cc85f1cde41c3d09 (diff) | |
| download | opensbi-ef9f02e7fba47412d6c057ba78fd3d89cb4e5fc3.zip opensbi-ef9f02e7fba47412d6c057ba78fd3d89cb4e5fc3.tar.gz opensbi-ef9f02e7fba47412d6c057ba78fd3d89cb4e5fc3.tar.bz2 | |
lib: utils/timer: Add Andes fdt timer support
Since we can get the PLMT base address and timer frequency from
device tree, move plmt timer device to fdt timer framework.
dts example (Quad-core AX45MP):
cpus {
...
timebase-frequency = <0x3938700>;
...
}
soc {
...
plmt0@e6000000 {
compatible = "andestech,plmt0";
reg = <0x00 0xe6000000 0x00 0x100000>;
interrupts-extended = <&cpu0_intc 0x07
&cpu1_intc 0x07
&cpu2_intc 0x07
&cpu3_intc 0x07>;
};
...
}
Signed-off-by: Yu Chien Peter Lin <peterlin@andestech.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'include/sbi_utils/timer')
| -rw-r--r-- | include/sbi_utils/timer/andes_plmt.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/include/sbi_utils/timer/andes_plmt.h b/include/sbi_utils/timer/andes_plmt.h new file mode 100644 index 0000000..08bce33 --- /dev/null +++ b/include/sbi_utils/timer/andes_plmt.h @@ -0,0 +1,29 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2022 Andes Technology Corporation + * + * Authors: + * Zong Li <zong@andestech.com> + * Nylon Chen <nylon7@andestech.com> + * Yu Chien Peter Lin <peterlin@andestech.com> + */ + +#ifndef __TIMER_ANDES_PLMT_H__ +#define __TIMER_ANDES_PLMT_H__ + +#define DEFAULT_AE350_PLMT_FREQ 60000000 +#define PLMT_REGION_ALIGN 0x1000 + +struct plmt_data { + u32 hart_count; + unsigned long size; + unsigned long timer_freq; + volatile u64 *time_val; + volatile u64 *time_cmp; +}; + +int plmt_cold_timer_init(struct plmt_data *plmt); +int plmt_warm_timer_init(void); + +#endif /* __TIMER_ANDES_PLMT_H__ */ |
