openwrt/target/linux/realtek/patches-5.10/309-cevt-rtl9300-support.patch
Olliver Schinagl f1f97db627
realtek: Convert incorrect v5.10 patches
OpenWRT's developer guide prefers having actual patches so they an be
sent upstream more easily.

However, in this case, Adding proper fields also allows for `git am` to
properly function. Some of these patches are quite old, and lack much
traceable history.

This commit tries to rectify that, by digging in the history to find
where and how it was first added.

It is by no means perfect and also shows some patches that should have
been long gone.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
2022-10-01 02:47:57 +02:00

55 lines
1.9 KiB
Diff

From 775d903216a08c2a8009863d2f9c33f62657ba94 Mon Sep 17 00:00:00 2001
From: Birger Koblitz <git@birger-koblitz.de>
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 <git@birger-koblitz.de>
---
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 <linux/clockchips.h>
#include <linux/clocksource.h>
+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