2024-03-17 01:36:17

by Kamil Kasperski

[permalink] [raw]
Subject: [PATCH v2 0/3] Add initial support for T95 TV boxes

changes since v1:
- introduce sun50i-h616-t95.dtsi for common nodes in t95 boxes
- validate and add cd-gpios for microsd card detect
- add wi-fi node
- remove mmc2 node - it's not used
- add uart1 for bluetooth device
- update copyright

T95 is a most commonly known for being a box with a pre-installed
malware. It uses Allwinner H616 and comes with NAND, and DDR3
memory.

Those TV boxes usually come with common hardware:
- Allwinner H616 SoC
- 2/4 GB DDR3 SDRAM (Hynix H5TQ2G43BFR)
- 16/32/64 GB NAND flash
- microSD slot
- AXP305 or AXP313 PMIC depending on board revision
- 3.5mm A/V output
- HDMI port
- 2x USB 2.0 ports
- 100M ETH using Internal PHY
- LG642 Wi-Fi and BT chip (rebranded BCM43342)
- 7-segment display
- DC 5V barrel jack port

The board contains holes hor UART header wired to &uart0.
&uart1 is used by bluetooth module

From the DRAM specification its operation voltage is 1.5V.

To: Rob Herring <[email protected]>
To: Krzysztof Kozlowski <[email protected]>
To: Conor Dooley <[email protected]>
To: Chen-Yu Tsai <[email protected]>
To: Jernej Skrabec <[email protected]>
To: Samuel Holland <[email protected]>
To: Maxime Ripard <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]

Signed-off-by: Kamil Kasperski <[email protected]>
---
Kamil Kasperski (3):
dt-bindings: vendor-prefixes: add t95 string
dt-bindings: arm: sunxi: add T95 AXP313
arm64: dts: allwinner: h616: add support for T95 tv boxes

Documentation/devicetree/bindings/arm/sunxi.yaml | 5 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/allwinner/Makefile | 1 +
arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi | 109 +++++++++++++++++++++
.../dts/allwinner/sun50i-h616-t95max-axp313.dts | 85 ++++++++++++++++
5 files changed, 202 insertions(+)
---
base-commit: 4138f02288333cb596885e9af03dd3ea2de845cb
change-id: 20240315-add-t95-axp313-support-5f3da8996edd

Best regards,
--
Kamil Kasperski <[email protected]>



2024-03-17 01:36:23

by Kamil Kasperski

[permalink] [raw]
Subject: [PATCH v2 1/3] dt-bindings: vendor-prefixes: add t95 string

Add vendor prefix for T95 tv boxes of unnamed brand. It's hard to
determine the actual vendor, so let's assume t95 as default vendor for
all t95-branded tv boxes.

Signed-off-by: Kamil Kasperski <[email protected]>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 04505cb0b640..65025ad4dcd5 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1416,6 +1416,8 @@ patternProperties:
"^synopsys,.*":
description: Synopsys, Inc. (deprecated, use snps)
deprecated: true
+ "^t95,.*":
+ description: T95
"^tbs,.*":
description: TBS Technologies
"^tbs-biometrics,.*":

--
2.34.1


2024-03-17 01:36:31

by Kamil Kasperski

[permalink] [raw]
Subject: [PATCH v2 2/3] dt-bindings: arm: sunxi: add T95 AXP313

Add T95 AXP313 TV Box variant to dt-bindings.

Signed-off-by: Kamil Kasperski <[email protected]>
---
Documentation/devicetree/bindings/arm/sunxi.yaml | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
index 09d835db6db5..6fe137605ba5 100644
--- a/Documentation/devicetree/bindings/arm/sunxi.yaml
+++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
@@ -860,6 +860,11 @@ properties:
- const: allwinner,sl631
- const: allwinner,sun8i-v3

+ - description: T95 5G (AXP313) TV Box
+ items:
+ - const: t95,t95max-axp313
+ - const: allwinner,sun50i-h616
+
- description: Tanix TX6
items:
- const: oranth,tanix-tx6

--
2.34.1


2024-03-17 01:36:52

by Kamil Kasperski

[permalink] [raw]
Subject: [PATCH v2 3/3] arm64: dts: allwinner: h616: add support for T95 tv boxes

Add dtsi file for T95 tv boxes and add initial
support for T95 5G AXP313A variant with a board name
H616-T95MAX-AXP313A-v3.0

internal NAND chip is connected to NAND controller
I can't see any nand in sun50i-h616.dtsi, so access to
internal memory is not implemented.

