All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support
@ 2024-04-14  8:33 Ryan Walklin
  2024-04-14  8:33 ` [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants Ryan Walklin
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: Ryan Walklin @ 2024-04-14  8:33 UTC (permalink / raw)
  To: Andre Przywara, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi, Ryan Walklin

From: Ryan Walklin <ryan@testtoast.com>

The Anbernic RG35XX is a family of handheld gaming devices. There are 4 
variants, of which 3 using the Allwinner H700 chip are covered by this patchset.
The fourth (released first and named simply RG35XX) uses an Actions 
Semiconductor ATM7039s which is a 32-bit Cortex-A9 chip with no mainline support 
and is not covered.

Common features (RG35XX-2024):
- Allwinner H700 @ 1.5GHz (H616 variant exposing RGB LCD pins, with 4x 
  Cortex-A53 Cores and a Mali G31 GPU)
- 1 GB LPDDR4 DRAM
- AXP717 PMIC (patches accepted in mfd-next - 
  https://kernel.googlesource.com/pub/scm/linux/kernel/git/lee/mfd/+/d2ac3df75c3a995064cfac0171e082a30d8c4c66)
- 3.5" 640x480 RGB LCD
- Mini-HDMI, 3.5mm audio jack, mono speaker, two microSD slots and USB-C 
  (USB 2.0) for power.

RG35XX-Plus adds:
- RTL8821CS SDIO Wifi/BT chip

RG35XX-H (Horizontal form-factor) adds:
- RTL8821CS SDIO Wifi/BT chip
- Two analog thumbsticks
- Second USB-C port
- Stereo speaker

Patch 1 adds the DT bindings for the board names, Patch 2 adds the -2024 device
as a common base, Patch 3 adds Wifi/BT support for the -Plus (and -H), and Patch 
3 adds the second USB and thumbsticks for the -H. The -H is a strict superset of
the -Plus, which is in turn a strict superset of the -2024, so this translates 
quite neatly. Alternatively a single DTS for the three devices could be 
considered.

LCD, HDMI, audio and GPU support are not yet ready and relying on out-of-tree 
patches currently, so will be added once these drivers are mainlined.

Ryan

Signed-off-by: Ryan Walklin <ryan@testtoast.com>

Ryan Walklin (4):
  dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming
    device variants
  arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
  arm64: dts: allwinner: h700: Add RG35XX-Plus DTS
  arm64: dts: allwinner: h700: Add RG35XX-H DTS

 .../devicetree/bindings/arm/sunxi.yaml        |  15 +
 .../sun50i-h700-anbernic-rg35xx-2024.dts      | 405 ++++++++++++++++++
 .../sun50i-h700-anbernic-rg35xx-h.dts         |  38 ++
 .../sun50i-h700-anbernic-rg35xx-plus.dts      |  63 +++
 4 files changed, 521 insertions(+)
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts

-- 
2.44.0


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

* [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-14  8:33 [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Ryan Walklin
@ 2024-04-14  8:33 ` Ryan Walklin
  2024-04-14  9:07   ` Krzysztof Kozlowski
  2024-04-17 19:22   ` Krzysztof Kozlowski
  2024-04-14  8:33 ` [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS Ryan Walklin
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 19+ messages in thread
From: Ryan Walklin @ 2024-04-14  8:33 UTC (permalink / raw)
  To: Andre Przywara, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi, Ryan Walklin

From: Ryan Walklin <ryan@testtoast.com>

RG35XX 2024: Base version with Allwinner H700
RG35XX Plus: Adds Wifi/BT
RG35XX H: Adds second USB port and analog sticks to -Plus in horizontal
          altered form factor,

Signed-off-by: Ryan Walklin <ryan@testtoast.com>
---
 Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
index 09d835db6db5..fc10f54561c9 100644
--- a/Documentation/devicetree/bindings/arm/sunxi.yaml
+++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
@@ -56,6 +56,21 @@ properties:
           - const: anbernic,rg-nano
           - const: allwinner,sun8i-v3s
 
+      - description: Anbernic RG35XX (2024)
+      - items:
+          - const: anbernic,rg35xx-2024
+          - const: allwinner,sun50i-h700
+
+      - description: Anbernic RG35XX Plus
+      - items:
+          - const: anbernic,rg35xx-plus
+          - const: allwinner,sun50i-h700
+
+      - description: Anbernic RG35XX H
+      - items:
+          - const: anbernic,rg35xx-h
+          - const: allwinner,sun50i-h700
+
       - description: Amarula A64 Relic
         items:
           - const: amarula,a64-relic
-- 
2.44.0


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

* [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
  2024-04-14  8:33 [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Ryan Walklin
  2024-04-14  8:33 ` [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants Ryan Walklin
@ 2024-04-14  8:33 ` Ryan Walklin
  2024-04-14  9:09   ` Krzysztof Kozlowski
  2024-04-14 17:46   ` Andre Przywara
  2024-04-14  8:33 ` [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS Ryan Walklin
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 19+ messages in thread
From: Ryan Walklin @ 2024-04-14  8:33 UTC (permalink / raw)
  To: Andre Przywara, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi, Ryan Walklin

From: Ryan Walklin <ryan@testtoast.com>

The base model RG35XX (2024) is a handheld gaming device based on an Allwinner 
H700 chip.

The H700 is a H616 variant (4x ARM Cortex-A53 cores @ 1.5Ghz with Mali G31 GPU) 
which exposes RGB LCD and NMI pins.

Device features:
- Allwinner H700 @ 1.5GHz
- 1GB LPDDR4 DRAM
- X-Powers AXP717 PMIC
- 3.5" 640x480 RGB LCD
- Two microSD slots
- Mini-HDMI out
- GPIO keypad
- 3.5mm headphone jack

Enabled in this DTS:
- AXP717 PMIC with regulators (interrupt controller TBC/TBD)
- Power LED (charge LED on device controlled directly by PMIC)
- Serial UART (accessible from PIN headers on the board)
- MMC slots

Signed-off-by: Ryan Walklin <ryan@testtoast.com>
---
 .../sun50i-h700-anbernic-rg35xx-2024.dts      | 405 ++++++++++++++++++
 1 file changed, 405 insertions(+)
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
new file mode 100644
index 000000000000..b4140d450687
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
@@ -0,0 +1,405 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.
+ * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
+ * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
+ */
+
+/dts-v1/;
+
+#include "sun50i-h616.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+    model = "Anbernic RG35XX 2024";
+    compatible = "anbernic,rg35xx-2024", "allwinner,sun50i-h700";
+
+    aliases {
+        mmc0 = &mmc0;
+        mmc1 = &mmc2;
+        mmc2 = &mmc1;
+        serial0 = &uart0;
+    };
+
+    chosen {
+        stdout-path = "serial0:115200n8";
+    };
+
+    leds {
+        compatible = "gpio-leds";
+
+        led-0 {
+            function = LED_FUNCTION_POWER;
+            color = <LED_COLOR_ID_GREEN>;
+            gpios = <&pio 8 12 GPIO_ACTIVE_HIGH>; /* PI12 */
+            default-state = "on";
+        };
+    };
+
+    gpio-keys {
+       compatible = "gpio-keys";
+
+       keyUp {
+           label = "D-Pad Up";
+           gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */
+           linux,input-type = <EV_KEY>;
+           linux,code = <BTN_DPAD_UP>;
+        };
+
+        keyDown {
+            label = "D-Pad Down";
+            gpios = <&pio 4 0 GPIO_ACTIVE_LOW>; /* PE0 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_DPAD_DOWN>;
+        };
+
+        keyLeft {
+            label = "D-Pad left";
+            gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_DPAD_LEFT>;
+        };
+
+        keyRight {
+            label = "D-Pad Right";
+            gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_DPAD_RIGHT>;
+        };
+
+        keyA {
+            label = "Action-Pad A";
+            gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_EAST>;
+        };
+
+        keyB {
+            label = "Action-Pad B";
+            gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_SOUTH>;
+        };
+
+        keyX {
+            label = "Action-Pad X";
+            gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_NORTH>;
+        };
+
+        keyY {
+            label = "Action Pad Y";
+            gpios = <&pio 0 2 GPIO_ACTIVE_LOW>; /* PA2 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_WEST>;
+        };
+
+        keyStart {
+            label = "Key Start";
+            gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_START>;
+        };
+
+        keySel {
+            label = "Key Select";
+            gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_SELECT>;
+        };
+
+        keyL1 {
+            label = "Key L1";
+            gpios = <&pio 0 10 GPIO_ACTIVE_LOW>; /* PA10 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_TL>;
+        };
+
+        keyL2 {
+            label = "Key L2";
+            gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_TL2>;
+        };
+
+        keyR1 {
+            label = "Key R1";
+            gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_TR>;
+        };
+
+        keyR2 {
+            label = "Key R2";
+            gpios = <&pio 0 7 GPIO_ACTIVE_LOW>; /* PA7 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_TR2>;
+        };
+
+        keyMenu {
+            label = "Key Menu";
+            gpios = <&pio 4 3 GPIO_ACTIVE_LOW>; /* PE3 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_MODE>;
+        };
+
+        keyVol+ {
+            label = "Key Volume Up";
+            gpios = <&pio 4 1 GPIO_ACTIVE_LOW>; /* PE1 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <KEY_VOLUMEUP>;
+        };
+
+        keyVol- {
+            label = "Key Volume Down";
+            gpios = <&pio 4 2 GPIO_ACTIVE_LOW>; /* PE2 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <KEY_VOLUMEDOWN>;
+        };
+    };
+
+    reg_vcc5v: vcc5v {
+        compatible = "regulator-fixed";
+        regulator-name = "vcc-5v";
+        regulator-always-on;
+        regulator-boot-on;
+        regulator-min-microvolt = <5000000>;
+        regulator-max-microvolt = <5000000>;
+    };
+
+    vcc_5v0_usb: vcc-5v0-usb { /* needs gpios */
+            compatible = "regulator-fixed";
+            regulator-name = "vcc_5v0_usb";
+            regulator-min-microvolt = <5000000>;
+            regulator-max-microvolt = <5000000>;
+            regulator-always-on;
+            regulator-boot-on;
+        };
+
+    reg_vcc3v3: vcc3v3 {
+        gpio = <&pio 4 4 GPIO_ACTIVE_HIGH>;
+        compatible = "regulator-fixed";
+        regulator-name = "vcc-3v3";
+        regulator-always-on;
+        regulator-boot-on;
+        regulator-min-microvolt = <3300000>;
+        regulator-max-microvolt = <3300000>;
+
+    };
+
+    reg_vcc1v8: vcc1v8 {
+        compatible = "regulator-fixed";
+        regulator-name = "vcc-1v8";
+        regulator-always-on;
+        regulator-min-microvolt = <1800000>;
+        regulator-max-microvolt = <1800000>;
+    };
+};
+
+&cpu0 {
+    cpu-supply = <&reg_dcdc1>;
+};
+
+&mmc0 {
+    vmmc-supply = <&reg_vcc3v3>;
+    disable-wp;
+    cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;  /* PF6 */
+    bus-width = <4>;
+    status = "okay";
+};
+
+&mmc2 {
+    vmmc-supply = <&reg_vcc3v3>;
+    vqmmc-supply = <&reg_aldo1>;
+    cd-gpios = <&pio 4 22 GPIO_ACTIVE_LOW>; /* PE 22 */
+    //cd-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>;  /* PE16 */
+    bus-width = <4>;
+    status = "okay";
+};
+
+&ohci0 {
+    status = "okay";
+};
+
+&ehci1 {
+    status = "okay";
+};
+
+&i2c3 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&i2c3_ph_pins>;
+    status = "okay";
+};
+
+&r_rsb {
+   status = "okay";
+
+   axp717: pmic@3a3 {
+       compatible = "x-powers,axp717";
+       //interrupt-controller;
+       //#interrupt-cells = <1>;
+       reg = <0x3a3>;
+       //interrupt-parent = <&r_intc>; /* test */
+       //interrupts = <0 IRQ_TYPE_LEVEL_LOW>; /* test */
+
+       vin1-supply = <&reg_vcc5v>;
+       vin2-supply = <&reg_vcc5v>;
+       vin3-supply = <&reg_vcc5v>;
+       vin4-supply = <&reg_vcc5v>;
+
+       regulators {
+            reg_dcdc1: dcdc1 {
+                regulator-always-on;
+                regulator-boot-on;
+                regulator-min-microvolt = <810000>;
+                regulator-max-microvolt = <1100000>;
+                regulator-name = "vdd-cpu";
+            };
+
+            reg_dcdc2: dcdc2 {
+                regulator-always-on;
+                regulator-boot-on;
+                regulator-min-microvolt = <940000>;
+                regulator-max-microvolt = <940000>;
+                regulator-name = "vdd-sys";
+            };
+
+            reg_dcdc3: dcdc3 {
+                regulator-always-on;
+                regulator-boot-on;/* test */
+                regulator-min-microvolt = <1100000>;
+                regulator-max-microvolt = <1100000>;
+                regulator-name = "vdd-dram";
+            };
+
+            reg_aldo1: aldo1 {
+                regulator-always-on;
+                regulator-boot-on;/* test */
+                regulator-min-microvolt = <1800000>;
+                regulator-max-microvolt = <3300000>;
+                regulator-name = "vcc-sd2";
+            };
+
+            reg_aldo2: aldo2 {
+                regulator-always-on;/* test */
+                regulator-boot-on;/* test */
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-aldo2";
+            };
+
+            reg_aldo3: aldo3 {
+                regulator-always-on;
+                regulator-boot-on;
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-aldo3";
+            };
+
+            reg_aldo4: aldo4 {
+                regulator-always-on;
+                regulator-boot-on;
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-aldo4";
+            };
+
+            reg_bldo1: bldo1 {
+                regulator-always-on;/* test */
+                regulator-boot-on;/* test */
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-bldo1";
+            };
+
+            reg_bldo2: bldo2 {
+                regulator-always-on;
+                regulator-boot-on;
+                regulator-min-microvolt = <1800000>;
+                regulator-max-microvolt = <1800000>;
+                regulator-name = "vcc-1v8";
+            };
+
+            reg_bldo3: bldo3 {
+                regulator-always-on;/* test */
+                regulator-boot-on;/* test */
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-bldo3";
+            };
+
+            reg_bldo4: bldo4 {
+                regulator-always-on;/* test */
+                regulator-boot-on;/* test */
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-bldo4";
+            };
+
+            reg_cldo1: cldo1 {
+                regulator-always-on;/* test */
+                regulator-boot-on;/* test */
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-cldo1";
+            };
+
+            reg_cldo2: cldo2 {
+                regulator-always-on;/* test */
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-cldo2";
+            };
+
+            reg_cldo3: cldo3 {
+                regulator-always-on;
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <3500000>;
+                regulator-name = "axp717-cldo3";
+            };
+
+            reg_cldo4: cldo4 {
+                regulator-always-on;/* test */
+                regulator-min-microvolt = <3300000>;
+                regulator-max-microvolt = <3300000>;
+                regulator-name = "vcc-wifi";
+            };
+
+            reg_boost: reg-boost {
+                regulator-always-on;/* test */
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                regulator-name = "boost";
+            };
+
+            reg_cpusldo: cpusldo {
+                regulator-always-on;
+                regulator-boot-on;
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <1400000>;
+                regulator-name = "cpusldo";
+            };
+       };
+   };
+};
+
+&uart0 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&uart0_ph_pins>;
+    status = "okay";
+};
+
+/* the AXP717 has USB type-C role switch functionality, to be implemented */
+&usbotg {
+    dr_mode = "host";   /* USB type-C receptable */
+    status = "okay";
+};
+
+&usbphy {
+    status = "okay";
+};
-- 
2.44.0


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

