Re: [PATCH 3/3] arm64: dts: allwinner: h618: add Transpeed 8K618-T TV box

Jernej Škrabec
2023-12-13T19:22:59Z

Hi Andre!

On Tuesday, December 12, 2023 2:08:59 AM CET Andre Przywara wrote:
> This is a Chinese TV box, probably very similar if not identical to
> various other cheap TV boxes with the same specs:
> - Allwinner H618 SoC (4 * Arm Cortex-A53 cores, 1MB L2 cache)
> - 2 or 4GiB DDR3L DRAM
> - 32, 64, or 128 GiB eMMC flash
> - AXP313a PMIC
> - 100 Mbit/s Ethernet (using yet unsupported internal PHY)
> - HDMI port
> - 2 * USB 2.0 ports
> - microSD card slot
> - 3.5mm A/V port
> - 7-segment display
> - 5V barrel plug power supply
>
> The PCB provides holes for soldering a UART header or cable, this is
> connected to the debug UART0. UART1 is used for the Bluetooth chip,
> although this isn't working yet.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
> arch/arm64/boot/dts/allwinner/Makefile | 1 +
> .../sun50i-h618-transpeed-8k618-t.dts | 164 ++++++++++++++++++
> 2 files changed, 165 insertions(+)
> create mode 100644
> arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts
>
> diff --git a/arch/arm64/boot/dts/allwinner/Makefile
> b/arch/arm64/boot/dts/allwinner/Makefile index 3aca6787a1679..91d505b385de5
> 100644
> --- a/arch/arm64/boot/dts/allwinner/Makefile
> +++ b/arch/arm64/boot/dts/allwinner/Makefile
> @@ -43,3 +43,4 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-pi.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero3.dtb
> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-transpeed-8k618-t.dtb
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts
> b/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts new file
> mode 100644
> index 0000000000000..fd7ea7bcde2c1
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts
> @@ -0,0 +1,164 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2023 Arm Ltd.
> + */
> +
> +/dts-v1/;
> +
> +#include "sun50i-h616.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +/ {
> + model = "Transpeed 8K618-T";
> + compatible = "transpeed,8k618-t", "allwinner,sun50i-h618";
> +
> + aliases {
> + serial0 = &uart0;
> + serial1 = &uart1;

Any particular reason for above alias?

> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + reg_vcc5v: vcc5v {
> + /* board wide 5V supply directly from the DC input */
> + compatible = "regulator-fixed";
> + regulator-name = "vcc-5v";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-always-on;
> + };
> +
> + reg_vcc3v3: vcc3v3 {
> + /* discrete 3.3V regulator */
> + compatible = "regulator-fixed";
> + regulator-name = "vcc-3v3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + };
> +};
> +
> +&ehci0 {
> + status = "okay";
> +};
> +
> +&ehci1 {
> + status = "okay";
> +};
> +
> +&ir {
> + status = "okay";
> +};
> +
> +&mmc0 {
> + vmmc-supply = <&reg_dldo1>;
> + cd-gpios = <&pio 8 16 GPIO_ACTIVE_LOW>; /* PI16 */
> + bus-width = <4>;
> + status = "okay";
> +};
> +
> +&mmc2 {
> + vmmc-supply = <&reg_dldo1>;
> + vqmmc-supply = <&reg_aldo1>;
> + bus-width = <8>;
> + non-removable;
> + cap-mmc-hw-reset;
> + mmc-ddr-1_8v;
> + mmc-hs200-1_8v;
> + status = "okay";
> +};
> +
> +&ohci0 {
> + status = "okay";
> +};
> +
> +&ohci1 {
> + status = "okay";
> +};
> +
> +&r_i2c {
> + status = "okay";
> +
> + axp313: pmic@36 {
> + compatible = "x-powers,axp313a";
> + reg = <0x36>;
> + #interrupt-cells = <1>;
> + interrupt-controller;
> +
> + vin1-supply = <&reg_vcc5v>;
> + vin2-supply = <&reg_vcc5v>;
> + vin3-supply = <&reg_vcc5v>;
> +
> + regulators {
> + /* Supplies VCC-PLL, so needs to be always
on. */
> + reg_aldo1: aldo1 {
> + regulator-always-on;
> + regulator-min-microvolt =
<1800000>;
> + regulator-max-microvolt =
<1800000>;
> + regulator-name = "vcc1v8";

It would be great to expand all PMIC regulator names with (known) areas they
power, so something like "vcc1v8-pll-pc". With that, I think you can remove
comments.

Best regards,
Jernej

> + };
> +
> + /* Supplies VCC-IO, so needs to be always on.
*/
> + reg_dldo1: dldo1 {
> + regulator-always-on;
> + regulator-min-microvolt =
<3300000>;
> + regulator-max-microvolt =
<3300000>;
> + regulator-name = "vcc3v3";
> + };
> +
> + reg_dcdc1: dcdc1 {
> + regulator-always-on;
> + regulator-min-microvolt =
<810000>;
> + regulator-max-microvolt =
<990000>;
> + regulator-name = "vdd-gpu-sys";
> + };
> +
> + reg_dcdc2: dcdc2 {
> + regulator-always-on;
> + regulator-min-microvolt =
<810000>;
> + regulator-max-microvolt =
<1100000>;
> + regulator-name = "vdd-cpu";
> + };
> +
> + reg_dcdc3: dcdc3 {
> + regulator-always-on;
> + regulator-min-microvolt =
<1360000>;
> + regulator-max-microvolt =
<1360000>;
> + regulator-name = "vdd-dram";
> + };
> + };
> + };
> +};
> +
> +&pio {
> + vcc-pc-supply = <&reg_aldo1>;
> + vcc-pg-supply = <&reg_dldo1>;
> + vcc-ph-supply = <&reg_dldo1>;
> + vcc-pi-supply = <&reg_dldo1>;
> +};
> +
> +&uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart0_ph_pins>;
> + status = "okay";
> +};
> +
> +&uart1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> + uart-has-rtscts;
> + status = "okay";
> +};
> +
> +&usbotg {
> + dr_mode = "host"; /* USB A type receptable */
> + status = "okay";
> +};
> +
> +&usbphy {
> + status = "okay";
> +};