2021-01-19 10:14:18

by Bert Vermeulen

[permalink] [raw]
Subject: [PATCH v4 0/5] Add support for Realtek RTL838x/RTL839x switch SoCs

v4:
- Device tree bindings for SoC in separate patch.
- Removed ioremap.h, and declare physical address bases in device tree.

v3:
- all code removed, the base system is now only device tree files and docs
and some build config.
- ioremap.h restored to the v1 version, with hardcoded I/O ranges, since I
got flak on changing that as suggested. This brings it in line with other
systems in arch/mips/generic.

v2:
- Removed all new arch/mips/ code, using arch/mips/generic/ instead.
- Use device tree ranges instead of hardcoded addresses for ioremap.
- Moved IRQ driver to drivers/irqchip/
- Removed reset handling code, will be replaced by device tree config.
- All SoC family id code moved to new soc driver.
- Header moved to realtek/ instead of mach-realtek/
- As more of the base system now depends on device tree, a sample
dts for the Cisco SG220-26 switch is included. This will be further
filled out, and bindings documented, as drivers get merged.

Bert Vermeulen (5):
dt-bindings: mips: Add support for RTL83xx SoC series
Add support for Realtek RTL838x/RTL839x switch SoCs
MIPS: Add Realtek RTL838x/RTL839x support as generic MIPS system
dt-bindings: Add Cisco prefix to vendor list
mips: dts: Add support for Cisco SG220-26 switch

.../devicetree/bindings/mips/realtek-rtl.yaml | 24 ++++++++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/mips/Kconfig | 31 ++++++++++
arch/mips/boot/dts/Makefile | 1 +
arch/mips/boot/dts/realtek/Makefile | 2 +
arch/mips/boot/dts/realtek/cisco_sg220-26.dts | 25 ++++++++
arch/mips/boot/dts/realtek/rtl838x.dtsi | 21 +++++++
arch/mips/boot/dts/realtek/rtl83xx.dtsi | 59 +++++++++++++++++++
8 files changed, 165 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mips/realtek-rtl.yaml
create mode 100644 arch/mips/boot/dts/realtek/Makefile
create mode 100644 arch/mips/boot/dts/realtek/cisco_sg220-26.dts
create mode 100644 arch/mips/boot/dts/realtek/rtl838x.dtsi
create mode 100644 arch/mips/boot/dts/realtek/rtl83xx.dtsi

--
2.25.1


2021-01-19 10:14:19

by Bert Vermeulen

[permalink] [raw]
Subject: [PATCH v4 2/5] Add support for Realtek RTL838x/RTL839x switch SoCs

The RTL838x/839x family of SoCs are Realtek switches with an embedded
MIPS core.

* RTL838x - 500MHz 4kce single core - 1Gbit ports and L2 features
* RTL839x - 700MHz 34Kc single core - 1Gbit ports and L2 features

These switches, depending on the exact part number, will have anywhere
between 8 and 52 ports. The MIPS core is wired to a switch cpu port which
has a tagging feature allowing us to make use of the DSA subsystem.
The SoCs are somewhat basic in certain areas, getting better with more
advanced features on newer series.

The switch functionality is MMIO-mapped via a large MFD region.

The SoCs have the following peripherals
* ethernet
* switch
* uart - ns16550a
* spi-flash interface
* gpio
* wdt
* led

The code was derived from various vendor SDKs based on Linux v2.6
kernels.

This patchset allows us to boot RTL838x/RTL839x units with basic support.
Most of the other drivers are already written and functional, and work to
get them upstream is already in progress.

Signed-off-by: Birger Koblitz <[email protected]>
Signed-off-by: Bert Vermeulen <[email protected]>
Signed-off-by: John Crispin <[email protected]>
Signed-off-by: Sander Vanheule <[email protected]>
---
arch/mips/boot/dts/Makefile | 1 +
arch/mips/boot/dts/realtek/rtl838x.dtsi | 21 +++++++++
arch/mips/boot/dts/realtek/rtl83xx.dtsi | 59 +++++++++++++++++++++++++
3 files changed, 81 insertions(+)
create mode 100644 arch/mips/boot/dts/realtek/rtl838x.dtsi
create mode 100644 arch/mips/boot/dts/realtek/rtl83xx.dtsi

