Re: [PATCH 2/2] arm64: dts: allwinner: h700: Add Anbernic RG35XX-SP

Andre Przywara
2024-06-06T09:52:05Z

On Wed, 5 Jun 2024 13:53:39 -0500
Chris Morgan <macroalpha82@gmail.com> wrote:

> From: Chris Morgan <macromorgan@hotmail.com>
>
> The Anbernic RG35XXSP is almost identical to the RG35XX-Plus, but in a
> clamshell form-factor. The key differences between the SP and the Plus
> is a lid switch and an RTC on the same i2c bus as the PMIC.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
> arch/arm64/boot/dts/allwinner/Makefile | 3 +-
> .../sun50i-h700-anbernic-rg35xx-sp.dts | 145 ++++++++++++++++++
> 2 files changed, 147 insertions(+), 1 deletion(-)
> create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp.dts
>
> diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
> index 0db7b60b49a1..00bed412ee31 100644
> --- a/arch/arm64/boot/dts/allwinner/Makefile
> +++ b/arch/arm64/boot/dts/allwinner/Makefile
> @@ -49,5 +49,6 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero2w.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero3.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-transpeed-8k618-t.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg35xx-2024.dtb
> -dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg35xx-plus.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg35xx-h.dtb
> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg35xx-plus.dtb
> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg35xx-sp.dtb
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp.dts
> new file mode 100644
> index 000000000000..a1d16b65ef5d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp.dts
> @@ -0,0 +1,145 @@
> +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +/*
> + * Copyright (C) 2024 Ryan Walklin <ryan@testtoast.com>.
> + * Copyright (C) 2024 Chris Morgan <macroalpha82@gmail.com>.
> + */
> +
> +#include <dt-bindings/input/gpio-keys.h>
> +#include "sun50i-h700-anbernic-rg35xx-plus.dts"
> +
> +/ {
> + model = "Anbernic RG35XX SP";
> + compatible = "anbernic,rg35xx-sp", "allwinner,sun50i-h700";
> +
> + gpio-keys-lid {
> + compatible = "gpio-keys";
> +
> + lid-switch {
> + label = "Lid Switch";
> + gpios = <&pio 4 7 GPIO_ACTIVE_LOW>; /* PE7 */
> + linux,can-disable;
> + linux,code = <SW_LID>;
> + linux,input-type = <EV_SW>;
> + wakeup-event-action = <EV_ACT_DEASSERTED>;
> + wakeup-source;
> + };
> + };
> +};
> +
> +/delete-node/ &r_rsb;

I don't think deleting the *RSB* node is right here, if at all, I'd expect
status="disabled", and then maybe deleting the axp717 node within?
Or maybe factor the AXP node out into a separate file, and include it from
the -2024.dts and from this one?
Or move every board to I2C?
What do people think about this?

Cheers,
Andre

> +
> +&r_i2c {
> + pinctrl-0 = <&r_i2c_pins>;
> + pinctrl-names = "default";
> + status = "okay";
> +
> + axp717: pmic@34 {
> + compatible = "x-powers,axp717";
> + reg = <0x34>;
> + interrupt-controller;
> + #interrupt-cells = <1>;
> + interrupt-parent = <&nmi_intc>;
> + interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
> +
> + vin1-supply = <&reg_vcc5v>;
> + vin2-supply = <&reg_vcc5v>;
> + vin3-supply = <&reg_vcc5v>;
> + vin4-supply = <&reg_vcc5v>;
> +
> + regulators {
> + reg_dcdc1: dcdc1 {
> + regulator-always-on;
> + regulator-min-microvolt = <900000>;
> + regulator-max-microvolt = <1100000>;
> + regulator-name = "vdd-cpu";
> + };
> +
> + reg_dcdc2: dcdc2 {
> + regulator-always-on;
> + regulator-min-microvolt = <940000>;
> + regulator-max-microvolt = <940000>;
> + regulator-name = "vdd-gpu-sys";
> + };
> +
> + reg_dcdc3: dcdc3 {
> + regulator-always-on;
> + regulator-min-microvolt = <1100000>;
> + regulator-max-microvolt = <1100000>;
> + regulator-name = "vdd-dram";
> + };
> +
> + reg_aldo1: aldo1 {
> + /* 1.8v - unused */
> + };
> +
> + reg_aldo2: aldo2 {
> + /* 1.8v - unused */
> + };
> +
> + reg_aldo3: aldo3 {
> + /* 1.8v - unused */
> + };
> +
> + reg_aldo4: aldo4 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-pg";
> + };
> +
> + reg_bldo1: bldo1 {
> + /* 1.8v - unused */
> + };
> +
> + reg_bldo2: bldo2 {
> + regulator-always-on;
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-name = "vcc-pll";
> + };
> +
> + reg_bldo3: bldo3 {
> + /* 2.8v - unused */
> + };
> +
> + reg_bldo4: bldo4 {
> + /* 1.2v - unused */
> + };
> +
> + reg_cldo1: cldo1 {
> + /* 3.3v - audio codec - not yet implemented */
> + };
> +
> + reg_cldo2: cldo2 {
> + /* 3.3v - unused */
> + };
> +
> + reg_cldo3: cldo3 {
> + regulator-always-on;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-io";
> + };
> +
> + reg_cldo4: cldo4 {
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "vcc-wifi";
> + };
> +
> + reg_boost: boost {
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5200000>;
> + regulator-name = "boost";
> + };
> +
> + reg_cpusldo: cpusldo {
> + /* unused */
> + };
> + };
> + };
> +
> + rtc_ext: rtc@51 {
> + compatible = "nxp,pcf8563";
> + reg = <0x51>;
> + };
> +};