Skip to contentSkip to conversation

arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support

PATCH Superseded Ryan Walklin 4 participants 19 messages Apr 14, 2024 – Apr 17, 2024

Subsystems (2)

v1 of 6 Superseded Latest is v6 →

lore
Share & tools
lore
#0 lore raw

cover arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support

From: Ryan Walklin <[email protected]>

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

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
Signature · 1 line
2.44.0
#1 lore raw

PATCH 1/4 dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

From: Ryan Walklin <[email protected]>

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,

---
 Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
Documentation/devicetree/bindings/arm/sunxi.yaml +15 -0
index 09d835db6db5..fc10f54561c9 100644
@@ -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
Signature · 1 line
2.44.0
#2 lore raw

Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

Quoted 23 lines · Ryan Walklin

From: Ryan Walklin <[email protected]>

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,

---
 Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
Documentation/devicetree/bindings/arm/sunxi.yaml +3 -0
index 09d835db6db5..fc10f54561c9 100644
@@ -56,6 +56,21 @@ properties:
           - const: anbernic,rg-nano
           - const: allwinner,sun8i-v3s
 
+      - description: Anbernic RG35XX (2024)
+      - items:
+          - const: anbernic,rg35xx-2024

Documentation/devicetree/bindings/arm/sunxi.yaml properties: · line 71

Quoted 10 lines
Documentation/devicetree/bindings/arm/sunxi.yaml +10 -0
+          - 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

#3 lore raw

Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

Thanks for the review and feedback.

Quoted 1 line

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

Quoted 39 lines · Krzysztof Kozlowski
Quoted 23 lines · Ryan Walklin

From: Ryan Walklin <[email protected]>

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,

---
 Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
Documentation/devicetree/bindings/arm/sunxi.yaml +3 -0
index 09d835db6db5..fc10f54561c9 100644
@@ -56,6 +56,21 @@ properties:
           - const: anbernic,rg-nano
           - const: allwinner,sun8i-v3s
 
+      - description: Anbernic RG35XX (2024)
+      - items:
+          - const: anbernic,rg35xx-2024

Documentation/devicetree/bindings/arm/sunxi.yaml properties: · line 71

Quoted 10 lines
Documentation/devicetree/bindings/arm/sunxi.yaml +10 -0
+          - 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

#4 lore raw

Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

Quoted 6 lines · Ryan Walklin

Thanks for the review and feedback.

Quoted 1 line

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

#5 lore raw

Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

On Wed, 17 Apr 2024 15:33:13 +0200
Krzysztof Kozlowski <[email protected]> wrote:

Hi,

Quoted 11 lines · Ryan Walklin
Quoted 6 lines

Thanks for the review and feedback.

Quoted 1 line

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

#6 lore raw

Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

Quoted 17 lines · Andre Przywara

On Wed, 17 Apr 2024 15:33:13 +0200
Krzysztof Kozlowski <[email protected]> wrote:

Hi,

Quoted 11 lines · Ryan Walklin
Quoted 6 lines

Thanks for the review and feedback.

Quoted 1 line

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.

Quoted 10 lines

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

#7 lore raw

Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

In reply to Krzysztof Kozlowski

On Sun, 14 Apr 2024 11:07:19 +0200
Krzysztof Kozlowski <[email protected]> wrote:

Hi Krzysztof,

Quoted 21 lines · Ryan Walklin
Quoted 20 lines

From: Ryan Walklin <[email protected]>

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,

---
 Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
Documentation/devicetree/bindings/arm/sunxi.yaml +0 -0
index 09d835db6db5..fc10f54561c9 100644
@@ -56,6 +56,21 @@ properties:
           - const: anbernic,rg-nano
           - const: allwinner,sun8i-v3s
 
Quoted 15 lines

Documentation/devicetree/bindings/arm/sunxi.yaml properties: · line 71

Quoted 13 lines
Documentation/devicetree/bindings/arm/sunxi.yaml +13 -0
+      - 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

