* [PATCH v2 07/15] arm: dts: Add devicetree for OrangePi i96 board
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
In-Reply-To: <20181121033652.12247-1-manivannan.sadhasivam@linaro.org>
Add initial devicetree for Orange Pi i96 board from Xunlong. It
is one of the 96Boards IoT Edition board.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
arch/arm/boot/dts/Makefile | 3 +-
arch/arm/boot/dts/rda8810pl-orangepi-i96.dts | 40 ++++++++++++++++++++
2 files changed, 42 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boot/dts/rda8810pl-orangepi-i96.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index a0fdad8f10dd..cfb08ea33872 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -807,7 +807,8 @@ dtb-$(CONFIG_ARCH_QCOM) += \
qcom-msm8974-sony-xperia-honami.dtb \
qcom-mdm9615-wp8548-mangoh-green.dtb
dtb-$(CONFIG_ARCH_RDA) += \
- rda8810pl-orangepi-2g-iot.dtb
+ rda8810pl-orangepi-2g-iot.dtb \
+ rda8810pl-orangepi-i96.dtb
dtb-$(CONFIG_ARCH_REALVIEW) += \
arm-realview-pb1176.dtb \
arm-realview-pb11mp.dtb \
diff --git a/arch/arm/boot/dts/rda8810pl-orangepi-i96.dts b/arch/arm/boot/dts/rda8810pl-orangepi-i96.dts
new file mode 100644
index 000000000000..11b586e3966b
--- /dev/null
+++ b/arch/arm/boot/dts/rda8810pl-orangepi-i96.dts
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 Andreas Färber
+ * Copyright (c) 2018 Manivannan Sadhasivam
+ */
+
+/dts-v1/;
+
+#include "rda8810pl.dtsi"
+
+/ {
+ compatible = "xunlong,orangepi-i96", "rda,8810pl";
+ model = "Orange Pi i96";
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ };
+
+ chosen {
+ stdout-path = "serial2:921600n8";
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>;
+ };
+
+ uart2_clk: uart2-clk {
+ compatible = "fixed-clock";
+ clock-frequency = <921600>;
+ #clock-cells = <0>;
+ };
+};
+
+&uart2 {
+ status = "okay";
+ clocks = <&uart2_clk>;
+};
--
2.17.1
^ permalink raw reply related
* [PATCH v2 06/15] arm: dts: Add devicetree for OrangePi 2G IoT board
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
In-Reply-To: <20181121033652.12247-1-manivannan.sadhasivam@linaro.org>
Add initial devicetree support for OrangePi 2G IoT board from Xunlong.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
arch/arm/boot/dts/Makefile | 2 +
.../boot/dts/rda8810pl-orangepi-2g-iot.dts | 40 +++++++++++++++++++
2 files changed, 42 insertions(+)
create mode 100644 arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b0e966d625b9..a0fdad8f10dd 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -806,6 +806,8 @@ dtb-$(CONFIG_ARCH_QCOM) += \
qcom-msm8974-sony-xperia-castor.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..5e5bd0542e0c
--- /dev/null
+++ b/arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 Andreas Färber
+ * Copyright (c) 2018 Manivannan Sadhasivam
+ */
+
+/dts-v1/;
+
+#include "rda8810pl.dtsi"
+
+/ {
+ compatible = "xunlong,orangepi-2g-iot", "rda,8810pl";
+ model = "Orange Pi 2G-IoT";
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ };
+
+ chosen {
+ stdout-path = "serial2:921600n8";
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>;
+ };
+
+ uart2_clk: uart2-clk {
+ compatible = "fixed-clock";
+ clock-frequency = <921600>;
+ #clock-cells = <0>;
+ };
+};
+
+&uart2 {
+ status = "okay";
+ clocks = <&uart2_clk>;
+};
--
2.17.1
^ permalink raw reply related
* [PATCH v2 05/15] arm: dts: Add devicetree for RDA8810PL SoC
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
In-Reply-To: <20181121033652.12247-1-manivannan.sadhasivam@linaro.org>
Add initial device tree for RDA8810PL SoC from RDA Microelectronics.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
arch/arm/boot/dts/rda8810pl.dtsi | 86 ++++++++++++++++++++++++++++++++
1 file changed, 86 insertions(+)
create mode 100644 arch/arm/boot/dts/rda8810pl.dtsi
diff --git a/arch/arm/boot/dts/rda8810pl.dtsi b/arch/arm/boot/dts/rda8810pl.dtsi
new file mode 100644
index 000000000000..ab85ee06d84f
--- /dev/null
+++ b/arch/arm/boot/dts/rda8810pl.dtsi
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * RDA8810PL SoC
+ *
+ * Copyright (c) 2017 Andreas Färber
+ * Copyright (c) 2018 Manivannan Sadhasivam
+ */
+
+/ {
+ compatible = "rda,8810pl";
+ interrupt-parent = <&intc>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a5";
+ reg = <0x0>;
+ };
+ };
+
+ sram@100000 {
+ compatible = "mmio-sram";
+ reg = <0x100000 0x10000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ };
+
+ apb@20800000 {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x20800000 0x100000>;
+
+ intc: interrupt-controller@0 {
+ compatible = "rda,8810pl-intc";
+ reg = <0x0 0x1000>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+
+ apb@20900000 {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x20900000 0x100000>;
+ };
+
+ apb@20a00000 {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x20a00000 0x100000>;
+
+ uart0: serial@0 {
+ compatible = "rda,8810pl-uart";
+ reg = <0x0 0x1000>;
+ status = "disabled";
+ };
+
+ uart1: serial@10000 {
+ compatible = "rda,8810pl-uart";
+ reg = <0x10000 0x1000>;
+ status = "disabled";
+ };
+
+ uart2: 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.17.1
^ permalink raw reply related
* [PATCH v2 04/15] dt-bindings: interrupt-controller: Document RDA8810PL intc
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
In-Reply-To: <20181121033652.12247-1-manivannan.sadhasivam@linaro.org>
Document interrupt controller in RDA Micro RDA8810PL SoC.
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
.../interrupt-controller/rda,8810pl-intc.txt | 61 +++++++++++++++++++
1 file changed, 61 insertions(+)
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt
diff --git a/Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt
new file mode 100644
index 000000000000..e0062aebf025
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt
@@ -0,0 +1,61 @@
+RDA Micro RDA8810PL Interrupt Controller
+
+The interrupt controller in RDA8810PL SoC is a custom interrupt controller
+which supports up to 32 interrupts.
+
+Required properties:
+
+- compatible: Should be "rda,8810pl-intc".
+- reg: Specifies base physical address of the registers set.
+- interrupt-controller: Identifies the node as an interrupt controller.
+- #interrupt-cells: Specifies the number of cells needed to encode an
+ interrupt source. The value shall be 2.
+
+The interrupt sources are as follows:
+
+ID Name
+------------
+0: PULSE_DUMMY
+1: I2C
+2: NAND_NFSC
+3: SDMMC1
+4: SDMMC2
+5: SDMMC3
+6: SPI1
+7: SPI2
+8: SPI3
+9: UART1
+10: UART2
+11: UART3
+12: GPIO1
+13: GPIO2
+14: GPIO3
+15: KEYPAD
+16: TIMER
+17: TIMEROS
+18: COMREG0
+19: COMREG1
+20: USB
+21: DMC
+22: DMA
+23: CAMERA
+24: GOUDA
+25: GPU
+26: VPU_JPG
+27: VPU_HOST
+28: VOC
+29: AUIFC0
+30: AUIFC1
+31: L2CC
+
+Example:
+ apb@20800000 {
+ compatible = "simple-bus";
+ ...
+ intc: interrupt-controller@0 {
+ compatible = "rda,8810pl-intc";
+ reg = <0x0 0x1000>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
--
2.17.1
^ permalink raw reply related
* [PATCH v2 03/15] ARM: Prepare RDA8810PL SoC
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
In-Reply-To: <20181121033652.12247-1-manivannan.sadhasivam@linaro.org>
From: Andreas Färber <afaerber@suse.de>
Introduce ARCH_RDA and mach-rda for RDA Micro SoCs.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
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 91be74d8df65..084f0983e6b2 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -804,6 +804,8 @@ source "arch/arm/plat-pxa/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 05a91d8b89f3..10056ccdb8be 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -202,6 +202,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.17.1
^ permalink raw reply related
* [PATCH v2 02/15] dt-bindings: arm: Document RDA8810PL and reference boards
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
In-Reply-To: <20181121033652.12247-1-manivannan.sadhasivam@linaro.org>
From: Andreas Färber <afaerber@suse.de>
Add bindings for RDA Micro RDA8810PL SoC and below reference boards:
1. Orange Pi 2G-IoT - http://www.orangepi.org/OrangePi2GIOT/
2. Orange Pi i96 - https://www.96boards.org/product/orangepi-i96/
Cc: overseas.sales@unisoc.com
Cc: zhao_steven@263.net
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
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..43c80762c428
--- /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"
+ - Orange Pi i96: "xunlong,orangepi-i96"
--
2.17.1
^ permalink raw reply related
* [PATCH v2 01/15] dt-bindings: Add RDA Micro vendor prefix
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
In-Reply-To: <20181121033652.12247-1-manivannan.sadhasivam@linaro.org>
From: Andreas Färber <afaerber@suse.de>
Add vendor prefix for RDA Micro which now merged into Unisoc
Communications Inc.
Cc: overseas.sales@unisoc.com
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
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 4b1a2a8fcc16..37826fac7684 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -320,6 +320,7 @@ ralink Mediatek/Ralink Technology Corp.
ramtron Ramtron International
raspberrypi Raspberry Pi Foundation
raydium Raydium Semiconductor Corp.
+rda Unisoc Communications, Inc.
realtek Realtek Semiconductor Corp.
renesas Renesas Electronics Corporation
richtek Richtek Technology Corporation
--
2.17.1
^ permalink raw reply related
* [PATCH v2 00/15] Add initial RDA8810PL SoC and Orange Pi boards support
From: Manivannan Sadhasivam @ 2018-11-21 3:36 UTC (permalink / raw)
To: olof, arnd, robh+dt, tglx, jason, marc.zyngier, daniel.lezcano,
gregkh, jslaby
Cc: afaerber, linux-arm-kernel, linux-kernel, devicetree,
linux-serial, amit.kucheria, linus.walleij, zhao_steven,
overseas.sales, Manivannan Sadhasivam
Hello,
This patchset adds initial RDA8810PL SoC and Orange Pi boards (2G IoT and
i96) support. RDA8810PL is an ARM Cortex A5 based SoC with Vivante's GC860
GPU. The SoC has been added as a new ARM sub architecture with myself
and Andreas as the maintainers.
More information about the boards can be found in below links:
1. Orange Pi 2G-IoT - http://www.orangepi.org/OrangePi2GIOT/
2. Orange Pi i96 - https://www.96boards.org/product/orangepi-i96/
This patchset is based on the initial revision sent out by Andreas long
back (http://lists.infradead.org/pipermail/linux-arm-kernel/2017-June/515951.html).
I have extended his patchset with proper irqchip and UART drivers. Now,
boards can boot into initramfs with console at UART2.
Thanks,
Mani
Changes in v2:
* Used readl/writel_relaxed calls for both irqchip and timer drivers as
per Marc's review.
* Implemented the logic to prevent counter wrapping during read as
suggested by Marc.
* Used the timer-of API as per Daniel's suggestion.
* Added description about the timer in both commit log and driver.
* Changed the Vendor name for RDA to Unisoc Communications Inc.
* Removed the soc node level and cleaned up devicetrees as per Rob's
review.
* Merged interrupt controller DT patch to SoC.
* Moved aliases to board dts as per Arnd's suggestion.
* Removed RDA Micro support mail address and used Unisoc one and added
my missing signed off by tag as per Andreas's comments.
Andreas Färber (4):
dt-bindings: Add RDA Micro vendor prefix
dt-bindings: arm: Document RDA8810PL and reference boards
ARM: Prepare RDA8810PL SoC
dt-bindings: serial: Document RDA Micro UART
Manivannan Sadhasivam (11):
dt-bindings: interrupt-controller: Document RDA8810PL intc
arm: dts: Add devicetree for RDA8810PL SoC
arm: dts: Add devicetree for OrangePi 2G IoT board
arm: dts: Add devicetree for OrangePi i96 board
irqchip: Add RDA8810PL interrupt driver
dt-bindings: timer: Document RDA8810PL SoC timer
arm: dts: rda8810pl: Add timer support
clocksource: Add clock driver for RDA8810PL SoC
arm: dts: rda8810pl: Add interrupt support for UART
tty: serial: Add RDA8810PL UART driver
MAINTAINERS: Add entry for RDA Micro SoC architecture
.../admin-guide/kernel-parameters.txt | 6 +
Documentation/devicetree/bindings/arm/rda.txt | 17 +
.../interrupt-controller/rda,8810pl-intc.txt | 61 ++
.../bindings/serial/rda,8810pl-uart.txt | 15 +
.../bindings/timer/rda,8810pl-timer.txt | 21 +
.../devicetree/bindings/vendor-prefixes.txt | 1 +
MAINTAINERS | 14 +
arch/arm/Kconfig | 2 +
arch/arm/Makefile | 1 +
arch/arm/boot/dts/Makefile | 3 +
.../boot/dts/rda8810pl-orangepi-2g-iot.dts | 40 +
arch/arm/boot/dts/rda8810pl-orangepi-i96.dts | 40 +
arch/arm/boot/dts/rda8810pl.dtsi | 99 +++
arch/arm/mach-rda/Kconfig | 9 +
arch/arm/mach-rda/Makefile | 1 +
drivers/clocksource/Kconfig | 8 +
drivers/clocksource/Makefile | 1 +
drivers/clocksource/timer-rda.c | 195 ++++
drivers/irqchip/Kconfig | 4 +
drivers/irqchip/Makefile | 1 +
drivers/irqchip/irq-rda-intc.c | 113 +++
drivers/tty/serial/Kconfig | 19 +
drivers/tty/serial/Makefile | 1 +
drivers/tty/serial/rda-uart.c | 831 ++++++++++++++++++
include/uapi/linux/serial_core.h | 3 +
25 files changed, 1506 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/rda.txt
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt
create mode 100644 Documentation/devicetree/bindings/serial/rda,8810pl-uart.txt
create mode 100644 Documentation/devicetree/bindings/timer/rda,8810pl-timer.txt
create mode 100644 arch/arm/boot/dts/rda8810pl-orangepi-2g-iot.dts
create mode 100644 arch/arm/boot/dts/rda8810pl-orangepi-i96.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/clocksource/timer-rda.c
create mode 100644 drivers/irqchip/irq-rda-intc.c
create mode 100644 drivers/tty/serial/rda-uart.c
--
2.17.1
^ permalink raw reply
* RE: [PATCH 12/14] ARM: dts: milbeaut: Add device tree set for the Milbeaut M10V board
From: sugaya.taichi @ 2018-11-21 2:36 UTC (permalink / raw)
To: robh+dt, arm
Cc: linux-clk, devicetree, linux-arm-kernel, linux-kernel,
linux-serial, mturquette, sboyd, mark.rutland, gregkh,
daniel.lezcano, tglx, linux, jslaby, masami.hiramatsu,
jaswinder.singh
In-Reply-To: <CAL_JsqJiZnoUK7sgNYGpxzcF+rjpj6cV54jW2z4_7hui-WWenA@mail.gmail.com>
Hi Rob
Thank you for your comments.
> -----Original Message-----
> From: Rob Herring [mailto:robh+dt@kernel.org]
> Sent: Tuesday, November 20, 2018 12:46 AM
> To: Sugaya, Taichi; ARM-SoC Maintainers
> Cc: linux-clk; devicetree@vger.kernel.org; moderated list:ARM/FREESCALE
> IMX / MXC ARM ARCHITECTURE; linux-kernel@vger.kernel.org; open list:SERIAL
> DRIVERS; Michael Turquette; Stephen Boyd; Mark Rutland; Greg Kroah-Hartman;
> Daniel Lezcano; Thomas Gleixner; Russell King; Jiri Slaby; Masami Hiramatsu;
> Jassi Brar
> Subject: Re: [PATCH 12/14] ARM: dts: milbeaut: Add device tree set for the
> Milbeaut M10V board
>
> On Sun, Nov 18, 2018 at 7:01 PM Sugaya Taichi
> <sugaya.taichi@socionext.com> wrote:
> >
> > Add devicetree for Milbeaut M10V SoC and M10V Evaluation board.
> >
> > Signed-off-by: Sugaya Taichi <sugaya.taichi@socionext.com>
> > ---
> > arch/arm/boot/dts/Makefile | 1 +
> > arch/arm/boot/dts/milbeaut-m10v-evb.dts | 35 +++
> > arch/arm/boot/dts/milbeaut-m10v-evb.dtsi | 17 ++
> > arch/arm/boot/dts/milbeaut-m10v.dtsi | 510
> +++++++++++++++++++++++++++++++
>
> I'm not seeing why you need this split into 3 files instead of 2.
Correct...
Modify using 2 files.
>
> > 4 files changed, 563 insertions(+)
> > create mode 100644 arch/arm/boot/dts/milbeaut-m10v-evb.dts
> > create mode 100644 arch/arm/boot/dts/milbeaut-m10v-evb.dtsi
> > create mode 100644 arch/arm/boot/dts/milbeaut-m10v.dtsi
>
> Build your dtb with 'W=12' and fix any warnings.
Ah, I may have missed warnings. will confirm and fix them.
>
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index b0e966d..ee6220b 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -1207,6 +1207,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
> > mt7623n-bananapi-bpi-r2.dtb \
> > mt8127-moose.dtb \
> > mt8135-evbp1.dtb
> > +dtb-$(CONFIG_MACH_M10V_EVB) += milbeaut-m10v-evb.dtb
>
> ARM SoC maintainers,
>
> Can we start at least start putting new SoCs in vendor subdirs? This
> one doesn't appear to share anything.
>
> > dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb
> > dtb-$(CONFIG_ARCH_ASPEED) += \
> > aspeed-ast2500-evb.dtb \
> > diff --git a/arch/arm/boot/dts/milbeaut-m10v-evb.dts
> b/arch/arm/boot/dts/milbeaut-m10v-evb.dts
> > new file mode 100644
> > index 0000000..af8d6e4
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/milbeaut-m10v-evb.dts
> > @@ -0,0 +1,35 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/* Socionext Milbeaut M10V Evaluation Board */
> > +/dts-v1/;
> > +#include "milbeaut-m10v-evb.dtsi"
> > +
> > +/ {
> > + cpus {
>
> cpus is not board specific.
Yes..
Cpus Should be described in "milbeaut-m10v-evb.dtsi".
>
> > + cpu@0 {
>
> Unit-address is wrong. Should be '@f00' to match reg.
Ok.
>
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf00>;
> > + };
> > + cpu@1 {
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf01>;
> > + };
> > +
> > + cpu@2 {
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf02>;
> > + };
> > + cpu@3 {
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf03>;
> > + };
> > +
> > + };
> > + trampoline: trampoline@0x0000F100 {
>
> Also, not board specific.
>
> This should be under a simple-bus node. The unit-address should be '@f100'.
>
> > + compatible = "socionext,smp-trampoline";
> > + reg = <0x0000F100 0x100>;
>
> Use lowercase hex.
OKay.
>
> > + };
> > +};
> > diff --git a/arch/arm/boot/dts/milbeaut-m10v-evb.dtsi
> b/arch/arm/boot/dts/milbeaut-m10v-evb.dtsi
> > new file mode 100644
> > index 0000000..fc35c0b
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/milbeaut-m10v-evb.dtsi
> > @@ -0,0 +1,17 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +#include "milbeaut-m10v.dtsi"
> > +
> > +/ {
> > + model = "Socionext M10V EVB";
> > + compatible = "socionext,sc2000a",
> "socionext,milbeaut-m10v-evb";
>
> Wrong order. And these need to be documented.
I got it.
>
> > + interrupt-parent = <&gic>;
> > + chosen {
> > + bootargs = "consoleblank=0 loglevel=8 init=/sbin/finit
> root=/dev/mmcblk0p2 rootwait ro console=ttyUSI0,115200n8
> console=/dev/tty1 ";
>
> Most of these options look user specific and should be dropped. Use
> 'stdout-path' to specify the default console.
OK, try to use it.
>
> > + linux,initrd-start = <0x4A000000>;
> > + linux,initrd-end = <0x4BF00000>;
>
> initrd should be filled in by the bootloader.
OK.
>
> > + };
> > + memory {
>
> Needs a unit-address.
OK.
>
> > + device_type = "memory";
> > + reg = <0x40000000 0x80000000>;
> > + };
> > +};
> > diff --git a/arch/arm/boot/dts/milbeaut-m10v.dtsi
> b/arch/arm/boot/dts/milbeaut-m10v.dtsi
> > new file mode 100644
> > index 0000000..4745dc6
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/milbeaut-m10v.dtsi
> > @@ -0,0 +1,510 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +#include <dt-bindings/interrupt-controller/irq.h>
> > +#include <dt-bindings/input/input.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/interrupt-controller/arm-gic.h>
> > +
> > +#include "skeleton.dtsi"
>
> Don't use skeleton.dtsi. It is deprecated.
I got it. Get rid of it.
>
> > +
> > +/ {
> > + compatible = "socionext,sc2000a";
> > + interrupt-parent = <&gic>;
> > + cpus {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + };
>
> Just move this to the other file with the cpu nodes.
I see.
I'd like to select the way to move the cpu nodes to this file.
>
> > +
> > +
> > + gic: interrupt-controller@1d000000 {
> > + compatible = "arm,cortex-a7-gic";
> > + interrupt-controller;
> > + #interrupt-cells = <3>;
> > + reg = <0x1d001000 0x1000>, /* Distributer base and size
> */
> > + <0x1d002000 0x1000>; /* CPU I/f base and size */
> > + };
> > +
> > + m10v-clk-tree@ {
>
> unit-address
OK, add it.
>
> > + compatible = "socionext,milbeaut-m10v-clk-regs";
> > + reg = <0x1d021000 0x4000>;
> > +
> > + clocks {
> > + #address-cells = <0>;
> > + #size-cells = <0>;
> > +
> > + uclk40xi: uclk40xi {
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <40000000>;
> > + };
>
> Any fixed clocks from oscillators on the board should be at the top
> level and defined as inputs to the clock controller node with a
> 'clocks' property.
OK.
>
> > +
> > + aumclki: aumclki {
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <20000000>;
> > + };
> > +
> > + rtc32k: rtc32k {
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <32768>;
> > + };
> > +
> > + pxrefclk: pxrefclk {
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <100000000>;
> > + };
> > +
> > + pcisuppclk: pcisuppclk {
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + clock-div = <20>;
> > + clock-mult = <1>;
> > + };
>
> Please look at any recent example of clock bindings. We don't try to
> describe every divider, mux, gate, etc. in DT, but just clock
> controller blocks with all the output clocks enumerated in clock
> cells.
OK, study them at first.
>
> > +
> > + usb2_clk: usb2_clk {
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + clock-div = <2>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll1: pll1 {
> > + compatible =
> > +
> "socionext,milbeaut-m10v-pll-fixed-factor";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + offset = <1>;
> > + clock-div = <1>;
> > + clock-mult = <40>;
> > + };
> > +
> > + pll2: pll2 {
> > + compatible =
> > +
> "socionext,milbeaut-m10v-pll-fixed-factor";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + offset = <2>;
> > + clock-div = <1>;
> > + clock-mult = <30>;
> > + };
> > +
> > + pll6: pll6 { /* CLK 6-1 */
> > + compatible =
> > +
> "socionext,milbeaut-m10v-pll-fixed-factor";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + offset = <7>;
> > + clock-div = <1>;
> > + clock-mult = <35>;
> > + };
> > +
> > + pll7: pll7 { /* CLK 7-1 */
> > + compatible =
> > +
> "socionext,milbeaut-m10v-pll-fixed-factor";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + offset = <8>;
> > + clock-div = <1>;
> > + clock-mult = <40>;
> > + };
> > +
> > + pll9: pll9 { /* CA7CLK, ATCLK */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + clock-div = <1>;
> > + clock-mult = <33>;
> > + };
> > +
> > + pll10: pll10 {
> > + compatible =
> > +
> "socionext,milbeaut-m10v-pll-fixed-factor";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + offset = <10>;
> > + clock-div = <5>;
> > + clock-mult = <108>;
> > + };
> > +
> > + pll11: pll11 { /* CLK 11-1 */
> > + compatible =
> > +
> "socionext,milbeaut-m10v-pll-fixed-factor";
> > + #clock-cells = <0>;
> > + clocks = <&uclk40xi>;
> > + offset = <12>;
> > + clock-div = <2>;
> > + clock-mult = <75>;
> > + };
> > +
> > + emmcclk: emmcclk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll11>;
> > + offset = <28>; /* EMMCCLK */
> > + mask = <0x3>;
> > + ratios = <15 0x7 10 0x6 9 0x5 8 0x4>;
> > + };
> > +
> > + pll1_div_1_2: pll1_div_1_2 { /* CLK 1-2 */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll1>;
> > + clock-div = <2>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll2_div_1_2: pll2_div_1_2 { /* CLK 2-2 */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll2>;
> > + clock-div = <2>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll6_div_1_2: pll6_div_1_2 { /* CLK 6-2 */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll6>;
> > + clock-div = <2>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll6_div_1_3: pll6_div_1_3 { /* CLK 6-3 */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll6>;
> > + clock-div = <3>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll7_div_1_2: pll7_div_1_2 { /* CLK 7-2 */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll7>;
> > + clock-div = <2>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll7_div_1_5: pll7_div_1_5 { /* CLK 7-5 */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll7>;
> > + clock-div = <5>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll10_div_1_2: pll10_div_1_2 { /* CLK 10-2 */
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll10>;
> > + clock-div = <2>;
> > + clock-mult = <1>;
> > + };
> > +
> > + spiclk_mux_0: spiclk_mux_0 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll10_div_1_2>;
> > + offset = <227>; /* SPICLK */
> > + mask = <0x3>;
> > + ratios = <4 0x5 2 0x4>;
> > + };
> > +
> > + spiclk_mux_1: spiclk_mux_1 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll7_div_1_2>;
> > + offset = <227>; /* SPICLK */
> > + mask = <0x3>;
> > + ratios = <8 0x6>;
> > + };
> > +
> > + spiclk: spiclk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-mux";
> > + #clock-cells = <0>;
> > + clocks = <&spiclk_mux_0>,
> <&spiclk_mux_1>;
> > + };
> > +
> > + ca7wdclk: ca7wdclk {
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll2_div_1_2>;
> > + clock-div = <12>;
> > + clock-mult = <1>;
> > + };
> > +
> > + pll9_div_1_2: pll9_div_1_2 {
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll9>;
> > + clock-div = <2>;
> > + clock-mult = <1>;
> > + };
> > +
> > + mclk400: mclk400 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <295>; /* MCLK400 */
> > + mask = <0x3>;
> > + ratios = <4 0x7 2 0x5>;
> > + };
> > +
> > + mclk200: mclk200 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <291>; /* MCLK200 */
> > + mask = <0x7>;
> > + ratios = <8 0xf 4 0xb>;
> > + };
> > +
> > + aclk400: aclk400 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <288>; /* ACLK400 */
> > + mask = <0x3>;
> > + ratios = <4 0x7 2 0x5>;
> > + };
> > +
> > + aclk300: aclk300 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll2_div_1_2>;
> > + offset = <352>; /* ACLK300 */
> > + mask = <0x1>;
> > + ratios = <6 0x3 4 0x2>;
> > + };
> > +
> > + aclk: aclk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <276>; /* ACLK */
> > + mask = <0x7>;
> > + ratios = <8 0xf 4 0xb>;
> > + };
> > +
> > + aclkexs: aclkexs {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <272>; /* ACLKEXS */
> > + mask = <0x7>;
> > + ratios = <8 0xf 6 0xd 5 0xc 4 0xb>;
> > + };
> > +
> > + hclk: hclk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <263>; /* HCLK */
> > + mask = <0xf>;
> > + ratios = <16 0x1f 8 0x17>;
> > + };
> > +
> > + hclkbmh: hclkbmh {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <268>; /* HCLKBMH */
> > + mask = <0x7>;
> > + ratios = <8 0xf 4 0xb>;
> > + };
> > +
> > + pclk: pclk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + offset = <256>; /* PCLK */
> > + mask = <0x3f>;
> > + ratios = <32 0x5f 16 0x4f>;
> > + };
> > +
> > + pclkca7wd: pclkca7wd {
> > + compatible = "fixed-factor-clock";
> > + #clock-cells = <0>;
> > + clocks = <&pll1_div_1_2>;
> > + clock-div = <16>;
> > + clock-mult = <1>;
> > + };
> > +
> > + rclk: rclk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll10_div_1_2>;
> > + offset = <0>; /* RCLK */
> > + mask = <0x3>;
> > + ratios = <64 0x7 48 0x6 32 0x5 16 0x4>;
> > + };
> > +
> > + uhs1clk0: uhs1clk0 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll7>;
> > + offset = <3>; /* UHS1CLK0 */
> > + mask = <0xf>;
> > + ratios = <16 0x14 8 0x13 4 0x12 3 0x11
> 2 0x10>;
> > + };
> > +
> > + uhs1clk1_div1: uhs1clk1_div1 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll7>;
> > + offset = <8>; /* UHS1CLK1 */
> > + mask = <0xf>;
> > + ratios = <16 0x14 8 0x13>;
> > + };
> > +
> > + uhs1clk1_div2: uhs1clk1_div2 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll6_div_1_2>;
> > + offset = <8>; /* UHS1CLK1 */
> > + mask = <0xf>;
> > + ratios = <1 0x18>;
> > + };
> > +
> > + uhs1clk1: uhs1clk1 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-mux";
> > + #clock-cells = <0>;
> > + clocks = <&uhs1clk1_div1>,
> <&uhs1clk1_div2>;
> > + };
> > +
> > + uhs1clk2_div1: uhs1clk2_div1 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll7>;
> > + offset = <13>; /* UHS1CLK2 */
> > + mask = <0xf>;
> > + ratios = <16 0x14 8 0x13 4 0x12>;
> > + };
> > +
> > + uhs1clk2_div2: uhs1clk2_div2 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll6_div_1_2>;
> > + offset = <13>; /* UHS1CLK2 */
> > + mask = <0xf>;
> > + ratios = <1 0x18>;
> > + };
> > +
> > + uhs1clk2: uhs1clk2 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-mux";
> > + #clock-cells = <0>;
> > + clocks = <&uhs1clk2_div1>,
> <&uhs1clk2_div2>;
> > + };
> > +
> > + uhs2clk: uhs2clk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll6_div_1_3>;
> > + offset = <18>; /* UHS2CLK */
> > + mask = <0x7>;
> > + ratios = <18 0xf 16 0xe 14 0xd 13 0xc
> > + 12 0xb 11 0xa 10 0x9 9
> 0x8>;
> > + };
> > +
> > + nfclk_div1: nfclk_div1 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll7_div_1_2>;
> > + offset = <22>; /* NFCLK */
> > + mask = <0x1f>;
> > + ratios = <40 0x24 16 0x23 13 0x22 10 0x21
> > + 8 0x20>;
> > + };
> > +
> > + nfclk_div2: nfclk_div2 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll7_div_1_5>;
> > + offset = <22>; /* NFCLK */
> > + mask = <0x1f>;
> > + ratios = <10 0x28>;
> > + };
> > +
> > + nfclk: nfclk {
> > + compatible =
> "socionext,milbeaut-m10v-clk-mux";
> > + #clock-cells = <0>;
> > + clocks = <&nfclk_div1>, <&nfclk_div2>;
> > + };
> > +
> > + clk5: clk5 {
> > + compatible =
> "socionext,milbeaut-m10v-clk-div";
> > + #clock-cells = <0>;
> > + clocks = <&pll10_div_1_2>;
> > + offset = <239>; /* NETAUSEL */
> > + mask = <0x3>;
> > + ratios = <64 0x7 48 0x6 32 0x5 16 0x4>;
> > + };
> > + };
> > + };
> > +
> > + peri-timer@1e000000 { /* 32-bit Reload Timers */
>
> timer@1e000050
>
> This and all memory mapped peripherals go under simple-bus nodes(s).
Okay.
>
> > + compatible = "socionext,milbeaut-m10v-timer";
> > + reg = <0x1e000050 0x10>, <0x1e000060 0x10>;
> > + interrupts = <0 91 4>;
> > + clocks = <&rclk>;
> > + };
> > +
> > + timer { /* The Generic Timer */
> > + compatible = "arm,armv7-timer";
> > + interrupts = <GIC_PPI 13
> > + (GIC_CPU_MASK_SIMPLE(4) |
> IRQ_TYPE_LEVEL_HIGH)>,
> > + <GIC_PPI 14
> > + (GIC_CPU_MASK_SIMPLE(4) |
> IRQ_TYPE_LEVEL_HIGH)>,
> > + <GIC_PPI 11
> > + (GIC_CPU_MASK_SIMPLE(4) |
> IRQ_TYPE_LEVEL_HIGH)>,
> > + <GIC_PPI 10
> > + (GIC_CPU_MASK_SIMPLE(4) |
> IRQ_TYPE_LEVEL_HIGH)>;
> > + clock-frequency = <40000000>;//40M
> > + always-on;
> > + arm,cpu-registers-not-fw-configured;
>
> This was a work-around for some existing platforms. New platforms
> should fix the firmware/bootloader.
OK. try to fix without the property.
>
> > + };
> > +
> > + dummy_clk: dummy_clk {
> > + compatible = "fixed-clock";
> > + #clock-cells = <0>;
> > + clock-frequency = <50000000>;
> > + };
> > +
> > + pinctrl: pinctrl@1d022000 {
> > + compatible = "socionext,milbeaut-m10v-pinctrl";
> > + reg = <0x1d022000 0x1000>,
> > + <0x1c26f000 0x1000>;
> > + reg-names = "pinctrl", "exiu";
> > + gpio-controller;
> > + #gpio-cells = <2>;
> > + interrupt-controller;
> > + #interrupt-cells = <2>;
> > + clocks = <&dummy_clk>;
>
> Please use a real clock or make clocks optional.
OK.
>
> > + interrupts = <0 54 4>, <0 55 4>, <0 56 4>, <0 57 4>,
> > + <0 58 4>, <0 59 4>, <0 60 4>, <0 61 4>,
> > + <0 62 4>, <0 63 4>, <0 64 4>, <0 65 4>,
> > + <0 66 4>, <0 67 4>, <0 68 4>, <0 69 4>;
> > + interrupt-names = "pin-48", "pin-49", "pin-50",
> "pin-51",
> > + "pin-52", "pin-53", "pin-54", "pin-55",
> > + "pin-56", "pin-57", "pin-58", "pin-59",
> > + "pin-60", "pin-61", "pin-62", "pin-63";
> > +
> > + usio1_pins: usio1_pins {
> > + pins = "PE4", "PE5", "P87";
> > + function = "usio1";
> > + };
> > + };
> > +
> > + usio1: usio_uart@1e700010 { /* PE4, PE5 */
>
> serial@...
OK.
>
> > + /* Enable this as ttyUSI0 */
> > + index = <0>;
>
> Drop this. aliases node is the right way to do this.
I see. try to use the way.
Thanks
Sugaya Taichi
>
> > + compatible = "socionext,milbeaut-m10v-usio-uart";
> > + reg = <0x1e700010 0x10>;
> > + interrupts = <0 141 0x4>, <0 149 0x4>;
> > + interrupt-names = "rx", "tx";
> > + clocks = <&hclk>;
> > + };
> > +};
> > --
> > 1.9.1
> >
^ permalink raw reply
* Re: [PATCH 0/4] serdev: make serdev_device_write() more usable
From: Johan Hovold @ 2018-11-20 17:11 UTC (permalink / raw)
To: Rob Herring
Cc: Johan Hovold, Greg Kroah-Hartman, Jiri Slaby, Andrey Smirnov,
open list:SERIAL DRIVERS, linux-kernel@vger.kernel.org
In-Reply-To: <CAL_JsqJyTVsN1=YpeHNtTr+Tpw9Qmqd=mWfhg-d3WgzUX7DqKw@mail.gmail.com>
On Mon, Nov 19, 2018 at 09:16:35AM -0600, Rob Herring wrote:
> On Wed, Nov 14, 2018 at 9:10 AM Johan Hovold <johan@kernel.org> wrote:
> >
> > This series make the synchronous serdev_device_write() helper more
> > usable by
> >
> > 1) allowing drivers to pass a zero timeout to indicate that they
> > want to wait forever;
> >
> > 2) returning the number of bytes actually written (buffered)
> > if the helper is interrupted;
> >
> > 3) make the helper use interruptible wait so that the helper can
> > be used on behalf of user space.
> >
> > Finally, the two write functions are documented using kernel-doc.
> >
> > Turns out I was using the wrong timeout for two gnss drivers that
> > expected the helper to wait indefinitely. I've fixed up those separately
> > (by using MAX_SCHEDULE_TIMEOUT for now), but for the helper to be usable
> > when using flow control we really want it to be interruptible.
> >
> > Besides the two gnss drivers, there's currently only one other in-kernel
> > user of this helper and that driver (rave-sp) uses a non-zero timeout
> > and doesn't check the return value and therefore does not need to be
> > updated.
> >
> > Note that this series depends on the two above mentioned GNSS fixes
> > (submitted for v4.20-rc3).
> >
> > Johan
> >
> >
> > Johan Hovold (4):
> > serdev: use zero to indicate infinite write timeout
> > serdev: make synchronous write return bytes written
> > serdev: make synchronous write helper interruptible
> > serdev: document the write functions using kernel-doc
>
> Other than the one nit, for the series:
>
> Reviewed-by: Rob Herring <robh@kernel.org>
Thanks for reviewing.
Greg, note that these still depend on the two gnss fixes currently in
your char-misc-linus branch.
Johan
^ permalink raw reply
* Re: [PATCH 2/4] serdev: make synchronous write return bytes written
From: Johan Hovold @ 2018-11-20 17:09 UTC (permalink / raw)
To: Rob Herring
Cc: Johan Hovold, Greg Kroah-Hartman, Jiri Slaby, Andrey Smirnov,
open list:SERIAL DRIVERS, linux-kernel@vger.kernel.org
In-Reply-To: <CAL_JsqLuF-t_Rf5Hh400=aeiLT_ahTfE0a_czZ6XRG-mD9xmig@mail.gmail.com>
On Mon, Nov 19, 2018 at 09:15:37AM -0600, Rob Herring wrote:
> On Wed, Nov 14, 2018 at 9:10 AM Johan Hovold <johan@kernel.org> wrote:
> >
> > Make the synchronous serdev_device_write() helper behave analogous to
> > the asynchronous serdev_device_write_buf() by returning the number of
> > bytes written (or rather buffered) also on timeout.
> >
> > This will allow drivers to distinguish the case where data was partially
> > written from the case where no data was written.
> >
> > Also update the only two users that checked the return value.
> >
> > Signed-off-by: Johan Hovold <johan@kernel.org>
> > ---
> > drivers/gnss/serial.c | 2 +-
> > drivers/gnss/sirf.c | 2 +-
> > drivers/tty/serdev/core.c | 12 ++++++++++--
> > 3 files changed, 12 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gnss/serial.c b/drivers/gnss/serial.c
> > index 31e891f00175..def64b36d994 100644
> > --- a/drivers/gnss/serial.c
> > +++ b/drivers/gnss/serial.c
> > @@ -65,7 +65,7 @@ static int gnss_serial_write_raw(struct gnss_device *gdev,
> >
> > /* write is only buffered synchronously */
> > ret = serdev_device_write(serdev, buf, count, MAX_SCHEDULE_TIMEOUT);
> > - if (ret < 0)
> > + if (ret < 0 || ret < count)
>
> The 2nd condition covers the 1st condition.
Actually it does not; ret is signed and count is unsigned, so this is
needed to catch negative errnos which would otherwise become larger than
count due to integer promotion.
> Though I guess this will all change anyways when you address the FIXME
> below.
Not sure about that yet. If wait_until_sent is interrupted the data has
already been buffered and we need to return that count. So I think I'll
just drop the FIXME.
> > return ret;
> >
> > /* FIXME: determine if interrupted? */
Thanks,
Johan
^ permalink raw reply
* Re: [PATCH v2 01/10] mailbox: Support blocking transfers in atomic context
From: Thierry Reding @ 2018-11-20 15:29 UTC (permalink / raw)
To: Jassi Brar
Cc: Devicetree List, Greg KH, mliljeberg, Mikko Perttunen, talho,
linux-serial, jslaby, linux-tegra, ppessi, Jon Hunter,
linux-arm-kernel
In-Reply-To: <CABb+yY3HwvG6sSKnweiDpyg85Fk8Q9hOVaF-s7gv4RDzEoaGqA@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 2863 bytes --]
On Sat, Nov 17, 2018 at 11:27:17AM -0600, Jassi Brar wrote:
> On Mon, Nov 12, 2018 at 9:18 AM Thierry Reding <thierry.reding@gmail.com> wrote:
> >
> > From: Thierry Reding <treding@nvidia.com>
> >
> > The mailbox framework supports blocking transfers via completions for
> > clients that can sleep. In order to support blocking transfers in cases
> > where the transmission is not permitted to sleep, add a new ->flush()
> > callback that controller drivers can implement to busy loop until the
> > transmission has been completed. This will automatically be called when
> > available and interrupts are disabled for clients that request blocking
> > transfers.
> >
> > Signed-off-by: Thierry Reding <treding@nvidia.com>
> > ---
> > drivers/mailbox/mailbox.c | 8 ++++++++
> > include/linux/mailbox_controller.h | 4 ++++
> > 2 files changed, 12 insertions(+)
> >
> > diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c
> > index 674b35f402f5..0eaf21259874 100644
> > --- a/drivers/mailbox/mailbox.c
> > +++ b/drivers/mailbox/mailbox.c
> > @@ -267,6 +267,14 @@ int mbox_send_message(struct mbox_chan *chan, void *mssg)
> > unsigned long wait;
> > int ret;
> >
> > + if (irqs_disabled() && chan->mbox->ops->flush) {
> > + ret = chan->mbox->ops->flush(chan, chan->cl->tx_tout);
> > + if (ret < 0)
> > + tx_tick(chan, ret);
> > +
> > + return ret;
> > + }
> > +
> This is hacky. I think we can do without busy waiting in atomic
> context. You could queue locally while in atomic context and then
> transfer in blocking mode. I don't think we should worry about the
> 'throughput' as there already is no h/w rate control even with
> busy-waiting.
I actually tried to do that before I added this flushing mechanism. The
problem is, like you said, one of rate control. As mentioned in the
cover letter, the shared mailboxes implemented in tegra-hsp are used as
RX and TX channels for the TCU, which is like a virtual UART. The TTY
driver included as part of this series will use one of the mailboxes to
transmit data that is written to the console. The problem is that if
these transmissions are not rate-limited on the TTY driver side, the
console will just keep writing data and eventually overflow the buffer
that we have in the mailbox subsystem.
The problem is that data comes in at a much higher rate than what we can
output. This is especially true at boot when the TCU console takes over
and the whole log buffer is dumped on it.
So the only way to rate-limit is to either make mbox_send_message()
block, but that can only be done in non-atomic context. The console,
however, will always run in atomic context, so the only way to do rate-
limiting is by busy looping.
Thierry
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply
* [PATCH 3.18 71/90] arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
From: Greg Kroah-Hartman @ 2018-11-19 16:29 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, H. Peter Anvin (Intel), Jiri Slaby,
Al Viro, Richard Henderson, Ivan Kokshaysky, Matt Turner,
Thomas Gleixner, Kate Stewart, Philippe Ombredanne,
Eugene Syromiatnikov, linux-alpha, linux-serial, Johan Hovold,
Alan Cox
In-Reply-To: <20181119162620.585061184@linuxfoundation.org>
3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: H. Peter Anvin (Intel) <hpa@zytor.com>
commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
using arbitrary flags. Because BOTHER is not defined, the general
Linux code doesn't allow setting arbitrary baud rates, and because
CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
Resolve both problems by #defining BOTHER to 037 on Alpha.
However, userspace still needs to know if setting BOTHER is actually
safe given legacy kernels (does anyone actually care about that on
Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
though they use the same structure. Define struct termios2 just for
compatibility; it is the exact same structure as struct termios. In a
future patchset, this will be cleaned up so the uapi headers are
usable from libc.
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Eugene Syromiatnikov <esyr@redhat.com>
Cc: <linux-alpha@vger.kernel.org>
Cc: <linux-serial@vger.kernel.org>
Cc: Johan Hovold <johan@kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/alpha/include/asm/termios.h | 8 +++++++-
arch/alpha/include/uapi/asm/ioctls.h | 5 +++++
arch/alpha/include/uapi/asm/termbits.h | 17 +++++++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
--- a/arch/alpha/include/asm/termios.h
+++ b/arch/alpha/include/asm/termios.h
@@ -72,9 +72,15 @@
})
#define user_termios_to_kernel_termios(k, u) \
- copy_from_user(k, u, sizeof(struct termios))
+ copy_from_user(k, u, sizeof(struct termios2))
#define kernel_termios_to_user_termios(u, k) \
+ copy_to_user(u, k, sizeof(struct termios2))
+
+#define user_termios_to_kernel_termios_1(k, u) \
+ copy_from_user(k, u, sizeof(struct termios))
+
+#define kernel_termios_to_user_termios_1(u, k) \
copy_to_user(u, k, sizeof(struct termios))
#endif /* _ALPHA_TERMIOS_H */
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -31,6 +31,11 @@
#define TCXONC _IO('t', 30)
#define TCFLSH _IO('t', 31)
+#define TCGETS2 _IOR('T', 42, struct termios2)
+#define TCSETS2 _IOW('T', 43, struct termios2)
+#define TCSETSW2 _IOW('T', 44, struct termios2)
+#define TCSETSF2 _IOW('T', 45, struct termios2)
+
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
--- a/arch/alpha/include/uapi/asm/termbits.h
+++ b/arch/alpha/include/uapi/asm/termbits.h
@@ -25,6 +25,19 @@ struct termios {
speed_t c_ospeed; /* output speed */
};
+/* Alpha has identical termios and termios2 */
+
+struct termios2 {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[NCCS]; /* control characters */
+ cc_t c_line; /* line discipline (== c_cc[19]) */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+};
+
/* Alpha has matching termios and ktermios */
struct ktermios {
@@ -147,6 +160,7 @@ struct ktermios {
#define B3000000 00034
#define B3500000 00035
#define B4000000 00036
+#define BOTHER 00037
#define CSIZE 00001400
#define CS5 00000000
@@ -164,6 +178,9 @@ struct ktermios {
#define CMSPAR 010000000000 /* mark or space (stick) parity */
#define CRTSCTS 020000000000 /* flow control */
+#define CIBAUD 07600000
+#define IBSHIFT 16
+
/* c_lflag bits */
#define ISIG 0x00000080
#define ICANON 0x00000100
^ permalink raw reply
* [PATCH 4.4 134/160] arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
From: Greg Kroah-Hartman @ 2018-11-19 16:29 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, H. Peter Anvin (Intel), Jiri Slaby,
Al Viro, Richard Henderson, Ivan Kokshaysky, Matt Turner,
Thomas Gleixner, Kate Stewart, Philippe Ombredanne,
Eugene Syromiatnikov, linux-alpha, linux-serial, Johan Hovold,
Alan Cox
In-Reply-To: <20181119162630.031306128@linuxfoundation.org>
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: H. Peter Anvin (Intel) <hpa@zytor.com>
commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
using arbitrary flags. Because BOTHER is not defined, the general
Linux code doesn't allow setting arbitrary baud rates, and because
CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
Resolve both problems by #defining BOTHER to 037 on Alpha.
However, userspace still needs to know if setting BOTHER is actually
safe given legacy kernels (does anyone actually care about that on
Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
though they use the same structure. Define struct termios2 just for
compatibility; it is the exact same structure as struct termios. In a
future patchset, this will be cleaned up so the uapi headers are
usable from libc.
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Eugene Syromiatnikov <esyr@redhat.com>
Cc: <linux-alpha@vger.kernel.org>
Cc: <linux-serial@vger.kernel.org>
Cc: Johan Hovold <johan@kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/alpha/include/asm/termios.h | 8 +++++++-
arch/alpha/include/uapi/asm/ioctls.h | 5 +++++
arch/alpha/include/uapi/asm/termbits.h | 17 +++++++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
--- a/arch/alpha/include/asm/termios.h
+++ b/arch/alpha/include/asm/termios.h
@@ -72,9 +72,15 @@
})
#define user_termios_to_kernel_termios(k, u) \
- copy_from_user(k, u, sizeof(struct termios))
+ copy_from_user(k, u, sizeof(struct termios2))
#define kernel_termios_to_user_termios(u, k) \
+ copy_to_user(u, k, sizeof(struct termios2))
+
+#define user_termios_to_kernel_termios_1(k, u) \
+ copy_from_user(k, u, sizeof(struct termios))
+
+#define kernel_termios_to_user_termios_1(u, k) \
copy_to_user(u, k, sizeof(struct termios))
#endif /* _ALPHA_TERMIOS_H */
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -31,6 +31,11 @@
#define TCXONC _IO('t', 30)
#define TCFLSH _IO('t', 31)
+#define TCGETS2 _IOR('T', 42, struct termios2)
+#define TCSETS2 _IOW('T', 43, struct termios2)
+#define TCSETSW2 _IOW('T', 44, struct termios2)
+#define TCSETSF2 _IOW('T', 45, struct termios2)
+
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
--- a/arch/alpha/include/uapi/asm/termbits.h
+++ b/arch/alpha/include/uapi/asm/termbits.h
@@ -25,6 +25,19 @@ struct termios {
speed_t c_ospeed; /* output speed */
};
+/* Alpha has identical termios and termios2 */
+
+struct termios2 {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[NCCS]; /* control characters */
+ cc_t c_line; /* line discipline (== c_cc[19]) */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+};
+
/* Alpha has matching termios and ktermios */
struct ktermios {
@@ -147,6 +160,7 @@ struct ktermios {
#define B3000000 00034
#define B3500000 00035
#define B4000000 00036
+#define BOTHER 00037
#define CSIZE 00001400
#define CS5 00000000
@@ -164,6 +178,9 @@ struct ktermios {
#define CMSPAR 010000000000 /* mark or space (stick) parity */
#define CRTSCTS 020000000000 /* flow control */
+#define CIBAUD 07600000
+#define IBSHIFT 16
+
/* c_lflag bits */
#define ISIG 0x00000080
#define ICANON 0x00000100
^ permalink raw reply
* [PATCH 4.9 49/83] arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
From: Greg Kroah-Hartman @ 2018-11-19 16:29 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, H. Peter Anvin (Intel), Jiri Slaby,
Al Viro, Richard Henderson, Ivan Kokshaysky, Matt Turner,
Thomas Gleixner, Kate Stewart, Philippe Ombredanne,
Eugene Syromiatnikov, linux-alpha, linux-serial, Johan Hovold,
Alan Cox
In-Reply-To: <20181119162612.046511542@linuxfoundation.org>
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: H. Peter Anvin (Intel) <hpa@zytor.com>
commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
using arbitrary flags. Because BOTHER is not defined, the general
Linux code doesn't allow setting arbitrary baud rates, and because
CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
Resolve both problems by #defining BOTHER to 037 on Alpha.
However, userspace still needs to know if setting BOTHER is actually
safe given legacy kernels (does anyone actually care about that on
Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
though they use the same structure. Define struct termios2 just for
compatibility; it is the exact same structure as struct termios. In a
future patchset, this will be cleaned up so the uapi headers are
usable from libc.
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Eugene Syromiatnikov <esyr@redhat.com>
Cc: <linux-alpha@vger.kernel.org>
Cc: <linux-serial@vger.kernel.org>
Cc: Johan Hovold <johan@kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/alpha/include/asm/termios.h | 8 +++++++-
arch/alpha/include/uapi/asm/ioctls.h | 5 +++++
arch/alpha/include/uapi/asm/termbits.h | 17 +++++++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
--- a/arch/alpha/include/asm/termios.h
+++ b/arch/alpha/include/asm/termios.h
@@ -72,9 +72,15 @@
})
#define user_termios_to_kernel_termios(k, u) \
- copy_from_user(k, u, sizeof(struct termios))
+ copy_from_user(k, u, sizeof(struct termios2))
#define kernel_termios_to_user_termios(u, k) \
+ copy_to_user(u, k, sizeof(struct termios2))
+
+#define user_termios_to_kernel_termios_1(k, u) \
+ copy_from_user(k, u, sizeof(struct termios))
+
+#define kernel_termios_to_user_termios_1(u, k) \
copy_to_user(u, k, sizeof(struct termios))
#endif /* _ALPHA_TERMIOS_H */
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -31,6 +31,11 @@
#define TCXONC _IO('t', 30)
#define TCFLSH _IO('t', 31)
+#define TCGETS2 _IOR('T', 42, struct termios2)
+#define TCSETS2 _IOW('T', 43, struct termios2)
+#define TCSETSW2 _IOW('T', 44, struct termios2)
+#define TCSETSF2 _IOW('T', 45, struct termios2)
+
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
--- a/arch/alpha/include/uapi/asm/termbits.h
+++ b/arch/alpha/include/uapi/asm/termbits.h
@@ -25,6 +25,19 @@ struct termios {
speed_t c_ospeed; /* output speed */
};
+/* Alpha has identical termios and termios2 */
+
+struct termios2 {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[NCCS]; /* control characters */
+ cc_t c_line; /* line discipline (== c_cc[19]) */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+};
+
/* Alpha has matching termios and ktermios */
struct ktermios {
@@ -147,6 +160,7 @@ struct ktermios {
#define B3000000 00034
#define B3500000 00035
#define B4000000 00036
+#define BOTHER 00037
#define CSIZE 00001400
#define CS5 00000000
@@ -164,6 +178,9 @@ struct ktermios {
#define CMSPAR 010000000000 /* mark or space (stick) parity */
#define CRTSCTS 020000000000 /* flow control */
+#define CIBAUD 07600000
+#define IBSHIFT 16
+
/* c_lflag bits */
#define ISIG 0x00000080
#define ICANON 0x00000100
^ permalink raw reply
* [PATCH 4.14 066/124] arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
From: Greg Kroah-Hartman @ 2018-11-19 16:28 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, H. Peter Anvin (Intel), Jiri Slaby,
Al Viro, Richard Henderson, Ivan Kokshaysky, Matt Turner,
Thomas Gleixner, Kate Stewart, Philippe Ombredanne,
Eugene Syromiatnikov, linux-alpha, linux-serial, Johan Hovold,
Alan Cox
In-Reply-To: <20181119162612.951907286@linuxfoundation.org>
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: H. Peter Anvin (Intel) <hpa@zytor.com>
commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
using arbitrary flags. Because BOTHER is not defined, the general
Linux code doesn't allow setting arbitrary baud rates, and because
CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
Resolve both problems by #defining BOTHER to 037 on Alpha.
However, userspace still needs to know if setting BOTHER is actually
safe given legacy kernels (does anyone actually care about that on
Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
though they use the same structure. Define struct termios2 just for
compatibility; it is the exact same structure as struct termios. In a
future patchset, this will be cleaned up so the uapi headers are
usable from libc.
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Eugene Syromiatnikov <esyr@redhat.com>
Cc: <linux-alpha@vger.kernel.org>
Cc: <linux-serial@vger.kernel.org>
Cc: Johan Hovold <johan@kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/alpha/include/asm/termios.h | 8 +++++++-
arch/alpha/include/uapi/asm/ioctls.h | 5 +++++
arch/alpha/include/uapi/asm/termbits.h | 17 +++++++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
--- a/arch/alpha/include/asm/termios.h
+++ b/arch/alpha/include/asm/termios.h
@@ -73,9 +73,15 @@
})
#define user_termios_to_kernel_termios(k, u) \
- copy_from_user(k, u, sizeof(struct termios))
+ copy_from_user(k, u, sizeof(struct termios2))
#define kernel_termios_to_user_termios(u, k) \
+ copy_to_user(u, k, sizeof(struct termios2))
+
+#define user_termios_to_kernel_termios_1(k, u) \
+ copy_from_user(k, u, sizeof(struct termios))
+
+#define kernel_termios_to_user_termios_1(u, k) \
copy_to_user(u, k, sizeof(struct termios))
#endif /* _ALPHA_TERMIOS_H */
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -32,6 +32,11 @@
#define TCXONC _IO('t', 30)
#define TCFLSH _IO('t', 31)
+#define TCGETS2 _IOR('T', 42, struct termios2)
+#define TCSETS2 _IOW('T', 43, struct termios2)
+#define TCSETSW2 _IOW('T', 44, struct termios2)
+#define TCSETSF2 _IOW('T', 45, struct termios2)
+
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
--- a/arch/alpha/include/uapi/asm/termbits.h
+++ b/arch/alpha/include/uapi/asm/termbits.h
@@ -26,6 +26,19 @@ struct termios {
speed_t c_ospeed; /* output speed */
};
+/* Alpha has identical termios and termios2 */
+
+struct termios2 {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[NCCS]; /* control characters */
+ cc_t c_line; /* line discipline (== c_cc[19]) */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+};
+
/* Alpha has matching termios and ktermios */
struct ktermios {
@@ -148,6 +161,7 @@ struct ktermios {
#define B3000000 00034
#define B3500000 00035
#define B4000000 00036
+#define BOTHER 00037
#define CSIZE 00001400
#define CS5 00000000
@@ -165,6 +179,9 @@ struct ktermios {
#define CMSPAR 010000000000 /* mark or space (stick) parity */
#define CRTSCTS 020000000000 /* flow control */
+#define CIBAUD 07600000
+#define IBSHIFT 16
+
/* c_lflag bits */
#define ISIG 0x00000080
#define ICANON 0x00000100
^ permalink raw reply
* [PATCH 4.18 098/171] arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
From: Greg Kroah-Hartman @ 2018-11-19 16:28 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, H. Peter Anvin (Intel), Jiri Slaby,
Al Viro, Richard Henderson, Ivan Kokshaysky, Matt Turner,
Thomas Gleixner, Kate Stewart, Philippe Ombredanne,
Eugene Syromiatnikov, linux-alpha, linux-serial, Johan Hovold,
Alan Cox
In-Reply-To: <20181119162618.909354448@linuxfoundation.org>
4.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: H. Peter Anvin (Intel) <hpa@zytor.com>
commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
using arbitrary flags. Because BOTHER is not defined, the general
Linux code doesn't allow setting arbitrary baud rates, and because
CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
Resolve both problems by #defining BOTHER to 037 on Alpha.
However, userspace still needs to know if setting BOTHER is actually
safe given legacy kernels (does anyone actually care about that on
Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
though they use the same structure. Define struct termios2 just for
compatibility; it is the exact same structure as struct termios. In a
future patchset, this will be cleaned up so the uapi headers are
usable from libc.
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Eugene Syromiatnikov <esyr@redhat.com>
Cc: <linux-alpha@vger.kernel.org>
Cc: <linux-serial@vger.kernel.org>
Cc: Johan Hovold <johan@kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/alpha/include/asm/termios.h | 8 +++++++-
arch/alpha/include/uapi/asm/ioctls.h | 5 +++++
arch/alpha/include/uapi/asm/termbits.h | 17 +++++++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
--- a/arch/alpha/include/asm/termios.h
+++ b/arch/alpha/include/asm/termios.h
@@ -73,9 +73,15 @@
})
#define user_termios_to_kernel_termios(k, u) \
- copy_from_user(k, u, sizeof(struct termios))
+ copy_from_user(k, u, sizeof(struct termios2))
#define kernel_termios_to_user_termios(u, k) \
+ copy_to_user(u, k, sizeof(struct termios2))
+
+#define user_termios_to_kernel_termios_1(k, u) \
+ copy_from_user(k, u, sizeof(struct termios))
+
+#define kernel_termios_to_user_termios_1(u, k) \
copy_to_user(u, k, sizeof(struct termios))
#endif /* _ALPHA_TERMIOS_H */
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -32,6 +32,11 @@
#define TCXONC _IO('t', 30)
#define TCFLSH _IO('t', 31)
+#define TCGETS2 _IOR('T', 42, struct termios2)
+#define TCSETS2 _IOW('T', 43, struct termios2)
+#define TCSETSW2 _IOW('T', 44, struct termios2)
+#define TCSETSF2 _IOW('T', 45, struct termios2)
+
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
--- a/arch/alpha/include/uapi/asm/termbits.h
+++ b/arch/alpha/include/uapi/asm/termbits.h
@@ -26,6 +26,19 @@ struct termios {
speed_t c_ospeed; /* output speed */
};
+/* Alpha has identical termios and termios2 */
+
+struct termios2 {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[NCCS]; /* control characters */
+ cc_t c_line; /* line discipline (== c_cc[19]) */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+};
+
/* Alpha has matching termios and ktermios */
struct ktermios {
@@ -152,6 +165,7 @@ struct ktermios {
#define B3000000 00034
#define B3500000 00035
#define B4000000 00036
+#define BOTHER 00037
#define CSIZE 00001400
#define CS5 00000000
@@ -169,6 +183,9 @@ struct ktermios {
#define CMSPAR 010000000000 /* mark or space (stick) parity */
#define CRTSCTS 020000000000 /* flow control */
+#define CIBAUD 07600000
+#define IBSHIFT 16
+
/* c_lflag bits */
#define ISIG 0x00000080
#define ICANON 0x00000100
^ permalink raw reply
* [PATCH 4.19 121/205] arch/alpha, termios: implement BOTHER, IBSHIFT and termios2
From: Greg Kroah-Hartman @ 2018-11-19 16:27 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, H. Peter Anvin (Intel), Jiri Slaby,
Al Viro, Richard Henderson, Ivan Kokshaysky, Matt Turner,
Thomas Gleixner, Kate Stewart, Philippe Ombredanne,
Eugene Syromiatnikov, linux-alpha, linux-serial, Johan Hovold,
Alan Cox
In-Reply-To: <20181119162616.586062722@linuxfoundation.org>
4.19-stable review patch. If anyone has any objections, please let me know.
------------------
From: H. Peter Anvin (Intel) <hpa@zytor.com>
commit d0ffb805b729322626639336986bc83fc2e60871 upstream.
Alpha has had c_ispeed and c_ospeed, but still set speeds in c_cflags
using arbitrary flags. Because BOTHER is not defined, the general
Linux code doesn't allow setting arbitrary baud rates, and because
CBAUDEX == 0, we can have an array overrun of the baud_rate[] table in
drivers/tty/tty_baudrate.c if (c_cflags & CBAUD) == 037.
Resolve both problems by #defining BOTHER to 037 on Alpha.
However, userspace still needs to know if setting BOTHER is actually
safe given legacy kernels (does anyone actually care about that on
Alpha anymore?), so enable the TCGETS2/TCSETS*2 ioctls on Alpha, even
though they use the same structure. Define struct termios2 just for
compatibility; it is the exact same structure as struct termios. In a
future patchset, this will be cleaned up so the uapi headers are
usable from libc.
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Eugene Syromiatnikov <esyr@redhat.com>
Cc: <linux-alpha@vger.kernel.org>
Cc: <linux-serial@vger.kernel.org>
Cc: Johan Hovold <johan@kernel.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/alpha/include/asm/termios.h | 8 +++++++-
arch/alpha/include/uapi/asm/ioctls.h | 5 +++++
arch/alpha/include/uapi/asm/termbits.h | 17 +++++++++++++++++
3 files changed, 29 insertions(+), 1 deletion(-)
--- a/arch/alpha/include/asm/termios.h
+++ b/arch/alpha/include/asm/termios.h
@@ -73,9 +73,15 @@
})
#define user_termios_to_kernel_termios(k, u) \
- copy_from_user(k, u, sizeof(struct termios))
+ copy_from_user(k, u, sizeof(struct termios2))
#define kernel_termios_to_user_termios(u, k) \
+ copy_to_user(u, k, sizeof(struct termios2))
+
+#define user_termios_to_kernel_termios_1(k, u) \
+ copy_from_user(k, u, sizeof(struct termios))
+
+#define kernel_termios_to_user_termios_1(u, k) \
copy_to_user(u, k, sizeof(struct termios))
#endif /* _ALPHA_TERMIOS_H */
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -32,6 +32,11 @@
#define TCXONC _IO('t', 30)
#define TCFLSH _IO('t', 31)
+#define TCGETS2 _IOR('T', 42, struct termios2)
+#define TCSETS2 _IOW('T', 43, struct termios2)
+#define TCSETSW2 _IOW('T', 44, struct termios2)
+#define TCSETSF2 _IOW('T', 45, struct termios2)
+
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
--- a/arch/alpha/include/uapi/asm/termbits.h
+++ b/arch/alpha/include/uapi/asm/termbits.h
@@ -26,6 +26,19 @@ struct termios {
speed_t c_ospeed; /* output speed */
};
+/* Alpha has identical termios and termios2 */
+
+struct termios2 {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[NCCS]; /* control characters */
+ cc_t c_line; /* line discipline (== c_cc[19]) */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+};
+
/* Alpha has matching termios and ktermios */
struct ktermios {
@@ -152,6 +165,7 @@ struct ktermios {
#define B3000000 00034
#define B3500000 00035
#define B4000000 00036
+#define BOTHER 00037
#define CSIZE 00001400
#define CS5 00000000
@@ -169,6 +183,9 @@ struct ktermios {
#define CMSPAR 010000000000 /* mark or space (stick) parity */
#define CRTSCTS 020000000000 /* flow control */
+#define CIBAUD 07600000
+#define IBSHIFT 16
+
/* c_lflag bits */
#define ISIG 0x00000080
#define ICANON 0x00000100
^ permalink raw reply
* Re: [PATCH 01/14] ARM: milbeaut: Add basic support for Milbeaut m10v SoC
From: Rob Herring @ 2018-11-19 16:24 UTC (permalink / raw)
To: sugaya.taichi
Cc: linux-clk, devicetree,
moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE,
linux-kernel@vger.kernel.org, open list:SERIAL DRIVERS,
Michael Turquette, Stephen Boyd, Mark Rutland, Greg Kroah-Hartman,
Daniel Lezcano, Thomas Gleixner, Russell King, Jiri Slaby,
Masami Hiramatsu, Jassi Brar
In-Reply-To: <1542589274-13878-2-git-send-email-sugaya.taichi@socionext.com>
On Sun, Nov 18, 2018 at 7:00 PM Sugaya Taichi
<sugaya.taichi@socionext.com> wrote:
>
> This adds the basic M10V SoC support under arch/arm.
> Since all cores are activated in the custom bootloader before booting
> linux, it is necessary to wait for sub-cores using the trampoline area.
>
> Signed-off-by: Sugaya Taichi <sugaya.taichi@socionext.com>
> ---
> arch/arm/Kconfig | 2 +
> arch/arm/Makefile | 1 +
> arch/arm/mach-milbeaut/Kconfig | 28 +++++++
> arch/arm/mach-milbeaut/Makefile | 3 +
> arch/arm/mach-milbeaut/m10v_evb.c | 31 ++++++++
> arch/arm/mach-milbeaut/platsmp.c | 157 ++++++++++++++++++++++++++++++++++++++
> 6 files changed, 222 insertions(+)
> create mode 100644 arch/arm/mach-milbeaut/Kconfig
> create mode 100644 arch/arm/mach-milbeaut/Makefile
> create mode 100644 arch/arm/mach-milbeaut/m10v_evb.c
> create mode 100644 arch/arm/mach-milbeaut/platsmp.c
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 91be74d..0b8a1af 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -767,6 +767,8 @@ source "arch/arm/mach-mediatek/Kconfig"
>
> source "arch/arm/mach-meson/Kconfig"
>
> +source "arch/arm/mach-milbeaut/Kconfig"
> +
> source "arch/arm/mach-mmp/Kconfig"
>
> source "arch/arm/mach-moxart/Kconfig"
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index 05a91d8..627853c 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -190,6 +190,7 @@ machine-$(CONFIG_ARCH_MV78XX0) += mv78xx0
> machine-$(CONFIG_ARCH_MVEBU) += mvebu
> machine-$(CONFIG_ARCH_MXC) += imx
> machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
> +machine-$(CONFIG_ARCH_MILBEAUT) += milbeaut
> machine-$(CONFIG_ARCH_MXS) += mxs
> machine-$(CONFIG_ARCH_NETX) += netx
> machine-$(CONFIG_ARCH_NOMADIK) += nomadik
> diff --git a/arch/arm/mach-milbeaut/Kconfig b/arch/arm/mach-milbeaut/Kconfig
> new file mode 100644
> index 0000000..63b6f69
> --- /dev/null
> +++ b/arch/arm/mach-milbeaut/Kconfig
> @@ -0,0 +1,28 @@
> +# SPDX-License-Identifier: GPL-2.0
> +menuconfig ARCH_MILBEAUT
> + bool "Socionext Milbeaut SoCs"
> + depends on ARCH_MULTI_V7
> + select ARM_GIC
> + select CLKDEV_LOOKUP
> + select GENERIC_CLOCKEVENTS
> + select CLKSRC_MMIO
The clock and timer drivers' kconfig entries should select these.
> + select ZONE_DMA
Why is this needed?
> + help
> + This enables support for Socionext Milbeaut SoCs
> +
> +if ARCH_MILBEAUT
> +
> +config ARCH_MILBEAUT_M10V
> + bool "Milbeaut SC2000/M10V platform"
> + select ARM_ARCH_TIMER
> + select M10V_TIMER
> + select PINCTRL
> + select PINCTRL_M10V
> + help
> + Support for Socionext's MILBEAUT M10V based systems
> +
> +config MACH_M10V_EVB
> + bool "Support for Milbeaut Evaluation boards"
You shouldn't need a kconfig entry for each board.
> + default y
> +
> +endif
> diff --git a/arch/arm/mach-milbeaut/Makefile b/arch/arm/mach-milbeaut/Makefile
> new file mode 100644
> index 0000000..64f6f52
> --- /dev/null
> +++ b/arch/arm/mach-milbeaut/Makefile
> @@ -0,0 +1,3 @@
> +obj-$(CONFIG_SMP) += platsmp.o
> +obj-$(CONFIG_MACH_M10V_EVB) += m10v_evb.o
> +
> diff --git a/arch/arm/mach-milbeaut/m10v_evb.c b/arch/arm/mach-milbeaut/m10v_evb.c
> new file mode 100644
> index 0000000..a1fa7c3
> --- /dev/null
> +++ b/arch/arm/mach-milbeaut/m10v_evb.c
This all looks SoC specific, not board specific.
> @@ -0,0 +1,31 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2018 Socionext Inc.
> + * Copyright: (C) 2015 Linaro Ltd.
> + */
> +
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
Not needed.
> +
> +#include <asm/mach/arch.h>
> +#include <asm/mach/map.h>
> +
> +static struct map_desc m10v_io_desc[] __initdata = {
> +};
> +
> +void __init m10v_map_io(void)
> +{
> + debug_ll_io_init();
If you use earlycon instead, then this isn't needed.
> + iotable_init(m10v_io_desc, ARRAY_SIZE(m10v_io_desc));
This isn't needed.
> +}
> +
> +static const char * const m10v_compat[] = {
> + "socionext,milbeaut-m10v-evb",
> + NULL,
> +};
> +
> +DT_MACHINE_START(M10V_REB, "Socionext Milbeaut")
> + .dt_compat = m10v_compat,
> + .l2c_aux_mask = 0xffffffff,
> + .map_io = m10v_map_io,
It looks like you can remove this entire file and use the default machine desc.
> +MACHINE_END
> diff --git a/arch/arm/mach-milbeaut/platsmp.c b/arch/arm/mach-milbeaut/platsmp.c
> new file mode 100644
> index 0000000..b706851
> --- /dev/null
> +++ b/arch/arm/mach-milbeaut/platsmp.c
> @@ -0,0 +1,157 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2018 Socionext Inc.
> + * Copyright: (C) 2015 Linaro Ltd.
> + */
> +
> +#include <linux/cpu_pm.h>
> +#include <linux/irqchip/arm-gic.h>
> +#include <linux/of_device.h>
Not needed.
> +#include <linux/of_address.h>
> +#include <linux/platform_device.h>
Not needed.
> +#include <linux/suspend.h>
> +
> +#include <asm/cacheflush.h>
> +#include <asm/cp15.h>
> +#include <asm/idmap.h>
> +#include <asm/smp_plat.h>
> +#include <asm/suspend.h>
> +
> +#define M10V_MAX_CPU 4
> +
> +#define KERNEL_UNBOOT_FLAG 0x12345678
> +#define CPU_FINISH_SUSPEND_FLAG 0x56784321
> +
> +static void __iomem *trampoline;
> +
> +static int m10v_boot_secondary(unsigned int l_cpu, struct task_struct *idle)
> +{
> + unsigned int mpidr, cpu, cluster;
> +
> + mpidr = cpu_logical_map(l_cpu);
> + cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
> + cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
> +
> + if (cpu >= M10V_MAX_CPU)
> + return -EINVAL;
> +
> + pr_debug("%s: cpu %u cluster %u\n", __func__, cpu, cluster);
> +
> + writel(virt_to_phys(secondary_startup), trampoline + cpu * 4);
> + arch_send_wakeup_ipi_mask(cpumask_of(l_cpu));
> +
> + return 0;
> +}
> +
> +static void m10v_cpu_die(unsigned int l_cpu)
> +{
> + gic_cpu_if_down(0);
> +
> + v7_exit_coherency_flush(louis);
> +
> + /* Now we are prepared for power-down, do it: */
> + wfi();
> +}
> +
> +static int m10v_cpu_kill(unsigned int l_cpu)
> +{
> + unsigned int mpidr, cpu;
> +
> + mpidr = cpu_logical_map(l_cpu);
> + cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
> +
> + writel(KERNEL_UNBOOT_FLAG, trampoline + cpu * 4);
> +
> + return 1;
> +}
> +
> +static struct smp_operations m10v_smp_ops __initdata = {
> + .smp_boot_secondary = m10v_boot_secondary,
> + .cpu_die = m10v_cpu_die,
> + .cpu_kill = m10v_cpu_kill,
> +};
> +
> +static int __init m10v_smp_init(void)
> +{
> + unsigned int mpidr, cpu, cluster;
> + struct device_node *np;
> +
> + np = of_find_compatible_node(NULL, NULL, "socionext,milbeaut-m10v-evb");
> + if (!np || !of_device_is_available(np))
Just use of_machine_is_compatible() here.
> + return -ENODEV;
> + of_node_put(np);
> +
> + np = of_find_compatible_node(NULL, NULL, "socionext,smp-trampoline");
> + if (!np)
> + return -ENODEV;
> +
> + trampoline = of_iomap(np, 0);
> + if (!trampoline)
> + return -ENODEV;
> + of_node_put(np);
> +
> + mpidr = read_cpuid_mpidr();
> + cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
> + cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
> +
> + pr_info("MCPM boot on cpu_%u cluster_%u\n", cpu, cluster);
> +
> + for (cpu = 0; cpu < M10V_MAX_CPU; cpu++)
> + writel(KERNEL_UNBOOT_FLAG, trampoline + cpu * 4);
> +
> + smp_set_ops(&m10v_smp_ops);
> +
> + return 0;
> +}
> +early_initcall(m10v_smp_init);
> +
> +static int m10v_pm_valid(suspend_state_t state)
> +{
> + return (state == PM_SUSPEND_STANDBY) || (state == PM_SUSPEND_MEM);
> +}
> +
> +typedef void (*phys_reset_t)(unsigned long);
> +static phys_reset_t phys_reset;
> +
> +static int m10v_die(unsigned long arg)
> +{
> + setup_mm_for_reboot();
> + asm("wfi");
> + /* Boot just like a secondary */
> + phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset);
> + phys_reset(virt_to_phys(cpu_resume));
> +
> + return 0;
> +}
> +
> +static int m10v_pm_enter(suspend_state_t state)
> +{
> + switch (state) {
> + case PM_SUSPEND_STANDBY:
> + pr_err("STANDBY\n");
> + asm("wfi");
> + break;
> + case PM_SUSPEND_MEM:
> + pr_err("SUSPEND\n");
> + cpu_pm_enter();
> + cpu_suspend(0, m10v_die);
> + cpu_pm_exit();
> + break;
> + }
> + return 0;
> +}
> +
> +static const struct platform_suspend_ops m10v_pm_ops = {
> + .valid = m10v_pm_valid,
> + .enter = m10v_pm_enter,
> +};
> +
> +struct clk *m10v_clclk_register(struct device *cpu_dev);
> +
> +static int __init m10v_pm_init(void)
> +{
> + suspend_set_ops(&m10v_pm_ops);
> +
> + return 0;
> +}
> +late_initcall(m10v_pm_init);
> --
> 1.9.1
>
^ permalink raw reply
* Re: [PATCH 12/14] ARM: dts: milbeaut: Add device tree set for the Milbeaut M10V board
From: Rob Herring @ 2018-11-19 15:46 UTC (permalink / raw)
To: sugaya.taichi, ARM-SoC Maintainers
Cc: linux-clk, devicetree,
moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE,
linux-kernel@vger.kernel.org, open list:SERIAL DRIVERS,
Michael Turquette, Stephen Boyd, Mark Rutland, Greg Kroah-Hartman,
Daniel Lezcano, Thomas Gleixner, Russell King, Jiri Slaby,
Masami Hiramatsu, Jassi Brar
In-Reply-To: <1542589336-13925-3-git-send-email-sugaya.taichi@socionext.com>
On Sun, Nov 18, 2018 at 7:01 PM Sugaya Taichi
<sugaya.taichi@socionext.com> wrote:
>
> Add devicetree for Milbeaut M10V SoC and M10V Evaluation board.
>
> Signed-off-by: Sugaya Taichi <sugaya.taichi@socionext.com>
> ---
> arch/arm/boot/dts/Makefile | 1 +
> arch/arm/boot/dts/milbeaut-m10v-evb.dts | 35 +++
> arch/arm/boot/dts/milbeaut-m10v-evb.dtsi | 17 ++
> arch/arm/boot/dts/milbeaut-m10v.dtsi | 510 +++++++++++++++++++++++++++++++
I'm not seeing why you need this split into 3 files instead of 2.
> 4 files changed, 563 insertions(+)
> create mode 100644 arch/arm/boot/dts/milbeaut-m10v-evb.dts
> create mode 100644 arch/arm/boot/dts/milbeaut-m10v-evb.dtsi
> create mode 100644 arch/arm/boot/dts/milbeaut-m10v.dtsi
Build your dtb with 'W=12' and fix any warnings.
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index b0e966d..ee6220b 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -1207,6 +1207,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
> mt7623n-bananapi-bpi-r2.dtb \
> mt8127-moose.dtb \
> mt8135-evbp1.dtb
> +dtb-$(CONFIG_MACH_M10V_EVB) += milbeaut-m10v-evb.dtb
ARM SoC maintainers,
Can we start at least start putting new SoCs in vendor subdirs? This
one doesn't appear to share anything.
> dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb
> dtb-$(CONFIG_ARCH_ASPEED) += \
> aspeed-ast2500-evb.dtb \
> diff --git a/arch/arm/boot/dts/milbeaut-m10v-evb.dts b/arch/arm/boot/dts/milbeaut-m10v-evb.dts
> new file mode 100644
> index 0000000..af8d6e4
> --- /dev/null
> +++ b/arch/arm/boot/dts/milbeaut-m10v-evb.dts
> @@ -0,0 +1,35 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/* Socionext Milbeaut M10V Evaluation Board */
> +/dts-v1/;
> +#include "milbeaut-m10v-evb.dtsi"
> +
> +/ {
> + cpus {
cpus is not board specific.
> + cpu@0 {
Unit-address is wrong. Should be '@f00' to match reg.
> + device_type = "cpu";
> + compatible = "arm,cortex-a7";
> + reg = <0xf00>;
> + };
> + cpu@1 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a7";
> + reg = <0xf01>;
> + };
> +
> + cpu@2 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a7";
> + reg = <0xf02>;
> + };
> + cpu@3 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a7";
> + reg = <0xf03>;
> + };
> +
> + };
> + trampoline: trampoline@0x0000F100 {
Also, not board specific.
This should be under a simple-bus node. The unit-address should be '@f100'.
> + compatible = "socionext,smp-trampoline";
> + reg = <0x0000F100 0x100>;
Use lowercase hex.
> + };
> +};
> diff --git a/arch/arm/boot/dts/milbeaut-m10v-evb.dtsi b/arch/arm/boot/dts/milbeaut-m10v-evb.dtsi
> new file mode 100644
> index 0000000..fc35c0b
> --- /dev/null
> +++ b/arch/arm/boot/dts/milbeaut-m10v-evb.dtsi
> @@ -0,0 +1,17 @@
> +// SPDX-License-Identifier: GPL-2.0
> +#include "milbeaut-m10v.dtsi"
> +
> +/ {
> + model = "Socionext M10V EVB";
> + compatible = "socionext,sc2000a", "socionext,milbeaut-m10v-evb";
Wrong order. And these need to be documented.
> + interrupt-parent = <&gic>;
> + chosen {
> + bootargs = "consoleblank=0 loglevel=8 init=/sbin/finit root=/dev/mmcblk0p2 rootwait ro console=ttyUSI0,115200n8 console=/dev/tty1 ";
Most of these options look user specific and should be dropped. Use
'stdout-path' to specify the default console.
> + linux,initrd-start = <0x4A000000>;
> + linux,initrd-end = <0x4BF00000>;
initrd should be filled in by the bootloader.
> + };
> + memory {
Needs a unit-address.
> + device_type = "memory";
> + reg = <0x40000000 0x80000000>;
> + };
> +};
> diff --git a/arch/arm/boot/dts/milbeaut-m10v.dtsi b/arch/arm/boot/dts/milbeaut-m10v.dtsi
> new file mode 100644
> index 0000000..4745dc6
> --- /dev/null
> +++ b/arch/arm/boot/dts/milbeaut-m10v.dtsi
> @@ -0,0 +1,510 @@
> +// SPDX-License-Identifier: GPL-2.0
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +#include "skeleton.dtsi"
Don't use skeleton.dtsi. It is deprecated.
> +
> +/ {
> + compatible = "socionext,sc2000a";
> + interrupt-parent = <&gic>;
> + cpus {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
Just move this to the other file with the cpu nodes.
> +
> +
> + gic: interrupt-controller@1d000000 {
> + compatible = "arm,cortex-a7-gic";
> + interrupt-controller;
> + #interrupt-cells = <3>;
> + reg = <0x1d001000 0x1000>, /* Distributer base and size */
> + <0x1d002000 0x1000>; /* CPU I/f base and size */
> + };
> +
> + m10v-clk-tree@ {
unit-address
> + compatible = "socionext,milbeaut-m10v-clk-regs";
> + reg = <0x1d021000 0x4000>;
> +
> + clocks {
> + #address-cells = <0>;
> + #size-cells = <0>;
> +
> + uclk40xi: uclk40xi {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <40000000>;
> + };
Any fixed clocks from oscillators on the board should be at the top
level and defined as inputs to the clock controller node with a
'clocks' property.
> +
> + aumclki: aumclki {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <20000000>;
> + };
> +
> + rtc32k: rtc32k {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <32768>;
> + };
> +
> + pxrefclk: pxrefclk {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <100000000>;
> + };
> +
> + pcisuppclk: pcisuppclk {
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + clock-div = <20>;
> + clock-mult = <1>;
> + };
Please look at any recent example of clock bindings. We don't try to
describe every divider, mux, gate, etc. in DT, but just clock
controller blocks with all the output clocks enumerated in clock
cells.
> +
> + usb2_clk: usb2_clk {
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + clock-div = <2>;
> + clock-mult = <1>;
> + };
> +
> + pll1: pll1 {
> + compatible =
> + "socionext,milbeaut-m10v-pll-fixed-factor";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + offset = <1>;
> + clock-div = <1>;
> + clock-mult = <40>;
> + };
> +
> + pll2: pll2 {
> + compatible =
> + "socionext,milbeaut-m10v-pll-fixed-factor";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + offset = <2>;
> + clock-div = <1>;
> + clock-mult = <30>;
> + };
> +
> + pll6: pll6 { /* CLK 6-1 */
> + compatible =
> + "socionext,milbeaut-m10v-pll-fixed-factor";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + offset = <7>;
> + clock-div = <1>;
> + clock-mult = <35>;
> + };
> +
> + pll7: pll7 { /* CLK 7-1 */
> + compatible =
> + "socionext,milbeaut-m10v-pll-fixed-factor";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + offset = <8>;
> + clock-div = <1>;
> + clock-mult = <40>;
> + };
> +
> + pll9: pll9 { /* CA7CLK, ATCLK */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + clock-div = <1>;
> + clock-mult = <33>;
> + };
> +
> + pll10: pll10 {
> + compatible =
> + "socionext,milbeaut-m10v-pll-fixed-factor";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + offset = <10>;
> + clock-div = <5>;
> + clock-mult = <108>;
> + };
> +
> + pll11: pll11 { /* CLK 11-1 */
> + compatible =
> + "socionext,milbeaut-m10v-pll-fixed-factor";
> + #clock-cells = <0>;
> + clocks = <&uclk40xi>;
> + offset = <12>;
> + clock-div = <2>;
> + clock-mult = <75>;
> + };
> +
> + emmcclk: emmcclk {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll11>;
> + offset = <28>; /* EMMCCLK */
> + mask = <0x3>;
> + ratios = <15 0x7 10 0x6 9 0x5 8 0x4>;
> + };
> +
> + pll1_div_1_2: pll1_div_1_2 { /* CLK 1-2 */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll1>;
> + clock-div = <2>;
> + clock-mult = <1>;
> + };
> +
> + pll2_div_1_2: pll2_div_1_2 { /* CLK 2-2 */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll2>;
> + clock-div = <2>;
> + clock-mult = <1>;
> + };
> +
> + pll6_div_1_2: pll6_div_1_2 { /* CLK 6-2 */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll6>;
> + clock-div = <2>;
> + clock-mult = <1>;
> + };
> +
> + pll6_div_1_3: pll6_div_1_3 { /* CLK 6-3 */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll6>;
> + clock-div = <3>;
> + clock-mult = <1>;
> + };
> +
> + pll7_div_1_2: pll7_div_1_2 { /* CLK 7-2 */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll7>;
> + clock-div = <2>;
> + clock-mult = <1>;
> + };
> +
> + pll7_div_1_5: pll7_div_1_5 { /* CLK 7-5 */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll7>;
> + clock-div = <5>;
> + clock-mult = <1>;
> + };
> +
> + pll10_div_1_2: pll10_div_1_2 { /* CLK 10-2 */
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll10>;
> + clock-div = <2>;
> + clock-mult = <1>;
> + };
> +
> + spiclk_mux_0: spiclk_mux_0 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll10_div_1_2>;
> + offset = <227>; /* SPICLK */
> + mask = <0x3>;
> + ratios = <4 0x5 2 0x4>;
> + };
> +
> + spiclk_mux_1: spiclk_mux_1 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll7_div_1_2>;
> + offset = <227>; /* SPICLK */
> + mask = <0x3>;
> + ratios = <8 0x6>;
> + };
> +
> + spiclk: spiclk {
> + compatible = "socionext,milbeaut-m10v-clk-mux";
> + #clock-cells = <0>;
> + clocks = <&spiclk_mux_0>, <&spiclk_mux_1>;
> + };
> +
> + ca7wdclk: ca7wdclk {
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll2_div_1_2>;
> + clock-div = <12>;
> + clock-mult = <1>;
> + };
> +
> + pll9_div_1_2: pll9_div_1_2 {
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll9>;
> + clock-div = <2>;
> + clock-mult = <1>;
> + };
> +
> + mclk400: mclk400 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <295>; /* MCLK400 */
> + mask = <0x3>;
> + ratios = <4 0x7 2 0x5>;
> + };
> +
> + mclk200: mclk200 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <291>; /* MCLK200 */
> + mask = <0x7>;
> + ratios = <8 0xf 4 0xb>;
> + };
> +
> + aclk400: aclk400 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <288>; /* ACLK400 */
> + mask = <0x3>;
> + ratios = <4 0x7 2 0x5>;
> + };
> +
> + aclk300: aclk300 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll2_div_1_2>;
> + offset = <352>; /* ACLK300 */
> + mask = <0x1>;
> + ratios = <6 0x3 4 0x2>;
> + };
> +
> + aclk: aclk {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <276>; /* ACLK */
> + mask = <0x7>;
> + ratios = <8 0xf 4 0xb>;
> + };
> +
> + aclkexs: aclkexs {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <272>; /* ACLKEXS */
> + mask = <0x7>;
> + ratios = <8 0xf 6 0xd 5 0xc 4 0xb>;
> + };
> +
> + hclk: hclk {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <263>; /* HCLK */
> + mask = <0xf>;
> + ratios = <16 0x1f 8 0x17>;
> + };
> +
> + hclkbmh: hclkbmh {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <268>; /* HCLKBMH */
> + mask = <0x7>;
> + ratios = <8 0xf 4 0xb>;
> + };
> +
> + pclk: pclk {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + offset = <256>; /* PCLK */
> + mask = <0x3f>;
> + ratios = <32 0x5f 16 0x4f>;
> + };
> +
> + pclkca7wd: pclkca7wd {
> + compatible = "fixed-factor-clock";
> + #clock-cells = <0>;
> + clocks = <&pll1_div_1_2>;
> + clock-div = <16>;
> + clock-mult = <1>;
> + };
> +
> + rclk: rclk {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll10_div_1_2>;
> + offset = <0>; /* RCLK */
> + mask = <0x3>;
> + ratios = <64 0x7 48 0x6 32 0x5 16 0x4>;
> + };
> +
> + uhs1clk0: uhs1clk0 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll7>;
> + offset = <3>; /* UHS1CLK0 */
> + mask = <0xf>;
> + ratios = <16 0x14 8 0x13 4 0x12 3 0x11 2 0x10>;
> + };
> +
> + uhs1clk1_div1: uhs1clk1_div1 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll7>;
> + offset = <8>; /* UHS1CLK1 */
> + mask = <0xf>;
> + ratios = <16 0x14 8 0x13>;
> + };
> +
> + uhs1clk1_div2: uhs1clk1_div2 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll6_div_1_2>;
> + offset = <8>; /* UHS1CLK1 */
> + mask = <0xf>;
> + ratios = <1 0x18>;
> + };
> +
> + uhs1clk1: uhs1clk1 {
> + compatible = "socionext,milbeaut-m10v-clk-mux";
> + #clock-cells = <0>;
> + clocks = <&uhs1clk1_div1>, <&uhs1clk1_div2>;
> + };
> +
> + uhs1clk2_div1: uhs1clk2_div1 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll7>;
> + offset = <13>; /* UHS1CLK2 */
> + mask = <0xf>;
> + ratios = <16 0x14 8 0x13 4 0x12>;
> + };
> +
> + uhs1clk2_div2: uhs1clk2_div2 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll6_div_1_2>;
> + offset = <13>; /* UHS1CLK2 */
> + mask = <0xf>;
> + ratios = <1 0x18>;
> + };
> +
> + uhs1clk2: uhs1clk2 {
> + compatible = "socionext,milbeaut-m10v-clk-mux";
> + #clock-cells = <0>;
> + clocks = <&uhs1clk2_div1>, <&uhs1clk2_div2>;
> + };
> +
> + uhs2clk: uhs2clk {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll6_div_1_3>;
> + offset = <18>; /* UHS2CLK */
> + mask = <0x7>;
> + ratios = <18 0xf 16 0xe 14 0xd 13 0xc
> + 12 0xb 11 0xa 10 0x9 9 0x8>;
> + };
> +
> + nfclk_div1: nfclk_div1 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll7_div_1_2>;
> + offset = <22>; /* NFCLK */
> + mask = <0x1f>;
> + ratios = <40 0x24 16 0x23 13 0x22 10 0x21
> + 8 0x20>;
> + };
> +
> + nfclk_div2: nfclk_div2 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll7_div_1_5>;
> + offset = <22>; /* NFCLK */
> + mask = <0x1f>;
> + ratios = <10 0x28>;
> + };
> +
> + nfclk: nfclk {
> + compatible = "socionext,milbeaut-m10v-clk-mux";
> + #clock-cells = <0>;
> + clocks = <&nfclk_div1>, <&nfclk_div2>;
> + };
> +
> + clk5: clk5 {
> + compatible = "socionext,milbeaut-m10v-clk-div";
> + #clock-cells = <0>;
> + clocks = <&pll10_div_1_2>;
> + offset = <239>; /* NETAUSEL */
> + mask = <0x3>;
> + ratios = <64 0x7 48 0x6 32 0x5 16 0x4>;
> + };
> + };
> + };
> +
> + peri-timer@1e000000 { /* 32-bit Reload Timers */
timer@1e000050
This and all memory mapped peripherals go under simple-bus nodes(s).
> + compatible = "socionext,milbeaut-m10v-timer";
> + reg = <0x1e000050 0x10>, <0x1e000060 0x10>;
> + interrupts = <0 91 4>;
> + clocks = <&rclk>;
> + };
> +
> + timer { /* The Generic Timer */
> + compatible = "arm,armv7-timer";
> + interrupts = <GIC_PPI 13
> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
> + <GIC_PPI 14
> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
> + <GIC_PPI 11
> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
> + <GIC_PPI 10
> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
> + clock-frequency = <40000000>;//40M
> + always-on;
> + arm,cpu-registers-not-fw-configured;
This was a work-around for some existing platforms. New platforms
should fix the firmware/bootloader.
> + };
> +
> + dummy_clk: dummy_clk {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <50000000>;
> + };
> +
> + pinctrl: pinctrl@1d022000 {
> + compatible = "socionext,milbeaut-m10v-pinctrl";
> + reg = <0x1d022000 0x1000>,
> + <0x1c26f000 0x1000>;
> + reg-names = "pinctrl", "exiu";
> + gpio-controller;
> + #gpio-cells = <2>;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + clocks = <&dummy_clk>;
Please use a real clock or make clocks optional.
> + interrupts = <0 54 4>, <0 55 4>, <0 56 4>, <0 57 4>,
> + <0 58 4>, <0 59 4>, <0 60 4>, <0 61 4>,
> + <0 62 4>, <0 63 4>, <0 64 4>, <0 65 4>,
> + <0 66 4>, <0 67 4>, <0 68 4>, <0 69 4>;
> + interrupt-names = "pin-48", "pin-49", "pin-50", "pin-51",
> + "pin-52", "pin-53", "pin-54", "pin-55",
> + "pin-56", "pin-57", "pin-58", "pin-59",
> + "pin-60", "pin-61", "pin-62", "pin-63";
> +
> + usio1_pins: usio1_pins {
> + pins = "PE4", "PE5", "P87";
> + function = "usio1";
> + };
> + };
> +
> + usio1: usio_uart@1e700010 { /* PE4, PE5 */
serial@...
> + /* Enable this as ttyUSI0 */
> + index = <0>;
Drop this. aliases node is the right way to do this.
> + compatible = "socionext,milbeaut-m10v-usio-uart";
> + reg = <0x1e700010 0x10>;
> + interrupts = <0 141 0x4>, <0 149 0x4>;
> + interrupt-names = "rx", "tx";
> + clocks = <&hclk>;
> + };
> +};
> --
> 1.9.1
>
^ permalink raw reply
* Re: [PATCH 03/14] ARM: milbeaut: Add Milbeaut M10V early printk
From: Rob Herring @ 2018-11-19 15:21 UTC (permalink / raw)
To: sugaya.taichi
Cc: linux-clk, devicetree,
moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE,
linux-kernel@vger.kernel.org, open list:SERIAL DRIVERS,
Michael Turquette, Stephen Boyd, Mark Rutland, Greg Kroah-Hartman,
Daniel Lezcano, Thomas Gleixner, Russell King, Jiri Slaby,
Masami Hiramatsu, Jassi Brar
In-Reply-To: <1542589274-13878-4-git-send-email-sugaya.taichi@socionext.com>
On Sun, Nov 18, 2018 at 7:00 PM Sugaya Taichi
<sugaya.taichi@socionext.com> wrote:
>
> Add Milbeaut M10V earlyprintk.
Do you really need earlyprintk? earlycon is preferred instead. It's
not quite as early, but doesn't require rebuilding the kernel and
supports more than 1 fixed device. If you crash before earlycon is
enabled, that pretty much means either a bad dtb memory node or just
flaky memory.
Rob
^ permalink raw reply
* Re: [PATCH 0/4] serdev: make serdev_device_write() more usable
From: Rob Herring @ 2018-11-19 15:16 UTC (permalink / raw)
To: Johan Hovold
Cc: Greg Kroah-Hartman, Jiri Slaby, Andrey Smirnov,
open list:SERIAL DRIVERS, linux-kernel@vger.kernel.org
In-Reply-To: <20181114150904.19653-1-johan@kernel.org>
On Wed, Nov 14, 2018 at 9:10 AM Johan Hovold <johan@kernel.org> wrote:
>
> This series make the synchronous serdev_device_write() helper more
> usable by
>
> 1) allowing drivers to pass a zero timeout to indicate that they
> want to wait forever;
>
> 2) returning the number of bytes actually written (buffered)
> if the helper is interrupted;
>
> 3) make the helper use interruptible wait so that the helper can
> be used on behalf of user space.
>
> Finally, the two write functions are documented using kernel-doc.
>
> Turns out I was using the wrong timeout for two gnss drivers that
> expected the helper to wait indefinitely. I've fixed up those separately
> (by using MAX_SCHEDULE_TIMEOUT for now), but for the helper to be usable
> when using flow control we really want it to be interruptible.
>
> Besides the two gnss drivers, there's currently only one other in-kernel
> user of this helper and that driver (rave-sp) uses a non-zero timeout
> and doesn't check the return value and therefore does not need to be
> updated.
>
> Note that this series depends on the two above mentioned GNSS fixes
> (submitted for v4.20-rc3).
>
> Johan
>
>
> Johan Hovold (4):
> serdev: use zero to indicate infinite write timeout
> serdev: make synchronous write return bytes written
> serdev: make synchronous write helper interruptible
> serdev: document the write functions using kernel-doc
Other than the one nit, for the series:
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply
* Re: [PATCH 2/4] serdev: make synchronous write return bytes written
From: Rob Herring @ 2018-11-19 15:15 UTC (permalink / raw)
To: Johan Hovold
Cc: Greg Kroah-Hartman, Jiri Slaby, Andrey Smirnov,
open list:SERIAL DRIVERS, linux-kernel@vger.kernel.org
In-Reply-To: <20181114150904.19653-3-johan@kernel.org>
On Wed, Nov 14, 2018 at 9:10 AM Johan Hovold <johan@kernel.org> wrote:
>
> Make the synchronous serdev_device_write() helper behave analogous to
> the asynchronous serdev_device_write_buf() by returning the number of
> bytes written (or rather buffered) also on timeout.
>
> This will allow drivers to distinguish the case where data was partially
> written from the case where no data was written.
>
> Also update the only two users that checked the return value.
>
> Signed-off-by: Johan Hovold <johan@kernel.org>
> ---
> drivers/gnss/serial.c | 2 +-
> drivers/gnss/sirf.c | 2 +-
> drivers/tty/serdev/core.c | 12 ++++++++++--
> 3 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gnss/serial.c b/drivers/gnss/serial.c
> index 31e891f00175..def64b36d994 100644
> --- a/drivers/gnss/serial.c
> +++ b/drivers/gnss/serial.c
> @@ -65,7 +65,7 @@ static int gnss_serial_write_raw(struct gnss_device *gdev,
>
> /* write is only buffered synchronously */
> ret = serdev_device_write(serdev, buf, count, MAX_SCHEDULE_TIMEOUT);
> - if (ret < 0)
> + if (ret < 0 || ret < count)
The 2nd condition covers the 1st condition. Though I guess this will
all change anyways when you address the FIXME below.
> return ret;
>
> /* FIXME: determine if interrupted? */
^ permalink raw reply
* [PATCH 14/14] MAINTAINERS: Add entry to MAINTAINERS for Milbeaut
From: Sugaya Taichi @ 2018-11-19 1:02 UTC (permalink / raw)
To: linux-clk, devicetree, linux-arm-kernel, linux-kernel,
linux-serial
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Mark Rutland,
Greg Kroah-Hartman, Daniel Lezcano, Thomas Gleixner, Russell King,
Jiri Slaby, Masami Hiramatsu, Jassi Brar, Sugaya Taichi
In-Reply-To: <1542589336-13925-1-git-send-email-sugaya.taichi@socionext.com>
Add entry to MAINTAINERS for Milbeaut that supported minimal drivers.
Signed-off-by: Sugaya Taichi <sugaya.taichi@socionext.com>
---
MAINTAINERS | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 0abecc5..31dd29f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1782,6 +1782,15 @@ F: drivers/watchdog/sama5d4_wdt.c
X: drivers/input/touchscreen/atmel_mxt_ts.c
X: drivers/net/wireless/atmel/
+ARM/MILBEAUT ARCHITECTURE
+M: Taichi Sugaya <sugaya.taichi@socionext.com>
+M: Takao Orito <orito.takao@socionext.com>
+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+S: Maintained
+F: arch/arm/boot/dts/milbeaut*
+F: arch/arm/mach-milbeaut/
+N: milbeaut
+
ARM/MIOA701 MACHINE SUPPORT
M: Robert Jarzmik <robert.jarzmik@free.fr>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
--
1.9.1
^ permalink raw reply related
* [PATCH 13/14] ARM: configs: Add Milbeaut M10V defconfig
From: Sugaya Taichi @ 2018-11-19 1:02 UTC (permalink / raw)
To: linux-clk, devicetree, linux-arm-kernel, linux-kernel,
linux-serial
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Mark Rutland,
Greg Kroah-Hartman, Daniel Lezcano, Thomas Gleixner, Russell King,
Jiri Slaby, Masami Hiramatsu, Jassi Brar, Sugaya Taichi
In-Reply-To: <1542589336-13925-1-git-send-email-sugaya.taichi@socionext.com>
This patch adds the minimal defconfig for the Milbeaut M10V.
Signed-off-by: Sugaya Taichi <sugaya.taichi@socionext.com>
---
arch/arm/configs/milbeaut_m10v_defconfig | 364 +++++++++++++++++++++++++++++++
1 file changed, 364 insertions(+)
create mode 100644 arch/arm/configs/milbeaut_m10v_defconfig
diff --git a/arch/arm/configs/milbeaut_m10v_defconfig b/arch/arm/configs/milbeaut_m10v_defconfig
new file mode 100644
index 0000000..90c22f8
--- /dev/null
+++ b/arch/arm/configs/milbeaut_m10v_defconfig
@@ -0,0 +1,364 @@
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_DEFAULT_HOSTNAME="mlbel"
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_FHANDLE=y
+CONFIG_NO_HZ_FULL=y
+CONFIG_NO_HZ_FULL_ALL=y
+CONFIG_NO_HZ_FULL_SYSIDLE=y
+CONFIG_NO_HZ_FULL_SYSIDLE_SMALL=4
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_DEBUG=y
+CONFIG_CPUSETS=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_NAMESPACES=y
+CONFIG_USER_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_SLAB=y
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_ARCH_MILBEAUT=y
+CONFIG_ARCH_MILBEAUT_M10V=y
+# CONFIG_CACHE_L2X0 is not set
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_775420=y
+# CONFIG_PCI is not set
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_HOST_GENERIC is not set
+# CONFIG_PCIE_SN_DW_PLAT is not set
+# CONFIG_PCI_MSI is not set
+# CONFIG_PCIEPORTBUS is not set
+# CONFIG_PCIEAER is not set
+# CONFIG_PCIEASPM is not set
+CONFIG_SMP=y
+# CONFIG_ARM_CPU_TOPOLOGY is not set
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT=y
+CONFIG_THUMB2_KERNEL=y
+CONFIG_HIGHMEM=y
+# CONFIG_COMPACTION is not set
+CONFIG_CMA=y
+# CONFIG_ATAGS is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_KEXEC=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_KERNEL_MODE_NEON=y
+CONFIG_PM_RUNTIME=y
+CONFIG_PM_DEBUG=y
+CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=m
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
+CONFIG_INET_AH=y
+CONFIG_INET_ESP=y
+CONFIG_INET_IPCOMP=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_UDP_DIAG=m
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_IP_SCTP=m
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_TIPC=y
+CONFIG_L2TP=m
+CONFIG_L2TP_DEBUGFS=m
+CONFIG_L2TP_V3=y
+CONFIG_L2TP_IP=y
+CONFIG_L2TP_ETH=y
+CONFIG_IPX=m
+CONFIG_NETLINK_MMAP=y
+CONFIG_NETLINK_DIAG=y
+CONFIG_CFG80211=y
+CONFIG_NL80211_TESTMODE=y
+CONFIG_CFG80211_DEVELOPER_WARNINGS=y
+CONFIG_CFG80211_REG_DEBUG=y
+CONFIG_CFG80211_INTERNAL_REGDB=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+# CONFIG_MAC80211_RC_MINSTREL is not set
+CONFIG_MAC80211_LEDS=y
+CONFIG_RFKILL=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_RFKILL_REGULATOR=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=16
+CONFIG_MTD=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_CDN_HPNFC=y
+CONFIG_MTD_NAND_CDN_HPNFC_DT=y
+CONFIG_MTD_NAND_PLATFORM=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=3
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=2
+CONFIG_BLK_DEV_RAM=y
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_NETDEVICES=y
+CONFIG_MACVLAN=y
+CONFIG_TUN=y
+CONFIG_VETH=y
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+CONFIG_R8169=y
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_SOCIONEXT_OGMA=y
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_REALTEK_PHY=y
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_INPUT_POLLDEV=y
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_SERIO_LIBPS2=y
+CONFIG_LEGACY_PTY_COUNT=4
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_DMA is not set
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_M10V_USIO=y
+CONFIG_SERIAL_M10V_USIO_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_I2C is not set
+# CONFIG_I2C_BOARDINFO is not set
+# CONFIG_I2C_COMPAT is not set
+# CONFIG_I2C_CHARDEV is not set
+# CONFIG_I2C_MUX is not set
+# CONFIG_I2C_HELPER_AUTO is not set
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_SNI_M10V is not set
+CONFIG_SPI=y
+# CONFIG_SPI_SN_USIO=y
+#CONFIG_SPI_SNI is not set
+#CONFIG_SPI_SPIDEV is not set
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+# CONFIG_HWMON is not set
+CONFIG_WATCHDOG=y
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_DEBUG=y
+CONFIG_REGULATOR_S6AP412=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_CONTROLLER=y
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_VIDEO_ADV_DEBUG=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=y
+# CONFIG_USB_GSPCA is not set
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_SOC_CAMERA=y
+CONFIG_SOC_CAMERA_PLATFORM=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_V4L_TEST_DRIVERS=y
+CONFIG_VIDEO_VIVID=m
+CONFIG_VIDEO_VIVID_MAX_DEVS=64
+CONFIG_FB=y
+# CONFIG_VGA_ARB is not set
+# CONFIG_USB is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+# CONFIG_USB_MON is not set
+# CONFIG_USB_XHCI_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_OHCI_HCD_PCI is not set
+# CONFIG_USB_OHCI_HCD_PLATFORM is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_CP210X is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_ULPI is not set
+# CONFIG_USB_GADGET is not set
+# CONFIG_USB_DWC3 is not set
+# CONFIG_USB_DWC3_PCI is not set
+# CONFIG_USB_DWC3_OTG is not set
+# CONFIG_USB_DWC3_SN is not set
+# CONFIG_USB_DWC3_OF_SIMPLE is not set
+# CONFIG_USB_GADGET_SN_LAP is not set
+# CONFIG_USB_CONFIGFS is not set
+# CONFIG_USB_CONFIGFS_ACM is not set
+# CONFIG_USB_CONFIGFS_MASS_STORAGE is not set
+# CONFIG_USB_CONFIGFS_F_MTP is not set
+# CONFIG_USB_CONFIGFS_F_UVC is not set
+# CONFIG_USB_CONFIGFS_UEVENT is not set
+# CONFIG_MMC is not set
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_SDHCI_PLTFM is not set
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+# CONFIG_MMC_SDHCI_F_EMMC50 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+# CONFIG_RTC_SYSTOHC is not set
+CONFIG_RTC_DEBUG=y
+CONFIG_RTC_DRV_RX8025=y
+CONFIG_DMADEVICES=y
+CONFIG_MB86S7X_HDMAC=y
+CONFIG_MB8AC0300_XDMAC=y
+CONFIG_UIO=y
+CONFIG_UIO_SNI=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_PWM=y
+# CONFIG_PWM_SYSFS is not set
+CONFIG_PWM_M10V=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_EXFAT=y
+CONFIG_EXT4_FS=y
+# CONFIG_EXT4_USE_FOR_EXT23 is not set
+# CONFIG_XFS_FS is not set
+CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+CONFIG_QUOTA=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+CONFIG_FSCACHE=y
+CONFIG_FSCACHE_STATS=y
+CONFIG_FSCACHE_HISTOGRAM=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=932
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_ROMFS_FS=y
+CONFIG_ROMFS_BACKED_BY_BOTH=y
+CONFIG_NFS_FS=m
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=y
+CONFIG_NLS_CODEPAGE_775=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_CODEPAGE_852=y
+CONFIG_NLS_CODEPAGE_855=y
+CONFIG_NLS_CODEPAGE_857=y
+CONFIG_NLS_CODEPAGE_860=y
+CONFIG_NLS_CODEPAGE_861=y
+CONFIG_NLS_CODEPAGE_862=y
+CONFIG_NLS_CODEPAGE_863=y
+CONFIG_NLS_CODEPAGE_864=y
+CONFIG_NLS_CODEPAGE_865=y
+CONFIG_NLS_CODEPAGE_866=y
+CONFIG_NLS_CODEPAGE_869=y
+CONFIG_NLS_CODEPAGE_936=y
+CONFIG_NLS_CODEPAGE_950=y
+CONFIG_NLS_CODEPAGE_932=y
+CONFIG_NLS_CODEPAGE_949=y
+CONFIG_NLS_CODEPAGE_874=y
+CONFIG_NLS_ISO8859_8=y
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=y
+CONFIG_NLS_ISO8859_3=y
+CONFIG_NLS_ISO8859_4=y
+CONFIG_NLS_ISO8859_5=y
+CONFIG_NLS_ISO8859_6=y
+CONFIG_NLS_ISO8859_7=y
+CONFIG_NLS_ISO8859_9=y
+CONFIG_NLS_ISO8859_13=y
+CONFIG_NLS_ISO8859_14=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_KOI8_R=y
+CONFIG_NLS_KOI8_U=y
+CONFIG_NLS_MAC_ROMAN=y
+CONFIG_NLS_MAC_CELTIC=y
+CONFIG_NLS_MAC_CENTEURO=y
+CONFIG_NLS_MAC_CROATIAN=y
+CONFIG_NLS_MAC_CYRILLIC=y
+CONFIG_NLS_MAC_GAELIC=y
+CONFIG_NLS_MAC_GREEK=y
+CONFIG_NLS_MAC_ICELAND=y
+CONFIG_NLS_MAC_INUIT=y
+CONFIG_NLS_MAC_ROMANIAN=y
+CONFIG_NLS_MAC_TURKISH=y
+CONFIG_NLS_UTF8=y
+CONFIG_IPCU_FS=y
+# CONFIG_TEST_IPCU_FS is not set
+CONFIG_PRINTK_TIME=y
+CONFIG_DYNAMIC_DEBUG=y
+CONFIG_DEBUG_INFO=y
+#CONFIG_DEBUG_INFO_REDUCED is not set
+CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_GIC_BL=y
+CONFIG_HEADERS_CHECK=y
+CONFIG_DEBUG_SECTION_MISMATCH=y
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_RCU_TORTURE_TEST=m
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+CONFIG_KGDB=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_LL_MILBEAUT_UART=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DIRECT is not set
+CONFIG_KEYS=y
+CONFIG_ENCRYPTED_KEYS=y
+CONFIG_SECURITY=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_HW is not set
+CONFIG_FONTS=y
--
1.9.1
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox