2021-09-02 11:59:37

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH 0/2] Add DTS bits to enable USB3 PHY on HiKey970

Hi Wei,

Now that the Hi6421v600 PMIC together with its DT schema schema got
merged upstream, we can merge the PMIC and the USB3 PHY support for
HiKey 970 DTS.

Please merge those two via HiSilicon tree.

-

It should be noticed that there's one last component needed for USB3 to
work: the DT schema for the in-board USB HUB. I'll submit this in
separate, as such patch series is still under review:

https://lore.kernel.org/lkml/[email protected]/T/#t

Regards,
Mauro

Mauro Carvalho Chehab (2):
arm64: dts: hisilicon: Add support for Hikey 970 PMIC
arm64: dts: hisilicon: Add support for Hikey 970 USB3 PHY

.../boot/dts/hisilicon/hi3670-hikey970.dts | 105 ++++++++++++++----
arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 58 +++++++++-
.../boot/dts/hisilicon/hikey970-pmic.dtsi | 86 ++++++++++++++
3 files changed, 229 insertions(+), 20 deletions(-)
create mode 100644 arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi

--
2.31.1



2021-09-02 11:59:37

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH 1/2] arm64: dts: hisilicon: Add support for Hikey 970 PMIC

Add a device tree for the HiSilicon 6421v600 SPMI PMIC, used
on HiKey970 board.

As we now have support for it, change the fixed regulators
used by the SD I/O to use the proper LDO supplies.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
.../boot/dts/hisilicon/hi3670-hikey970.dts | 22 +----
arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 2 +-
.../boot/dts/hisilicon/hikey970-pmic.dtsi | 86 +++++++++++++++++++
3 files changed, 90 insertions(+), 20 deletions(-)
create mode 100644 arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi

diff --git a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
index d8abf442ee7e..7c32f5fd5cc5 100644
--- a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
+++ b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
@@ -12,6 +12,7 @@

#include "hi3670.dtsi"
#include "hikey970-pinctrl.dtsi"
+#include "hikey970-pmic.dtsi"

/ {
model = "HiKey970";
@@ -39,23 +40,6 @@ memory@0 {
reg = <0x0 0x0 0x0 0x0>;
};

- sd_1v8: regulator-1v8 {
- compatible = "regulator-fixed";
- regulator-name = "fixed-1.8V";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- regulator-always-on;
- };
-
- sd_3v3: regulator-3v3 {
- compatible = "regulator-fixed";
- regulator-name = "fixed-3.3V";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- regulator-boot-on;
- regulator-always-on;
- };
-
wlan_en: wlan-en-1-8v {
compatible = "regulator-fixed";
regulator-name = "wlan-en-regulator";
@@ -402,8 +386,8 @@ &dwmmc1 {
pinctrl-0 = <&sd_pmx_func
&sd_clk_cfg_func
&sd_cfg_func>;
- vmmc-supply = <&sd_3v3>;
- vqmmc-supply = <&sd_1v8>;
+ vmmc-supply = <&ldo16>;
+ vqmmc-supply = <&ldo9>;
status = "okay";
};

diff --git a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
index 20698cfd0637..636c8817df7e 100644
--- a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
@@ -669,7 +669,7 @@ ufs: ufs@ff3c0000 {
interrupt-parent = <&gic>;
interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&crg_ctrl HI3670_CLK_GATE_UFSIO_REF>,
- <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
+ <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
clock-names = "ref_clk", "phy_clk";
freq-table-hz = <0 0
0 0>;
diff --git a/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
new file mode 100644
index 000000000000..970047f2dabd
--- /dev/null
+++ b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Hi6421v600 SPMI PMIC used at the HiKey970 Development Board
+ *
+ * Copyright (C) 2020, Huawei Tech. Co., Ltd.
+ */
+
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+ spmi: spmi@fff24000 {
+ compatible = "hisilicon,kirin970-spmi-controller";
+ #address-cells = <2>;
+ #size-cells = <0>;
+ status = "okay";
+ reg = <0x0 0xfff24000 0x0 0x1000>;
+ hisilicon,spmi-channel = <2>;
+
+ pmic: pmic@0 {
+ compatible = "hisilicon,hi6421-spmi";
+ reg = <0 SPMI_USID>;
+
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ gpios = <&gpio28 0 0>;
+
+ regulators {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ldo3: ldo3 { /* HDMI */
+ regulator-name = "ldo3";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-boot-on;
+ };
+
+ ldo4: ldo4 { /* 40 PIN */
+ regulator-name = "ldo4";
+ regulator-min-microvolt = <1725000>;
+ regulator-max-microvolt = <1900000>;
+ regulator-boot-on;
+ };
+
+ ldo9: ldo9 { /* SDCARD I/O */
+ regulator-name = "ldo9";
+ regulator-min-microvolt = <1750000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ };
+
+ ldo15: ldo15 { /* UFS */
+ regulator-name = "ldo15";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3000000>;
+ regulator-always-on;
+ };
+
+ ldo16: ldo16 { /* SD */
+ regulator-name = "ldo16";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3000000>;
+ regulator-boot-on;
+ };
+
+ ldo17: ldo17 { /* USB HUB */
+ regulator-name = "ldo17";
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ ldo33: ldo33 { /* PEX8606 */
+ regulator-name = "ldo33";
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ ldo34: ldo34 { /* GPS AUX IN VDD */
+ regulator-name = "ldo34";
+ regulator-min-microvolt = <2600000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ };
+ };
+ };
+};
--
2.31.1

2021-09-02 12:01:02

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH 2/2] arm64: dts: hisilicon: Add support for Hikey 970 USB3 PHY

Add the USB3 bindings for Kirin 970 phy and Hikey 970 board.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
.../boot/dts/hisilicon/hi3670-hikey970.dts | 83 +++++++++++++++++++
arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 56 +++++++++++++
2 files changed, 139 insertions(+)

diff --git a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
index 7c32f5fd5cc5..60594db07041 100644
--- a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
+++ b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
@@ -430,3 +430,86 @@ &uart6 {
label = "LS-UART1";
status = "okay";
};
+
+&usb_phy {
+ phy-supply = <&ldo17>;
+};
+
+&i2c1 {
+ status = "okay";
+
+ rt1711h: rt1711h@4e {
+ compatible = "richtek,rt1711h";
+ reg = <0x4e>;
+ status = "okay";
+ interrupt-parent = <&gpio27>;
+ interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&usb_cfg_func>;
+
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)
+ PDO_VAR(5000, 5000, 1000)>;
+ op-sink-microwatt = <10000000>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@1 {
+ reg = <1>;
+ usb_con_ss: endpoint {
+ remote-endpoint = <&dwc3_ss>;
+ };
+ };
+ };
+ };
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rt1711h_ep: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hikey_usb_ep1>;
+ };
+ };
+ };
+};
+
+&i2c2 {
+ /* USB HUB is on this bus at address 0x44 */
+ status = "okay";
+};
+
+&dwc3 { /* USB */
+ dr_mode = "otg";
+ maximum-speed = "super-speed";
+ phy_type = "utmi";
+ snps,dis-del-phy-power-chg-quirk;
+ snps,dis_u2_susphy_quirk;
+ snps,dis_u3_susphy_quirk;
+ snps,tx_de_emphasis_quirk;
+ snps,tx_de_emphasis = <1>;
+ snps,dis-split-quirk;
+ snps,gctl-reset-quirk;
+ usb-role-switch;
+ role-switch-default-mode = "host";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ dwc3_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hikey_usb_ep0>;
+ };
+
+ dwc3_ss: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usb_con_ss>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
index 636c8817df7e..782e1487666d 100644
--- a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
@@ -8,6 +8,7 @@

#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/hi3670-clock.h>
+#include <dt-bindings/usb/pd.h>