Acked-by on v1 1/4
#8 lore raw

Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants

In reply to Ryan Walklin
Quoted 9 lines · Ryan Walklin

From: Ryan Walklin <[email protected]>

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,

---

With the assumption this matches existing coding style for sunxi:

Best regards,
Krzysztof

#9 lore raw

PATCH 2/4 arm64: dts: allwinner: h700: Add RG35XX 2024 DTS

In reply to Ryan Walklin

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +405 -0
new file mode 100644
index 000000000000..b4140d450687
@@ -0,0 +1,405 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+/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";
+};
Signature · 1 line
2.44.0
#10 lore raw

Re: [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS

Quoted 72 lines · Ryan Walklin

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +36 -0
new file mode 100644
index 000000000000..b4140d450687
@@ -0,0 +1,405 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+/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;

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 46

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+            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.

...

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 48

Quoted 2 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +2 -0
+
+        keyVol+ {

Neither this

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 158

Quoted 7 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +7 -0
+            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

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 166

Quoted 8 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +8 -0
+            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

Quoted 44 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +44 -0
+        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;

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 220

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+    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.

Quoted 18 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +18 -0
+    bus-width = <4>;
+    status = "okay";
+};
+
+&ohci0 {
+    status = "okay";
+};
+
+&ehci1 {
+    status = "okay";
+};
+
+&i2c3 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&i2c3_ph_pins>;
+    status = "okay";
+};
+

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 248

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+&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

#11 lore raw

Re: [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS

Quoted 7 lines

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.

Quoted 4 lines

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.

Quoted 5 lines

Review

Quoted 2 lines
(quoted diff) +2 -0
+
+    reg_vcc5v: vcc5v {

Use some common reasonable prefix, e.g. regulator

Noted, thanks.

Quoted 1 line

Please do not add dead code without explanation.

Noted, thanks.

Regards,

Ryan

#12 lore raw

Re: [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS

In reply to Ryan Walklin

On Sun, 14 Apr 2024 20:33:46 +1200
Ryan Walklin <[email protected]> wrote:

Hi Ryan,

thanks for sending this!

Quoted 50 lines

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +14 -0
new file mode 100644
index 000000000000..b4140d450687
@@ -0,0 +1,405 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+/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>

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 24

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+#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.

Quoted 136 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +136 -0
+        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 */

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 170

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+            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?

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 175

Quoted 5 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +5 -0
+        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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 181

Quoted 6 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +6 -0
+            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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 184

Quoted 3 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +3 -0
+        };
+
+    reg_vcc3v3: vcc3v3 {

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

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 185

Quoted 1 line
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +1 -0
+        gpio = <&pio 4 4 GPIO_ACTIVE_HIGH>;

Please add the usual comment stating the GPIO name here.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 189

Quoted 4 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +4 -0
+        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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 195

Quoted 6 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +6 -0
+        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?

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 198

Quoted 3 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +3 -0
+        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?

Quoted 12 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +12 -0
+        regulator-min-microvolt = <1800000>;
+        regulator-max-microvolt = <1800000>;
+    };
+};
+
+&cpu0 {
+    cpu-supply = <&reg_dcdc1>;
+};
+
+&mmc0 {
+    vmmc-supply = <&reg_vcc3v3>;
+    disable-wp;

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 220

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+    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.

Quoted 6 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +6 -0
+    bus-width = <4>;
+    status = "okay";
+};
+
+&ohci0 {
+    status = "okay";

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 236

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+};
+
+&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?

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 245

Quoted 9 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +9 -0
+};
+
+&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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 248

Quoted 3 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +3 -0
+       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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 258

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+
+       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 ...

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 260

Quoted 2 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +2 -0
+                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?