diff --git a/arch/mips/boot/dts/Makefile b/arch/mips/boot/dts/Makefile
index 0259238d7a2e..60bd7d2a9ad8 100644
--- a/arch/mips/boot/dts/Makefile
+++ b/arch/mips/boot/dts/Makefile
@@ -14,6 +14,7 @@ subdir-$(CONFIG_FIT_IMAGE_FDT_NI169445) += ni
subdir-$(CONFIG_MACH_PIC32) += pic32
subdir-$(CONFIG_ATH79) += qca
subdir-$(CONFIG_RALINK) += ralink
+subdir-$(CONFIG_MACH_REALTEK_RTL) += realtek
subdir-$(CONFIG_FIT_IMAGE_FDT_XILFPGA) += xilfpga

obj-$(CONFIG_BUILTIN_DTB) := $(addsuffix /, $(subdir-y))
diff --git a/arch/mips/boot/dts/realtek/rtl838x.dtsi b/arch/mips/boot/dts/realtek/rtl838x.dtsi
new file mode 100644
index 000000000000..6cc4ff5c0d19
--- /dev/null
+++ b/arch/mips/boot/dts/realtek/rtl838x.dtsi
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
+
+/ {
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "mips,mips4KEc";
+ reg = <0>;
+ clocks = <&baseclk 0>;
+ clock-names = "cpu";
+ };
+ };
+
+ baseclk: baseclk {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <500000000>;
+ };
+};
diff --git a/arch/mips/boot/dts/realtek/rtl83xx.dtsi b/arch/mips/boot/dts/realtek/rtl83xx.dtsi
new file mode 100644
index 000000000000..de65a111b626
--- /dev/null
+++ b/arch/mips/boot/dts/realtek/rtl83xx.dtsi
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ };
+
+ cpuintc: cpuintc {
+ compatible = "mti,cpu-interrupt-controller";
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ };
+
+ soc: soc {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x18000000 0x10000>;
+
+ uart0: uart@2000 {
+ compatible = "ns16550a";
+ reg = <0x2000 0x100>;
+
+ clock-frequency = <200000000>;
+
+ interrupt-parent = <&cpuintc>;
+ interrupts = <31>;
+
+ reg-io-width = <1>;
+ reg-shift = <2>;
+ fifo-size = <1>;
+ no-loopback-test;
+
+ status = "disabled";
+ };
+
+ uart1: uart@2100 {
+ compatible = "ns16550a";
+ reg = <0x2100 0x100>;
+
+ clock-frequency = <200000000>;
+
+ interrupt-parent = <&cpuintc>;
+ interrupts = <30>;
+
+ reg-io-width = <1>;
+ reg-shift = <2>;
+ fifo-size = <1>;
+ no-loopback-test;
+
+ status = "disabled";
+ };
+ };
+};
--
2.25.1

2021-01-19 10:14:19

by Bert Vermeulen

[permalink] [raw]
Subject: [PATCH v4 4/5] dt-bindings: Add Cisco prefix to vendor list

Signed-off-by: Bert Vermeulen <[email protected]>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 041ae90b0d8f..e6e3a51fc2e3 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -229,6 +229,8 @@ patternProperties:
description: Computadora Industrial Abierta Argentina
"^cirrus,.*":
description: Cirrus Logic, Inc.
+ "^cisco,.*":
+ description: Cisco Systems, Inc.
"^cloudengines,.*":
description: Cloud Engines, Inc.
"^cnm,.*":
--
2.25.1

2021-01-19 10:14:19

by Bert Vermeulen

[permalink] [raw]
Subject: [PATCH v4 1/5] dt-bindings: mips: Add support for RTL83xx SoC series

Signed-off-by: Bert Vermeulen <[email protected]>
---
.../devicetree/bindings/mips/realtek-rtl.yaml | 24 +++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mips/realtek-rtl.yaml

diff --git a/Documentation/devicetree/bindings/mips/realtek-rtl.yaml b/Documentation/devicetree/bindings/mips/realtek-rtl.yaml
new file mode 100644
index 000000000000..aadff8ce0f49
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/realtek-rtl.yaml
@@ -0,0 +1,24 @@
+# SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mips/realtek-rtl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek RTL83xx/93xx SoC series device tree bindings
+
+maintainers:
+ - Bert Vermeulen <[email protected]>
+ - Sander Vanheule <[email protected]>
+
+properties:
+ $nodename:
+ const: "/"
+ compatible:
+ oneOf:
+ # RTL8382-based boards
+ - items:
+ - enum:
+ - cisco,sg220-26
+ - const: realtek,rtl8382-soc
+
+additionalProperties: true
--
2.25.1

2021-01-19 10:48:54

by Bert Vermeulen