/ {
compatible = "hisilicon,hi3670";
@@ -785,5 +786,60 @@ i2c4: i2c@fdf0d000 {
pinctrl-0 = <&i2c4_pmx_func &i2c4_cfg_func>;
status = "disabled";
};
+
+ usb3_otg_bc: usb3_otg_bc@ff200000 {
+ compatible = "syscon", "simple-mfd";
+ reg = <0x0 0xff200000 0x0 0x1000>;
+
+ usb_phy: usbphy {
+ compatible = "hisilicon,hi3670-usb-phy";
+ #phy-cells = <0>;
+ hisilicon,pericrg-syscon = <&crg_ctrl>;
+ hisilicon,pctrl-syscon = <&pctrl>;
+ hisilicon,sctrl-syscon = <&sctrl>;
+ hisilicon,eye-diagram-param = <0xFDFEE4>;
+ hisilicon,tx-vboost-lvl = <0x5>;
+ };
+ };
+
+ usb31_misc_rst: usb31_misc_rst_controller {
+ compatible = "hisilicon,hi3660-reset";
+ #reset-cells = <2>;
+ hisi,rst-syscon = <&usb3_otg_bc>;
+ };
+
+ usb3: hisi_dwc3 {
+ compatible = "hisilicon,hi3670-dwc3";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ clocks = <&crg_ctrl HI3670_CLK_GATE_ABB_USB>,
+ <&crg_ctrl HI3670_HCLK_GATE_USB3OTG>,
+ <&crg_ctrl HI3670_CLK_GATE_USB3OTG_REF>,
+ <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>;
+ clock-names = "clk_gate_abb_usb",
+ "hclk_gate_usb3otg",
+ "clk_gate_usb3otg_ref",
+ "aclk_gate_usb3dvfs";
+
+ assigned-clocks = <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>;
+ assigned-clock-rates = <238000000>;
+ resets = <&crg_rst 0x90 6>,
+ <&crg_rst 0x90 7>,
+ <&usb31_misc_rst 0xA0 8>,
+ <&usb31_misc_rst 0xA0 9>;
+
+ dwc3: usb@ff100000 {
+ compatible = "snps,dwc3";
+ reg = <0x0 0xff100000 0x0 0x100000>;
+
+ interrupts = <0 159 IRQ_TYPE_LEVEL_HIGH>,
+ <0 161 IRQ_TYPE_LEVEL_HIGH>;
+
+ phys = <&usb_phy>;
+ phy-names = "usb3-phy";
+ };
+ };
};
};
--
2.31.1

2021-09-15 12:52:46

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH 1/2] arm64: dts: hisilicon: Add support for Hikey 970 PMIC

Em Thu, 2 Sep 2021 13:55:23 +0200
Mauro Carvalho Chehab <[email protected]> escreveu:

> Add a device tree for the HiSilicon 6421v600 SPMI PMIC, used
> on HiKey970 board.
>
> As we now have support for it, change the fixed regulators
> used by the SD I/O to use the proper LDO supplies.

Hi Wei,

Gentile ping.

Now that the drivers and the DT schema are already upstreamed, could
you please merge those two patches?

Thank you!
Mauro

