Add support for this smartwatch, based on Snapdragon 400 SoC.
Currently supported functionality:
* Internal storage
* USB
* Charger
* Power button
* Bluetooth
* Wifi
Signed-off-by: Luca Weiss <[email protected]>
---
arch/arm/boot/dts/Makefile | 1 +
.../boot/dts/qcom-apq8026-huawei-sturgeon.dts | 343 ++++++++++++++++++
2 files changed, 344 insertions(+)
create mode 100644 arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 3bc6bd5c8238..55087f16d718 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1026,6 +1026,7 @@ dtb-$(CONFIG_ARCH_OXNAS) += \
dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8016-sbc.dtb \
qcom-apq8026-asus-sparrow.dtb \
+ qcom-apq8026-huawei-sturgeon.dtb \
qcom-apq8026-lg-lenok.dtb \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-cm-qs600.dtb \
diff --git a/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts b/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
new file mode 100644
index 000000000000..e43fcef7144c
--- /dev/null
+++ b/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
@@ -0,0 +1,343 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2022, Luca Weiss <[email protected]>
+ */
+
+/dts-v1/;
+
+#include "qcom-msm8226.dtsi"
+#include "qcom-pm8226.dtsi"
+
+/delete-node/ &adsp_region;
+
+/ {
+ model = "Huawei Watch";
+ compatible = "huawei,sturgeon", "qcom,apq8026";
+ chassis-type = "watch";
+ qcom,msm-id = <199 0x20000>;
+ qcom,board-id = <8 4>;
+
+ reserved-memory {
+ sbl_region: sbl@2f00000 {
+ reg = <0x02f00000 0x100000>;
+ no-map;
+ };
+ external_image_region: external-image@3100000 {
+ reg = <0x3100000 0x200000>;
+ no-map;
+ };
+ peripheral_region: peripheral@3300000 {
+ reg = <0x3300000 0x600000>;
+ no-map;
+ };
+ adsp_region: adsp@3900000 {
+ reg = <0x3900000 0x1400000>;
+ no-map;
+ };
+ modem_region: modem@4d00000 {
+ reg = <0x4d00000 0x1b00000>;
+ no-map;
+ };
+ modem_efs_region: modem-efs@7f00000 {
+ reg = <0x7f00000 0x100000>;
+ no-map;
+ };
+ };
+
+ vreg_wlan: wlan-regulator {
+ compatible = "regulator-fixed";
+
+ regulator-name = "wl-reg";
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+
+ gpio = <&tlmm 110 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wlan_regulator_default_state>;
+ };
+};
+
+&adsp {
+ status = "okay";
+};
+
+&blsp1_i2c5 {
+ status = "okay";
+ clock-frequency = <384000>;
+
+ touchscreen@20 {
+ compatible = "syna,rmi4-i2c";
+ reg = <0x20>;
+
+ interrupts-extended = <&tlmm 17 IRQ_TYPE_EDGE_FALLING>;
+ vdd-supply = <&pm8226_l19>;
+ vio-supply = <&pm8226_lvs1>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&touch_default_state>;
+
+ syna,startup-delay-ms = <160>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rmi4-f01@1 {
+ reg = <0x1>;
+ syna,nosleep-mode = <1>;
+ };
+
+ rmi4-f12@12 {
+ reg = <0x12>;
+ syna,sensor-type = <1>;
+ };
+ };
+};
+
+&blsp1_uart4 {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&blsp1_uart4_default_state>;
+
+ bluetooth {
+ compatible = "brcm,bcm43430a0-bt";
+ max-speed = <3000000>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&bluetooth_default_state>;
+
+ host-wakeup-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
+ device-wakeup-gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>;
+ shutdown-gpios = <&tlmm 67 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&rpm_requests {
+ pm8226-regulators {
+ compatible = "qcom,rpm-pm8226-regulators";
+
+ pm8226_s3: s3 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ };
+ pm8226_s4: s4 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2200000>;
+ };
+ pm8226_s5: s5 {
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+ };
+
+ pm8226_l1: l1 {
+ regulator-min-microvolt = <1225000>;
+ regulator-max-microvolt = <1225000>;
+ };
+ pm8226_l2: l2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+ pm8226_l3: l3 {
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <1337500>;
+ };
+ pm8226_l4: l4 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+ pm8226_l5: l5 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+ pm8226_l6: l6 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ pm8226_l7: l7 {
+ regulator-min-microvolt = <1850000>;
+ regulator-max-microvolt = <1850000>;
+ };
+ pm8226_l8: l8 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ pm8226_l9: l9 {
+ regulator-min-microvolt = <2050000>;
+ regulator-max-microvolt = <2050000>;
+ };
+ pm8226_l10: l10 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ pm8226_l12: l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ pm8226_l14: l14 {
+ regulator-min-microvolt = <2750000>;
+ regulator-max-microvolt = <2750000>;
+ };
+ pm8226_l15: l15 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ };
+ pm8226_l16: l16 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3350000>;
+ };
+ pm8226_l17: l17 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ };
+ pm8226_l18: l18 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ };
+ pm8226_l19: l19 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ };
+ pm8226_l20: l20 {
+ regulator-min-microvolt = <3075000>;
+ regulator-max-microvolt = <3075000>;
+ };
+ pm8226_l21: l21 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+ pm8226_l22: l22 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+ pm8226_l23: l23 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+ pm8226_l24: l24 {
+ regulator-min-microvolt = <1300000>;
+ regulator-max-microvolt = <1350000>;
+ };
+ pm8226_l25: l25 {
+ regulator-min-microvolt = <1775000>;
+ regulator-max-microvolt = <2125000>;
+ };
+ pm8226_l26: l26 {
+ regulator-min-microvolt = <1225000>;
+ regulator-max-microvolt = <1225000>;
+ };
+ pm8226_l27: l27 {
+ regulator-min-microvolt = <2050000>;
+ regulator-max-microvolt = <2050000>;
+ };
+ pm8226_l28: l28 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+
+ pm8226_lvs1: lvs1 {};
+ };
+};
+
+&sdhc_1 {
+ status = "okay";
+
+ vmmc-supply = <&pm8226_l17>;
+ vqmmc-supply = <&pm8226_l6>;
+
+ bus-width = <8>;
+ non-removable;
+};
+
+&sdhc_3 {
+ status = "okay";
+
+ max-frequency = <100000000>;
+ non-removable;
+
+ vmmc-supply = <&vreg_wlan>;
+ vqmmc-supply = <&pm8226_l6>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ wifi@1 {
+ compatible = "brcm,bcm43430a0-fmac", "brcm,bcm4329-fmac";
+ reg = <1>;
+
+ interrupts-extended = <&tlmm 66 IRQ_TYPE_EDGE_FALLING>;
+ interrupt-names = "host-wake";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wlan_hostwake_default_state>;
+ };
+};
+
+&smbb {
+ qcom,fast-charge-safe-voltage = <4370000>;
+ qcom,fast-charge-high-threshold-voltage = <4350000>;
+ qcom,minimum-input-voltage = <4350000>;
+ qcom,fast-charge-current-limit = <300000>;
+ qcom,fast-charge-safe-current = <600000>;
+ qcom,auto-recharge-threshold-voltage = <4240000>;
+};
+
+&tlmm {
+ blsp1_uart4_default_state: blsp1-uart4-default-state {
+ pins = "gpio12", "gpio13", "gpio14", "gpio15";
+ function = "blsp_uart4";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ bluetooth_default_state: bluetooth-default-state {
+ pins = "gpio63", "gpio64";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ touch_default_state: touch-default-state {
+ irq {
+ pins = "gpio17";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ reset {
+ pins = "gpio16";
+ function = "gpio";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+ };
+
+ wlan_hostwake_default_state: wlan-hostwake-default-state {
+ pins = "gpio66";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ input-enable;
+ };
+
+ wlan_regulator_default_state: wlan-regulator-default-state {
+ pins = "gpio110";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+};
+
+&usb {
+ status = "okay";
+ extcon = <&smbb>;
+ dr_mode = "peripheral";
+};
+
+&usb_hs_phy {
+ extcon = <&smbb>;
+ v1p8-supply = <&pm8226_l10>;
+ v3p3-supply = <&pm8226_l20>;
+};
--
2.37.3
On 17.09.2022 17:28, Luca Weiss wrote:
> Add support for this smartwatch, based on Snapdragon 400 SoC.
>
> Currently supported functionality:
> * Internal storage
> * USB
> * Charger
> * Power button
> * Bluetooth
> * Wifi
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
> arch/arm/boot/dts/Makefile | 1 +
> .../boot/dts/qcom-apq8026-huawei-sturgeon.dts | 343 ++++++++++++++++++
> 2 files changed, 344 insertions(+)
> create mode 100644 arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 3bc6bd5c8238..55087f16d718 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -1026,6 +1026,7 @@ dtb-$(CONFIG_ARCH_OXNAS) += \
> dtb-$(CONFIG_ARCH_QCOM) += \
> qcom-apq8016-sbc.dtb \
> qcom-apq8026-asus-sparrow.dtb \
> + qcom-apq8026-huawei-sturgeon.dtb \
> qcom-apq8026-lg-lenok.dtb \
> qcom-apq8060-dragonboard.dtb \
> qcom-apq8064-cm-qs600.dtb \
> diff --git a/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts b/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
> new file mode 100644
> index 000000000000..e43fcef7144c
> --- /dev/null
> +++ b/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
> @@ -0,0 +1,343 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2022, Luca Weiss <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "qcom-msm8226.dtsi"
> +#include "qcom-pm8226.dtsi"
> +
> +/delete-node/ &adsp_region;
> +
> +/ {
> + model = "Huawei Watch";
> + compatible = "huawei,sturgeon", "qcom,apq8026";
> + chassis-type = "watch";
> + qcom,msm-id = <199 0x20000>;
> + qcom,board-id = <8 4>;
> +
> + reserved-memory {
> + sbl_region: sbl@2f00000 {
> + reg = <0x02f00000 0x100000>;
> + no-map;
> + };
Please add newlines after each }; here and in pm*-regulators and
make the status property last on referenced nodes. Otherwise LGTM.
Konrad
> + external_image_region: external-image@3100000 {
> + reg = <0x3100000 0x200000>;
> + no-map;
> + };
> + peripheral_region: peripheral@3300000 {
> + reg = <0x3300000 0x600000>;
> + no-map;
> + };
> + adsp_region: adsp@3900000 {
> + reg = <0x3900000 0x1400000>;
> + no-map;
> + };
> + modem_region: modem@4d00000 {
> + reg = <0x4d00000 0x1b00000>;
> + no-map;
> + };
> + modem_efs_region: modem-efs@7f00000 {
> + reg = <0x7f00000 0x100000>;
> + no-map;
> + };
> + };
> +
> + vreg_wlan: wlan-regulator {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "wl-reg";
> + regulator-min-microvolt = <2950000>;
> + regulator-max-microvolt = <2950000>;
> +
> + gpio = <&tlmm 110 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wlan_regulator_default_state>;
> + };
> +};
> +
> +&adsp {
> + status = "okay";
> +};
> +
> +&blsp1_i2c5 {
> + status = "okay";
> + clock-frequency = <384000>;
> +
> + touchscreen@20 {
> + compatible = "syna,rmi4-i2c";
> + reg = <0x20>;
> +
> + interrupts-extended = <&tlmm 17 IRQ_TYPE_EDGE_FALLING>;
> + vdd-supply = <&pm8226_l19>;
> + vio-supply = <&pm8226_lvs1>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&touch_default_state>;
> +
> + syna,startup-delay-ms = <160>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + rmi4-f01@1 {
> + reg = <0x1>;
> + syna,nosleep-mode = <1>;
> + };
> +
> + rmi4-f12@12 {
> + reg = <0x12>;
> + syna,sensor-type = <1>;
> + };
> + };
> +};
> +
> +&blsp1_uart4 {
> + status = "okay";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&blsp1_uart4_default_state>;
> +
> + bluetooth {
> + compatible = "brcm,bcm43430a0-bt";
> + max-speed = <3000000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&bluetooth_default_state>;
> +
> + host-wakeup-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
> + device-wakeup-gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>;
> + shutdown-gpios = <&tlmm 67 GPIO_ACTIVE_HIGH>;
> + };
> +};
> +
> +&rpm_requests {
> + pm8226-regulators {
> + compatible = "qcom,rpm-pm8226-regulators";
> +
> + pm8226_s3: s3 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1300000>;
> + };
> + pm8226_s4: s4 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2200000>;
> + };
> + pm8226_s5: s5 {
> + regulator-min-microvolt = <1150000>;
> + regulator-max-microvolt = <1150000>;
> + };
> +
> + pm8226_l1: l1 {
> + regulator-min-microvolt = <1225000>;
> + regulator-max-microvolt = <1225000>;
> + };
> + pm8226_l2: l2 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + };
> + pm8226_l3: l3 {
> + regulator-min-microvolt = <750000>;
> + regulator-max-microvolt = <1337500>;
> + };
> + pm8226_l4: l4 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + };
> + pm8226_l5: l5 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + };
> + pm8226_l6: l6 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l7: l7 {
> + regulator-min-microvolt = <1850000>;
> + regulator-max-microvolt = <1850000>;
> + };
> + pm8226_l8: l8 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l9: l9 {
> + regulator-min-microvolt = <2050000>;
> + regulator-max-microvolt = <2050000>;
> + };
> + pm8226_l10: l10 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l12: l12 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l14: l14 {
> + regulator-min-microvolt = <2750000>;
> + regulator-max-microvolt = <2750000>;
> + };
> + pm8226_l15: l15 {
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + };
> + pm8226_l16: l16 {
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3350000>;
> + };
> + pm8226_l17: l17 {
> + regulator-min-microvolt = <2950000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l18: l18 {
> + regulator-min-microvolt = <2950000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l19: l19 {
> + regulator-min-microvolt = <2850000>;
> + regulator-max-microvolt = <2850000>;
> + };
> + pm8226_l20: l20 {
> + regulator-min-microvolt = <3075000>;
> + regulator-max-microvolt = <3075000>;
> + };
> + pm8226_l21: l21 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l22: l22 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l23: l23 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l24: l24 {
> + regulator-min-microvolt = <1300000>;
> + regulator-max-microvolt = <1350000>;
> + };
> + pm8226_l25: l25 {
> + regulator-min-microvolt = <1775000>;
> + regulator-max-microvolt = <2125000>;
> + };
> + pm8226_l26: l26 {
> + regulator-min-microvolt = <1225000>;
> + regulator-max-microvolt = <1225000>;
> + };
> + pm8226_l27: l27 {
> + regulator-min-microvolt = <2050000>;
> + regulator-max-microvolt = <2050000>;
> + };
> + pm8226_l28: l28 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> +
> + pm8226_lvs1: lvs1 {};
> + };
> +};
> +
> +&sdhc_1 {
> + status = "okay";
> +
> + vmmc-supply = <&pm8226_l17>;
> + vqmmc-supply = <&pm8226_l6>;
> +
> + bus-width = <8>;
> + non-removable;
> +};
> +
> +&sdhc_3 {
> + status = "okay";
> +
> + max-frequency = <100000000>;
> + non-removable;
> +
> + vmmc-supply = <&vreg_wlan>;
> + vqmmc-supply = <&pm8226_l6>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + wifi@1 {
> + compatible = "brcm,bcm43430a0-fmac", "brcm,bcm4329-fmac";
> + reg = <1>;
> +
> + interrupts-extended = <&tlmm 66 IRQ_TYPE_EDGE_FALLING>;
> + interrupt-names = "host-wake";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wlan_hostwake_default_state>;
> + };
> +};
> +
> +&smbb {
> + qcom,fast-charge-safe-voltage = <4370000>;
> + qcom,fast-charge-high-threshold-voltage = <4350000>;
> + qcom,minimum-input-voltage = <4350000>;
> + qcom,fast-charge-current-limit = <300000>;
> + qcom,fast-charge-safe-current = <600000>;
> + qcom,auto-recharge-threshold-voltage = <4240000>;
> +};
> +
> +&tlmm {
> + blsp1_uart4_default_state: blsp1-uart4-default-state {
> + pins = "gpio12", "gpio13", "gpio14", "gpio15";
> + function = "blsp_uart4";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + bluetooth_default_state: bluetooth-default-state {
> + pins = "gpio63", "gpio64";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + touch_default_state: touch-default-state {
> + irq {
> + pins = "gpio17";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-pull-up;
> + };
> +
> + reset {
> + pins = "gpio16";
> + function = "gpio";
> + drive-strength = <6>;
> + bias-pull-up;
> + };
> + };
> +
> + wlan_hostwake_default_state: wlan-hostwake-default-state {
> + pins = "gpio66";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + input-enable;
> + };
> +
> + wlan_regulator_default_state: wlan-regulator-default-state {
> + pins = "gpio110";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +};
> +
> +&usb {
> + status = "okay";
> + extcon = <&smbb>;
> + dr_mode = "peripheral";
> +};
> +
> +&usb_hs_phy {
> + extcon = <&smbb>;
> + v1p8-supply = <&pm8226_l10>;
> + v3p3-supply = <&pm8226_l20>;
> +};
On 17/09/2022 16:28, Luca Weiss wrote:
> Add support for this smartwatch, based on Snapdragon 400 SoC.
>
> Currently supported functionality:
Thank you for your patch. There is something to discuss/improve.
> * Internal storage
> * USB
> * Charger
> * Power button
> * Bluetooth
> * Wifi
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
> arch/arm/boot/dts/Makefile | 1 +
> .../boot/dts/qcom-apq8026-huawei-sturgeon.dts | 343 ++++++++++++++++++
> 2 files changed, 344 insertions(+)
> create mode 100644 arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 3bc6bd5c8238..55087f16d718 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -1026,6 +1026,7 @@ dtb-$(CONFIG_ARCH_OXNAS) += \
> dtb-$(CONFIG_ARCH_QCOM) += \
> qcom-apq8016-sbc.dtb \
> qcom-apq8026-asus-sparrow.dtb \
> + qcom-apq8026-huawei-sturgeon.dtb \
> qcom-apq8026-lg-lenok.dtb \
> qcom-apq8060-dragonboard.dtb \
> qcom-apq8064-cm-qs600.dtb \
> diff --git a/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts b/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
> new file mode 100644
> index 000000000000..e43fcef7144c
> --- /dev/null
> +++ b/arch/arm/boot/dts/qcom-apq8026-huawei-sturgeon.dts
> @@ -0,0 +1,343 @@
> +// SPDX-License-Identifier: BSD-3-Clause
No GPL at all?
> +/*
> + * Copyright (c) 2022, Luca Weiss <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "qcom-msm8226.dtsi"
> +#include "qcom-pm8226.dtsi"
> +
> +/delete-node/ &adsp_region;
> +
> +/ {
> + model = "Huawei Watch";
> + compatible = "huawei,sturgeon", "qcom,apq8026";
> + chassis-type = "watch";
> + qcom,msm-id = <199 0x20000>;
> + qcom,board-id = <8 4>;
> +
> + reserved-memory {
> + sbl_region: sbl@2f00000 {
> + reg = <0x02f00000 0x100000>;
> + no-map;
> + };
> + external_image_region: external-image@3100000 {
> + reg = <0x3100000 0x200000>;
> + no-map;
> + };
> + peripheral_region: peripheral@3300000 {
> + reg = <0x3300000 0x600000>;
> + no-map;
> + };
> + adsp_region: adsp@3900000 {
> + reg = <0x3900000 0x1400000>;
> + no-map;
> + };
> + modem_region: modem@4d00000 {
> + reg = <0x4d00000 0x1b00000>;
> + no-map;
> + };
> + modem_efs_region: modem-efs@7f00000 {
> + reg = <0x7f00000 0x100000>;
> + no-map;
> + };
> + };
> +
> + vreg_wlan: wlan-regulator {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "wl-reg";
> + regulator-min-microvolt = <2950000>;
> + regulator-max-microvolt = <2950000>;
> +
> + gpio = <&tlmm 110 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wlan_regulator_default_state>;
> + };
> +};
> +
> +&adsp {
> + status = "okay";
> +};
> +
> +&blsp1_i2c5 {
> + status = "okay";
> + clock-frequency = <384000>;
> +
> + touchscreen@20 {
> + compatible = "syna,rmi4-i2c";
> + reg = <0x20>;
> +
> + interrupts-extended = <&tlmm 17 IRQ_TYPE_EDGE_FALLING>;
> + vdd-supply = <&pm8226_l19>;
> + vio-supply = <&pm8226_lvs1>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&touch_default_state>;
> +
> + syna,startup-delay-ms = <160>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + rmi4-f01@1 {
> + reg = <0x1>;
> + syna,nosleep-mode = <1>;
> + };
> +
> + rmi4-f12@12 {
> + reg = <0x12>;
> + syna,sensor-type = <1>;
> + };
> + };
> +};
> +
> +&blsp1_uart4 {
> + status = "okay";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&blsp1_uart4_default_state>;
> +
> + bluetooth {
> + compatible = "brcm,bcm43430a0-bt";
> + max-speed = <3000000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&bluetooth_default_state>;
> +
> + host-wakeup-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
> + device-wakeup-gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>;
> + shutdown-gpios = <&tlmm 67 GPIO_ACTIVE_HIGH>;
> + };
> +};
> +
> +&rpm_requests {
> + pm8226-regulators {
This should be just regulators:
https://lore.kernel.org/all/[email protected]/
Not yet merged but old node is also not documented.
> + compatible = "qcom,rpm-pm8226-regulators";
> +
> + pm8226_s3: s3 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1300000>;
> + };
> + pm8226_s4: s4 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2200000>;
> + };
> + pm8226_s5: s5 {
> + regulator-min-microvolt = <1150000>;
> + regulator-max-microvolt = <1150000>;
> + };
> +
> + pm8226_l1: l1 {
> + regulator-min-microvolt = <1225000>;
> + regulator-max-microvolt = <1225000>;
> + };
> + pm8226_l2: l2 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + };
> + pm8226_l3: l3 {
> + regulator-min-microvolt = <750000>;
> + regulator-max-microvolt = <1337500>;
> + };
> + pm8226_l4: l4 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + };
> + pm8226_l5: l5 {
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + };
> + pm8226_l6: l6 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l7: l7 {
> + regulator-min-microvolt = <1850000>;
> + regulator-max-microvolt = <1850000>;
> + };
> + pm8226_l8: l8 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l9: l9 {
> + regulator-min-microvolt = <2050000>;
> + regulator-max-microvolt = <2050000>;
> + };
> + pm8226_l10: l10 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l12: l12 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + pm8226_l14: l14 {
> + regulator-min-microvolt = <2750000>;
> + regulator-max-microvolt = <2750000>;
> + };
> + pm8226_l15: l15 {
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + };
> + pm8226_l16: l16 {
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3350000>;
> + };
> + pm8226_l17: l17 {
> + regulator-min-microvolt = <2950000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l18: l18 {
> + regulator-min-microvolt = <2950000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l19: l19 {
> + regulator-min-microvolt = <2850000>;
> + regulator-max-microvolt = <2850000>;
> + };
> + pm8226_l20: l20 {
> + regulator-min-microvolt = <3075000>;
> + regulator-max-microvolt = <3075000>;
> + };
> + pm8226_l21: l21 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l22: l22 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l23: l23 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> + pm8226_l24: l24 {
> + regulator-min-microvolt = <1300000>;
> + regulator-max-microvolt = <1350000>;
> + };
> + pm8226_l25: l25 {
> + regulator-min-microvolt = <1775000>;
> + regulator-max-microvolt = <2125000>;
> + };
> + pm8226_l26: l26 {
> + regulator-min-microvolt = <1225000>;
> + regulator-max-microvolt = <1225000>;
> + };
> + pm8226_l27: l27 {
> + regulator-min-microvolt = <2050000>;
> + regulator-max-microvolt = <2050000>;
> + };
> + pm8226_l28: l28 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + };
> +
> + pm8226_lvs1: lvs1 {};
> + };
> +};
> +
> +&sdhc_1 {
> + status = "okay";
> +
> + vmmc-supply = <&pm8226_l17>;
> + vqmmc-supply = <&pm8226_l6>;
> +
> + bus-width = <8>;
> + non-removable;
> +};
> +
> +&sdhc_3 {
> + status = "okay";
> +
> + max-frequency = <100000000>;
> + non-removable;
> +
> + vmmc-supply = <&vreg_wlan>;
> + vqmmc-supply = <&pm8226_l6>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + wifi@1 {
> + compatible = "brcm,bcm43430a0-fmac", "brcm,bcm4329-fmac";
> + reg = <1>;
> +
> + interrupts-extended = <&tlmm 66 IRQ_TYPE_EDGE_FALLING>;
> + interrupt-names = "host-wake";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wlan_hostwake_default_state>;
> + };
> +};
> +
> +&smbb {
> + qcom,fast-charge-safe-voltage = <4370000>;
> + qcom,fast-charge-high-threshold-voltage = <4350000>;
> + qcom,minimum-input-voltage = <4350000>;
> + qcom,fast-charge-current-limit = <300000>;
> + qcom,fast-charge-safe-current = <600000>;
> + qcom,auto-recharge-threshold-voltage = <4240000>;
> +};
> +
> +&tlmm {
> + blsp1_uart4_default_state: blsp1-uart4-default-state {
> + pins = "gpio12", "gpio13", "gpio14", "gpio15";
> + function = "blsp_uart4";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + bluetooth_default_state: bluetooth-default-state {
> + pins = "gpio63", "gpio64";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + touch_default_state: touch-default-state {
> + irq {
Suffix: -pins
> + pins = "gpio17";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-pull-up;
> + };
> +
> + reset {
Ditto
> + pins = "gpio16";
> + function = "gpio";
> + drive-strength = <6>;
> + bias-pull-up;
> + };
> + };
> +
> + wlan_hostwake_default_state: wlan-hostwake-default-state {
> + pins = "gpio66";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + input-enable;
> + };
> +
> + wlan_regulator_default_state: wlan-regulator-default-state {
> + pins = "gpio110";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +};
Best regards,
Krzysztof