2021-01-06 13:51:32

by Chen-Yu Tsai

[permalink] [raw]
Subject: [PATCH v3 0/4] arm64: rockchip: Fix PCIe ep-gpios requirement and Add Nanopi M4B

From: Chen-Yu Tsai <[email protected]>

Hi everyone,

This is v3 of my Nanopi M4B series. Changes since v2 include:

- Replaced dev_err() with dev_err_probe() for gpiod_get_optional() error
- Added Reviewed-by tag from Robin Murphy for patch 3

Changes since v1 include:

- Rewrite subject of patch 1 to match existing convention and reference
'ep-gpios' DT property instead of the 'ep_gpio' field

This series mainly adds support for the new Nanopi M4B, which is a newer
variant of the Nanopi M4.

The differences against the original Nanopi M4 that are common with the
other M4V2 revision include:

- microphone header removed
- power button added
- recovery button added

Additional changes specific to the M4B:

- USB 3.0 hub removed; board now has 2x USB 3.0 type-A ports and 2x
USB 2.0 ports
- ADB toggle switch added; this changes the top USB 3.0 host port to
a peripheral port
- Type-C port no longer supports data or PD
- WiFi/Bluetooth combo chip switched to AP6256, which supports BT 5.0
but only 1T1R (down from 2T2R) for WiFi

While working on this, I found that for the M4 family, the PCIe reset
pin (from the M.2 expansion board) was not wired to the SoC. Only the
NanoPC T4 has this wired. This ended up in patches 1 and 3.

Patch 1 makes ep_gpio in the Rockchip PCIe driver optional. This property
is optional in the DT binding, so this just makes the driver adhere to
the binding.

Patch 2 adds a new compatible string for the new board.

Patch 3 moves the ep-gpios property of the pcie controller from the
common nanopi4.dtsi file to the nanopc-t4.dts file.

Patch 4 adds a new device tree file for the new board. It includes the
original device tree for the M4, and then lists the differences.

Given that patch 3 would make PCIe unusable without patch 1, I suggest
merging patch 1 through the PCI tree as a fix for 5.10, and the rest
for 5.11 through the Rockchip tree.

Please have a look. The changes are mostly trivial.


Regards
ChenYu

Chen-Yu Tsai (4):
PCI: rockchip: Make 'ep-gpios' DT property optional
dt-bindings: arm: rockchip: Add FriendlyARM NanoPi M4B
arm64: dts: rockchip: nanopi4: Move ep-gpios property to nanopc-t4
arm64: dts: rockchip: rk3399: Add NanoPi M4B

.../devicetree/bindings/arm/rockchip.yaml | 1 +
arch/arm64/boot/dts/rockchip/Makefile | 1 +
.../boot/dts/rockchip/rk3399-nanopc-t4.dts | 1 +
.../boot/dts/rockchip/rk3399-nanopi-m4b.dts | 52 +++++++++++++++++++
.../boot/dts/rockchip/rk3399-nanopi4.dtsi | 1 -
drivers/pci/controller/pcie-rockchip.c | 5 +-
6 files changed, 58 insertions(+), 3 deletions(-)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts

--
2.29.2


2021-01-06 13:51:50

by Chen-Yu Tsai

[permalink] [raw]
Subject: [PATCH v3 4/4] arm64: dts: rockchip: rk3399: Add NanoPi M4B

From: Chen-Yu Tsai <[email protected]>

The NanoPi M4B is a minor revision of the original M4.

The differences against the original Nanopi M4 that are common with the
other M4V2 revision include:

- microphone header removed
- power button added
- recovery button added

Additional changes specific to the M4B:

- USB 3.0 hub removed; board now has 2x USB 3.0 type-A ports and 2x
USB 2.0 ports
- ADB toggle switch added; this changes the top USB 3.0 host port to
a peripheral port
- Type-C port no longer supports data or PD
- WiFi/Bluetooth combo chip switched to AP6256, which supports BT 5.0
but only 1T1R (down from 2T2R) for WiFi

Add a new dts file for the new board revision that shows the difference
against the original.

Signed-off-by: Chen-Yu Tsai <[email protected]>
---
arch/arm64/boot/dts/rockchip/Makefile | 1 +
.../boot/dts/rockchip/rk3399-nanopi-m4b.dts | 52 +++++++++++++++++++
2 files changed, 53 insertions(+)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts

diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index 1ab55a124a87..622d320ddd13 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -33,6 +33,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-kobol-helios64.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-leez-p710.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopc-t4.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4b.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-pinebook-pro.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts b/arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts
new file mode 100644
index 000000000000..72182c58cc46
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * FriendlyElec NanoPi M4B board device tree source
+ *
+ * Copyright (c) 2020 Chen-Yu Tsai <[email protected]>
+ */
+
+/dts-v1/;
+#include "rk3399-nanopi-m4.dts"
+
+/ {
+ model = "FriendlyElec NanoPi M4B";
+ compatible = "friendlyarm,nanopi-m4b", "rockchip,rk3399";
+
+ adc-keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 1>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1500000>;
+ poll-interval = <100>;
+
+ recovery {
+ label = "Recovery";
+ linux,code = <KEY_VENDOR>;
+ press-threshold-microvolt = <18000>;
+ };
+ };
+};
+
+/* No USB type-C PD power manager */
+/delete-node/ &fusb0;
+
+&i2c4 {
+ status = "disabled";
+};
+
+&u2phy0_host {
+ phy-supply = <&vcc5v0_usb2>;
+};
+
+&u2phy0_otg {
+ phy-supply = <&vbus_typec>;
+};
+
+&u2phy1_otg {
+ phy-supply = <&vcc5v0_usb1>;
+};
+
+&vbus_typec {
+ enable-active-high;
+ gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
+};
--
2.29.2

2021-01-19 06:02:28

by Chen-Yu Tsai

[permalink] [raw]
Subject: Re: [PATCH v3 0/4] arm64: rockchip: Fix PCIe ep-gpios requirement and Add Nanopi M4B

Hi,

On Wed, Jan 6, 2021 at 9:46 PM Chen-Yu Tsai <[email protected]> wrote:
>
> From: Chen-Yu Tsai <[email protected]>
>
> Hi everyone,
>
> This is v3 of my Nanopi M4B series. Changes since v2 include:
>
> - Replaced dev_err() with dev_err_probe() for gpiod_get_optional() error
> - Added Reviewed-by tag from Robin Murphy for patch 3
>
> Changes since v1 include:
>
> - Rewrite subject of patch 1 to match existing convention and reference
> 'ep-gpios' DT property instead of the 'ep_gpio' field
>
> This series mainly adds support for the new Nanopi M4B, which is a newer
> variant of the Nanopi M4.
>
> The differences against the original Nanopi M4 that are common with the
> other M4V2 revision include:
>
> - microphone header removed
> - power button added
> - recovery button added
>
> Additional changes specific to the M4B:
>
> - USB 3.0 hub removed; board now has 2x USB 3.0 type-A ports and 2x
> USB 2.0 ports
> - ADB toggle switch added; this changes the top USB 3.0 host port to
> a peripheral port
> - Type-C port no longer supports data or PD
> - WiFi/Bluetooth combo chip switched to AP6256, which supports BT 5.0
> but only 1T1R (down from 2T2R) for WiFi
>
> While working on this, I found that for the M4 family, the PCIe reset
> pin (from the M.2 expansion board) was not wired to the SoC. Only the
> NanoPC T4 has this wired. This ended up in patches 1 and 3.
>
> Patch 1 makes ep_gpio in the Rockchip PCIe driver optional. This property
> is optional in the DT binding, so this just makes the driver adhere to
> the binding.
>
> Patch 2 adds a new compatible string for the new board.
>
> Patch 3 moves the ep-gpios property of the pcie controller from the
> common nanopi4.dtsi file to the nanopc-t4.dts file.
>
> Patch 4 adds a new device tree file for the new board. It includes the
> original device tree for the M4, and then lists the differences.
>
> Given that patch 3 would make PCIe unusable without patch 1, I suggest
> merging patch 1 through the PCI tree as a fix for 5.10, and the rest
> for 5.11 through the Rockchip tree.

Gentle ping. I would really like to get the PCIe controller fix merged
before -rc6 (cut-off for arm-soc -next) and be able to get the new board
into 5.12. Or we could have all of them merged for 5.12, though depending
on the order the PRs are sent and merged by Linus there would be a possible
window where PCIe doesn't work for the Nanopi M4's.


Thanks
ChenYu

> Please have a look. The changes are mostly trivial.
>
>
> Regards
> ChenYu
>
> Chen-Yu Tsai (4):
> PCI: rockchip: Make 'ep-gpios' DT property optional
> dt-bindings: arm: rockchip: Add FriendlyARM NanoPi M4B
> arm64: dts: rockchip: nanopi4: Move ep-gpios property to nanopc-t4
> arm64: dts: rockchip: rk3399: Add NanoPi M4B
>
> .../devicetree/bindings/arm/rockchip.yaml | 1 +
> arch/arm64/boot/dts/rockchip/Makefile | 1 +
> .../boot/dts/rockchip/rk3399-nanopc-t4.dts | 1 +
> .../boot/dts/rockchip/rk3399-nanopi-m4b.dts | 52 +++++++++++++++++++
> .../boot/dts/rockchip/rk3399-nanopi4.dtsi | 1 -
> drivers/pci/controller/pcie-rockchip.c | 5 +-
> 6 files changed, 58 insertions(+), 3 deletions(-)
> create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts
>
> --
> 2.29.2
>