mediatek: bpi-r64: use dt-overlay to select SATA or PCIE1
authorDaniel Golle <daniel@makrotopia.org>
Wed, 17 Mar 2021 17:36:54 +0000 (17:36 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Wed, 17 Mar 2021 19:12:19 +0000 (19:12 +0000)
The Bananapi BPi-R64 got a SATA interface which cannot be used at the
same time as the second mPCIe slot. The decission is made by hogging
GPIO 90.
Embed two addtional DT overlay blobs into the image to allow bootloader
selection of either SATA or PCIE1 feature.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
target/linux/mediatek/Makefile
target/linux/mediatek/image/mt7622.mk
target/linux/mediatek/patches-5.10/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch [new file with mode: 0644]

index 2ee00e5d1763dd423e5ce84c3432e1038036d089..0825b8c6ed64f11e4637186f4b564582061853ca 100644 (file)
@@ -6,7 +6,7 @@ ARCH:=arm
 BOARD:=mediatek
 BOARDNAME:=MediaTek Ralink ARM
 SUBTARGETS:=mt7622 mt7623 mt7629
-FEATURES:=squashfs nand separate_ramdisk fpu
+FEATURES:=squashfs nand separate_ramdisk fpu dt-overlay
 
 KERNEL_PATCHVER:=5.4
 KERNEL_TESTING_PATCHVER:=5.10
index 13f734b38c156d870a634cbead2c3ef1006664b2..fd043ed85fad1662df480f82195b21ec9e8a6537 100644 (file)
@@ -73,6 +73,7 @@ define Device/bananapi_bpi-r64
   DEVICE_VENDOR := Bananapi
   DEVICE_MODEL := BPi-R64
   DEVICE_DTS := mt7622-bananapi-bpi-r64
+  DEVICE_DTS_OVERLAY := mt7622-bananapi-bpi-r64-pcie1 mt7622-bananapi-bpi-r64-sata
   DEVICE_PACKAGES := kmod-ata-ahci-mtk kmod-btmtkuart kmod-usb3 e2fsprogs mkf2fs f2fsck
   ARTIFACTS := sdcard.img
   IMAGES := sysupgrade.itb
diff --git a/target/linux/mediatek/patches-5.10/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch b/target/linux/mediatek/patches-5.10/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch
new file mode 100644 (file)
index 0000000..4c6df93
--- /dev/null
@@ -0,0 +1,80 @@
+--- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
++++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
+@@ -279,14 +279,14 @@
+ &pcie1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie1_pins>;
+-      status = "okay";
++      status = "disabled";
+ };
+ &pio {
+       /* Attention: GPIO 90 is used to switch between PCIe@1,0 and
+        * SATA functions. i.e. output-high: PCIe, output-low: SATA
+        */
+-      asm_sel {
++      asmsel: asm_sel {
+               gpio-hog;
+               gpios = <90 GPIO_ACTIVE_HIGH>;
+               output-high;
+--- /dev/null
++++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64-sata.dts
+@@ -0,0 +1,31 @@
++/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
++
++#include <dt-bindings/gpio/gpio.h>
++
++/dts-v1/;
++/plugin/;
++
++/ {
++      compatible = "bananapi,bpi-r64", "mediatek,mt7622";
++
++      fragment@0 {
++              target = <&asmsel>;
++              __overlay__ {
++                      gpios = <90 GPIO_ACTIVE_LOW>;
++              };
++      };
++
++      fragment@1 {
++              target = <&sata>;
++              __overlay__ {
++                      status = "okay";
++              };
++      };
++
++      fragment@2 {
++              target = <&sata_phy>;
++              __overlay__ {
++                      status = "okay";
++              };
++      };
++};
+--- /dev/null
++++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64-pcie1.dts
+@@ -0,0 +1,24 @@
++/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
++
++#include <dt-bindings/gpio/gpio.h>
++
++/dts-v1/;
++/plugin/;
++
++/ {
++      compatible = "bananapi,bpi-r64", "mediatek,mt7622";
++
++      fragment@0 {
++              target = <&asmsel>;
++              __overlay__ {
++                      gpios = <90 GPIO_ACTIVE_HIGH>;
++              };
++      };
++
++      fragment@1 {
++              target = <&pcie1>;
++              __overlay__ {
++                      status = "okay";
++              };
++      };
++};