From fce11f68491b46b93df69de0630cd9edb90bc772 Mon Sep 17 00:00:00 2001
From: Birger Koblitz <git@birger-koblitz.de>
Date: Wed, 29 Dec 2021 21:54:21 +0100
Subject: [PATCH] realtek: Create 4 different Realtek Platforms

Creates RTL83XX as a basic kernel config parameter for the
RTL838X, RTL839x, RTL930X and RTL931X platforms with respective
configurations for the SoCs, which are introduced in addition.

Submitted-by: Birger Koblitz <git@birger-koblitz.de>
---
 arch/mips/Kbuild.platforms                    |  1 +
 arch/mips/Kconfig                             | 57 ++++++++++++++
 2 files changed, 58 insertions(+)

--- a/arch/mips/Kbuild.platforms
+++ b/arch/mips/Kbuild.platforms
@@ -23,6 +23,7 @@ platform-$(CONFIG_NLM_COMMON)		+= netlog
 platform-$(CONFIG_PIC32MZDA)		+= pic32/
 platform-$(CONFIG_RALINK)		+= ralink/
 platform-$(CONFIG_MIKROTIK_RB532)	+= rb532/
+platform-$(CONFIG_RTL83XX)		+= rtl838x/
 platform-$(CONFIG_SGI_IP22)		+= sgi-ip22/
 platform-$(CONFIG_SGI_IP27)		+= sgi-ip27/
 platform-$(CONFIG_SGI_IP28)		+= sgi-ip22/
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1056,8 +1056,58 @@ config NLM_XLP_BOARD
 	  This board is based on Netlogic XLP Processor.
 	  Say Y here if you have a XLP based board.
 
+config RTL83XX
+	bool "Realtek based platforms"
+	select DMA_NONCOHERENT
+	select IRQ_MIPS_CPU
+	select NO_EXCEPT_FILL
+	select SYS_HAS_CPU_MIPS32_R1
+	select SYS_HAS_CPU_MIPS32_R2
+	select SYS_SUPPORTS_BIG_ENDIAN
+	select SYS_SUPPORTS_HIGHMEM
+	select SYS_SUPPORTS_32BIT_KERNEL
+	select SYS_SUPPORTS_MIPS16
+	select SYS_HAS_EARLY_PRINTK
+	select SYS_HAS_EARLY_PRINTK_8250
+	select USE_GENERIC_EARLY_PRINTK_8250
+	select BOOT_RAW
+	select PINCTRL
+	select ARCH_HAS_RESET_CONTROLLER
+	select RESET_CONTROLLER
+	select USE_OF
+
 endchoice
 
+config RTL838X
+	bool "Realtek RTL838X based platforms"
+	depends on RTL83XX
+	select CPU_SUPPORTS_CPUFREQ
+	select MIPS_EXTERNAL_TIMER
+
+config RTL839X
+	bool "Realtek RTL839X based platforms"
+	depends on RTL83XX
+	select CPU_SUPPORTS_CPUFREQ
+	select MIPS_EXTERNAL_TIMER
+	select SYS_SUPPORTS_MULTITHREADING
+
+config RTL930X
+	bool "Realtek RTL930X based platforms"
+	depends on RTL83XX
+	select MIPS_CPU_SCACHE
+	select MIPS_EXTERNAL_TIMER
+	select SYS_SUPPORTS_MULTITHREADING
+
+config RTL931X
+	bool "Realtek RTL931X based platforms"
+	depends on RTL930X
+	select MIPS_GIC
+	select COMMON_CLK
+	select CLKSRC_MIPS_GIC
+	select SYS_SUPPORTS_VPE_LOADER
+	select SYS_SUPPORTS_SMP
+	select SYS_SUPPORTS_MIPS_CPS
+
 source "arch/mips/alchemy/Kconfig"
 source "arch/mips/ath25/Kconfig"
 source "arch/mips/ath79/Kconfig"