>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> ---
> .../boot/dts/hisilicon/hi3670-hikey970.dts | 22 +----
> arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 2 +-
> .../boot/dts/hisilicon/hikey970-pmic.dtsi | 86 +++++++++++++++++++
> 3 files changed, 90 insertions(+), 20 deletions(-)
> create mode 100644 arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
>
> diff --git a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
> index d8abf442ee7e..7c32f5fd5cc5 100644
> --- a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
> +++ b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
> @@ -12,6 +12,7 @@
>
> #include "hi3670.dtsi"
> #include "hikey970-pinctrl.dtsi"
> +#include "hikey970-pmic.dtsi"
>
> / {
> model = "HiKey970";
> @@ -39,23 +40,6 @@ memory@0 {
> reg = <0x0 0x0 0x0 0x0>;
> };
>
> - sd_1v8: regulator-1v8 {
> - compatible = "regulator-fixed";
> - regulator-name = "fixed-1.8V";
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <1800000>;
> - regulator-always-on;
> - };
> -
> - sd_3v3: regulator-3v3 {
> - compatible = "regulator-fixed";
> - regulator-name = "fixed-3.3V";
> - regulator-min-microvolt = <3300000>;
> - regulator-max-microvolt = <3300000>;
> - regulator-boot-on;
> - regulator-always-on;
> - };
> -
> wlan_en: wlan-en-1-8v {
> compatible = "regulator-fixed";
> regulator-name = "wlan-en-regulator";
> @@ -402,8 +386,8 @@ &dwmmc1 {
> pinctrl-0 = <&sd_pmx_func
> &sd_clk_cfg_func
> &sd_cfg_func>;
> - vmmc-supply = <&sd_3v3>;
> - vqmmc-supply = <&sd_1v8>;
> + vmmc-supply = <&ldo16>;
> + vqmmc-supply = <&ldo9>;
> status = "okay";
> };
>
> diff --git a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
> index 20698cfd0637..636c8817df7e 100644
> --- a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
> +++ b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
> @@ -669,7 +669,7 @@ ufs: ufs@ff3c0000 {
> interrupt-parent = <&gic>;
> interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&crg_ctrl HI3670_CLK_GATE_UFSIO_REF>,
> - <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
> + <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
> clock-names = "ref_clk", "phy_clk";
> freq-table-hz = <0 0
> 0 0>;
> diff --git a/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
> new file mode 100644
> index 000000000000..970047f2dabd
> --- /dev/null
> +++ b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
> @@ -0,0 +1,86 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * dts file for Hi6421v600 SPMI PMIC used at the HiKey970 Development Board
> + *
> + * Copyright (C) 2020, Huawei Tech. Co., Ltd.
> + */
> +
> +#include <dt-bindings/spmi/spmi.h>
> +
> +/ {
> + spmi: spmi@fff24000 {
> + compatible = "hisilicon,kirin970-spmi-controller";
> + #address-cells = <2>;
> + #size-cells = <0>;
> + status = "okay";
> + reg = <0x0 0xfff24000 0x0 0x1000>;
> + hisilicon,spmi-channel = <2>;
> +
> + pmic: pmic@0 {
> + compatible = "hisilicon,hi6421-spmi";
> + reg = <0 SPMI_USID>;
> +
> + #interrupt-cells = <2>;
> + interrupt-controller;
> + gpios = <&gpio28 0 0>;
> +
> + regulators {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ldo3: ldo3 { /* HDMI */
> + regulator-name = "ldo3";
> + regulator-min-microvolt = <1500000>;
> + regulator-max-microvolt = <2000000>;
> + regulator-boot-on;
> + };
> +
> + ldo4: ldo4 { /* 40 PIN */
> + regulator-name = "ldo4";
> + regulator-min-microvolt = <1725000>;
> + regulator-max-microvolt = <1900000>;
> + regulator-boot-on;
> + };
> +
> + ldo9: ldo9 { /* SDCARD I/O */
> + regulator-name = "ldo9";
> + regulator-min-microvolt = <1750000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + };
> +
> + ldo15: ldo15 { /* UFS */
> + regulator-name = "ldo15";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3000000>;
> + regulator-always-on;
> + };
> +
> + ldo16: ldo16 { /* SD */
> + regulator-name = "ldo16";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3000000>;
> + regulator-boot-on;
> + };
> +
> + ldo17: ldo17 { /* USB HUB */
> + regulator-name = "ldo17";
> + regulator-min-microvolt = <2500000>;
> + regulator-max-microvolt = <3300000>;
> + };
> +
> + ldo33: ldo33 { /* PEX8606 */
> + regulator-name = "ldo33";
> + regulator-min-microvolt = <2500000>;
> + regulator-max-microvolt = <3300000>;
> + };
> +
> + ldo34: ldo34 { /* GPS AUX IN VDD */
> + regulator-name = "ldo34";
> + regulator-min-microvolt = <2600000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + };
> + };
> + };
> +};



Thanks,
Mauro

2021-09-18 13:33:20

by Wei Xu

[permalink] [raw]
Subject: Re: [PATCH 1/2] arm64: dts: hisilicon: Add support for Hikey 970 PMIC

Hi Mauro,

On 2021/9/15 20:51, Mauro Carvalho Chehab wrote:
> Em Thu, 2 Sep 2021 13:55:23 +0200
> Mauro Carvalho Chehab <[email protected]> escreveu:
>
>> Add a device tree for the HiSilicon 6421v600 SPMI PMIC, used
>> on HiKey970 board.
>>
>> As we now have support for it, change the fixed regulators
>> used by the SD I/O to use the proper LDO supplies.
>
> Hi Wei,
>
> Gentile ping.
>
> Now that the drivers and the DT schema are already upstreamed, could
> you please merge those two patches?

Applied the patch 1 to the HiSilicon arm64 dt tree.
Thanks!

Best Regards,
Wei

>
> Thank you!
> Mauro
>
>>
>> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
>> ---
>> .../boot/dts/hisilicon/hi3670-hikey970.dts | 22 +----
>> arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 2 +-
>> .../boot/dts/hisilicon/hikey970-pmic.dtsi | 86 +++++++++++++++++++
>> 3 files changed, 90 insertions(+), 20 deletions(-)
>> create mode 100644 arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
>>
>> diff --git a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
>> index d8abf442ee7e..7c32f5fd5cc5 100644
>> --- a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
>> +++ b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
>> @@ -12,6 +12,7 @@
>>
>> #include "hi3670.dtsi"
>> #include "hikey970-pinctrl.dtsi"
>> +#include "hikey970-pmic.dtsi"
>>
>> / {
>> model = "HiKey970";
>> @@ -39,23 +40,6 @@ memory@0 {
>> reg = <0x0 0x0 0x0 0x0>;
>> };
>>
>> - sd_1v8: regulator-1v8 {
>> - compatible = "regulator-fixed";
>> - regulator-name = "fixed-1.8V";
>> - regulator-min-microvolt = <1800000>;
>> - regulator-max-microvolt = <1800000>;
>> - regulator-always-on;
>> - };
>> -
>> - sd_3v3: regulator-3v3 {
>> - compatible = "regulator-fixed";
>> - regulator-name = "fixed-3.3V";
>> - regulator-min-microvolt = <3300000>;
>> - regulator-max-microvolt = <3300000>;
>> - regulator-boot-on;
>> - regulator-always-on;
>> - };
>> -
>> wlan_en: wlan-en-1-8v {
>> compatible = "regulator-fixed";
>> regulator-name = "wlan-en-regulator";
>> @@ -402,8 +386,8 @@ &dwmmc1 {
>> pinctrl-0 = <&sd_pmx_func
>> &sd_clk_cfg_func
>> &sd_cfg_func>;
>> - vmmc-supply = <&sd_3v3>;
>> - vqmmc-supply = <&sd_1v8>;
>> + vmmc-supply = <&ldo16>;
>> + vqmmc-supply = <&ldo9>;
>> status = "okay";
>> };
>>
>> diff --git a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
>> index 20698cfd0637..636c8817df7e 100644
>> --- a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
>> +++ b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
>> @@ -669,7 +669,7 @@ ufs: ufs@ff3c0000 {
>> interrupt-parent = <&gic>;
>> interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&crg_ctrl HI3670_CLK_GATE_UFSIO_REF>,
>> - <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
>> + <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
>> clock-names = "ref_clk", "phy_clk";
>> freq-table-hz = <0 0
>> 0 0>;
>> diff --git a/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
>> new file mode 100644
>> index 000000000000..970047f2dabd
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
>> @@ -0,0 +1,86 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +/*
>> + * dts file for Hi6421v600 SPMI PMIC used at the HiKey970 Development Board
>> + *
>> + * Copyright (C) 2020, Huawei Tech. Co., Ltd.
>> + */
>> +
>> +#include <dt-bindings/spmi/spmi.h>
>> +
>> +/ {
>> + spmi: spmi@fff24000 {
>> + compatible = "hisilicon,kirin970-spmi-controller";
>> + #address-cells = <2>;
>> + #size-cells = <0>;
>> + status = "okay";
>> + reg = <0x0 0xfff24000 0x0 0x1000>;
>> + hisilicon,spmi-channel = <2>;
>> +
>> + pmic: pmic@0 {
>> + compatible = "hisilicon,hi6421-spmi";
>> + reg = <0 SPMI_USID>;
>> +
>> + #interrupt-cells = <2>;
>> + interrupt-controller;
>> + gpios = <&gpio28 0 0>;
>> +
>> + regulators {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + ldo3: ldo3 { /* HDMI */
>> + regulator-name = "ldo3";
>> + regulator-min-microvolt = <1500000>;
>> + regulator-max-microvolt = <2000000>;
>> + regulator-boot-on;
>> + };
>> +
>> + ldo4: ldo4 { /* 40 PIN */
>> + regulator-name = "ldo4";
>> + regulator-min-microvolt = <1725000>;
>> + regulator-max-microvolt = <1900000>;
>> + regulator-boot-on;
>> + };
>> +
>> + ldo9: ldo9 { /* SDCARD I/O */
>> + regulator-name = "ldo9";
>> + regulator-min-microvolt = <1750000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + };
>> +
>> + ldo15: ldo15 { /* UFS */
>> + regulator-name = "ldo15";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <3000000>;
>> + regulator-always-on;
>> + };
>> +
>> + ldo16: ldo16 { /* SD */
>> + regulator-name = "ldo16";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <3000000>;
>> + regulator-boot-on;
>> + };
>> +
>> + ldo17: ldo17 { /* USB HUB */
>> + regulator-name = "ldo17";
>> + regulator-min-microvolt = <2500000>;
>> + regulator-max-microvolt = <3300000>;
>> + };
>> +
>> + ldo33: ldo33 { /* PEX8606 */
>> + regulator-name = "ldo33";
>> + regulator-min-microvolt = <2500000>;
>> + regulator-max-microvolt = <3300000>;
>> + };
>> +
>> + ldo34: ldo34 { /* GPS AUX IN VDD */
>> + regulator-name = "ldo34";
>> + regulator-min-microvolt = <2600000>;
>> + regulator-max-microvolt = <3300000>;
>> + };
>> + };
>> + };
>> + };
>> +};
>
>
>
> Thanks,
> Mauro
> .
>

2021-09-18 15:48:06

by Wei Xu

[permalink] [raw]
Subject: Re: [PATCH 2/2] arm64: dts: hisilicon: Add support for Hikey 970 USB3 PHY

Hi Mauro,

On 2021/9/2 19:55, Mauro Carvalho Chehab wrote:
> Add the USB3 bindings for Kirin 970 phy and Hikey 970 board.
>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> ---
> .../boot/dts/hisilicon/hi3670-hikey970.dts | 83 +++++++++++++++++++
> arch/arm64/boot/dts/hisilicon/hi3670.dtsi | 56 +++++++++++++
> 2 files changed, 139 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
> index 7c32f5fd5cc5..60594db07041 100644
> --- a/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
> +++ b/arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
> @@ -430,3 +430,86 @@ &uart6 {
> label = "LS-UART1";
> status = "okay";
> };
> +
> +&usb_phy {
> + phy-supply = <&ldo17>;
> +};
> +
> +&i2c1 {
> + status = "okay";
> +
> + rt1711h: rt1711h@4e {
> + compatible = "richtek,rt1711h";
> + reg = <0x4e>;
> + status = "okay";
> + interrupt-parent = <&gpio27>;
> + interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&usb_cfg_func>;
> +
> + usb_con: connector {
> + compatible = "usb-c-connector";
> + label = "USB-C";
> + data-role = "dual";
> + power-role = "dual";
> + try-power-role = "sink";
> + source-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)>;
> + sink-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)
> + PDO_VAR(5000, 5000, 1000)>;
> + op-sink-microwatt = <10000000>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + port@1 {
> + reg = <1>;
> + usb_con_ss: endpoint {
> + remote-endpoint = <&dwc3_ss>;
> + };
> + };
> + };
> + };
> + port {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + rt1711h_ep: endpoint@0 {
> + reg = <0>;
> + remote-endpoint = <&hikey_usb_ep1>;

The 'hikey_usb_ep1' is not defined yet.

> + };
> + };
> + };
> +};
> +
> +&i2c2 {
> + /* USB HUB is on this bus at address 0x44 */
> + status = "okay";
> +};
> +
> +&dwc3 { /* USB */
> + dr_mode = "otg";
> + maximum-speed = "super-speed";
> + phy_type = "utmi";
> + snps,dis-del-phy-power-chg-quirk;
> + snps,dis_u2_susphy_quirk;
> + snps,dis_u3_susphy_quirk;
> + snps,tx_de_emphasis_quirk;
> + snps,tx_de_emphasis = <1>;
> + snps,dis-split-quirk;
> + snps,gctl-reset-quirk;
> + usb-role-switch;
> + role-switch-default-mode = "host";
> + port {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + dwc3_role_switch: endpoint@0 {
> + reg = <0>;
> + remote-endpoint = <&hikey_usb_ep0>;

Ditto. The 'hikey_usb_ep0' is not defined yet.

> + };
> +
> + dwc3_ss: endpoint@1 {
> + reg = <1>;
> + remote-endpoint = <&usb_con_ss>;
> + };
> + };
> +};
> diff --git a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
> index 636c8817df7e..782e1487666d 100644
> --- a/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
> +++ b/arch/arm64/boot/dts/hisilicon/hi3670.dtsi
> @@ -8,6 +8,7 @@
>
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/clock/hi3670-clock.h>
> +#include <dt-bindings/usb/pd.h>
>
> / {
> compatible = "hisilicon,hi3670";
> @@ -785,5 +786,60 @@ i2c4: i2c@fdf0d000 {
> pinctrl-0 = <&i2c4_pmx_func &i2c4_cfg_func>;
> status = "disabled";
> };
> +
> + usb3_otg_bc: usb3_otg_bc@ff200000 {
> + compatible = "syscon", "simple-mfd";
> + reg = <0x0 0xff200000 0x0 0x1000>;
> +
> + usb_phy: usbphy {
> + compatible = "hisilicon,hi3670-usb-phy";
> + #phy-cells = <0>;
> + hisilicon,pericrg-syscon = <&crg_ctrl>;
> + hisilicon,pctrl-syscon = <&pctrl>;
> + hisilicon,sctrl-syscon = <&sctrl>;
> + hisilicon,eye-diagram-param = <0xFDFEE4>;
> + hisilicon,tx-vboost-lvl = <0x5>;
> + };
> + };
> +
> + usb31_misc_rst: usb31_misc_rst_controller {
> + compatible = "hisilicon,hi3660-reset";
> + #reset-cells = <2>;
> + hisi,rst-syscon = <&usb3_otg_bc>;
> + };
> +
> + usb3: hisi_dwc3 {
> + compatible = "hisilicon,hi3670-dwc3";

Is it OK to add the 'hi3670-dwc3' into the devicetree binding document?
Thanks!

Best Regards,
Wei

> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + clocks = <&crg_ctrl HI3670_CLK_GATE_ABB_USB>,
> + <&crg_ctrl HI3670_HCLK_GATE_USB3OTG>,
> + <&crg_ctrl HI3670_CLK_GATE_USB3OTG_REF>,
> + <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>;
> + clock-names = "clk_gate_abb_usb",
> + "hclk_gate_usb3otg",
> + "clk_gate_usb3otg_ref",
> + "aclk_gate_usb3dvfs";
> +
> + assigned-clocks = <&crg_ctrl HI3670_ACLK_GATE_USB3DVFS>;
> + assigned-clock-rates = <238000000>;
> + resets = <&crg_rst 0x90 6>,
> + <&crg_rst 0x90 7>,
> + <&usb31_misc_rst 0xA0 8>,
> + <&usb31_misc_rst 0xA0 9>;
> +
> + dwc3: usb@ff100000 {
> + compatible = "snps,dwc3";
> + reg = <0x0 0xff100000 0x0 0x100000>;
> +
> + interrupts = <0 159 IRQ_TYPE_LEVEL_HIGH>,
> + <0 161 IRQ_TYPE_LEVEL_HIGH>;
> +
> + phys = <&usb_phy>;
> + phy-names = "usb3-phy";
> + };
> + };
> };
> };
>