arm64: dts: allwinner: Add Anbernic RG35XX (Plus/H/2024) support
Subsystems (2)
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
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
@@ -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
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,Signed-off-by Ryan Walklin <[email protected]>--- Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+)Documentation/devicetree/bindings/arm/sunxi.yaml +3
-0@@ -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
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,Signed-off-by Ryan Walklin <[email protected]>--- Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+)Documentation/devicetree/bindings/arm/sunxi.yaml +3
-0@@ -56,6 +56,21 @@ properties: - const: anbernic,rg-nano - const: allwinner,sun8i-v3s + - description: Anbernic RG35XX (2024) + - items: + - const: anbernic,rg35xx-2024Documentation/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-hAny reason these are not just one enum with three entires?
Best regards,
Krzysztof
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
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
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
Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
In reply to Krzysztof KozlowskiOn 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,Signed-off-by Ryan Walklin <[email protected]>--- Documentation/devicetree/bindings/arm/sunxi.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+)Documentation/devicetree/bindings/arm/sunxi.yaml +0
-0@@ -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-hAny 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
Re: [PATCH 1/4] dt-bindings: arm: sunxi: document Anbernic RG35XX handheld gaming device variants
In reply to Ryan WalklinQuoted 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,Signed-off-by Ryan Walklin <[email protected]>---
With the assumption this matches existing coding style for sunxi:
Best regards,
Krzysztof
PATCH 2/4 arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
In reply to Ryan WalklinFrom: 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
@@ -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 = <®_dcdc1>; +}; + +&mmc0 { + vmmc-supply = <®_vcc3v3>; + disable-wp; + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ + bus-width = <4>; + status = "okay"; +}; + +&mmc2 { + vmmc-supply = <®_vcc3v3>; + vqmmc-supply = <®_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 = <®_vcc5v>; + vin2-supply = <®_vcc5v>; + vin3-supply = <®_vcc5v>; + vin4-supply = <®_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
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 jackEnabled 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 slotsSigned-off-by Ryan Walklin <[email protected]>--- .../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.dtsarch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +36
-0@@ -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 = <®_dcdc1>; +}; + +&mmc0 { + vmmc-supply = <®_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 = <®_vcc3v3>; + vqmmc-supply = <®_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
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(seeDocumentation/devicetree/bindings/writing-schema.rstor
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
Re: [PATCH 2/4] arm64: dts: allwinner: h700: Add RG35XX 2024 DTS
In reply to Ryan WalklinOn 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 jackEnabled 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 slotsSigned-off-by Ryan Walklin <[email protected]>--- .../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.dtsarch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts new file +14
-0@@ -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 = <®_dcdc1>; +}; + +&mmc0 { + vmmc-supply = <®_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 = <®_vcc3v3>; + vqmmc-supply = <®_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 = <®_vcc5v>; + vin2-supply = <®_vcc5v>; + vin3-supply = <®_vcc5v>; + vin4-supply = <®_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+};
PATCH 3/4 arm64: dts: allwinner: h700: Add RG35XX-Plus DTS
In reply to Ryan WalklinFrom: 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
@@ -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 = <®_cldo4>; + vqmmc-supply = <®_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
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 GPIOsSigned-off-by Ryan Walklin <[email protected]>--- .../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.dtsarch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +49
-0@@ -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 = <®_cldo4>; + vqmmc-supply = <®_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
Re: [PATCH 3/4] arm64: dts: allwinner: h700: Add RG35XX-Plus DTS
In reply to Ryan WalklinOn 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 GPIOsSigned-off-by Ryan Walklin <[email protected]>--- .../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.dtsarch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus.dts new file +0
-0
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 = <®_cldo4>; + vqmmc-supply = <®_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+ }; +};
PATCH 4/4 arm64: dts: allwinner: h700: Add RG35XX-H DTS
In reply to Ryan WalklinFrom: 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
@@ -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
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 portSigned-off-by Ryan Walklin <[email protected]>--- .../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.dtsarch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h.dts new file +0
-0
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
Rob Herring
maintainerQuoted 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 chipRG35XX-H (Horizontal form-factor) adds:
- RTL8821CS SDIO Wifi/BT chip
- Two analog thumbsticks
- Second USB-C port
- Stereo speakerPatch 1 adds the DT bindings for the board names, Patch 2 adds the -2024 device as a common base, Patch 3 adds Wifi/BT support for the -Plus (and -H), and Patch 3 adds the second USB and thumbsticks for the -H. The -H is a strict superset of the -Plus, which is in turn a strict superset of the -2024, so this translates quite neatly. Alternatively a single DTS for the three devices could be considered.
LCD, HDMI, audio and GPU support are not yet ready and relying on out-of-tree patches currently, so will be added once these drivers are mainlined.
Ryan
Signed-off-by Ryan Walklin <[email protected]>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.