linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement
@ 2017-06-27  0:55 Andreas Färber
  2017-06-27  0:55 ` [PATCH 1/6] dt-bindings: Add RDA Micro vendor prefix Andreas Färber
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Andreas Färber @ 2017-06-27  0:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, service, zhao_steven, Andreas Färber,
	Arnd Bergmann, Olof Johansson, devicetree

Hello,

This mini-series adds initial Device Trees for the RDA Micro RDA8810PL SoC and
the Orange Pi 2G-IoT board.

With the vendor U-Boot the .dtb needs to be appended to the zImage.
It then boots with earlycon until it is lacking a timer driver.

Cf. https://en.opensuse.org/HCL:Orange_Pi_2G-IoT

Patches at:
https://github.com/afaerber/linux/commits/opi2g-next

Have a lot of fun!

Cheers,
Andreas

Cc: service@rdamicro.com
Cc: zhao_steven@263.net
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Olof Johansson <olof@lixom.net>
Cc: devicetree@vger.kernel.org

Andreas Färber (6):
  dt-bindings: Add RDA Micro vendor prefix
  dt-bindings: arm: Document RDA8810PL and Orange Pi 2G-IoT
  ARM: Prepare RDA8810PL
  dt-bindings: serial: Document RDA Micro UART
  tty: serial: Add RDA Micro UART driver
  ARM: dts: Add RDA8810PL and Orange Pi 2G-IoT

 Documentation/admin-guide/kernel-parameters.txt    |   6 ++
 Documentation/devicetree/bindings/arm/rda.txt      |  17 +++
 .../devicetree/bindings/serial/rda-uart.txt        |  13 +++
 .../devicetree/bindings/vendor-prefixes.txt        |   1 +
 arch/arm/Kconfig                                   |   2 +
 arch/arm/Makefile                                  |   1 +
 arch/arm/boot/dts/Makefile                         |   2 +
 arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts    |  27 +++++
 arch/arm/boot/dts/rda8810pl.dtsi                   |  94 +++++++++++++++++
 arch/arm/mach-rda/Kconfig                          |   7 ++
 arch/arm/mach-rda/Makefile                         |   1 +
 drivers/tty/serial/Kconfig                         |  19 ++++
 drivers/tty/serial/Makefile                        |   1 +
 drivers/tty/serial/rda-uart.c                      | 117 +++++++++++++++++++++
 14 files changed, 308 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/rda.txt
 create mode 100644 Documentation/devicetree/bindings/serial/rda-uart.txt
 create mode 100644 arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts
 create mode 100644 arch/arm/boot/dts/rda8810pl.dtsi
 create mode 100644 arch/arm/mach-rda/Kconfig
 create mode 100644 arch/arm/mach-rda/Makefile
 create mode 100644 drivers/tty/serial/rda-uart.c

-- 
2.12.3

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/6] dt-bindings: Add RDA Micro vendor prefix
  2017-06-27  0:55 [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement Andreas Färber
@ 2017-06-27  0:55 ` Andreas Färber
  2017-06-29 20:08   ` Rob Herring
  2017-06-27  0:55 ` [PATCH 2/6] dt-bindings: arm: Document RDA8810PL and Orange Pi 2G-IoT Andreas Färber
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2017-06-27  0:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, service, zhao_steven, Andreas Färber,
	Rob Herring, Mark Rutland, devicetree

RDA Microelectronics is a Chinese SoC manufacturer.

Cc: service@rdamicro.com
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index afbb47ce50dd..c54c1e069516 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -270,6 +270,7 @@ ralink	Mediatek/Ralink Technology Corp.
 ramtron	Ramtron International
 raspberrypi	Raspberry Pi Foundation
 raydium	Raydium Semiconductor Corp.
+rda	RDA Microelectronics, Inc.
 realtek Realtek Semiconductor Corp.
 renesas	Renesas Electronics Corporation
 richtek	Richtek Technology Corporation