* [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS
  2024-04-14  8:33 [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Ryan Walklin
  2024-04-14  8:33 ` [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants Ryan Walklin
  2024-04-14  8:33 ` [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS Ryan Walklin
@ 2024-04-14  8:33 ` Ryan Walklin
  2024-04-14  9:10   ` Krzysztof Kozlowski
  2024-04-14 18:37   ` Andre Przywara
  2024-04-14  8:33 ` [PATCH 4/4] arm64: dts: allwinner: h700: Add RG35XX-H DTS Ryan Walklin
  2024-04-15 18:46 ` [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Rob Herring
  4 siblings, 2 replies; 19+ messages in thread
From: Ryan Walklin @ 2024-04-14  8:33 UTC (permalink / raw)
  To: Andre Przywara, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi, Ryan Walklin

From: Ryan Walklin <ryan@testtoast.com>

The RG35XX-Plus adds a RTL8221CS SDIO Wifi/BT chip to the RG35XX (2024).

Enabled in this DTS:
- WiFi
- Bluetooth
- Supporting power sequence and GPIOs

Signed-off-by: Ryan Walklin <ryan@testtoast.com>
---
 .../sun50i-h700-anbernic-rg35xx-plus.dts      | 63 +++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
new file mode 100644
index 000000000000..b9a163ed5d0b
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.
+ * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
+ * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
+ */
+
+/dts-v1/;
+
+#include "sun50i-h700-anbernic-rg35xx-2024.dts"
+
+/ {
+    model = "Anbernic RG35XX Plus";
+    compatible = "anbernic,rg35xx-plus", "allwinner,sun50i-h700";
+
+    wifi_pwrseq: wifi_pwrseq {
+        compatible = "mmc-pwrseq-simple";
+        clocks = <&rtc CLK_OSC32K_FANOUT>;
+        clock-names = "ext_clock";
+        pinctrl-0 = <&x32clk_fanout_pin>;
+        pinctrl-names = "default";
+        post-power-on-delay-ms = <200>;
+        reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
+    };
+};
+
+/* SDIO WiFi RTL8821CS, powered by CLDO4, regon=PG18, hostwake=PG15 */
+&mmc1 {
+    vmmc-supply = <&reg_cldo4>;
+    vqmmc-supply = <&reg_vcc1v8>;
+    mmc-pwrseq = <&wifi_pwrseq>;
+    bus-width = <4>;
+    non-removable;
+    status = "okay";
+
+    sdio_wifi: wifi@1 {
+       reg = <1>;
+       interrupt-parent = <&pio>;
+       interrupts = <6 15 IRQ_TYPE_LEVEL_LOW>; /* PG15 */
+       interrupt-names = "host-wake";
+    };
+};
+
+&uart0 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&uart0_ph_pins>;
+    status = "okay";
+};
+
+/* Bluetooth RTL8821CS, RST_N: PG19, BT_WAKE: PG17, BT_HOSTWAKE: PG16 */
+&uart1 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+    uart-has-rtscts;
+    status = "okay";
+
+    bluetooth {
+        compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt";
+        device-wake-gpios = <&pio 6 17 GPIO_ACTIVE_HIGH>;
+        enable-gpios = <&pio 6 19 GPIO_ACTIVE_HIGH>;
+        host-wake-gpios = <&pio 6 16 GPIO_ACTIVE_HIGH>;
+    };
+};
-- 
2.44.0


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

* [PATCH 4/4] arm64: dts: allwinner: h700: Add RG35XX-H DTS
  2024-04-14  8:33 [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Ryan Walklin
                   ` (2 preceding siblings ...)
  2024-04-14  8:33 ` [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS Ryan Walklin
@ 2024-04-14  8:33 ` Ryan Walklin
  2024-04-15  0:12   ` Andre Przywara
  2024-04-15 18:46 ` [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Rob Herring
  4 siblings, 1 reply; 19+ messages in thread
From: Ryan Walklin @ 2024-04-14  8:33 UTC (permalink / raw)
  To: Andre Przywara, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi, Ryan Walklin

From: Ryan Walklin <ryan@testtoast.com>

The RG35XX-H adds thumbsticks, a stereo speaker, and a second USB port
to the RG35XX-Plus, and has a horizontal form factor.

Enabled in this DTS:
- Thumbsticks
- Second USB port

Signed-off-by: Ryan Walklin <ryan@testtoast.com>
---
 .../sun50i-h700-anbernic-rg35xx-h.dts         | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
new file mode 100644
index 000000000000..5b7de7bfc458
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.
+ * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
+ * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
+ */
+
+
+/dts-v1/;
+#include "sun50i-h700-anbernic-rg35xx-plus.dts"
+
+/ {
+    model = "Anbernic RG35XX H";
+    compatible = "anbernic,rg35xx-h", "allwinner,sun50i-h700";
+
+    gpio-keys: gpio-keys-thumb {
+       compatible = "gpio-keys";
+
+        keyThumbLeft {
+            label = "GPIO Thumb Left";
+            gpios = <&pio 4 8 GPIO_ACTIVE_LOW>; /* PE8 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_THUMBL>;
+        };
+
+        keyThumbRight {
+            label = "GPIO Thumb Right";
+            gpios = <&pio 4 9 GPIO_ACTIVE_LOW>; /* PE9 */
+            linux,input-type = <EV_KEY>;
+            linux,code = <BTN_THUMBR>;
+        };
+    };
+};
+
+&usbotg {
+    dr_mode = "peripheral";
+    status = "okay";
+};
-- 
2.44.0


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

* Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-14  8:33 ` [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants Ryan Walklin
@ 2024-04-14  9:07   ` Krzysztof Kozlowski
  2024-04-17  9:05     ` Ryan Walklin
  2024-04-17  9:54     ` Andre Przywara
  2024-04-17 19:22   ` Krzysztof Kozlowski
  1 sibling, 2 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-14  9:07 UTC (permalink / raw)
  To: Ryan Walklin, Andre Przywara, Chen-Yu Tsai, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi

On 14/04/2024 10:33, Ryan Walklin wrote:
> From: Ryan Walklin <ryan@testtoast.com>
> 
> RG35XX 2024: Base version with Allwinner H700
> RG35XX Plus: Adds Wifi/BT
> RG35XX H: Adds second USB port and analog sticks to -Plus in horizontal
>           altered form factor,
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> ---
>  Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
> index 09d835db6db5..fc10f54561c9 100644
> --- a/Documentation/devicetree/bindings/arm/sunxi.yaml
> +++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
> @@ -56,6 +56,21 @@ properties:
>            - const: anbernic,rg-nano
>            - const: allwinner,sun8i-v3s
>  
> +      - description: Anbernic RG35XX (2024)
> +      - items:
> +          - const: anbernic,rg35xx-2024
> +          - const: allwinner,sun50i-h700
> +
> +      - description: Anbernic RG35XX Plus
> +      - items:
> +          - const: anbernic,rg35xx-plus
> +          - const: allwinner,sun50i-h700
> +
> +      - description: Anbernic RG35XX H
> +      - items:
> +          - const: anbernic,rg35xx-h

Any reason these are not just one enum with three entires?

Best regards,
Krzysztof


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

* Re: [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
  2024-04-14  8:33 ` [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS Ryan Walklin
@ 2024-04-14  9:09   ` Krzysztof Kozlowski
  2024-04-17  9:08     ` Ryan Walklin
  2024-04-14 17:46   ` Andre Przywara
  1 sibling, 1 reply; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-14  9:09 UTC (permalink / raw)
  To: Ryan Walklin, Andre Przywara, Chen-Yu Tsai, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi

On 14/04/2024 10:33, Ryan Walklin wrote:
> From: Ryan Walklin <ryan@testtoast.com>
> 
> The base model RG35XX (2024) is a handheld gaming device based on an Allwinner 
> H700 chip.
> 
> The H700 is a H616 variant (4x ARM Cortex-A53 cores @ 1.5Ghz with Mali G31 GPU) 
> which exposes RGB LCD and NMI pins.
> 
> Device features:
> - Allwinner H700 @ 1.5GHz
> - 1GB LPDDR4 DRAM
> - X-Powers AXP717 PMIC
> - 3.5" 640x480 RGB LCD
> - Two microSD slots
> - Mini-HDMI out
> - GPIO keypad
> - 3.5mm headphone jack
> 
> Enabled in this DTS:
> - AXP717 PMIC with regulators (interrupt controller TBC/TBD)
> - Power LED (charge LED on device controlled directly by PMIC)
> - Serial UART (accessible from PIN headers on the board)
> - MMC slots
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> ---
>  .../sun50i-h700-anbernic-rg35xx-2024.dts      | 405 ++++++++++++++++++
>  1 file changed, 405 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
> new file mode 100644
> index 000000000000..b4140d450687
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
> @@ -0,0 +1,405 @@
> +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +/*
> + * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.
> + * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
> + * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
> + */
> +
> +/dts-v1/;
> +
> +#include "sun50i-h616.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/linux-event-codes.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/leds/common.h>
> +
> +/ {
> +    model = "Anbernic RG35XX 2024";
> +    compatible = "anbernic,rg35xx-2024", "allwinner,sun50i-h700";
> +
> +    aliases {
> +        mmc0 = &mmc0;
> +        mmc1 = &mmc2;
> +        mmc2 = &mmc1;
> +        serial0 = &uart0;
> +    };
> +
> +    chosen {
> +        stdout-path = "serial0:115200n8";
> +    };
> +
> +    leds {
> +        compatible = "gpio-leds";
> +
> +        led-0 {
> +            function = LED_FUNCTION_POWER;
> +            color = <LED_COLOR_ID_GREEN>;
> +            gpios = <&pio 8 12 GPIO_ACTIVE_HIGH>; /* PI12 */
> +            default-state = "on";
> +        };
> +    };
> +
> +    gpio-keys {
> +       compatible = "gpio-keys";
> +
> +       keyUp {

It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).

No uppercase letters are allowed as node names.

...

> +
> +        keyVol+ {

Neither this

> +            label = "Key Volume Up";
> +            gpios = <&pio 4 1 GPIO_ACTIVE_LOW>; /* PE1 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <KEY_VOLUMEUP>;
> +        };
> +
> +        keyVol- {

Although it is allowed but not consistent and readable.

Node names should be generic. See also an explanation and list of
examples (not exhaustive) in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation


> +            label = "Key Volume Down";
> +            gpios = <&pio 4 2 GPIO_ACTIVE_LOW>; /* PE2 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <KEY_VOLUMEDOWN>;
> +        };
> +    };
> +
> +    reg_vcc5v: vcc5v {

Use some common reasonable prefix, e.g. regulator

> +        compatible = "regulator-fixed";
> +        regulator-name = "vcc-5v";
> +        regulator-always-on;
> +        regulator-boot-on;
> +        regulator-min-microvolt = <5000000>;
> +        regulator-max-microvolt = <5000000>;
> +    };
> +
> +    vcc_5v0_usb: vcc-5v0-usb { /* needs gpios */
> +            compatible = "regulator-fixed";
> +            regulator-name = "vcc_5v0_usb";
> +            regulator-min-microvolt = <5000000>;
> +            regulator-max-microvolt = <5000000>;
> +            regulator-always-on;
> +            regulator-boot-on;
> +        };
> +
> +    reg_vcc3v3: vcc3v3 {
> +        gpio = <&pio 4 4 GPIO_ACTIVE_HIGH>;
> +        compatible = "regulator-fixed";
> +        regulator-name = "vcc-3v3";
> +        regulator-always-on;
> +        regulator-boot-on;
> +        regulator-min-microvolt = <3300000>;
> +        regulator-max-microvolt = <3300000>;
> +
> +    };
> +
> +    reg_vcc1v8: vcc1v8 {
> +        compatible = "regulator-fixed";
> +        regulator-name = "vcc-1v8";
> +        regulator-always-on;
> +        regulator-min-microvolt = <1800000>;
> +        regulator-max-microvolt = <1800000>;
> +    };
> +};
> +
> +&cpu0 {
> +    cpu-supply = <&reg_dcdc1>;
> +};
> +
> +&mmc0 {
> +    vmmc-supply = <&reg_vcc3v3>;
> +    disable-wp;
> +    cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;  /* PF6 */
> +    bus-width = <4>;
> +    status = "okay";
> +};
> +
> +&mmc2 {
> +    vmmc-supply = <&reg_vcc3v3>;
> +    vqmmc-supply = <&reg_aldo1>;
> +    cd-gpios = <&pio 4 22 GPIO_ACTIVE_LOW>; /* PE 22 */
> +    //cd-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>;  /* PE16 */

Please do not add dead code without explanation.

> +    bus-width = <4>;
> +    status = "okay";
> +};
> +
> +&ohci0 {
> +    status = "okay";
> +};
> +
> +&ehci1 {
> +    status = "okay";
> +};
> +
> +&i2c3 {
> +    pinctrl-names = "default";
> +    pinctrl-0 = <&i2c3_ph_pins>;
> +    status = "okay";
> +};
> +
> +&r_rsb {
> +   status = "okay";
> +
> +   axp717: pmic@3a3 {
> +       compatible = "x-powers,axp717";
> +       //interrupt-controller;
> +       //#interrupt-cells = <1>;
> +       reg = <0x3a3>;
> +       //interrupt-parent = <&r_intc>; /* test */
> +       //interrupts = <0 IRQ_TYPE_LEVEL_LOW>; /* test */

Keep test and dead code outside upstream submission.



Best regards,
Krzysztof


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

* Re: [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS
  2024-04-14  8:33 ` [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS Ryan Walklin
@ 2024-04-14  9:10   ` Krzysztof Kozlowski
  2024-04-14 18:37   ` Andre Przywara
  1 sibling, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-14  9:10 UTC (permalink / raw)
  To: Ryan Walklin, Andre Przywara, Chen-Yu Tsai, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi

On 14/04/2024 10:33, Ryan Walklin wrote:
> From: Ryan Walklin <ryan@testtoast.com>
> 
> The RG35XX-Plus adds a RTL8221CS SDIO Wifi/BT chip to the RG35XX (2024).
> 
> Enabled in this DTS:
> - WiFi
> - Bluetooth
> - Supporting power sequence and GPIOs
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> ---
>  .../sun50i-h700-anbernic-rg35xx-plus.dts      | 63 +++++++++++++++++++
>  1 file changed, 63 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
> new file mode 100644
> index 000000000000..b9a163ed5d0b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
> @@ -0,0 +1,63 @@
> +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +/*
> + * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.
> + * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
> + * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
> + */
> +
> +/dts-v1/;
> +
> +#include "sun50i-h700-anbernic-rg35xx-2024.dts"
> +
> +/ {
> +    model = "Anbernic RG35XX Plus";
> +    compatible = "anbernic,rg35xx-plus", "allwinner,sun50i-h700";
> +
> +    wifi_pwrseq: wifi_pwrseq {
> +        compatible = "mmc-pwrseq-simple";
> +        clocks = <&rtc CLK_OSC32K_FANOUT>;
> +        clock-names = "ext_clock";
> +        pinctrl-0 = <&x32clk_fanout_pin>;
> +        pinctrl-names = "default";
> +        post-power-on-delay-ms = <200>;
> +        reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
> +    };
> +};
> +
> +/* SDIO WiFi RTL8821CS, powered by CLDO4, regon=PG18, hostwake=PG15 */
> +&mmc1 {
> +    vmmc-supply = <&reg_cldo4>;
> +    vqmmc-supply = <&reg_vcc1v8>;
> +    mmc-pwrseq = <&wifi_pwrseq>;
> +    bus-width = <4>;
> +    non-removable;
> +    status = "okay";
> +
> +    sdio_wifi: wifi@1 {
> +       reg = <1>;
> +       interrupt-parent = <&pio>;
> +       interrupts = <6 15 IRQ_TYPE_LEVEL_LOW>; /* PG15 */
> +       interrupt-names = "host-wake";
> +    };
> +};
> +
> +&uart0 {
> +    pinctrl-names = "default";
> +    pinctrl-0 = <&uart0_ph_pins>;
> +    status = "okay";
> +};
> +
> +/* Bluetooth RTL8821CS, RST_N: PG19, BT_WAKE: PG17, BT_HOSTWAKE: PG16 */
> +&uart1 {
> +    pinctrl-names = "default";
> +    pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> +    uart-has-rtscts;
> +    status = "okay";
> +
> +    bluetooth {
> +        compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt";
> +        device-wake-gpios = <&pio 6 17 GPIO_ACTIVE_HIGH>;

Wrong indentation. Everywhere. Please follow DTS coding style.

Best regards,
Krzysztof


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

* Re: [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
  2024-04-14  8:33 ` [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS Ryan Walklin
  2024-04-14  9:09   ` Krzysztof Kozlowski
@ 2024-04-14 17:46   ` Andre Przywara
  1 sibling, 0 replies; 19+ messages in thread
From: Andre Przywara @ 2024-04-14 17:46 UTC (permalink / raw)
  To: Ryan Walklin
  Cc: Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jernej Skrabec, Samuel Holland, Chris Morgan, devicetree,
	linux-sunxi

On Sun, 14 Apr 2024 20:33:46 +1200
Ryan Walklin <ryan@testtoast.com> wrote:

Hi Ryan,

thanks for sending this!

> From: Ryan Walklin <ryan@testtoast.com>
> 
> The base model RG35XX (2024) is a handheld gaming device based on an Allwinner 
> H700 chip.
> 
> The H700 is a H616 variant (4x ARM Cortex-A53 cores @ 1.5Ghz with Mali G31 GPU) 
> which exposes RGB LCD and NMI pins.
> 
> Device features:
> - Allwinner H700 @ 1.5GHz
> - 1GB LPDDR4 DRAM
> - X-Powers AXP717 PMIC
> - 3.5" 640x480 RGB LCD
> - Two microSD slots
> - Mini-HDMI out
> - GPIO keypad
> - 3.5mm headphone jack
> 
> Enabled in this DTS:
> - AXP717 PMIC with regulators (interrupt controller TBC/TBD)
> - Power LED (charge LED on device controlled directly by PMIC)
> - Serial UART (accessible from PIN headers on the board)
> - MMC slots
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> ---
>  .../sun50i-h700-anbernic-rg35xx-2024.dts      | 405 ++++++++++++++++++
>  1 file changed, 405 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
> new file mode 100644
> index 000000000000..b4140d450687
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
> @@ -0,0 +1,405 @@
> +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +/*
> + * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.
> + * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
> + * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
> + */
> +
> +/dts-v1/;
> +
> +#include "sun50i-h616.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/linux-event-codes.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/leds/common.h>
> +
> +/ {
> +    model = "Anbernic RG35XX 2024";
> +    compatible = "anbernic,rg35xx-2024", "allwinner,sun50i-h700";
> +
> +    aliases {
> +        mmc0 = &mmc0;
> +        mmc1 = &mmc2;
> +        mmc2 = &mmc1;

We don't put aliases for MMC devices in here. Conceptually they should
not be needed, but U-Boot will add them automatically anyway, so we
would not lose anything.

> +        serial0 = &uart0;
> +    };
> +
> +    chosen {
> +        stdout-path = "serial0:115200n8";
> +    };
> +
> +    leds {
> +        compatible = "gpio-leds";
> +
> +        led-0 {
> +            function = LED_FUNCTION_POWER;
> +            color = <LED_COLOR_ID_GREEN>;
> +            gpios = <&pio 8 12 GPIO_ACTIVE_HIGH>; /* PI12 */
> +            default-state = "on";
> +        };
> +    };
> +
> +    gpio-keys {
> +       compatible = "gpio-keys";
> +
> +       keyUp {
> +           label = "D-Pad Up";
> +           gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */
> +           linux,input-type = <EV_KEY>;
> +           linux,code = <BTN_DPAD_UP>;
> +        };
> +
> +        keyDown {
> +            label = "D-Pad Down";
> +            gpios = <&pio 4 0 GPIO_ACTIVE_LOW>; /* PE0 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_DPAD_DOWN>;
> +        };
> +
> +        keyLeft {
> +            label = "D-Pad left";
> +            gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_DPAD_LEFT>;
> +        };
> +
> +        keyRight {
> +            label = "D-Pad Right";
> +            gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_DPAD_RIGHT>;
> +        };
> +
> +        keyA {
> +            label = "Action-Pad A";
> +            gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_EAST>;
> +        };
> +
> +        keyB {
> +            label = "Action-Pad B";
> +            gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_SOUTH>;
> +        };
> +
> +        keyX {
> +            label = "Action-Pad X";
> +            gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_NORTH>;
> +        };
> +
> +        keyY {
> +            label = "Action Pad Y";
> +            gpios = <&pio 0 2 GPIO_ACTIVE_LOW>; /* PA2 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_WEST>;
> +        };
> +
> +        keyStart {
> +            label = "Key Start";
> +            gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_START>;
> +        };
> +
> +        keySel {
> +            label = "Key Select";
> +            gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_SELECT>;
> +        };
> +
> +        keyL1 {
> +            label = "Key L1";
> +            gpios = <&pio 0 10 GPIO_ACTIVE_LOW>; /* PA10 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_TL>;
> +        };
> +
> +        keyL2 {
> +            label = "Key L2";
> +            gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_TL2>;
> +        };
> +
> +        keyR1 {
> +            label = "Key R1";
> +            gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_TR>;
> +        };
> +
> +        keyR2 {
> +            label = "Key R2";
> +            gpios = <&pio 0 7 GPIO_ACTIVE_LOW>; /* PA7 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_TR2>;
> +        };
> +
> +        keyMenu {
> +            label = "Key Menu";
> +            gpios = <&pio 4 3 GPIO_ACTIVE_LOW>; /* PE3 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_MODE>;
> +        };
> +
> +        keyVol+ {
> +            label = "Key Volume Up";
> +            gpios = <&pio 4 1 GPIO_ACTIVE_LOW>; /* PE1 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <KEY_VOLUMEUP>;
> +        };
> +
> +        keyVol- {
> +            label = "Key Volume Down";
> +            gpios = <&pio 4 2 GPIO_ACTIVE_LOW>; /* PE2 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <KEY_VOLUMEDOWN>;
> +        };
> +    };
> +
> +    reg_vcc5v: vcc5v {
> +        compatible = "regulator-fixed";
> +        regulator-name = "vcc-5v";
> +        regulator-always-on;
> +        regulator-boot-on;

This last line is not be needed, since that regulator is not switchable
anyways.
Also can you please add a comment that this is the USB-C power input?

> +        regulator-min-microvolt = <5000000>;
> +        regulator-max-microvolt = <5000000>;
> +    };
> +
> +    vcc_5v0_usb: vcc-5v0-usb { /* needs gpios */

So what is this gpio? Please specify it in this node.

> +            compatible = "regulator-fixed";
> +            regulator-name = "vcc_5v0_usb";
> +            regulator-min-microvolt = <5000000>;
> +            regulator-max-microvolt = <5000000>;
> +            regulator-always-on;
> +            regulator-boot-on;

Assuming this is the regulator that provides the USB-VBUS power on
the USB-C connector, then we should not force it on. I think the boot
state is actually off, to allow power input from that socket, and to
enable USB-OTG functionality, for instance for FEL mode.
We should reference this regulator in the USB-PHY mode instead, then
it would be automatically enabled if needed, see below.

> +        };
> +
> +    reg_vcc3v3: vcc3v3 {

Is that just for the second SD card? You should name it then
accordingly.

> +        gpio = <&pio 4 4 GPIO_ACTIVE_HIGH>;

Please add the usual comment stating the GPIO name here.

> +        compatible = "regulator-fixed";
> +        regulator-name = "vcc-3v3";
> +        regulator-always-on;
> +        regulator-boot-on;

Again those two properties should not be here, unless this really
powers something essential, that we cannot control otherwise. But since
it's GPIO controlled, I doubt that.

> +        regulator-min-microvolt = <3300000>;
> +        regulator-max-microvolt = <3300000>;
> +
> +    };
> +
> +    reg_vcc1v8: vcc1v8 {

What is this regulator for? Is it really a separate fixed regulator, or
actually one rail from the AXP?

> +        compatible = "regulator-fixed";
> +        regulator-name = "vcc-1v8";
> +        regulator-always-on;

Regardless of the above, it looks like only being referenced by the
WiFi chip, and then it should not be always on, I guess?

> +        regulator-min-microvolt = <1800000>;
> +        regulator-max-microvolt = <1800000>;
> +    };
> +};
> +
> +&cpu0 {
> +    cpu-supply = <&reg_dcdc1>;
> +};
> +
> +&mmc0 {
> +    vmmc-supply = <&reg_vcc3v3>;
> +    disable-wp;
> +    cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;  /* PF6 */
> +    bus-width = <4>;
> +    status = "okay";
> +};
> +
> +&mmc2 {
> +    vmmc-supply = <&reg_vcc3v3>;
> +    vqmmc-supply = <&reg_aldo1>;
> +    cd-gpios = <&pio 4 22 GPIO_ACTIVE_LOW>; /* PE 22 */
> +    //cd-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>;  /* PE16 */

So which one is it? If the former, please just remove that commented
line.

> +    bus-width = <4>;
> +    status = "okay";
> +};
> +
> +&ohci0 {
> +    status = "okay";
> +};
> +
> +&ehci1 {
> +    status = "okay";
> +};
> +
> +&i2c3 {
> +    pinctrl-names = "default";
> +    pinctrl-0 = <&i2c3_ph_pins>;
> +    status = "okay";

What is this node for? Is there a device connected to this bus?

> +};
> +
> +&r_rsb {
> +   status = "okay";
> +
> +   axp717: pmic@3a3 {
> +       compatible = "x-powers,axp717";
> +       //interrupt-controller;
> +       //#interrupt-cells = <1>;

Regardless of whether the interrupts really work, you would need both
of those properties.

> +       reg = <0x3a3>;
> +       //interrupt-parent = <&r_intc>; /* test */
> +       //interrupts = <0 IRQ_TYPE_LEVEL_LOW>; /* test */

So this should be the NMI controller that Chris is looking at, right?
Anyway, please no commented lines without a good reason. And it looks
like it wouldn't be "r_intc" in any case.
If you want to drop support for now, but give a hint, please do this in
a normal free form comment.

> +
> +       vin1-supply = <&reg_vcc5v>;
> +       vin2-supply = <&reg_vcc5v>;
> +       vin3-supply = <&reg_vcc5v>;
> +       vin4-supply = <&reg_vcc5v>;
> +
> +       regulators {
> +            reg_dcdc1: dcdc1 {
> +                regulator-always-on;
> +                regulator-boot-on;

I don't think boot-on helps here, please just drop it. The same applies
to the other cases in this file. Unless you have a good reason ...

> +                regulator-min-microvolt = <810000>;
> +                regulator-max-microvolt = <1100000>;

I guess this needs to be increased slightly, to cover the BSP OPP
table entry for 1.5 GHz?

> +                regulator-name = "vdd-cpu";
> +            };
> +
> +            reg_dcdc2: dcdc2 {
> +                regulator-always-on;
> +                regulator-boot-on;
> +                regulator-min-microvolt = <940000>;
> +                regulator-max-microvolt = <940000>;
> +                regulator-name = "vdd-sys";
> +            };
> +
> +            reg_dcdc3: dcdc3 {
> +                regulator-always-on;
> +                regulator-boot-on;/* test */
> +                regulator-min-microvolt = <1100000>;
> +                regulator-max-microvolt = <1100000>;
> +                regulator-name = "vdd-dram";
> +            };
> +
> +            reg_aldo1: aldo1 {
> +                regulator-always-on;
> +                regulator-boot-on;/* test */

So is that the regulator exclusively used for the second SD card?
Then you wouldn't need the always-on and boot-on properties.
And then it should be referenced in the PIO's vcc-pc-supply.

> +                regulator-min-microvolt = <1800000>;
> +                regulator-max-microvolt = <3300000>;
> +                regulator-name = "vcc-sd2";
> +            };
> +
> +            reg_aldo2: aldo2 {

So I don't see any of those following regulators (minus cldo4)
referenced in the DTs, and with that given broad voltage range I don't
think those entries are useful anyway.
So can you remove/disable/comment all of them, and see if the device
still works, or what functionality goes missing?
If we don't need them, just remove the respective nodes altogether.

> +                regulator-always-on;/* test */
> +                regulator-boot-on;/* test */
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-aldo2";
> +            };
> +
> +            reg_aldo3: aldo3 {
> +                regulator-always-on;
> +                regulator-boot-on;
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-aldo3";
> +            };
> +
> +            reg_aldo4: aldo4 {
> +                regulator-always-on;
> +                regulator-boot-on;
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-aldo4";
> +            };
> +
> +            reg_bldo1: bldo1 {
> +                regulator-always-on;/* test */
> +                regulator-boot-on;/* test */
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-bldo1";
> +            };
> +
> +            reg_bldo2: bldo2 {
> +                regulator-always-on;
> +                regulator-boot-on;

I dimly remember that this rail was used by some critical device? Or
for one of the mandatory 1.8V supply pins on the SoC?
So this might be only one that needs to stay, I guess.

> +                regulator-min-microvolt = <1800000>;
> +                regulator-max-microvolt = <1800000>;
> +                regulator-name = "vcc-1v8";
> +            };
> +
> +            reg_bldo3: bldo3 {
> +                regulator-always-on;/* test */
> +                regulator-boot-on;/* test */
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-bldo3";
> +            };
> +
> +            reg_bldo4: bldo4 {
> +                regulator-always-on;/* test */
> +                regulator-boot-on;/* test */
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-bldo4";
> +            };
> +
> +            reg_cldo1: cldo1 {
> +                regulator-always-on;/* test */
> +                regulator-boot-on;/* test */
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-cldo1";
> +            };
> +
> +            reg_cldo2: cldo2 {
> +                regulator-always-on;/* test */
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-cldo2";
> +            };
> +
> +            reg_cldo3: cldo3 {
> +                regulator-always-on;
> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <3500000>;
> +                regulator-name = "axp717-cldo3";
> +            };
> +
> +            reg_cldo4: cldo4 {
> +                regulator-always-on;/* test */

If this is for the WiFi chip, it should not be always-on.

> +                regulator-min-microvolt = <3300000>;
> +                regulator-max-microvolt = <3300000>;
> +                regulator-name = "vcc-wifi";
> +            };
> +
> +            reg_boost: reg-boost {
> +                regulator-always-on;/* test */

So is that connected directly to the USB power pins? Or is there a
GPIO controlled switch in between?
If it's the latter, this rail should be referenced above in the
vcc_5v0_usb regulator, via the "vin-supply" property.

> +                regulator-min-microvolt = <5000000>;
> +                regulator-max-microvolt = <5000000>;
> +                regulator-name = "boost";
> +            };
> +
> +            reg_cpusldo: cpusldo {
> +                regulator-always-on;
> +                regulator-boot-on;

Same here, do we need this regulator at all, and does it really need to
be always-on?

> +                regulator-min-microvolt = <500000>;
> +                regulator-max-microvolt = <1400000>;
> +                regulator-name = "cpusldo";
> +            };
> +       };
> +   };
> +};
> +
> +&uart0 {
> +    pinctrl-names = "default";
> +    pinctrl-0 = <&uart0_ph_pins>;
> +    status = "okay";
> +};
> +
> +/* the AXP717 has USB type-C role switch functionality, to be implemented */
> +&usbotg {
> +    dr_mode = "host";   /* USB type-C receptable */
> +    status = "okay";
> +};
> +
> +&usbphy {
> +    status = "okay";

If there is a regulator controlling the USB VBUS pins, you would
reference it here:
	usb0_vbus-supply = <&vcc_5v0_usb>;

For the -H model with its second USB port it's usb1_vbus-supply,
respectively.


Cheers,
Andre	

> +};


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

* Re: [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS
  2024-04-14  8:33 ` [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS Ryan Walklin
  2024-04-14  9:10   ` Krzysztof Kozlowski
@ 2024-04-14 18:37   ` Andre Przywara
  1 sibling, 0 replies; 19+ messages in thread
From: Andre Przywara @ 2024-04-14 18:37 UTC (permalink / raw)
  To: Ryan Walklin
  Cc: Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jernej Skrabec, Samuel Holland, Chris Morgan, devicetree,
	linux-sunxi

On Sun, 14 Apr 2024 20:33:47 +1200
Ryan Walklin <ryan@testtoast.com> wrote:

Hi,

> From: Ryan Walklin <ryan@testtoast.com>
> 
> The RG35XX-Plus adds a RTL8221CS SDIO Wifi/BT chip to the RG35XX (2024).
> 
> Enabled in this DTS:
> - WiFi
> - Bluetooth
> - Supporting power sequence and GPIOs
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> ---
>  .../sun50i-h700-anbernic-rg35xx-plus.dts      | 63 +++++++++++++++++++
>  1 file changed, 63 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
> new file mode 100644
> index 000000000000..b9a163ed5d0b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
> @@ -0,0 +1,63 @@
> +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +/*
> + * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.

I don't remember writing anything in here explicitly, so please remove
this copyright line.

> + * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
> + * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
> + */
> +
> +/dts-v1/;

That line is already in the file included next, so please remove it
from here.

> +
> +#include "sun50i-h700-anbernic-rg35xx-2024.dts"
> +
> +/ {
> +    model = "Anbernic RG35XX Plus";
> +    compatible = "anbernic,rg35xx-plus", "allwinner,sun50i-h700";
> +
> +    wifi_pwrseq: wifi_pwrseq {
> +        compatible = "mmc-pwrseq-simple";
> +        clocks = <&rtc CLK_OSC32K_FANOUT>;
> +        clock-names = "ext_clock";
> +        pinctrl-0 = <&x32clk_fanout_pin>;
> +        pinctrl-names = "default";
> +        post-power-on-delay-ms = <200>;
> +        reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
> +    };
> +};
> +
> +/* SDIO WiFi RTL8821CS, powered by CLDO4, regon=PG18, hostwake=PG15 */
> +&mmc1 {
> +    vmmc-supply = <&reg_cldo4>;
> +    vqmmc-supply = <&reg_vcc1v8>;

That regulator should then also provide the PIO's vcc-pg-supply. And
maybe it should be renamed.

> +    mmc-pwrseq = <&wifi_pwrseq>;
> +    bus-width = <4>;
> +    non-removable;
> +    status = "okay";
> +
> +    sdio_wifi: wifi@1 {
> +       reg = <1>;
> +       interrupt-parent = <&pio>;
> +       interrupts = <6 15 IRQ_TYPE_LEVEL_LOW>; /* PG15 */
> +       interrupt-names = "host-wake";
> +    };
> +};
> +
> +&uart0 {
> +    pinctrl-names = "default";
> +    pinctrl-0 = <&uart0_ph_pins>;
> +    status = "okay";
> +};

That would be redundant, as the node is already contained in the base
.dts?

> +
> +/* Bluetooth RTL8821CS, RST_N: PG19, BT_WAKE: PG17, BT_HOSTWAKE: PG16 */
> +&uart1 {
> +    pinctrl-names = "default";
> +    pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> +    uart-has-rtscts;
> +    status = "okay";
> +
> +    bluetooth {
> +        compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt";
> +        device-wake-gpios = <&pio 6 17 GPIO_ACTIVE_HIGH>;
> +        enable-gpios = <&pio 6 19 GPIO_ACTIVE_HIGH>;
> +        host-wake-gpios = <&pio 6 16 GPIO_ACTIVE_HIGH>;

As usual, please add the GPIO names as a comment.

Cheers,
Andre

> +    };
> +};


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

* Re: [PATCH 4/4] arm64: dts: allwinner: h700: Add RG35XX-H DTS
  2024-04-14  8:33 ` [PATCH 4/4] arm64: dts: allwinner: h700: Add RG35XX-H DTS Ryan Walklin
@ 2024-04-15  0:12   ` Andre Przywara
  0 siblings, 0 replies; 19+ messages in thread
From: Andre Przywara @ 2024-04-15  0:12 UTC (permalink / raw)
  To: Ryan Walklin
  Cc: Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Jernej Skrabec, Samuel Holland, Chris Morgan, devicetree,
	linux-sunxi

On Sun, 14 Apr 2024 20:33:48 +1200
Ryan Walklin <ryan@testtoast.com> wrote:

Hi Ryan,

> From: Ryan Walklin <ryan@testtoast.com>
> 
> The RG35XX-H adds thumbsticks, a stereo speaker, and a second USB port
> to the RG35XX-Plus, and has a horizontal form factor.
> 
> Enabled in this DTS:
> - Thumbsticks
> - Second USB port
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> ---
>  .../sun50i-h700-anbernic-rg35xx-h.dts         | 38 +++++++++++++++++++
>  1 file changed, 38 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
> new file mode 100644
> index 000000000000..5b7de7bfc458
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
> @@ -0,0 +1,38 @@
> +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +/*
> + * Copyright (C) 2024 Andre Przywara <andre.przywara@arm.com>.

Please remove my copyright, I didn't have my hands in this. Copyrights
are not that important anyway, since it's the license that rules.

> + * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
> + * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
> + */
> +
> +
> +/dts-v1/;

Same as in 3/4: redundant line.

> +#include "sun50i-h700-anbernic-rg35xx-plus.dts"
> +
> +/ {
> +    model = "Anbernic RG35XX H";
> +    compatible = "anbernic,rg35xx-h", "allwinner,sun50i-h700";
> +
> +    gpio-keys: gpio-keys-thumb {

Is it intended to be in a separate node from the other keys? Just
reference the existing node (below, outside of the root node) and add
the keys in there.

> +       compatible = "gpio-keys";
> +
> +        keyThumbLeft {
> +            label = "GPIO Thumb Left";
> +            gpios = <&pio 4 8 GPIO_ACTIVE_LOW>; /* PE8 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_THUMBL>;
> +        };
> +
> +        keyThumbRight {
> +            label = "GPIO Thumb Right";
> +            gpios = <&pio 4 9 GPIO_ACTIVE_LOW>; /* PE9 */
> +            linux,input-type = <EV_KEY>;
> +            linux,code = <BTN_THUMBR>;
> +        };
> +    };
> +};

I missed that in the first DTS, but you should move the 'status =
"okay";' lines for EHCI1/OHCI1 from patch 2/4 into here, since the
second USB port should stay disabled on those other two boards.

> +
> +&usbotg {
> +    dr_mode = "peripheral";

That looks odd. I do understand that a second USB port allows the
first to be dedicated to OTG, but I feels still weird that the default
for the only one on the other two boards is host.
Can you say what the expected use case is? Are people connecting things
like controllers to the only USB port? Otherwise I would expect this
more to be a charging port, to which peripheral would be a better fit.
I guess ultimately this would be "otg", but we need the AXP717 USB-C
support for that, which is not ready yet.

> +    status = "okay";
> +};

If there is an enable GPIO for VBUS, then the respective regulator
should be referenced here.

Cheers,
Andre

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

* Re: [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support
  2024-04-14  8:33 [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Ryan Walklin
                   ` (3 preceding siblings ...)
  2024-04-14  8:33 ` [PATCH 4/4] arm64: dts: allwinner: h700: Add RG35XX-H DTS Ryan Walklin
@ 2024-04-15 18:46 ` Rob Herring
  4 siblings, 0 replies; 19+ messages in thread
From: Rob Herring @ 2024-04-15 18:46 UTC (permalink / raw)
  To: Ryan Walklin
  Cc: Chris Morgan, Conor Dooley, devicetree, Andre Przywara,
	linux-sunxi, Krzysztof Kozlowski, Chen-Yu Tsai, Samuel Holland,
	Jernej Skrabec


On Sun, 14 Apr 2024 20:33:43 +1200, Ryan Walklin wrote:
> From: Ryan Walklin <ryan@testtoast.com>
> 
> The Anbernic RG35XX is a family of handheld gaming devices. There are 4
> variants, of which 3 using the Allwinner H700 chip are covered by this patchset.
> The fourth (released first and named simply RG35XX) uses an Actions
> Semiconductor ATM7039s which is a 32-bit Cortex-A9 chip with no mainline support
> and is not covered.
> 
> Common features (RG35XX-2024):
> - Allwinner H700 @ 1.5GHz (H616 variant exposing RGB LCD pins, with 4x
>   Cortex-A53 Cores and a Mali G31 GPU)
> - 1 GB LPDDR4 DRAM
> - AXP717 PMIC (patches accepted in mfd-next -
>   https://kernel.googlesource.com/pub/scm/linux/kernel/git/lee/mfd/+/d2ac3df75c3a995064cfac0171e082a30d8c4c66)
> - 3.5" 640x480 RGB LCD
> - Mini-HDMI, 3.5mm audio jack, mono speaker, two microSD slots and USB-C
>   (USB 2.0) for power.
> 
> RG35XX-Plus adds:
> - RTL8821CS SDIO Wifi/BT chip
> 
> RG35XX-H (Horizontal form-factor) adds:
> - RTL8821CS SDIO Wifi/BT chip
> - Two analog thumbsticks
> - Second USB-C port
> - Stereo speaker
> 
> Patch 1 adds the DT bindings for the board names, Patch 2 adds the -2024 device
> as a common base, Patch 3 adds Wifi/BT support for the -Plus (and -H), and Patch
> 3 adds the second USB and thumbsticks for the -H. The -H is a strict superset of
> the -Plus, which is in turn a strict superset of the -2024, so this translates
> quite neatly. Alternatively a single DTS for the three devices could be
> considered.
> 
> LCD, HDMI, audio and GPU support are not yet ready and relying on out-of-tree
> patches currently, so will be added once these drivers are mainlined.
> 
> Ryan
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> 
> Ryan Walklin (4):
>   dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming
>     device variants
>   arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
>   arm64: dts: allwinner: h700: Add RG35XX-Plus DTS
>   arm64: dts: allwinner: h700: Add RG35XX-H DTS
> 
>  .../devicetree/bindings/arm/sunxi.yaml        |  15 +
>  .../sun50i-h700-anbernic-rg35xx-2024.dts      | 405 ++++++++++++++++++
>  .../sun50i-h700-anbernic-rg35xx-h.dts         |  38 ++
>  .../sun50i-h700-anbernic-rg35xx-plus.dts      |  63 +++
>  4 files changed, 521 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts
> 
> --
> 2.44.0
> 
> 
> 


My bot found new DTB warnings on the .dts files added or changed in this
series.

Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.

If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:

  pip3 install dtschema --upgrade


New warnings running 'make CHECK_DTBS=y allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb allwinner/sun50i-h700-anbernic-rg35xx-h.dtb allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb' for 20240414083347.131724-2-ryan@testtoast.com:

Error: arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts:16.14-15 syntax error
FATAL ERROR: Unable to parse input tree
make[3]: *** [scripts/Makefile.lib:427: arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dtb] Error 1
make[2]: *** [scripts/Makefile.build:485: arch/arm64/boot/dts/allwinner] Error 2
make[2]: Target 'arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dtb' not remade because of errors.
make[1]: *** [/home/rob/proj/linux-dt-testing/Makefile:1392: allwinner/sun50i-h700-anbernic-rg35xx-h.dtb] Error 2
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: /: compatible: More than one condition true in oneOf schema:
	{'oneOf': [{'items': [{'const': 'allwinner,a100-perf1'},
	                      {'const': 'allwinner,sun50i-a100'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,sun8i-a23-evb'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,app4-evb1'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,h8homlet-v2'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,ga10h-v1.1'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,gt90h-v4'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,parrot'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'anbernic,rg-nano'},
	                      {'const': 'allwinner,sun8i-v3s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {},
	           {'items': [{'const': 'anbernic,rg35xx-2024'},
	                      {'const': 'allwinner,sun50i-h700'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {},
	           {'items': [{'const': 'anbernic,rg35xx-plus'},
	                      {'const': 'allwinner,sun50i-h700'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {},
	           {'items': [{'const': 'anbernic,rg35xx-h'},
	                      {'const': 'allwinner,sun50i-h700'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'amarula,a64-relic'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,auxtek-t003'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,auxtek-t004'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,ba10-tvbox'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lemaker,bananapi'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m1-plus'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-berry'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-plus'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'bananapi,bpi-m2-plus-v1.2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'bananapi,bpi-m2-plus-v1.2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bananapi-m2m'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-ultra'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-zero'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m3'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bananapi-m64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lemaker,bananapro'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'azw,beelink-gs1'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'roofull,beelink-x2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'bigtreetech,cb1-manta'},
	                      {'const': 'bigtreetech,cb1'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'bigtreetech,pi'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'chuwi,v7-cw0825'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'colorfly,e708-q1'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'csq,cs908'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,a10-cubieboard'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,cubieboard2'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,a80-cubieboard4'},
	                      {'const': 'allwinner,sun9i-a80'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,cubietruck'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,cubietruck-plus'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'difrnce,dit4350'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'dserve,dsrv9703c'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'elimo,impetus'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'elimo,initium'},
	                      {'const': 'elimo,impetus'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 4,
	            'minItems': 4,
	            'type': 'array'},
	           {'items': [{'const': 'empire-electronix,d709'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'empire-electronix,m712'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'forlinx,oka40i-c'},
	                      {'const': 'forlinx,feta40i-c'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-a64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-duo2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-m1'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-m1-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo-air'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo-plus2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-r1'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-r1s-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,zeropi'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'gemei,g9'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'hyundai,a7hd'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'hsg,h702'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,i12-tvbox'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'incircuit,icnova-a20-adb4006'},
	                      {'const': 'incircuit,icnova-a20'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'incircuit,icnova-a20-swac'},
	                      {'const': 'incircuit,icnova-a20'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'inet-tek,inet1'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet86dz'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'inet-tek,inet9f-rev03'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet97fv2'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet98v-rev2'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet-d978-rev2'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'inet-tek,inet-q972'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'itead,itead-ibox-a20'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'itead,iteaduino-plus-a10'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'jesurun,q5'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lamobo,lamobo-r1'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lctech,pi-f1c200s'},
	                      {'const': 'allwinner,suniv-f1c200s'},
	                      {'const': 'allwinner,suniv-f1c100s'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-cc-h2-plus'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-cc-h3'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-cc-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-it-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h5-cc-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-nano'},
	                      {'const': 'allwinner,suniv-f1c100s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-one'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-zero'},
	                      {'const': 'allwinner,sun8i-v3s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-zero-dock'},
	                      {'const': 'licheepi,licheepi-zero'},
	                      {'const': 'allwinner,sun8i-v3s'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'sipeed,lichee-zero-plus'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,a10-pcduino'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,a10-pcduino2'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,pcduino3'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,pcduino3-nano'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linutronix,testbox-v2'},
	                      {'const': 'lamobo,lamobo-r1'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'haoyu,a10-marsboard'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'haoyu,a20-marsboard'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mapleboard,mp130'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,a1000'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,a1000g-quad'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,i7'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,m3'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,m9'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'merrii,a20-hummingbird'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'merrii,a31-hummingbird'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'merrii,a80-optimus'},
	                      {'const': 'allwinner,sun9i-a80'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'miniand,hackberry'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,mk802'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,a10s-mk802'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,mk802ii'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,mk808c'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'msi,primo81'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'emlid,neutis-n5-devboard'},
	                      {'const': 'emlid,neutis-n5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'emlid,neutis-n5h3-devboard'},
	                      {'const': 'emlid,neutis-n5h3'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'nextthing,chip'},
	                      {'const': 'allwinner,sun5i-r8'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'nextthing,chip-pro'},
	                      {'const': 'nextthing,gr8'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'nextthing,gr8-evb'},
	                      {'const': 'nextthing,gr8'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'nintendo,nes-classic'},
	                      {'const': 'allwinner,sun8i-r16'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'nintendo,super-nes-classic'},
	                      {'const': 'nintendo,nes-classic'},
	                      {'const': 'allwinner,sun8i-r16'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 4,
	            'minItems': 4,
	            'type': 'array'},
	           {'items': [{'const': 'oceanic,5205-5inmfd'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a10-olinuxino-lime'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a10s-olinuxino-micro'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a13-olinuxino'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a13-olinuxino-micro'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som-evb'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som-evb-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime2'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime2-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-micro'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-micro-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som204-evb'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som204-evb-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a33-olinuxino'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a64-olinuxino'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a64-olinuxino-emmc'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a64-teres-i'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine64-plus'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinecube'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine-h64'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine-h64-model-b'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine64-lts'},
	                      {'const': 'allwinner,sun50i-r18'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinebook'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinephone-1.0'},
	                      {'const': 'pine64,pinephone'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinephone-1.1'},
	                      {'const': 'pine64,pinephone'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinephone-1.2'},
	                      {'const': 'pine64,pinephone'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinetab'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinetab-early-adopter'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,sopine-baseboard'},
	                      {'const': 'pine64,sopine'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pineriver,mini-xplus'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pocketbook,touch-lux-3'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pov,protab2-ips9'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'polaroid,mid2407pxe03'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'polaroid,mid2809pxe04'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,q8-a13'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,q8-a23'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,q8-a33'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'qihua,t3-cqa3t-bv3'},
	                      {'const': 'allwinner,sun8i-t3'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,r7-tv-dongle'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'jide,remix-mini-pc'},
	                      {'const': 'allwinner,sun50i-h64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'rervision,h3-dvk'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinlinx,sina31s'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinlinx,sina31s-sdk'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinlinx,sina33'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sipeed,longan-pi-3h'},
	                      {'const': 'sipeed,longan-module-3h'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'sourceparts,popstick-v1.1'},
	                      {'const': 'sourceparts,popstick'},
	                      {'const': 'allwinner,suniv-f1c200s'},
	                      {'const': 'allwinner,suniv-f1c100s'}],
	            'maxItems': 4,
	            'minItems': 4,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,sl631-imx179'},
	                      {'const': 'allwinner,sl631'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'oranth,tanix-tx6'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'oranth,tanix-tx6-mini'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'tbs-biometrics,a711'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'topwise,a721'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'transpeed,8k618-t'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'utoo,p66'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wexler,tab7200'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'widora,mangopi-mq-r-t113'},
	                      {'const': 'allwinner,sun8i-t113s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wits,colombus'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wits,pro-a20-dkt'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wobo,a10s-wobo-i5'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'yones-toptech,bs1078-v2'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'hechuang,x96-mate'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-3'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-lite'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-lite2'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-mini'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-one'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-one-plus'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-pc'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-pc2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-pc-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-plus2e'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-prime'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-r1'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-win'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero-plus'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero-plus2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero-plus2-h3'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero2'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero2w'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero3'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'}]}
	from schema $id: http://devicetree.org/schemas/arm/sunxi.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb: /: compatible: More than one condition true in oneOf schema:
	{'oneOf': [{'items': [{'const': 'allwinner,a100-perf1'},
	                      {'const': 'allwinner,sun50i-a100'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,sun8i-a23-evb'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,app4-evb1'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,h8homlet-v2'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,ga10h-v1.1'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,gt90h-v4'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,parrot'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'anbernic,rg-nano'},
	                      {'const': 'allwinner,sun8i-v3s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {},
	           {'items': [{'const': 'anbernic,rg35xx-2024'},
	                      {'const': 'allwinner,sun50i-h700'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {},
	           {'items': [{'const': 'anbernic,rg35xx-plus'},
	                      {'const': 'allwinner,sun50i-h700'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {},
	           {'items': [{'const': 'anbernic,rg35xx-h'},
	                      {'const': 'allwinner,sun50i-h700'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'amarula,a64-relic'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,auxtek-t003'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,auxtek-t004'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,ba10-tvbox'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lemaker,bananapi'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m1-plus'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-berry'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-plus'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'bananapi,bpi-m2-plus-v1.2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'bananapi,bpi-m2-plus-v1.2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bananapi-m2m'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-ultra'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m2-zero'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bpi-m3'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinovoip,bananapi-m64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lemaker,bananapro'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'azw,beelink-gs1'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'roofull,beelink-x2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'bigtreetech,cb1-manta'},
	                      {'const': 'bigtreetech,cb1'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'bigtreetech,pi'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'chuwi,v7-cw0825'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'colorfly,e708-q1'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'csq,cs908'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,a10-cubieboard'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,cubieboard2'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,a80-cubieboard4'},
	                      {'const': 'allwinner,sun9i-a80'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,cubietruck'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'cubietech,cubietruck-plus'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'difrnce,dit4350'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'dserve,dsrv9703c'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'elimo,impetus'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'elimo,initium'},
	                      {'const': 'elimo,impetus'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 4,
	            'minItems': 4,
	            'type': 'array'},
	           {'items': [{'const': 'empire-electronix,d709'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'empire-electronix,m712'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'forlinx,oka40i-c'},
	                      {'const': 'forlinx,feta40i-c'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-a64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-duo2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-m1'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-m1-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo-air'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-neo-plus2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-r1'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,nanopi-r1s-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'friendlyarm,zeropi'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'gemei,g9'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'hyundai,a7hd'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'hsg,h702'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,i12-tvbox'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'incircuit,icnova-a20-adb4006'},
	                      {'const': 'incircuit,icnova-a20'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'incircuit,icnova-a20-swac'},
	                      {'const': 'incircuit,icnova-a20'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'inet-tek,inet1'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet86dz'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'inet-tek,inet9f-rev03'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet97fv2'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet98v-rev2'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'primux,inet-d978-rev2'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'inet-tek,inet-q972'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'itead,itead-ibox-a20'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'itead,iteaduino-plus-a10'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'jesurun,q5'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lamobo,lamobo-r1'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'lctech,pi-f1c200s'},
	                      {'const': 'allwinner,suniv-f1c200s'},
	                      {'const': 'allwinner,suniv-f1c100s'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-cc-h2-plus'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-cc-h3'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-cc-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h3-it-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'libretech,all-h5-cc-h5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-nano'},
	                      {'const': 'allwinner,suniv-f1c100s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-one'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-zero'},
	                      {'const': 'allwinner,sun8i-v3s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'licheepi,licheepi-zero-dock'},
	                      {'const': 'licheepi,licheepi-zero'},
	                      {'const': 'allwinner,sun8i-v3s'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'sipeed,lichee-zero-plus'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,a10-pcduino'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,a10-pcduino2'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,pcduino3'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linksprite,pcduino3-nano'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'linutronix,testbox-v2'},
	                      {'const': 'lamobo,lamobo-r1'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'haoyu,a10-marsboard'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'haoyu,a20-marsboard'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mapleboard,mp130'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,a1000'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,a1000g-quad'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,i7'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,m3'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'mele,m9'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'merrii,a20-hummingbird'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'merrii,a31-hummingbird'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'merrii,a80-optimus'},
	                      {'const': 'allwinner,sun9i-a80'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'miniand,hackberry'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,mk802'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,a10s-mk802'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,mk802ii'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,mk808c'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'msi,primo81'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'emlid,neutis-n5-devboard'},
	                      {'const': 'emlid,neutis-n5'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'emlid,neutis-n5h3-devboard'},
	                      {'const': 'emlid,neutis-n5h3'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'nextthing,chip'},
	                      {'const': 'allwinner,sun5i-r8'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'nextthing,chip-pro'},
	                      {'const': 'nextthing,gr8'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'nextthing,gr8-evb'},
	                      {'const': 'nextthing,gr8'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'nintendo,nes-classic'},
	                      {'const': 'allwinner,sun8i-r16'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'nintendo,super-nes-classic'},
	                      {'const': 'nintendo,nes-classic'},
	                      {'const': 'allwinner,sun8i-r16'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 4,
	            'minItems': 4,
	            'type': 'array'},
	           {'items': [{'const': 'oceanic,5205-5inmfd'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a10-olinuxino-lime'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a10s-olinuxino-micro'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a13-olinuxino'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a13-olinuxino-micro'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som-evb'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som-evb-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime2'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-lime2-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-micro'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olinuxino-micro-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som204-evb'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a20-olimex-som204-evb-emmc'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a33-olinuxino'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a64-olinuxino'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a64-olinuxino-emmc'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'olimex,a64-teres-i'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine64-plus'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinecube'},
	                      {'const': 'sochip,s3'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine-h64'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine-h64-model-b'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pine64-lts'},
	                      {'const': 'allwinner,sun50i-r18'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinebook'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinephone-1.0'},
	                      {'const': 'pine64,pinephone'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinephone-1.1'},
	                      {'const': 'pine64,pinephone'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinephone-1.2'},
	                      {'const': 'pine64,pinephone'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinetab'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,pinetab-early-adopter'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pine64,sopine-baseboard'},
	                      {'const': 'pine64,sopine'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'pineriver,mini-xplus'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pocketbook,touch-lux-3'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'pov,protab2-ips9'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'polaroid,mid2407pxe03'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'polaroid,mid2809pxe04'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,q8-a13'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,q8-a23'},
	                      {'const': 'allwinner,sun8i-a23'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,q8-a33'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'qihua,t3-cqa3t-bv3'},
	                      {'const': 'allwinner,sun8i-t3'},
	                      {'const': 'allwinner,sun8i-r40'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,r7-tv-dongle'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'jide,remix-mini-pc'},
	                      {'const': 'allwinner,sun50i-h64'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'rervision,h3-dvk'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinlinx,sina31s'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinlinx,sina31s-sdk'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sinlinx,sina33'},
	                      {'const': 'allwinner,sun8i-a33'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'sipeed,longan-pi-3h'},
	                      {'const': 'sipeed,longan-module-3h'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'sourceparts,popstick-v1.1'},
	                      {'const': 'sourceparts,popstick'},
	                      {'const': 'allwinner,suniv-f1c200s'},
	                      {'const': 'allwinner,suniv-f1c100s'}],
	            'maxItems': 4,
	            'minItems': 4,
	            'type': 'array'},
	           {'items': [{'const': 'allwinner,sl631-imx179'},
	                      {'const': 'allwinner,sl631'},
	                      {'const': 'allwinner,sun8i-v3'}],
	            'maxItems': 3,
	            'minItems': 3,
	            'type': 'array'},
	           {'items': [{'const': 'oranth,tanix-tx6'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'oranth,tanix-tx6-mini'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'tbs-biometrics,a711'},
	                      {'const': 'allwinner,sun8i-a83t'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'topwise,a721'},
	                      {'const': 'allwinner,sun4i-a10'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'transpeed,8k618-t'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'utoo,p66'},
	                      {'const': 'allwinner,sun5i-a13'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wexler,tab7200'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'widora,mangopi-mq-r-t113'},
	                      {'const': 'allwinner,sun8i-t113s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wits,colombus'},
	                      {'const': 'allwinner,sun6i-a31'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wits,pro-a20-dkt'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'wobo,a10s-wobo-i5'},
	                      {'const': 'allwinner,sun5i-a10s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'yones-toptech,bs1078-v2'},
	                      {'const': 'allwinner,sun6i-a31s'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'hechuang,x96-mate'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-2'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-3'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-lite'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-lite2'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-mini'},
	                      {'const': 'allwinner,sun7i-a20'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-one'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-one-plus'},
	                      {'const': 'allwinner,sun50i-h6'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-pc'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-pc2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-pc-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-plus'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-plus2e'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-prime'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-r1'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-win'},
	                      {'const': 'allwinner,sun50i-a64'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero'},
	                      {'const': 'allwinner,sun8i-h2-plus'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero-plus'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero-plus2'},
	                      {'const': 'allwinner,sun50i-h5'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero-plus2-h3'},
	                      {'const': 'allwinner,sun8i-h3'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero2'},
	                      {'const': 'allwinner,sun50i-h616'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero2w'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'},
	           {'items': [{'const': 'xunlong,orangepi-zero3'},
	                      {'const': 'allwinner,sun50i-h618'}],
	            'maxItems': 2,
	            'minItems': 2,
	            'type': 'array'}]}
	from schema $id: http://devicetree.org/schemas/arm/sunxi.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: pmic@3a3: 'oneOf' conditional failed, one must be fixed:
	'interrupts' is a required property
	'interrupts-extended' is a required property
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: pmic@3a3: regulators: 'reg-boost' does not match any of the regexes: '^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|cpusldo|drivevbus|dc5ldo)$', 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: pmic@3a3: '#interrupt-cells' is a required property
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: pmic@3a3: 'interrupt-controller' is a required property
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb: pmic@3a3: 'oneOf' conditional failed, one must be fixed:
	'interrupts' is a required property
	'interrupts-extended' is a required property
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb: pmic@3a3: regulators: 'reg-boost' does not match any of the regexes: '^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|cpusldo|drivevbus|dc5ldo)$', 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb: pmic@3a3: '#interrupt-cells' is a required property
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb: pmic@3a3: 'interrupt-controller' is a required property
	from schema $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: gpio-keys: 'keyA', 'keyB', 'keyDown', 'keyL1', 'keyL2', 'keyLeft', 'keyMenu', 'keyR1', 'keyR2', 'keyRight', 'keySel', 'keyStart', 'keyUp', 'keyVol+', 'keyVol-', 'keyX', 'keyY' do not match any of the regexes: '^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$', 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/input/gpio-keys.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb: gpio-keys: 'keyA', 'keyB', 'keyDown', 'keyL1', 'keyL2', 'keyLeft', 'keyMenu', 'keyR1', 'keyR2', 'keyRight', 'keySel', 'keyStart', 'keyUp', 'keyVol+', 'keyVol-', 'keyX', 'keyY' do not match any of the regexes: '^(button|event|key|switch|(button|event|key|switch)-[a-z0-9-]+|[a-z0-9-]+-(button|event|key|switch))$', 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/input/gpio-keys.yaml#
make: *** [Makefile:240: __sub-make] Error 2
make: Target 'allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb' not remade because of errors.
make: Target 'allwinner/sun50i-h700-anbernic-rg35xx-h.dtb' not remade because of errors.
make: Target 'allwinner/sun50i-h700-anbernic-rg35xx-plus.dtb' not remade because of errors.






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

* Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-14  9:07   ` Krzysztof Kozlowski
@ 2024-04-17  9:05     ` Ryan Walklin
  2024-04-17 13:33       ` Krzysztof Kozlowski
  2024-04-17  9:54     ` Andre Przywara
  1 sibling, 1 reply; 19+ messages in thread
From: Ryan Walklin @ 2024-04-17  9:05 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Andre Przywara, Chen-Yu Tsai, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi

Thanks for the review and feedback.

> Any reason these are not just one enum with three entires?

No, this is just to match the existing devices, are you able to point to an example elsewhere?

Ryan

On Sun, 14 Apr 2024, at 9:07 PM, Krzysztof Kozlowski wrote:
> On 14/04/2024 10:33, Ryan Walklin wrote:
>> From: Ryan Walklin <ryan@testtoast.com>
>> 
>> RG35XX 2024: Base version with Allwinner H700
>> RG35XX Plus: Adds Wifi/BT
>> RG35XX H: Adds second USB port and analog sticks to -Plus in horizontal
>>           altered form factor,
>> 
>> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
>> ---
>>  Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
>>  1 file changed, 15 insertions(+)
>> 
>> diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
>> index 09d835db6db5..fc10f54561c9 100644
>> --- a/Documentation/devicetree/bindings/arm/sunxi.yaml
>> +++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
>> @@ -56,6 +56,21 @@ properties:
>>            - const: anbernic,rg-nano
>>            - const: allwinner,sun8i-v3s
>>  
>> +      - description: Anbernic RG35XX (2024)
>> +      - items:
>> +          - const: anbernic,rg35xx-2024
>> +          - const: allwinner,sun50i-h700
>> +
>> +      - description: Anbernic RG35XX Plus
>> +      - items:
>> +          - const: anbernic,rg35xx-plus
>> +          - const: allwinner,sun50i-h700
>> +
>> +      - description: Anbernic RG35XX H
>> +      - items:
>> +          - const: anbernic,rg35xx-h
>
> Any reason these are not just one enum with three entires?
>
> Best regards,
> Krzysztof

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

* Re: [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
  2024-04-14  9:09   ` Krzysztof Kozlowski
@ 2024-04-17  9:08     ` Ryan Walklin
  0 siblings, 0 replies; 19+ messages in thread
From: Ryan Walklin @ 2024-04-17  9:08 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Andre Przywara, Chen-Yu Tsai, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi

> It does not look like you tested the DTS against bindings. Please run
> `make dtbs_check W=1` (see
> Documentation/devicetree/bindings/writing-schema.rst or
> https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
> for instructions).
>
> No uppercase letters are allowed as node names.

Apologies, this was my omission.

> Node names should be generic. See also an explanation and list of
> examples (not exhaustive) in DT specification:
> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
>
Noted, thanks.

>> +
>> +    reg_vcc5v: vcc5v {
>
> Use some common reasonable prefix, e.g. regulator
>
Noted, thanks.

> Please do not add dead code without explanation.

Noted, thanks.

Regards,

Ryan

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

* Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-14  9:07   ` Krzysztof Kozlowski
  2024-04-17  9:05     ` Ryan Walklin
@ 2024-04-17  9:54     ` Andre Przywara
  1 sibling, 0 replies; 19+ messages in thread
From: Andre Przywara @ 2024-04-17  9:54 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Ryan Walklin, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan,
	devicetree, linux-sunxi

On Sun, 14 Apr 2024 11:07:19 +0200
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:

Hi Krzysztof,

> On 14/04/2024 10:33, Ryan Walklin wrote:
> > From: Ryan Walklin <ryan@testtoast.com>
> > 
> > RG35XX 2024: Base version with Allwinner H700
> > RG35XX Plus: Adds Wifi/BT
> > RG35XX H: Adds second USB port and analog sticks to -Plus in horizontal
> >           altered form factor,
> > 
> > Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> > ---
> >  Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
> >  1 file changed, 15 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
> > index 09d835db6db5..fc10f54561c9 100644
> > --- a/Documentation/devicetree/bindings/arm/sunxi.yaml
> > +++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
> > @@ -56,6 +56,21 @@ properties:
> >            - const: anbernic,rg-nano
> >            - const: allwinner,sun8i-v3s
> >  
> > +      - description: Anbernic RG35XX (2024)
> > +      - items:
> > +          - const: anbernic,rg35xx-2024
> > +          - const: allwinner,sun50i-h700
> > +
> > +      - description: Anbernic RG35XX Plus
> > +      - items:
> > +          - const: anbernic,rg35xx-plus
> > +          - const: allwinner,sun50i-h700
> > +
> > +      - description: Anbernic RG35XX H
> > +      - items:
> > +          - const: anbernic,rg35xx-h  
> 
> Any reason these are not just one enum with three entires?

I think the policy in *this* file is one entry for each device, so that we
can attribute a device name ("Anbernic RG35XX H") to the compatible string.
I mean otherwise we could group all H616 boards for instance into one
entry. Don't know if this is what we want?

Cheers,
Andre


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

* Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-17  9:05     ` Ryan Walklin
@ 2024-04-17 13:33       ` Krzysztof Kozlowski
  2024-04-17 13:58         ` Andre Przywara
  0 siblings, 1 reply; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-17 13:33 UTC (permalink / raw)
  To: Ryan Walklin, Andre Przywara, Chen-Yu Tsai, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi

On 17/04/2024 11:05, Ryan Walklin wrote:
> Thanks for the review and feedback.
> 
>> Any reason these are not just one enum with three entires?
> 
> No, this is just to match the existing devices, are you able to point to an example elsewhere?
> 

Even for variants of same boards?

The examples are everywhere, e.g. Qualcomm or NXP.

Best regards,
Krzysztof


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

* Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-17 13:33       ` Krzysztof Kozlowski
@ 2024-04-17 13:58         ` Andre Przywara
  2024-04-17 19:22           ` Krzysztof Kozlowski
  0 siblings, 1 reply; 19+ messages in thread
From: Andre Przywara @ 2024-04-17 13:58 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Ryan Walklin, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan,
	devicetree, linux-sunxi

On Wed, 17 Apr 2024 15:33:13 +0200
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:

Hi,

> On 17/04/2024 11:05, Ryan Walklin wrote:
> > Thanks for the review and feedback.
> >   
> >> Any reason these are not just one enum with three entires?  
> > 
> > No, this is just to match the existing devices, are you able to point to an example elsewhere?
> >   
> 
> Even for variants of same boards?
> 
> The examples are everywhere, e.g. Qualcomm or NXP.

We have separate entries for closely related boards (Pine64 H64 model A
and B), and also indeed for updated variants (the various PinePhone
revisions).
That doesn't need the stay this way, of course. We would lose a quite
natural way of putting a descriptive name to each compatible string (cf.
"Pine64 PinePhone Developer Batch (1.0)"), but if the main purpose of this
file is to *reserve* the compatible strings, it would indeed be shorter to
use enums for related boards.
Don't know if this would a real advantage, though.

Cheers,
Andre

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

* Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-17 13:58         ` Andre Przywara
@ 2024-04-17 19:22           ` Krzysztof Kozlowski
  0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-17 19:22 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Ryan Walklin, Chen-Yu Tsai, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jernej Skrabec, Samuel Holland, Chris Morgan,
	devicetree, linux-sunxi

On 17/04/2024 15:58, Andre Przywara wrote:
> On Wed, 17 Apr 2024 15:33:13 +0200
> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
> 
> Hi,
> 
>> On 17/04/2024 11:05, Ryan Walklin wrote:
>>> Thanks for the review and feedback.
>>>   
>>>> Any reason these are not just one enum with three entires?  
>>>
>>> No, this is just to match the existing devices, are you able to point to an example elsewhere?
>>>   
>>
>> Even for variants of same boards?
>>
>> The examples are everywhere, e.g. Qualcomm or NXP.
> 
> We have separate entries for closely related boards (Pine64 H64 model A
> and B), and also indeed for updated variants (the various PinePhone
> revisions).
> That doesn't need the stay this way, of course. We would lose a quite
> natural way of putting a descriptive name to each compatible string (cf.
> "Pine64 PinePhone Developer Batch (1.0)"), but if the main purpose of this
> file is to *reserve* the compatible strings, it would indeed be shorter to
> use enums for related boards.
> Don't know if this would a real advantage, though.
> 

If this matches your existing practice, then it is perfectly fine for
me. I will probably still be bringing up this question from time to
time, because for me it blows the binding unnecessarily making it harder
to maintain/read, but that's only matter of taste.

Best regards,
Krzysztof


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

* Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
  2024-04-14  8:33 ` [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants Ryan Walklin
  2024-04-14  9:07   ` Krzysztof Kozlowski
@ 2024-04-17 19:22   ` Krzysztof Kozlowski
  1 sibling, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-17 19:22 UTC (permalink / raw)
  To: Ryan Walklin, Andre Przywara, Chen-Yu Tsai, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Jernej Skrabec,
	Samuel Holland, Chris Morgan
  Cc: devicetree, linux-sunxi

On 14/04/2024 10:33, Ryan Walklin wrote:
> From: Ryan Walklin <ryan@testtoast.com>
> 
> RG35XX 2024: Base version with Allwinner H700
> RG35XX Plus: Adds Wifi/BT
> RG35XX H: Adds second USB port and analog sticks to -Plus in horizontal
>           altered form factor,
> 
> Signed-off-by: Ryan Walklin <ryan@testtoast.com>
> ---

With the assumption this matches existing coding style for sunxi:

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Best regards,
Krzysztof


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

end of thread, other threads:[~2024-04-17 19:22 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-14  8:33 [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Ryan Walklin
2024-04-14  8:33 ` [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants Ryan Walklin
2024-04-14  9:07   ` Krzysztof Kozlowski
2024-04-17  9:05     ` Ryan Walklin
2024-04-17 13:33       ` Krzysztof Kozlowski
2024-04-17 13:58         ` Andre Przywara
2024-04-17 19:22           ` Krzysztof Kozlowski
2024-04-17  9:54     ` Andre Przywara
2024-04-17 19:22   ` Krzysztof Kozlowski
2024-04-14  8:33 ` [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS Ryan Walklin
2024-04-14  9:09   ` Krzysztof Kozlowski
2024-04-17  9:08     ` Ryan Walklin
2024-04-14 17:46   ` Andre Przywara
2024-04-14  8:33 ` [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS Ryan Walklin
2024-04-14  9:10   ` Krzysztof Kozlowski
2024-04-14 18:37   ` Andre Przywara
2024-04-14  8:33 ` [PATCH 4/4] arm64: dts: allwinner: h700: Add RG35XX-H DTS Ryan Walklin
2024-04-15  0:12   ` Andre Przywara
2024-04-15 18:46 ` [PATCH 0/4] arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support Rob Herring

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.