From 775d903216a08c2a8009863d2f9c33f62657ba94 Mon Sep 17 00:00:00 2001 From: Birger Koblitz Date: Thu, 6 Jan 2022 20:27:01 +0100 Subject: [PATCH] realtek: Replace the RTL9300 generic timer with a CEVT timer The RTL9300 has a broken R4K MIPS timer interrupt, however, the R4K clocksource works. We replace the RTL9300 timer with a Clock Event Timer (CEVT), which is VSMP aware and can be instantiated as part of brining a VSMTP cpu up instead of the R4K CEVT source. For this we place the RTL9300 CEVT timer in arch/mips/kernel together with other MIPS CEVT timers, initialize the SoC IRQs from a modified smp-mt.c and instantiate each timer as part of the MIPS time setup in arch/mips/include/asm/time.h instead of the R4K CEVT, similarly as is done by other MIPS CEVT timers. Submitted-by: Birger Koblitz --- arch/mips/kernel/Makefile | 1 + arch/mips/include/asm/time.h | 7 +++++++ 2 files changed, 8 insertions(+) --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile @@ -27,6 +27,7 @@ obj-$(CONFIG_CEVT_BCM1480) += cevt-bcm14 obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o obj-$(CONFIG_CEVT_DS1287) += cevt-ds1287.o obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o +obj-$(CONFIG_CEVT_RTL9300) += cevt-rtl9300.o obj-$(CONFIG_CEVT_SB1250) += cevt-sb1250.o obj-$(CONFIG_CEVT_TXX9) += cevt-txx9.o obj-$(CONFIG_CSRC_BCM1480) += csrc-bcm1480.o --- a/arch/mips/include/asm/time.h +++ b/arch/mips/include/asm/time.h @@ -15,6 +15,8 @@ #include #include +extern void rtl9300_clockevent_init(void); + extern spinlock_t rtc_lock; /* @@ -43,6 +45,11 @@ extern int r4k_clockevent_init(void); static inline int mips_clockevent_init(void) { +#ifdef CONFIG_CEVT_RTL9300 + rtl9300_clockevent_init(); + return 0; +#endif + #ifdef CONFIG_CEVT_R4K return r4k_clockevent_init(); #else