[permalink] [raw]
Subject: [PATCH v4 3/5] MIPS: Add Realtek RTL838x/RTL839x support as generic MIPS system

This is just enough system to boot the kernel with earlycon working.

Signed-off-by: Bert Vermeulen <[email protected]>
Signed-off-by: Sander Vanheule <[email protected]>
---
arch/mips/Kconfig | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 0a17bedf4f0d..0986d0c4405f 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -627,6 +627,27 @@ config RALINK
select ARCH_HAS_RESET_CONTROLLER
select RESET_CONTROLLER

+config MACH_REALTEK_RTL
+ bool "Realtek RTL838x/RTL839x based machines"
+ select MIPS_GENERIC
+ select DMA_NONCOHERENT
+ select IRQ_MIPS_CPU
+ select CSRC_R4K
+ select CEVT_R4K
+ select SYS_HAS_CPU_MIPS32_R1
+ select SYS_HAS_CPU_MIPS32_R2
+ select SYS_SUPPORTS_BIG_ENDIAN
+ select SYS_SUPPORTS_32BIT_KERNEL
+ select SYS_SUPPORTS_MIPS16
+ select SYS_SUPPORTS_MULTITHREADING
+ select SYS_SUPPORTS_VPE_LOADER
+ select SYS_HAS_EARLY_PRINTK
+ select SYS_HAS_EARLY_PRINTK_8250
+ select USE_GENERIC_EARLY_PRINTK_8250
+ select BOOT_RAW
+ select PINCTRL
+ select USE_OF
+
config SGI_IP22
bool "SGI IP22 (Indy/Indigo2)"
select ARC_MEMORY
--
2.25.1

2021-01-20 15:58:19

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v4 4/5] dt-bindings: Add Cisco prefix to vendor list

On Tue, 19 Jan 2021 10:21:08 +0100, Bert Vermeulen wrote:
> Signed-off-by: Bert Vermeulen <[email protected]>
> ---
> Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>


Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.

If a tag was not added on purpose, please state why and what changed.

2021-02-04 21:05:06

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH v4 0/5] Add support for Realtek RTL838x/RTL839x switch SoCs

On Tue, Jan 19, 2021 at 10:21:04AM +0100, Bert Vermeulen wrote:
> v4:
> - Device tree bindings for SoC in separate patch.
> - Removed ioremap.h, and declare physical address bases in device tree.
>
> v3:
> - all code removed, the base system is now only device tree files and docs
> and some build config.
> - ioremap.h restored to the v1 version, with hardcoded I/O ranges, since I
> got flak on changing that as suggested. This brings it in line with other
> systems in arch/mips/generic.
>
> v2:
> - Removed all new arch/mips/ code, using arch/mips/generic/ instead.
> - Use device tree ranges instead of hardcoded addresses for ioremap.
> - Moved IRQ driver to drivers/irqchip/
> - Removed reset handling code, will be replaced by device tree config.
> - All SoC family id code moved to new soc driver.
> - Header moved to realtek/ instead of mach-realtek/
> - As more of the base system now depends on device tree, a sample
> dts for the Cisco SG220-26 switch is included. This will be further
> filled out, and bindings documented, as drivers get merged.
>
> Bert Vermeulen (5):
> dt-bindings: mips: Add support for RTL83xx SoC series
> Add support for Realtek RTL838x/RTL839x switch SoCs
> MIPS: Add Realtek RTL838x/RTL839x support as generic MIPS system
> dt-bindings: Add Cisco prefix to vendor list
> mips: dts: Add support for Cisco SG220-26 switch
>
> .../devicetree/bindings/mips/realtek-rtl.yaml | 24 ++++++++
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> arch/mips/Kconfig | 31 ++++++++++
> arch/mips/boot/dts/Makefile | 1 +
> arch/mips/boot/dts/realtek/Makefile | 2 +
> arch/mips/boot/dts/realtek/cisco_sg220-26.dts | 25 ++++++++
> arch/mips/boot/dts/realtek/rtl838x.dtsi | 21 +++++++
> arch/mips/boot/dts/realtek/rtl83xx.dtsi | 59 +++++++++++++++++++
> 8 files changed, 165 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mips/realtek-rtl.yaml
> create mode 100644 arch/mips/boot/dts/realtek/Makefile
> create mode 100644 arch/mips/boot/dts/realtek/cisco_sg220-26.dts
> create mode 100644 arch/mips/boot/dts/realtek/rtl838x.dtsi
> create mode 100644 arch/mips/boot/dts/realtek/rtl83xx.dtsi

series applied to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]