RISC-V: Remove CLINT related code from timer and arch
Right now the RISC-V timer driver is convoluted to support: 1. Linux RISC-V S-mode (with MMU) where it will use TIME CSR for clocksource and SBI timer calls for clockevent device. 2. Linux RISC-V M-mode (without MMU) where it will use CLINT MMIO counter register for clocksource and CLINT MMIO compare register for clockevent device. We now have a separate CLINT timer driver which also provide CLINT based IPI operations so let's remove CLINT MMIO related code from arch/riscv directory and RISC-V timer driver. Signed-off-by: Anup Patel <anup.patel@wdc.com> Tested-by: Emil Renner Berhing <kernel@esmil.dk> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> Reviewed-by: Atish Patra <atish.patra@wdc.com> Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com> Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
This commit is contained in:

committed by
Palmer Dabbelt

parent
2ac6795fcc
commit
2bc3fc877a
@@ -19,26 +19,13 @@
|
||||
#include <linux/of_irq.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/sbi.h>
|
||||
|
||||
u64 __iomem *riscv_time_cmp;
|
||||
u64 __iomem *riscv_time_val;
|
||||
|
||||
static inline void mmio_set_timer(u64 val)
|
||||
{
|
||||
void __iomem *r;
|
||||
|
||||
r = riscv_time_cmp + cpuid_to_hartid_map(smp_processor_id());
|
||||
writeq_relaxed(val, r);
|
||||
}
|
||||
#include <asm/timex.h>
|
||||
|
||||
static int riscv_clock_next_event(unsigned long delta,
|
||||
struct clock_event_device *ce)
|
||||
{
|
||||
csr_set(CSR_IE, IE_TIE);
|
||||
if (IS_ENABLED(CONFIG_RISCV_SBI))
|
||||
sbi_set_timer(get_cycles64() + delta);
|
||||
else
|
||||
mmio_set_timer(get_cycles64() + delta);
|
||||
sbi_set_timer(get_cycles64() + delta);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user