Signed-off-by: Kamil Kasperski <[email protected]>
---
arch/arm64/boot/dts/allwinner/Makefile | 1 +
arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi | 109 +++++++++++++++++++++
.../dts/allwinner/sun50i-h616-t95max-axp313.dts | 85 ++++++++++++++++
3 files changed, 195 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
index 21149b346a60..294921f12b73 100644
--- a/arch/arm64/boot/dts/allwinner/Makefile
+++ b/arch/arm64/boot/dts/allwinner/Makefile
@@ -42,6 +42,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-cb1-manta.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-pi.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-t95max-axp313.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-longanpi-3h.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero2w.dtb
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi
new file mode 100644
index 000000000000..2af17439ba86
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi
@@ -0,0 +1,109 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2024 Kamil Kasperski <[email protected]>
+ *
+ * Common DT nodes for H616-based T95 TV boxes
+ * There are two versions reported with different PMIC variants.
+ */
+
+#include "sun50i-h616.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ aliases {
+ ethernet1 = &sdio_wifi;
+ serial0 = &uart0;
+ };
+
+ 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;
+ };
+
+ 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";
+ reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
+ };
+};
+
+&ehci0 {
+ status = "okay";
+};
+
+&ehci2 {
+ status = "okay";
+};
+
+&ir {
+ status = "okay";
+};
+
+&mmc0 {
+ cd-gpios = <&pio 8 16 GPIO_ACTIVE_LOW>; /* PI16 */
+ bus-width = <4>;
+ status = "okay";
+};
+
+&mmc1 {
+ mmc-pwrseq = <&wifi_pwrseq>;
+ bus-width = <4>;
+ non-removable;
+ status = "okay";
+
+ sdio_wifi: wifi@1 {
+ reg = <1>;
+ };
+};
+
+&ohci0 {
+ status = "okay";
+};
+
+&ohci2 {
+ status = "okay";
+};
+
+&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";
+};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-t95max-axp313.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-t95max-axp313.dts
new file mode 100644
index 000000000000..c8650aca2407
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-t95max-axp313.dts
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2024 Kamil Kasperski <[email protected]>
+ *
+ * Configuration for T95 TV box with board label H616-T95MAX-AXP313A-v3.0
+ */
+
+/dts-v1/;
+
+#include "sun50i-h616-t95.dtsi"
+
+/ {
+ model = "T95 5G (AXP313)";
+ compatible = "t95,t95max-axp313", "allwinner,sun50i-h616";
+};
+
+&mmc0 {
+ vmmc-supply = <&reg_dldo1>;
+};
+
+&mmc1 {
+ vmmc-supply = <&reg_dldo1>;
+ vqmmc-supply = <&reg_aldo1>;
+};
+
+&r_i2c {
+ status = "okay";
+
+ axp313: pmic@36 {
+ compatible = "x-powers,axp313a";
+ reg = <0x36>;
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ interrupt-parent = <&pio>;
+
+ vin1-supply = <&reg_vcc5v>;
+ vin2-supply = <&reg_vcc5v>;
+ vin3-supply = <&reg_vcc5v>;
+
+ regulators {
+ reg_aldo1: aldo1 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vcc1v8";
+ };
+
+ 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 = <1500000>;
+ regulator-max-microvolt = <1500000>;
+ regulator-name = "vdd-dram";
+ };
+ };
+ };
+};
+
+&pio {
+ vcc-pc-supply = <&reg_aldo1>;
+ vcc-pf-supply = <&reg_dldo1>;
+ vcc-pg-supply = <&reg_dldo1>;
+ vcc-ph-supply = <&reg_dldo1>;
+ vcc-pi-supply = <&reg_dldo1>;
+};

--
2.34.1


2024-03-17 14:58:19

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: allwinner: h616: add support for T95 tv boxes

On 17/03/2024 02:34, Kamil Kasperski wrote:
> Add dtsi file for T95 tv boxes and add initial
> support for T95 5G AXP313A variant with a board name
> H616-T95MAX-AXP313A-v3.0
>
> internal NAND chip is connected to NAND controller
> I can't see any nand in sun50i-h616.dtsi, so access to
> internal memory is not implemented.

Please wrap commit message according to Linux coding style / submission
process (neither too early nor over the limit):
https://elixir.bootlin.com/linux/v6.4-rc1/source/Documentation/process/submitting-patches.rst#L597

>
> Signed-off-by: Kamil Kasperski <[email protected]>
> ---
> arch/arm64/boot/dts/allwinner/Makefile | 1 +
> arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi | 109 +++++++++++++++++++++
> .../dts/allwinner/sun50i-h616-t95max-axp313.dts | 85 ++++++++++++++++
> 3 files changed, 195 insertions(+)
>

> +
> + 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;
> + };
> +
> + wifi_pwrseq: wifi_pwrseq {

No underscores in node names. From where did you copy this code?

> + compatible = "mmc-pwrseq-simple";
> + clocks = <&rtc CLK_OSC32K_FANOUT>;
> + clock-names = "ext_clock";
> + pinctrl-0 = <&x32clk_fanout_pin>;
> + pinctrl-names = "default";
> + reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
> + };
> +};
> +


Best regards,
Krzysztof


2024-03-17 14:59:00

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 1/3] dt-bindings: vendor-prefixes: add t95 string