Quoted 12 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +12 -0
+                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 {

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 282

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+                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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 288

Quoted 6 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +6 -0
+                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.

Quoted 24 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +24 -0
+                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 {

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 322

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+                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.

Quoted 35 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +35 -0
+                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";
+            };

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 367

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+
+            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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 374

Quoted 7 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +7 -0
+                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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 382

Quoted 8 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +8 -0
+                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?

Quoted 12 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +12 -0
+                regulator-min-microvolt = <500000>;
+                regulator-max-microvolt = <1400000>;
+                regulator-name = "cpusldo";
+            };
+       };
+   };
+};
+
+&uart0 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&uart0_ph_pins>;
+    status = "okay";

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts line 404

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +10 -0
+};
+
+/* 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

Quoted 1 line
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +1 -0
+};
#13 lore raw

PATCH 3/4 arm64: dts: allwinner: h700: Add RG35XX-Plus DTS

In reply to Ryan Walklin

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +63 -0
new file mode 100644
index 000000000000..b9a163ed5d0b
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+/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>;
+    };
+};
Signature · 1 line
2.44.0
#14 lore raw

Re: [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS

Quoted 70 lines · Ryan Walklin

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +49 -0
new file mode 100644
index 000000000000..b9a163ed5d0b
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+/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";
+};
+

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts line 59

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +10 -0
+/* 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

#15 lore raw

Re: [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS

In reply to Ryan Walklin

On Sun, 14 Apr 2024 20:33:47 +1200
Ryan Walklin <[email protected]> wrote:

Hi,

Quoted 21 lines

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +0 -0
new file mode 100644
index 000000000000..b9a163ed5d0b

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts line 3

Quoted 3 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +3 -0
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.

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

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts line 8

Quoted 5 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +5 -0
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+/dts-v1/;

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

Quoted 12 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +12 -0
+
+#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>;

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts line 30

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +10 -0
+        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.

Quoted 8 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +8 -0
+    mmc-pwrseq = <&wifi_pwrseq>;
+    bus-width = <4>;
+    non-removable;
+    status = "okay";
+
+    sdio_wifi: wifi@1 {
+       reg = <1>;
+       interrupt-parent = <&pio>;

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts line 48

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +10 -0
+       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?

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts line 61

Quoted 13 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +13 -0
+
+/* 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

Quoted 2 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +2 -0
+    };
+};
#16 lore raw

PATCH 4/4 arm64: dts: allwinner: h700: Add RG35XX-H DTS

In reply to Ryan Walklin

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +38 -0
new file mode 100644
index 000000000000..5b7de7bfc458
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+
+/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";
+};
Signature · 1 line
2.44.0
#17 lore raw

Re: [PATCH 4/4] arm64: dts: allwinner: h700: Add RG35XX-H DTS

On Sun, 14 Apr 2024 20:33:48 +1200
Ryan Walklin <[email protected]> wrote:

Hi Ryan,

Quoted 21 lines

From: Ryan Walklin <[email protected]>

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

---
 .../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
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +0 -0
new file mode 100644
index 000000000000..5b7de7bfc458

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts line 3

Quoted 3 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +3 -0
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Andre Przywara <[email protected]>.

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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts line 9

Quoted 6 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +6 -0
+ * Copyright (C) 2024 Ryan Walklin <[email protected]>.
+ * Copyright (C) 2024 Chris Morgan <[email protected]>.
+ */
+
+
+/dts-v1/;

Same as in 3/4: redundant line.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts line 16

Quoted 7 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +7 -0
+#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.

Quoted 7 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +7 -0
+       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>;

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts line 33

Quoted 10 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +10 -0
+        };
+
+        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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts line 36

Quoted 3 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +3 -0
+
+&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.

arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts line 38

Quoted 2 lines
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +2 -0
+    status = "okay";
+};

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

Cheers,
Andre

maintainer
#18 lore raw
In reply to Ryan Walklin
Quoted 57 lines · Ryan Walklin

From: Ryan Walklin <[email protected]>

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

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
Quoted 5 lines

--
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 [email protected]:

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.