-- 
2.12.3

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/6] dt-bindings: arm: Document RDA8810PL and Orange Pi 2G-IoT
  2017-06-27  0:55 [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement Andreas Färber
  2017-06-27  0:55 ` [PATCH 1/6] dt-bindings: Add RDA Micro vendor prefix Andreas Färber
@ 2017-06-27  0:55 ` Andreas Färber
  2017-06-29 20:09   ` Rob Herring
  2017-06-27  0:55 ` [PATCH 3/6] ARM: Prepare RDA8810PL Andreas Färber
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2017-06-27  0:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, service, zhao_steven, Andreas Färber,
	Rob Herring, Mark Rutland, devicetree

Add bindings for RDA Micro RDA8810PL SoC and Orange Pi 2G-IoT board.

Cc: service@rdamicro.com
Cc: zhao_steven@263.net
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 Documentation/devicetree/bindings/arm/rda.txt | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/rda.txt

diff --git a/Documentation/devicetree/bindings/arm/rda.txt b/Documentation/devicetree/bindings/arm/rda.txt
new file mode 100644
index 000000000000..bcb4e0dd1ee5
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/rda.txt
@@ -0,0 +1,17 @@
+RDA Micro platforms device tree bindings
+----------------------------------------
+
+
+RDA8810PL SoC
+=============
+
+Required root node properties:
+
+ - compatible :  must contain "rda,8810pl"
+
+
+Boards:
+
+Root node property compatible must contain, depending on board:
+
+ - Orange Pi 2G-IoT: "xunlong,orangepi-2g-iot"
-- 
2.12.3

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/6] ARM: Prepare RDA8810PL
  2017-06-27  0:55 [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement Andreas Färber
  2017-06-27  0:55 ` [PATCH 1/6] dt-bindings: Add RDA Micro vendor prefix Andreas Färber
  2017-06-27  0:55 ` [PATCH 2/6] dt-bindings: arm: Document RDA8810PL and Orange Pi 2G-IoT Andreas Färber
@ 2017-06-27  0:55 ` Andreas Färber
  2017-06-27  0:55 ` [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART Andreas Färber
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2017-06-27  0:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, service, zhao_steven, Andreas Färber, Russell King

Introduce ARCH_RDA and mach-rda.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 arch/arm/Kconfig           | 2 ++
 arch/arm/Makefile          | 1 +
 arch/arm/mach-rda/Kconfig  | 7 +++++++
 arch/arm/mach-rda/Makefile | 1 +
 4 files changed, 11 insertions(+)
 create mode 100644 arch/arm/mach-rda/Kconfig
 create mode 100644 arch/arm/mach-rda/Makefile

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 6d2f77c77556..2aa61c16bd9b 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -802,6 +802,8 @@ source "arch/arm/mach-oxnas/Kconfig"
 
 source "arch/arm/mach-qcom/Kconfig"
 
+source "arch/arm/mach-rda/Kconfig"
+
 source "arch/arm/mach-realview/Kconfig"
 
 source "arch/arm/mach-rockchip/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 47d3a1ab08d2..549d5a2724c0 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -199,6 +199,7 @@ machine-$(CONFIG_ARCH_ORION5X)		+= orion5x
 machine-$(CONFIG_ARCH_PICOXCELL)	+= picoxcell
 machine-$(CONFIG_ARCH_PXA)		+= pxa
 machine-$(CONFIG_ARCH_QCOM)		+= qcom
+machine-$(CONFIG_ARCH_RDA)		+= rda
 machine-$(CONFIG_ARCH_REALVIEW)		+= realview
 machine-$(CONFIG_ARCH_ROCKCHIP)		+= rockchip
 machine-$(CONFIG_ARCH_RPC)		+= rpc
diff --git a/arch/arm/mach-rda/Kconfig b/arch/arm/mach-rda/Kconfig
new file mode 100644
index 000000000000..dafab78d7aab
--- /dev/null
+++ b/arch/arm/mach-rda/Kconfig
@@ -0,0 +1,7 @@
+menuconfig ARCH_RDA
+	bool "RDA Micro SoCs"
+	depends on ARCH_MULTI_V7
+	select COMMON_CLK
+	select GENERIC_IRQ_CHIP
+	help
+	  This enables support for the RDA Micro 8810PL SoC family.
diff --git a/arch/arm/mach-rda/Makefile b/arch/arm/mach-rda/Makefile
new file mode 100644
index 000000000000..6bea3d3a2dd7
--- /dev/null
+++ b/arch/arm/mach-rda/Makefile
@@ -0,0 +1 @@
+obj- += dummy.o
-- 
2.12.3

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART
  2017-06-27  0:55 [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement Andreas Färber
                   ` (2 preceding siblings ...)
  2017-06-27  0:55 ` [PATCH 3/6] ARM: Prepare RDA8810PL Andreas Färber
@ 2017-06-27  0:55 ` Andreas Färber
  2017-06-29 20:10   ` Rob Herring
  2017-06-27  0:55 ` [PATCH 5/6] tty: serial: Add RDA Micro UART driver Andreas Färber
  2017-06-27  0:55 ` [PATCH 6/6] ARM: dts: Add RDA8810PL and Orange Pi 2G-IoT Andreas Färber
  5 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2017-06-27  0:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, service, zhao_steven, Andreas Färber,
	Greg Kroah-Hartman, Rob Herring, Mark Rutland, linux-serial,
	devicetree

Add an initial binding for the RDA8810PL UART.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 Documentation/devicetree/bindings/serial/rda-uart.txt | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/serial/rda-uart.txt

diff --git a/Documentation/devicetree/bindings/serial/rda-uart.txt b/Documentation/devicetree/bindings/serial/rda-uart.txt
new file mode 100644
index 000000000000..6840a8aee035
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/rda-uart.txt
@@ -0,0 +1,13 @@
+RDA Micro UART
+
+Required properties:
+- compatible :  "rda,8810pl-uart" for RDA8810PL
+- reg        :  Offset and length of the register set for the device.
+
+
+Example:
+
+		uart3: serial@20a90000 {
+			compatible = "rda,8810pl-uart";
+			reg = <0x20a90000 0x1000>;
+		};
-- 
2.12.3

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 5/6] tty: serial: Add RDA Micro UART driver
  2017-06-27  0:55 [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement Andreas Färber
                   ` (3 preceding siblings ...)
  2017-06-27  0:55 ` [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART Andreas Färber
@ 2017-06-27  0:55 ` Andreas Färber
  2017-06-27  0:55 ` [PATCH 6/6] ARM: dts: Add RDA8810PL and Orange Pi 2G-IoT Andreas Färber
  5 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2017-06-27  0:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, service, zhao_steven, Andreas Färber,
	Jonathan Corbet, Greg Kroah-Hartman, Jiri Slaby, linux-doc,
	linux-serial

Add "rda" earlycon driver for RDA8810PL UART.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 Documentation/admin-guide/kernel-parameters.txt |   6 ++
 drivers/tty/serial/Kconfig                      |  19 ++++
 drivers/tty/serial/Makefile                     |   1 +
 drivers/tty/serial/rda-uart.c                   | 117 ++++++++++++++++++++++++
 4 files changed, 143 insertions(+)
 create mode 100644 drivers/tty/serial/rda-uart.c

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 0e2091c6fa6b..c97f8b64b3f1 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -967,6 +967,12 @@
 			specified address. The serial port must already be
 			setup and configured. Options are not yet supported.
 
+		rda,<addr>
+			Start an early, polled-mode console on a serial port
+			of an RDA Micro SoC, such as RDA8810PL, at the
+			specified address. The serial port must already be
+			setup and configured. Options are not yet supported.
+
 		smh	Use ARM semihosting calls for early console.
 
 		s3c2410,<addr>
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index 1f096e2bb398..25e106a62e06 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -1707,6 +1707,25 @@ config SERIAL_OWL_CONSOLE
 	  Say 'Y' here if you wish to use Actions Semiconductor S500/S900 UART
 	  as the system console. Only earlycon is implemented currently.
 
+config SERIAL_RDA
+	bool "RDA Micro serial port support"
+	depends on ARCH_RDA || COMPILE_TEST
+	select SERIAL_CORE
+	help
+	  This driver is for RDA8810PL SoC's UART.
+	  Say 'Y' here if you wish to use the on-board serial port.
+	  Otherwise, say 'N'.
+
+config SERIAL_RDA_CONSOLE
+	bool "Console on RDA Micro serial port"
+	depends on SERIAL_RDA=y
+	select SERIAL_CORE_CONSOLE
+	select SERIAL_EARLYCON
+	default y
+	help
+	  Say 'Y' here if you wish to use the RDA8810PL UART as the system
+	  console. Only earlycon is implemented currently.
+
 endmenu
 
 config SERIAL_MCTRL_GPIO
diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile
index fe88a75d9a59..87f5a6e1e2d4 100644
--- a/drivers/tty/serial/Makefile
+++ b/drivers/tty/serial/Makefile
@@ -93,6 +93,7 @@ obj-$(CONFIG_SERIAL_MVEBU_UART)	+= mvebu-uart.o
 obj-$(CONFIG_SERIAL_PIC32)	+= pic32_uart.o
 obj-$(CONFIG_SERIAL_MPS2_UART)	+= mps2-uart.o
 obj-$(CONFIG_SERIAL_OWL)	+= owl-uart.o
+obj-$(CONFIG_SERIAL_RDA)	+= rda-uart.o
 
 # GPIOLIB helpers for modem control lines
 obj-$(CONFIG_SERIAL_MCTRL_GPIO)	+= serial_mctrl_gpio.o
diff --git a/drivers/tty/serial/rda-uart.c b/drivers/tty/serial/rda-uart.c
new file mode 100644
index 000000000000..c3c9cf1df015
--- /dev/null
+++ b/drivers/tty/serial/rda-uart.c
@@ -0,0 +1,117 @@
+/*
+ * RDA8810PL serial console
+ *
+ * Copyright RDA Microelectronics Company Limited
+ * Copyright (c) 2017 Andreas Färber
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General  Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/console.h>
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/serial.h>
+#include <linux/serial_core.h>
+
+#define RDA_UART_CTRL		0x00
+#define RDA_UART_STATUS		0x04
+#define RDA_UART_RXTX_BUFFER	0x08
+#define RDA_UART_IRQ_MASK	0x0c
+
+#define RDA_UART_STATUS_TX_FIFO_SPACE_MASK	(0x1f << 8)
+
+static inline void rda_uart_write(struct uart_port *port, u32 val, unsigned int off)
+{
+	writel(val, port->membase + off);
+}
+
+static inline u32 rda_uart_read(struct uart_port *port, unsigned int off)
+{
+	return readl(port->membase + off);
+}
+
+#ifdef CONFIG_SERIAL_RDA_CONSOLE
+
+static void rda_console_putchar(struct uart_port *port, int ch)
+{
+	if (!port->membase)
+		return;
+
+	while (!(rda_uart_read(port, RDA_UART_STATUS) & RDA_UART_STATUS_TX_FIFO_SPACE_MASK))
+		cpu_relax();
+
+	rda_uart_write(port, ch, RDA_UART_RXTX_BUFFER);
+}
+
+static void rda_uart_port_write(struct uart_port *port, const char *s,
+				u_int count)
+{
+	u32 old_irq_mask;
+	unsigned long flags;
+	int locked;
+
+	local_irq_save(flags);
+
+	if (port->sysrq)
+		locked = 0;
+	else if (oops_in_progress)
+		locked = spin_trylock(&port->lock);
+	else {
+		spin_lock(&port->lock);
+		locked = 1;
+	}
+
+	old_irq_mask = rda_uart_read(port, RDA_UART_IRQ_MASK);
+	rda_uart_write(port, 0, RDA_UART_IRQ_MASK);
+
+	uart_console_write(port, s, count, rda_console_putchar);
+
+	/* wait until all contents have been sent out */
+	while (!(rda_uart_read(port, RDA_UART_STATUS) & RDA_UART_STATUS_TX_FIFO_SPACE_MASK))
+		cpu_relax();
+
+	rda_uart_write(port, old_irq_mask, RDA_UART_IRQ_MASK);
+
+	if (locked)
+		spin_unlock(&port->lock);
+
+	local_irq_restore(flags);
+}
+
+static void rda_uart_early_console_write(struct console *co,
+					 const char *s,
+					 u_int count)
+{
+	struct earlycon_device *dev = co->data;
+
+	rda_uart_port_write(&dev->port, s, count);
+}
+
+static int __init
+rda_uart_early_console_setup(struct earlycon_device *device, const char *opt)
+{
+	if (!device->port.membase)
+		return -ENODEV;
+
+	device->con->write = rda_uart_early_console_write;
+
+	return 0;
+}
+OF_EARLYCON_DECLARE(rda, "rda,8810pl-uart",
+		    rda_uart_early_console_setup);
+
+#endif /* CONFIG_SERIAL_RDA_CONSOLE */
-- 
2.12.3

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 6/6] ARM: dts: Add RDA8810PL and Orange Pi 2G-IoT
  2017-06-27  0:55 [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement Andreas Färber
                   ` (4 preceding siblings ...)
  2017-06-27  0:55 ` [PATCH 5/6] tty: serial: Add RDA Micro UART driver Andreas Färber
@ 2017-06-27  0:55 ` Andreas Färber
  5 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2017-06-27  0:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, service, zhao_steven, Andreas Färber,
	Rob Herring, Mark Rutland, Russell King, devicetree

Add Device Trees for RDA Micro RDA8810PL SoC and Orange Pi 2G-IoT board.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 arch/arm/boot/dts/Makefile                      |  2 +
 arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts | 27 +++++++
 arch/arm/boot/dts/rda8810pl.dtsi                | 94 +++++++++++++++++++++++++
 3 files changed, 123 insertions(+)
 create mode 100644 arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts
 create mode 100644 arch/arm/boot/dts/rda8810pl.dtsi

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 4b17f35dc9a7..d651033db30e 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -693,6 +693,8 @@ dtb-$(CONFIG_ARCH_QCOM) += \
 	qcom-msm8974-lge-nexus5-hammerhead.dtb \
 	qcom-msm8974-sony-xperia-honami.dtb \
 	qcom-mdm9615-wp8548-mangoh-green.dtb
+dtb-$(CONFIG_ARCH_RDA) += \
+	rda8810pl-orangepi-2g-iot.dtb
 dtb-$(CONFIG_ARCH_REALVIEW) += \
 	arm-realview-pb1176.dtb \
 	arm-realview-pb11mp.dtb \
diff --git a/arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts b/arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts
new file mode 100644
index 000000000000..4142ecb529c9
--- /dev/null
+++ b/arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2017 Andreas Färber
+ *
+ * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+ */
+
+/dts-v1/;
+
+#include "rda8810pl.dtsi"
+
+/ {
+	compatible = "xunlong,orangepi-2g-iot", "rda,8810pl";
+	model = "Orange Pi 2G-IoT";
+
+	chosen {
+		stdout-path = "serial3:921600n8";
+	};
+
+	memory@80000000 {
+		device_type = "memory";
+		reg = <0x80000000 0x10000000>;
+	};
+};
+
+&uart3 {
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/rda8810pl.dtsi b/arch/arm/boot/dts/rda8810pl.dtsi
new file mode 100644
index 000000000000..f066ac7a4ee9
--- /dev/null
+++ b/arch/arm/boot/dts/rda8810pl.dtsi
@@ -0,0 +1,94 @@
+/*
+ * RDA8810PL SoC
+ *
+ * Copyright (c) 2017 Andreas Färber
+ *
+ * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+ */
+
+/ {
+	compatible = "rda,8810pl";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	aliases {
+		serial1 = &uart1;
+		serial2 = &uart2;
+		serial3 = &uart3;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a5";
+			reg = <0x0>;
+		};
+	};
+
+	soc {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0 0x0 0x80000000>;
+
+		sram@100000 {
+			compatible = "mmio-sram";
+			reg = <0x100000 0x10000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges;
+		};
+
+		apb@20800000 {
+			compatible = "simple-bus";
+			reg = <0x20800000 0x100000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20800000 0x100000>;
+		};
+
+		apb@20900000 {
+			compatible = "simple-bus";
+			reg = <0x20900000 0x100000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20900000 0x100000>;
+		};
+
+		apb@20a00000 {
+			compatible = "simple-bus";
+			reg = <0x20a00000 0x100000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20a00000 0x100000>;
+
+			uart1: serial@0 {
+				compatible = "rda,8810pl-uart";
+				reg = <0x0 0x1000>;
+				status = "disabled";
+			};
+
+			uart2: serial@10000 {
+				compatible = "rda,8810pl-uart";
+				reg = <0x10000 0x1000>;
+				status = "disabled";
+			};
+
+			uart3: serial@90000 {
+				compatible = "rda,8810pl-uart";
+				reg = <0x90000 0x1000>;
+				status = "disabled";
+			};
+		};
+
+		l2: cache-controller@21100000 {
+			compatible = "arm,pl310-cache";
+			reg = <0x21100000 0x1000>;
+			cache-unified;
+			cache-level = <2>;
+		};
+	};
+};
-- 
2.12.3

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/6] dt-bindings: Add RDA Micro vendor prefix
  2017-06-27  0:55 ` [PATCH 1/6] dt-bindings: Add RDA Micro vendor prefix Andreas Färber
@ 2017-06-29 20:08   ` Rob Herring
  0 siblings, 0 replies; 14+ messages in thread
From: Rob Herring @ 2017-06-29 20:08 UTC (permalink / raw)
  To: Andreas Färber
  Cc: linux-arm-kernel, linux-kernel, service, zhao_steven,
	Mark Rutland, devicetree

On Tue, Jun 27, 2017 at 02:55:15AM +0200, Andreas Färber wrote:
> RDA Microelectronics is a Chinese SoC manufacturer.
> 
> Cc: service@rdamicro.com
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>  Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
>  1 file changed, 1 insertion(+)

Acked-by: Rob Herring <robh@kernel.org>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 2/6] dt-bindings: arm: Document RDA8810PL and Orange Pi 2G-IoT
  2017-06-27  0:55 ` [PATCH 2/6] dt-bindings: arm: Document RDA8810PL and Orange Pi 2G-IoT Andreas Färber
@ 2017-06-29 20:09   ` Rob Herring
  0 siblings, 0 replies; 14+ messages in thread
From: Rob Herring @ 2017-06-29 20:09 UTC (permalink / raw)
  To: Andreas Färber
  Cc: linux-arm-kernel, linux-kernel, service, zhao_steven,
	Mark Rutland, devicetree

On Tue, Jun 27, 2017 at 02:55:16AM +0200, Andreas Färber wrote:
> Add bindings for RDA Micro RDA8810PL SoC and Orange Pi 2G-IoT board.
> 
> Cc: service@rdamicro.com
> Cc: zhao_steven@263.net
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>  Documentation/devicetree/bindings/arm/rda.txt | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/arm/rda.txt

Acked-by: Rob Herring <robh@kernel.org>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART
  2017-06-27  0:55 ` [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART Andreas Färber
@ 2017-06-29 20:10   ` Rob Herring
  2017-06-30 11:12     ` Andreas Färber
  0 siblings, 1 reply; 14+ messages in thread
From: Rob Herring @ 2017-06-29 20:10 UTC (permalink / raw)
  To: Andreas Färber
  Cc: linux-arm-kernel, linux-kernel, service, zhao_steven,
	Greg Kroah-Hartman, Mark Rutland, linux-serial, devicetree

On Tue, Jun 27, 2017 at 02:55:18AM +0200, Andreas Färber wrote:
> Add an initial binding for the RDA8810PL UART.
> 
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>  Documentation/devicetree/bindings/serial/rda-uart.txt | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/serial/rda-uart.txt
> 
> diff --git a/Documentation/devicetree/bindings/serial/rda-uart.txt b/Documentation/devicetree/bindings/serial/rda-uart.txt
> new file mode 100644
> index 000000000000..6840a8aee035
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/serial/rda-uart.txt
> @@ -0,0 +1,13 @@
> +RDA Micro UART
> +
> +Required properties:
> +- compatible :  "rda,8810pl-uart" for RDA8810PL
> +- reg        :  Offset and length of the register set for the device.

No clocks or interrupts?

Rob

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART
  2017-06-29 20:10   ` Rob Herring
@ 2017-06-30 11:12     ` Andreas Färber
  2017-06-30 14:27       ` Rob Herring
  0 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2017-06-30 11:12 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-arm-kernel, linux-kernel, service, zhao_steven,
	Greg Kroah-Hartman, Mark Rutland, linux-serial, devicetree

Am 29.06.2017 um 22:10 schrieb Rob Herring:
> On Tue, Jun 27, 2017 at 02:55:18AM +0200, Andreas Färber wrote:
>> Add an initial binding for the RDA8810PL UART.
>>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>> ---
>>  Documentation/devicetree/bindings/serial/rda-uart.txt | 13 +++++++++++++
>>  1 file changed, 13 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/serial/rda-uart.txt
>>
>> diff --git a/Documentation/devicetree/bindings/serial/rda-uart.txt b/Documentation/devicetree/bindings/serial/rda-uart.txt
>> new file mode 100644
>> index 000000000000..6840a8aee035
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/serial/rda-uart.txt
>> @@ -0,0 +1,13 @@
>> +RDA Micro UART
>> +
>> +Required properties:
>> +- compatible :  "rda,8810pl-uart" for RDA8810PL
>> +- reg        :  Offset and length of the register set for the device.
> 
> No clocks or interrupts?

Not yet. I've only pieced together an earlycon driver so far, no full
serial driver. The .dtsi doesn't even have an interrupt-controller node
yet - wasn't clear to me whether this SoC even has a GIC and, if so,
where, from the downstream pre-DT code.

Regards,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART
  2017-06-30 11:12     ` Andreas Färber
@ 2017-06-30 14:27       ` Rob Herring
  2017-07-02  1:52         ` Andreas Färber
  0 siblings, 1 reply; 14+ messages in thread
From: Rob Herring @ 2017-06-30 14:27 UTC (permalink / raw)
  To: Andreas Färber
  Cc: linux-arm-kernel, linux-kernel, service, zhao_steven,
	Greg Kroah-Hartman, Mark Rutland, linux-serial, devicetree

On Fri, Jun 30, 2017 at 6:12 AM, Andreas Färber <afaerber@suse.de> wrote:
> Am 29.06.2017 um 22:10 schrieb Rob Herring:
>> On Tue, Jun 27, 2017 at 02:55:18AM +0200, Andreas Färber wrote:
>>> Add an initial binding for the RDA8810PL UART.
>>>
>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>>> ---
>>>  Documentation/devicetree/bindings/serial/rda-uart.txt | 13 +++++++++++++
>>>  1 file changed, 13 insertions(+)
>>>  create mode 100644 Documentation/devicetree/bindings/serial/rda-uart.txt
>>>
>>> diff --git a/Documentation/devicetree/bindings/serial/rda-uart.txt b/Documentation/devicetree/bindings/serial/rda-uart.txt
>>> new file mode 100644
>>> index 000000000000..6840a8aee035
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/serial/rda-uart.txt
>>> @@ -0,0 +1,13 @@
>>> +RDA Micro UART
>>> +
>>> +Required properties:
>>> +- compatible :  "rda,8810pl-uart" for RDA8810PL
>>> +- reg        :  Offset and length of the register set for the device.
>>
>> No clocks or interrupts?
>
> Not yet. I've only pieced together an earlycon driver so far, no full
> serial driver. The .dtsi doesn't even have an interrupt-controller node
> yet - wasn't clear to me whether this SoC even has a GIC and, if so,
> where, from the downstream pre-DT code.

How far can you boot with no interrupts?

DT bindings shouldn't unnecessarily evolve. Really, anything added
should be optional to maintain compatibility. Sometimes that's
unavoidable, but this isn't one of those cases. So submit this when
you have something more complete.

Rob

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART
  2017-06-30 14:27       ` Rob Herring
@ 2017-07-02  1:52         ` Andreas Färber
  2017-07-05 14:12           ` Rob Herring
  0 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2017-07-02  1:52 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-arm-kernel, linux-kernel, service, zhao_steven,
	Greg Kroah-Hartman, Mark Rutland, linux-serial, devicetree

Am 30.06.2017 um 16:27 schrieb Rob Herring:
> On Fri, Jun 30, 2017 at 6:12 AM, Andreas Färber <afaerber@suse.de> wrote:
>> Am 29.06.2017 um 22:10 schrieb Rob Herring:
>>> On Tue, Jun 27, 2017 at 02:55:18AM +0200, Andreas Färber wrote:
>>>> Add an initial binding for the RDA8810PL UART.
>>>>
>>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>>>> ---
>>>>  Documentation/devicetree/bindings/serial/rda-uart.txt | 13 +++++++++++++
>>>>  1 file changed, 13 insertions(+)
>>>>  create mode 100644 Documentation/devicetree/bindings/serial/rda-uart.txt
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/serial/rda-uart.txt b/Documentation/devicetree/bindings/serial/rda-uart.txt
>>>> new file mode 100644
>>>> index 000000000000..6840a8aee035
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/serial/rda-uart.txt
>>>> @@ -0,0 +1,13 @@
>>>> +RDA Micro UART
>>>> +
>>>> +Required properties:
>>>> +- compatible :  "rda,8810pl-uart" for RDA8810PL
>>>> +- reg        :  Offset and length of the register set for the device.
>>>
>>> No clocks or interrupts?
>>
>> Not yet. I've only pieced together an earlycon driver so far, no full
>> serial driver. The .dtsi doesn't even have an interrupt-controller node
>> yet - wasn't clear to me whether this SoC even has a GIC and, if so,
>> where, from the downstream pre-DT code.
> 
> How far can you boot with no interrupts?

That was described in the cover letter, as usual.

> DT bindings shouldn't unnecessarily evolve. Really, anything added
> should be optional to maintain compatibility. Sometimes that's
> unavoidable, but this isn't one of those cases.

Makes sense. Maybe this series should've been marked RFC. It's too late
for 4.13 anyway, so there's lots of time left to extend the bindings.

BTW I saw that Kevin was adding a disclaimer to the Amlogic bindings
that they are not stable. Is that required here, too?

> So submit this when
> you have something more complete.

Negative. I worked weeks and months towards perfect STM32 drivers, and
despite showing it to ST and at a LinuxCon Japan, someone else sent less
sophisticated patches (e.g., fixed-clocks) and took all the credit. Same
with Turris Omnia. Therefore I am now submitting my new patches early,
not just when everything is complete.

It took weeks just to get any earlycon output on the 2G-IoT at all - not
my serial driver or my DT was broken, but the vendor's U-Boot just
wasn't passing the .dtb to the kernel properly, as it turned out. Now
that we know how to boot a DT-based kernel and get serial output, it
becomes much easier for me and potential contributors to add drivers.

Regards,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART
  2017-07-02  1:52         ` Andreas Färber
@ 2017-07-05 14:12           ` Rob Herring
  0 siblings, 0 replies; 14+ messages in thread
From: Rob Herring @ 2017-07-05 14:12 UTC (permalink / raw)
  To: Andreas Färber
  Cc: linux-arm-kernel, linux-kernel, service, zhao_steven,
	Greg Kroah-Hartman, Mark Rutland, linux-serial, devicetree

On Sun, Jul 02, 2017 at 03:52:39AM +0200, Andreas Färber wrote:
> Am 30.06.2017 um 16:27 schrieb Rob Herring:
> > On Fri, Jun 30, 2017 at 6:12 AM, Andreas Färber <afaerber@suse.de> wrote:
> >> Am 29.06.2017 um 22:10 schrieb Rob Herring:
> >>> On Tue, Jun 27, 2017 at 02:55:18AM +0200, Andreas Färber wrote:
> >>>> Add an initial binding for the RDA8810PL UART.
> >>>>
> >>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
> >>>> ---
> >>>>  Documentation/devicetree/bindings/serial/rda-uart.txt | 13 +++++++++++++
> >>>>  1 file changed, 13 insertions(+)
> >>>>  create mode 100644 Documentation/devicetree/bindings/serial/rda-uart.txt
> >>>>
> >>>> diff --git a/Documentation/devicetree/bindings/serial/rda-uart.txt b/Documentation/devicetree/bindings/serial/rda-uart.txt
> >>>> new file mode 100644
> >>>> index 000000000000..6840a8aee035
> >>>> --- /dev/null
> >>>> +++ b/Documentation/devicetree/bindings/serial/rda-uart.txt
> >>>> @@ -0,0 +1,13 @@
> >>>> +RDA Micro UART
> >>>> +
> >>>> +Required properties:
> >>>> +- compatible :  "rda,8810pl-uart" for RDA8810PL
> >>>> +- reg        :  Offset and length of the register set for the device.
> >>>
> >>> No clocks or interrupts?
> >>
> >> Not yet. I've only pieced together an earlycon driver so far, no full
> >> serial driver. The .dtsi doesn't even have an interrupt-controller node
> >> yet - wasn't clear to me whether this SoC even has a GIC and, if so,
> >> where, from the downstream pre-DT code.
> > 
> > How far can you boot with no interrupts?
> 
> That was described in the cover letter, as usual.
> 
> > DT bindings shouldn't unnecessarily evolve. Really, anything added
> > should be optional to maintain compatibility. Sometimes that's
> > unavoidable, but this isn't one of those cases.
> 
> Makes sense. Maybe this series should've been marked RFC. It's too late
> for 4.13 anyway, so there's lots of time left to extend the bindings.
> 
> BTW I saw that Kevin was adding a disclaimer to the Amlogic bindings
> that they are not stable. Is that required here, too?

I'm not really a fan of that. I've yet to see anyone remove an unstable 
tag. I'd rather see it for specific bindings, rather than platforms as a 
whole. It shouldn't be that hard to get most bindings complete enough 
and to a point that can be extended in a compatible way. In the end, 
decisions about breaking compatibility are up to the platform maintainer 
regardless of any text in some document.


> > So submit this when
> > you have something more complete.
> 
> Negative. I worked weeks and months towards perfect STM32 drivers, and
> despite showing it to ST and at a LinuxCon Japan, someone else sent less
> sophisticated patches (e.g., fixed-clocks) and took all the credit. Same
> with Turris Omnia. Therefore I am now submitting my new patches early,
> not just when everything is complete.

Fair enough. I should have said, we'll apply/ack when more complete. 
Submit it as often as you want.

Rob

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-07-05 14:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-27  0:55 [PATCH 0/6] ARM: Initial RDA8810PL and Orange Pi 2G-IoT enablement Andreas Färber
2017-06-27  0:55 ` [PATCH 1/6] dt-bindings: Add RDA Micro vendor prefix Andreas Färber
2017-06-29 20:08   ` Rob Herring
2017-06-27  0:55 ` [PATCH 2/6] dt-bindings: arm: Document RDA8810PL and Orange Pi 2G-IoT Andreas Färber
2017-06-29 20:09   ` Rob Herring
2017-06-27  0:55 ` [PATCH 3/6] ARM: Prepare RDA8810PL Andreas Färber
2017-06-27  0:55 ` [PATCH 4/6] dt-bindings: serial: Document RDA Micro UART Andreas Färber
2017-06-29 20:10   ` Rob Herring
2017-06-30 11:12     ` Andreas Färber
2017-06-30 14:27       ` Rob Herring
2017-07-02  1:52         ` Andreas Färber
2017-07-05 14:12           ` Rob Herring
2017-06-27  0:55 ` [PATCH 5/6] tty: serial: Add RDA Micro UART driver Andreas Färber
2017-06-27  0:55 ` [PATCH 6/6] ARM: dts: Add RDA8810PL and Orange Pi 2G-IoT Andreas Färber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).