On 17/03/2024 02:33, Kamil Kasperski wrote:
> Add vendor prefix for T95 tv boxes of unnamed brand. It's hard to
> determine the actual vendor, so let's assume t95 as default vendor for
> all t95-branded tv boxes.
>
> Signed-off-by: Kamil Kasperski <[email protected]>
> ---

Acked-by: Krzysztof Kozlowski <[email protected]>


---

This is an automated instruction, just in case, because many review tags
are being ignored. If you know the process, you can skip it (please do
not feel offended by me posting it here - no bad intentions intended).
If you do not know the process, here is a short explanation:

Please add Acked-by/Reviewed-by/Tested-by tags when posting new
versions, under or above your Signed-off-by tag. Tag is "received", when
provided in a message replied to you on the mailing list. Tools like b4
can help here. However, there's no need to repost patches *only* to add
the tags. The upstream maintainer will do that for tags received on the
version they apply.

https://elixir.bootlin.com/linux/v6.5-rc3/source/Documentation/process/submitting-patches.rst#L577

Best regards,
Krzysztof


2024-03-17 14:59:40

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] dt-bindings: arm: sunxi: add T95 AXP313

On 17/03/2024 02:34, Kamil Kasperski wrote:
> Add T95 AXP313 TV Box variant to dt-bindings.
>
> Signed-off-by: Kamil Kasperski <[email protected]>
> ---
> Documentation/devicetree/bindings/arm/sunxi.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
>

Acked-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof


2024-03-17 15:37:20

by Kamil Kasperski

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: allwinner: h616: add support for T95 tv boxes

W dniu 17.03.2024 o 15:57, Krzysztof Kozlowski pisze:
> On 17/03/2024 02:34, Kamil Kasperski wrote:
>> Add dtsi file for T95 tv boxes and add initial
>> support for T95 5G AXP313A variant with a board name
>> H616-T95MAX-AXP313A-v3.0
>>
>> internal NAND chip is connected to NAND controller
>> I can't see any nand in sun50i-h616.dtsi, so access to
>> internal memory is not implemented.
> Please wrap commit message according to Linux coding style / submission
> process (neither too early nor over the limit):
> https://elixir.bootlin.com/linux/v6.4-rc1/source/Documentation/process/submitting-patches.rst#L597
>
>> Signed-off-by: Kamil Kasperski <[email protected]>
>> ---
>> arch/arm64/boot/dts/allwinner/Makefile | 1 +
>> arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi | 109 +++++++++++++++++++++
>> .../dts/allwinner/sun50i-h616-t95max-axp313.dts | 85 ++++++++++++++++
>> 3 files changed, 195 insertions(+)
>>
>> +
>> + 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;
>> + };
>> +
>> + wifi_pwrseq: wifi_pwrseq {
> No underscores in node names. From where did you copy this code?

arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts#L44
Seems this one needs a fixup.

>> + compatible = "mmc-pwrseq-simple";
>> + clocks = <&rtc CLK_OSC32K_FANOUT>;
>> + clock-names = "ext_clock";
>> + pinctrl-0 = <&x32clk_fanout_pin>;
>> + pinctrl-names = "default";
>> + reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
>> + };
>> +};
>> +
>
> Best regards,
> Krzysztof
>


2024-03-17 17:50:07

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] arm64: dts: allwinner: h616: add support for T95 tv boxes

On 17/03/2024 16:36, Kamil Kasperski wrote:
> W dniu 17.03.2024 o 15:57, Krzysztof Kozlowski pisze:
>> On 17/03/2024 02:34, Kamil Kasperski wrote:
>>> Add dtsi file for T95 tv boxes and add initial
>>> support for T95 5G AXP313A variant with a board name
>>> H616-T95MAX-AXP313A-v3.0
>>>
>>> internal NAND chip is connected to NAND controller
>>> I can't see any nand in sun50i-h616.dtsi, so access to
>>> internal memory is not implemented.
>> Please wrap commit message according to Linux coding style / submission
>> process (neither too early nor over the limit):
>> https://elixir.bootlin.com/linux/v6.4-rc1/source/Documentation/process/submitting-patches.rst#L597
>>
>>> Signed-off-by: Kamil Kasperski <[email protected]>
>>> ---
>>> arch/arm64/boot/dts/allwinner/Makefile | 1 +
>>> arch/arm64/boot/dts/allwinner/sun50i-h616-t95.dtsi | 109 +++++++++++++++++++++
>>> .../dts/allwinner/sun50i-h616-t95max-axp313.dts | 85 ++++++++++++++++
>>> 3 files changed, 195 insertions(+)
>>>
>>> +
>>> + 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;
>>> + };
>>> +
>>> + wifi_pwrseq: wifi_pwrseq {
>> No underscores in node names. From where did you copy this code?
>
> arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dts#L44
> Seems this one needs a fixup.
>

I see sunxi has a lot of this... I thought we fixed all mainstream
platforms, but apparently not. I'll send a patch.

Best regards,
Krzysztof