This thread contains a patchset. You're looking at the original emails,
but you may wish to use the patch review UI.
Review patch
7
3
[PATCH v2 0/3] Introduce msm8916/39 based Lenovo devices
Continuing the work of upstreaming the various msm8916 devices from the
backlog, this series introduces few 8916 and 8939 Lenovo/Wingtech
devices (where Wingtech is the ODM for these designs).
Included devices are:
- Lenovo A6000 (Wingtech WT86518)
- Lenovo A6010 (Wingtech WT86528)
- Lenovo Vibe K5 (Wingtech WT82918)
- Lenovo Vibe K5 (HD) (Wingtech WT82918hd)
Note that "HD" variant of K5 is based on msm8929 which is a lower bin
of msm8939 SoC. A simple dtsi is added for this soc along with the new
devices.
Signed-off-by: Nikita Travkin <nikita@trvn.ru >
---
Changes in v2:
- Reorder pinctrl properties (Konrad)
- Convert msm8929.dtsi to be more in line with other soc dtsi (Krzysztof, Dmitry)
- Link to v1: https://lore.kernel.org/r/20240712-msm89xx-wingtech-init-v1-0-64f4aa1870bd@trvn.ru
---
Adam Słaboń (1):
arm64: dts: qcom: msm8939-wingtech-wt82918: Add Lenovo Vibe K5 devices
Anton Bambura (1):
arm64: dts: qcom: msm8916-wingtech-wt865x8: Add Lenovo A6000/A6010
Nikita Travkin (1):
dt-bindings: arm: qcom: Add msm8916/39 based Lenovo devices
Documentation/devicetree/bindings/arm/qcom.yaml | 9 +
arch/arm64/boot/dts/qcom/Makefile | 5 +
.../boot/dts/qcom/msm8916-wingtech-wt86518.dts | 89 ++++++++
.../boot/dts/qcom/msm8916-wingtech-wt86528.dts | 160 +++++++++++++
.../boot/dts/qcom/msm8916-wingtech-wt865x8.dtsi | 215 ++++++++++++++++++
arch/arm64/boot/dts/qcom/msm8929-pm8916.dtsi | 162 +++++++++++++
.../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts | 17 ++
arch/arm64/boot/dts/qcom/msm8929.dtsi | 7 +
.../boot/dts/qcom/msm8939-wingtech-wt82918.dts | 17 ++
.../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi | 252 +++++++++++++++++++++
.../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts | 17 ++
11 files changed, 950 insertions(+)
---
base-commit: dee7f101b64219f512bb2f842227bd04c14efe30
change-id: 20240710-msm89xx-wingtech-init-e07095e2b2ec
Best regards,
--
Nikita Travkin <nikita@trvn.ru >
[PATCH v2 2/3] arm64: dts: qcom: msm8916-wingtech-wt865x8: Add Lenovo A6000/A6010
From: Anton Bambura <jenneron@postmarketos.org>
Add initial device-tree for Lenovo A6000 (wt86518) and Lenovo A6010
(wt86528), which are MSM8916-based devices. These devices are quite
similar, so some configuration is shared in msm8916-wingtech-wt865x8.dtsi.
Lenovo A6000 (wt86518):
- storage (eMMC and uSD card);
- usb in peripheral mode;
- touchscreen;
- sensors;
- WiFi/BT;
- keys;
- battery and charger.
Lenovo A6010 (wt86528):
- storage (eMMC and uSD card);
- usb with extcon;
- touchscreen;
- sensors;
- WiFi/BT;
- keys;
- leds;
- battery;
Signed-off-by: Anton Bambura <jenneron@postmarketos.org>
Co-developed-by: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
[Nikita: minor cleanup]
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
---
arch/arm64/boot/dts/qcom/Makefile | 2 +
.../boot/dts/qcom/msm8916-wingtech-wt86518.dts | 89 +++++++++
.../boot/dts/qcom/msm8916-wingtech-wt86528.dts | 160 +++++++++++++++
.../boot/dts/qcom/msm8916-wingtech-wt865x8.dtsi | 215 +++++++++++++++++++++
4 files changed, 466 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 0e5c810304fb..fd4c7c41ddc4 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -54,6 +54,8 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-rossa.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-serranove.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-thwc-uf896.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-thwc-ufi001c.dtb
+ dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86518.dtb
+ dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86528.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801v3.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8939-huawei-kiwi.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt86518.dts b/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt86518.dts
new file mode 100644
index 000000000000..4848432d3fdd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt86518.dts
@@ -0,0 +1,89 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ /dts-v1/;
+
+ #include "msm8916-wingtech-wt865x8.dtsi"
+
+ / {
+ model = "Lenovo A6000 (Wingtech WT86518)";
+ compatible = "wingtech,wt86518", "qcom,msm8916";
+ chassis-type = "handset";
+
+ speaker_amp: audio-amplifier {
+ compatible = "awinic,aw8738";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&spk_ext_pa_default>;
+
+ mode-gpios = <&tlmm 119 GPIO_ACTIVE_HIGH>;
+ sound-name-prefix = "Speaker Amp";
+ awinic,mode = <1>;
+ };
+ };
+
+ &blsp_i2c2 {
+ accelerometer@e {
+ compatible = "kionix,kxcj91008";
+ reg = <0xe>;
+
+ vdd-supply = <&pm8916_l6>;
+ vddio-supply = <&pm8916_l6>;
+
+ mount-matrix = "0", "-1", "0",
+ "-1", "0", "0",
+ "0", "0", "1";
+ };
+ };
+
+ &headphones_switch {
+ VCC-supply = <&pm8916_l17>;
+ };
+
+ &pm8916_bms {
+ power-supplies = <&pm8916_charger>;
+ };
+
+ &pm8916_charger {
+ qcom,fast-charge-safe-current = <900000>;
+ qcom,fast-charge-safe-voltage = <4300000>;
+
+ monitored-battery = <&battery>;
+
+ status = "okay";
+ };
+
+ &sound {
+ model = "wt88047";
+ widgets =
+ "Speaker", "Speaker",
+ "Headphone", "Headphones";
+ pin-switches = "Speaker", "Headphones";
+ audio-routing =
+ "Speaker", "Speaker Amp OUT",
+ "Speaker Amp IN", "HPH_R",
+ "Headphones", "Headphones Switch OUTL",
+ "Headphones", "Headphones Switch OUTR",
+ "Headphones Switch INL", "HPH_L",
+ "Headphones Switch INR", "HPH_R",
+ "AMIC1", "MIC BIAS Internal1",
+ "AMIC2", "MIC BIAS Internal2";
+ aux-devs = <&speaker_amp>, <&headphones_switch>;
+ };
+
+ &usb {
+ dr_mode = "peripheral";
+ extcon = <&pm8916_charger>;
+ };
+
+ &usb_hs_phy {
+ extcon = <&pm8916_charger>;
+ };
+
+ &tlmm {
+ spk_ext_pa_default: spk-ext-pa-default-state {
+ pins = "gpio119";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
diff --git a/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt86528.dts b/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt86528.dts
new file mode 100644
index 000000000000..3ab2eb6be107
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt86528.dts
@@ -0,0 +1,160 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ /dts-v1/;
+
+ #include "msm8916-wingtech-wt865x8.dtsi"
+
+ / {
+ model = "Lenovo A6010 (Wingtech WT86528)";
+ compatible = "wingtech,wt86528", "qcom,msm8916";
+ chassis-type = "handset";
+
+ /* left AW8736 */
+ speaker_amp_left: audio-amplifier-left {
+ compatible = "awinic,aw8738";
+
+ pinctrl-0 = <&spk_ext_pa_left_default>;
+ pinctrl-names = "default";
+
+ mode-gpios = <&tlmm 119 GPIO_ACTIVE_HIGH>;
+ sound-name-prefix = "Speaker Amp L";
+ awinic,mode = <3>;
+ };
+
+ /* right AW8736 */
+ speaker_amp_right: audio-amplifier-right {
+ compatible = "awinic,aw8738";
+
+ pinctrl-0 = <&spk_ext_pa_right_default>;
+ pinctrl-names = "default";
+
+ mode-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>;
+ sound-name-prefix = "Speaker Amp R";
+ awinic,mode = <3>;
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ pinctrl-0 = <&gpio_leds_default>;
+ pinctrl-names = "default";
+
+ led-0 {
+ gpios = <&tlmm 16 GPIO_ACTIVE_LOW>;
+ label = "red";
+ default-state = "off";
+ retain-state-suspended;
+ };
+
+ led-1 {
+ gpios = <&tlmm 17 GPIO_ACTIVE_HIGH>;
+ label = "green";
+ default-state = "off";
+ retain-state-suspended;
+ };
+ };
+
+ usb_id: usb-id {
+ compatible = "linux,extcon-usb-gpio";
+ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&usb_id_default>;
+ pinctrl-names = "default";
+ };
+ };
+
+ &blsp_i2c2 {
+ magnetometer@c {
+ compatible = "asahi-kasei,ak09911";
+ reg = <0x0c>;
+
+ vdd-supply = <&pm8916_l17>;
+ vid-supply = <&pm8916_l6>;
+ };
+
+ imu@68 {
+ compatible = "invensense,mpu6880";
+ reg = <0x68>;
+
+ interrupts-extended = <&tlmm 115 IRQ_TYPE_EDGE_RISING>;
+
+ vdd-supply = <&pm8916_l17>;
+ vddio-supply = <&pm8916_l6>;
+
+ pinctrl-0 = <&imu_default>;
+ pinctrl-names = "default";
+
+ mount-matrix = "1", "0", "0",
+ "0", "-1", "0",
+ "0", "0", "1";
+ };
+ };
+
+ &pm8916_codec {
+ qcom,micbias1-ext-cap;
+ };
+
+ &sound {
+ model = "wt86528";
+ widgets =
+ "Speaker", "Speaker",
+ "Headphone", "Headphones";
+ pin-switches = "Speaker", "Headphones";
+ audio-routing =
+ "Speaker", "Speaker Amp L OUT",
+ "Speaker", "Speaker Amp R OUT",
+ "Speaker Amp L IN", "HPH_L",
+ "Speaker Amp R IN", "HPH_R",
+ "Headphones", "Headphones Switch OUTL",
+ "Headphones", "Headphones Switch OUTR",
+ "Headphones Switch INL", "HPH_L",
+ "Headphones Switch INR", "HPH_R",
+ "AMIC1", "MIC BIAS External1",
+ "AMIC2", "MIC BIAS Internal2",
+ "AMIC3", "MIC BIAS External1";
+ aux-devs = <&speaker_amp_left>, <&speaker_amp_right>, <&headphones_switch>;
+ };
+
+ &usb {
+ extcon = <&usb_id>, <&usb_id>;
+ };
+
+ &usb_hs_phy {
+ extcon = <&usb_id>;
+ };
+
+ &tlmm {
+ gpio_leds_default: gpio-leds-default-state {
+ pins = "gpio16", "gpio17";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ imu_default: imu-default-state {
+ pins = "gpio115";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ spk_ext_pa_left_default: spk-ext-pa-left-default-state {
+ pins = "gpio119";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ spk_ext_pa_right_default: spk-ext-pa-right-default-state {
+ pins = "gpio121";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb_id_default: usb-id-default-state {
+ pins = "gpio110";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+ };
diff --git a/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt865x8.dtsi b/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt865x8.dtsi
new file mode 100644
index 000000000000..1a7c347dc3f0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt865x8.dtsi
@@ -0,0 +1,215 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ #include "msm8916-pm8916.dtsi"
+ #include "msm8916-modem-qdsp6.dtsi"
+
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
+
+ / {
+ aliases {
+ mmc0 = &sdhc_1; /* eMMC */
+ mmc1 = &sdhc_2; /* SD card */
+ serial0 = &blsp_uart2;
+ };
+
+ chosen {
+ stdout-path = "serial0";
+ };
+
+ headphones_switch: audio-switch {
+ compatible = "simple-audio-amplifier";
+
+ pinctrl-0 = <&headphones_switch_default>;
+ pinctrl-names = "default";
+
+ enable-gpios = <&tlmm 120 GPIO_ACTIVE_HIGH>;
+ sound-name-prefix = "Headphones Switch";
+ };
+
+ backlight: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&pm8916_pwm 0 100000>;
+
+ brightness-levels = <0 255>;
+ num-interpolated-steps = <255>;
+ default-brightness-level = <255>;
+ };
+
+ battery: battery {
+ compatible = "simple-battery";
+ voltage-min-design-microvolt = <3400000>;
+ voltage-max-design-microvolt = <4350000>;
+ energy-full-design-microwatt-hours = <8740000>;
+ charge-full-design-microamp-hours = <2300000>;
+
+ ocv-capacity-celsius = <25>;
+ ocv-capacity-table-0 = <4328000 100>, <4266000 95>, <4208000 90>,
+ <4154000 85>, <4102000 80>, <4062000 75>, <3992000 70>,
+ <3960000 65>, <3914000 60>, <3870000 55>, <3840000 50>,
+ <3818000 45>, <3800000 40>, <3784000 35>, <3770000 30>,
+ <3756000 25>, <3736000 20>, <3714000 16>, <3696000 13>,
+ <3690000 11>, <3689000 10>, <3688000 9>, <3686000 8>,
+ <3682000 7>, <3670000 6>, <3639000 5>, <3592000 4>,
+ <3530000 3>, <3448000 2>, <3320000 1>, <3000000 0>;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&gpio_keys_default>;
+ pinctrl-names = "default";
+
+ label = "GPIO Buttons";
+
+ volume-up-button {
+ label = "Volume Up";
+ gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ };
+ };
+ };
+
+ &blsp_i2c5 {
+ status = "okay";
+
+ touchscreen@38 {
+ compatible = "edt,edt-ft5306";
+ reg = <0x38>;
+
+ interrupts-extended = <&tlmm 13 IRQ_TYPE_EDGE_FALLING>;
+
+ vcc-supply = <&pm8916_l17>;
+ iovcc-supply = <&pm8916_l6>;
+
+ reset-gpios = <&tlmm 12 GPIO_ACTIVE_LOW>;
+
+ touchscreen-size-x = <720>;
+ touchscreen-size-y = <1280>;
+
+ pinctrl-0 = <&touchscreen_default>;
+ pinctrl-names = "default";
+ };
+ };
+
+ &blsp_uart2 {
+ status = "okay";
+ };
+
+ &mpss_mem {
+ reg = <0x0 0x86800000 0x0 0x5500000>;
+ };
+
+ &pm8916_bms {
+ monitored-battery = <&battery>;
+ status = "okay";
+ };
+
+ &pm8916_codec {
+ qcom,micbias-lvl = <2800>;
+ qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
+ qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
+ qcom,hphl-jack-type-normally-open;
+ };
+
+ &pm8916_pwm {
+ pinctrl-0 = <&pwm_out>;
+ pinctrl-names = "default";
+ status = "okay";
+ };
+
+ &pm8916_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+ status = "okay";
+ };
+
+ &pm8916_rpm_regulators {
+ pm8916_l17: l17 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ };
+ };
+
+ &pm8916_vib {
+ status = "okay";
+ };
+
+ &sdhc_1 {
+ status = "okay";
+ };
+
+ &sdhc_2 {
+ pinctrl-0 = <&sdc2_default>;
+ pinctrl-1 = <&sdc2_sleep>;
+ pinctrl-names = "default", "sleep";
+
+ non-removable;
+
+ status = "okay";
+ };
+
+ &usb {
+ status = "okay";
+ };
+
+ &venus {
+ status = "okay";
+ };
+
+ &venus_mem {
+ status = "okay";
+ };
+
+ &wcnss {
+ status = "okay";
+ };
+
+ &wcnss_iris {
+ compatible = "qcom,wcn3620";
+ };
+
+ &wcnss_mem {
+ status = "okay";
+ };
+
+ &tlmm {
+ gpio_keys_default: gpio-keys-default-state {
+ pins = "gpio107";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ headphones_switch_default: headphones-switch-default-state {
+ pins = "gpio120";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ touchscreen_default: touchscreen-default-state {
+ touchscreen-pins {
+ pins = "gpio13";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ reset-pins {
+ pins = "gpio12";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+ };
+
+ &pm8916_mpps {
+ pwm_out: mpp4-state {
+ pins = "mpp4";
+ function = "digital";
+ power-source = <PM8916_MPP_VPH>;
+ output-low;
+ qcom,dtest = <1>;
+ };
+ };
--
2.45.2
[PATCH v2 1/3] dt-bindings: arm: qcom: Add msm8916/39 based Lenovo devices
Add compaitble values for some variants of Lenovo A6000/A6010/A6020
devices. These devices are based on designs from Wingtech so use it's
vendor prefix and part numbers for compatibles.
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index f08e13b61172..a3f28f08f5d6 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -155,6 +155,11 @@ properties:
- const: qcom,msm8926
- const: qcom,msm8226
+ - items:
+ - enum:
+ - wingtech,wt82918hd
+ - const: qcom,msm8929
+
- items:
- enum:
- huawei,kiwi
@@ -162,6 +167,8 @@ properties:
- samsung,a7
- sony,kanuti-tulip
- square,apq8039-t2
+ - wingtech,wt82918
+ - wingtech,wt82918hdhw39
- const: qcom,msm8939
- items:
@@ -234,6 +241,8 @@ properties:
- samsung,serranove
- thwc,uf896
- thwc,ufi001c
+ - wingtech,wt86518
+ - wingtech,wt86528
- wingtech,wt88047
- yiming,uz801-v3
- const: qcom,msm8916
--
2.45.2
[PATCH v2 3/3] arm64: dts: qcom: msm8939-wingtech-wt82918: Add Lenovo Vibe K5 devices
From: Adam Słaboń <asaillen@protonmail.com>
This commit introduces multiple hardware variants of Lenovo Vibe K5.
- A6020a40 (msm8929-wingtech-wt82918hd)
- A6020a46/A6020l36 (msm8939-wingtech-wt82918)
- A6020a40 S616 H39 (msm8939-wingtech-wt82918hd)
These devices are added with support for many features, notably:
- Basic features like USB, mmc/sd storage, wifi, buttons, leds;
- Accelerometer;
- Touchscreen;
- Sound and modem.
Note that "HD" variant of K5 is based on msm8929 which is a lower bin
of msm8939 SoC. A simple dtsi is added for this soc along with the new
devices.
Unfortunately, despite the heavy similarities, the combination of minor
differences between variants make them incompatible between each other.
Signed-off-by: Adam Słaboń <asaillen@protonmail.com>
[Nikita: Minor cleanup, commit message]
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
---
arch/arm64/boot/dts/qcom/Makefile | 3 +
arch/arm64/boot/dts/qcom/msm8929-pm8916.dtsi | 162 +++++++++++++
.../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts | 17 ++
arch/arm64/boot/dts/qcom/msm8929.dtsi | 7 +
.../boot/dts/qcom/msm8939-wingtech-wt82918.dts | 17 ++
.../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi | 252 +++++++++++++++++++++
.../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts | 17 ++
7 files changed, 475 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index fd4c7c41ddc4..48ec781fa1d8 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -58,10 +58,13 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86518.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86528.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801v3.dtb
+ dtb-$(CONFIG_ARCH_QCOM) += msm8929-wingtech-wt82918hd.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8939-huawei-kiwi.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8939-longcheer-l9100.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8939-samsung-a7.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8939-sony-xperia-kanuti-tulip.dtb
+ dtb-$(CONFIG_ARCH_QCOM) += msm8939-wingtech-wt82918.dtb
+ dtb-$(CONFIG_ARCH_QCOM) += msm8939-wingtech-wt82918hd.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-motorola-potter.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-daisy.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-mido.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8929-pm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8929-pm8916.dtsi
new file mode 100644
index 000000000000..c2bf25997e9b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8929-pm8916.dtsi
@@ -0,0 +1,162 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+ /*
+ * msm8929-pm8916.dtsi describes common properties (e.g. regulator connections)
+ * that apply to most devices that make use of the MSM8929 SoC and PM8916 PMIC.
+ * Many regulators have a fixed purpose in the original reference design and
+ * were rarely re-used for different purposes. Devices that deviate from the
+ * typical reference design should not make use of this include and instead add
+ * the necessary properties in the board-specific device tree.
+ */
+
+ #include "msm8929.dtsi"
+ #include "pm8916.dtsi"
+
+ &mdss_dsi0 {
+ vdda-supply = <&pm8916_l2>;
+ vddio-supply = <&pm8916_l6>;
+ };
+
+ &mdss_dsi0_phy {
+ vddio-supply = <&pm8916_l6>;
+ };
+
+ &mdss_dsi1 {
+ vdda-supply = <&pm8916_l2>;
+ vddio-supply = <&pm8916_l6>;
+ };
+
+ &mdss_dsi1_phy {
+ vddio-supply = <&pm8916_l6>;
+ };
+
+ &mpss {
+ pll-supply = <&pm8916_l7>;
+ };
+
+ &pm8916_codec {
+ vdd-cdc-io-supply = <&pm8916_l5>;
+ vdd-cdc-tx-rx-cx-supply = <&pm8916_l5>;
+ vdd-micbias-supply = <&pm8916_l13>;
+ };
+
+ &rpm_requests {
+ pm8916_rpm_regulators: regulators {
+ compatible = "qcom,rpm-pm8916-regulators";
+ vdd_l1_l2_l3-supply = <&pm8916_s3>;
+ vdd_l4_l5_l6-supply = <&pm8916_s4>;
+ vdd_l7-supply = <&pm8916_s4>;
+
+ /* pm8916_s1 is managed by rpmpd (MSM8939_VDDMDCX) */
+ /* pm8916_s2 is managed by rpmpd (MSM8939_VDDCX) */
+ pm8916_s3: s3 {
+ regulator-min-microvolt = <1250000>;
+ regulator-max-microvolt = <1350000>;
+ regulator-always-on; /* Needed for L2 */
+ };
+ pm8916_s4: s4 {
+ regulator-min-microvolt = <1850000>;
+ regulator-max-microvolt = <2150000>;
+ regulator-always-on; /* Needed for L5/L7 */
+ };
+
+ /*
+ * Some of the regulators are unused or managed by another
+ * processor (e.g. the modem). We should still define nodes for
+ * them to ensure the vote from the application processor can be
+ * dropped in case the regulators are already on during boot.
+ *
+ * The labels for these nodes are omitted on purpose because
+ * boards should configure a proper voltage before using them.
+ */
+ l1 {};
+
+ pm8916_l2: l2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-always-on; /* Needed for LPDDR RAM */
+ };
+
+ /* pm8916_l3 is managed by rpmpd (MSM8939_VDDMX) */
+
+ l4 {};
+
+ pm8916_l5: l5 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on; /* Needed for most digital I/O */
+ };
+
+ pm8916_l6: l6 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8916_l7: l7 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on; /* Needed for CPU PLL */
+ };
+
+ pm8916_l8: l8 {
+ regulator-min-microvolt = <2900000>;
+ regulator-max-microvolt = <2900000>;
+ };
+
+ pm8916_l9: l9 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ l10 {};
+
+ pm8916_l11: l11 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ regulator-allow-set-load;
+ regulator-system-load = <200000>;
+ };
+
+ pm8916_l12: l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+
+ pm8916_l13: l13 {
+ regulator-min-microvolt = <3075000>;
+ regulator-max-microvolt = <3075000>;
+ };
+
+ l14 {};
+ l15 {};
+ l16 {};
+ l17 {};
+ l18 {};
+ };
+ };
+
+ &sdhc_1 {
+ vmmc-supply = <&pm8916_l8>;
+ vqmmc-supply = <&pm8916_l5>;
+ };
+
+ &sdhc_2 {
+ vmmc-supply = <&pm8916_l11>;
+ vqmmc-supply = <&pm8916_l12>;
+ };
+
+ &usb_hs_phy {
+ v1p8-supply = <&pm8916_l7>;
+ v3p3-supply = <&pm8916_l13>;
+ };
+
+ &wcnss {
+ vddpx-supply = <&pm8916_l7>;
+ };
+
+ &wcnss_iris {
+ vddxo-supply = <&pm8916_l7>;
+ vddrfa-supply = <&pm8916_s3>;
+ vddpa-supply = <&pm8916_l9>;
+ vdddig-supply = <&pm8916_l5>;
+ };
+
diff --git a/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
new file mode 100644
index 000000000000..8feecffb16bf
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
@@ -0,0 +1,17 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ /dts-v1/;
+
+ #include "msm8929-pm8916.dtsi"
+ #include "msm8939-wingtech-wt82918.dtsi"
+
+ / {
+ model = "Lenovo Vibe K5 (HD) (Wingtech WT82918)";
+ compatible = "wingtech,wt82918hd", "qcom,msm8929";
+ chassis-type = "handset";
+ };
+
+ &touchscreen {
+ touchscreen-size-x = <720>;
+ touchscreen-size-y = <1280>;
+ };
diff --git a/arch/arm64/boot/dts/qcom/msm8929.dtsi b/arch/arm64/boot/dts/qcom/msm8929.dtsi
new file mode 100644
index 000000000000..ef7bb1ced954
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
@@ -0,0 +1,7 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ #include "msm8939.dtsi"
+
+ &opp_table {
+ /delete-node/ opp-550000000;
+ };
diff --git a/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dts b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dts
new file mode 100644
index 000000000000..aa6b699aa2a1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dts
@@ -0,0 +1,17 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ /dts-v1/;
+
+ #include "msm8939-pm8916.dtsi"
+ #include "msm8939-wingtech-wt82918.dtsi"
+
+ / {
+ model = "Lenovo Vibe K5 (Wingtech WT82918)";
+ compatible = "wingtech,wt82918", "qcom,msm8939";
+ chassis-type = "handset";
+ };
+
+ &touchscreen {
+ touchscreen-size-x = <1080>;
+ touchscreen-size-y = <1920>;
+ };
diff --git a/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dtsi b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dtsi
new file mode 100644
index 000000000000..800e0747a2f7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dtsi
@@ -0,0 +1,252 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ #include "msm8916-modem-qdsp6.dtsi"
+
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/leds/common.h>
+ #include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
+
+ / {
+ aliases {
+ mmc0 = &sdhc_1; /* eMMC */
+ mmc1 = &sdhc_2; /* SD card */
+ serial0 = &blsp_uart2;
+ };
+
+ chosen {
+ stdout-path = "serial0";
+ };
+
+ backlight: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&pm8916_pwm 0 100000>;
+ brightness-levels = <0 255>;
+ num-interpolated-steps = <255>;
+ default-brightness-level = <128>;
+ };
+
+ flash-led-controller {
+ compatible = "sgmicro,sgm3140";
+ enable-gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+ flash-gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-0 = <&camera_front_flash_default>;
+ pinctrl-names = "default";
+
+ flash_led: led {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&gpio_keys_default>;
+ pinctrl-names = "default";
+
+ label = "GPIO Buttons";
+
+ button-volume-up {
+ label = "Volume Up";
+ gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ pinctrl-0 = <&gpio_leds_default>;
+ pinctrl-names = "default";
+
+ led-0 {
+ gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
+ function = LED_FUNCTION_CHARGING;
+ color = <LED_COLOR_ID_RED>;
+ default-state = "off";
+ retain-state-suspended;
+ };
+
+ led-1 {
+ gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>;
+ function = LED_FUNCTION_STATUS;
+ color = <LED_COLOR_ID_GREEN>;
+ default-state = "off";
+ retain-state-suspended;
+ };
+ };
+
+ usb_id: usb-id {
+ compatible = "linux,extcon-usb-gpio";
+ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&usb_id_default>;
+ pinctrl-names = "default";
+ };
+ };
+
+ &blsp_i2c2 {
+ status = "okay";
+
+ accelerometer@68 {
+ compatible = "invensense,icm20608";
+ reg = <0x68>;
+
+ interrupts-extended = <&tlmm 115 IRQ_TYPE_EDGE_FALLING>;
+
+ pinctrl-0 = <&accelerometer_default>;
+ pinctrl-names = "default";
+
+ vdd-supply = <&pm8916_l17>;
+ vddio-supply = <&pm8916_l6>;
+
+ mount-matrix = "-1", "0", "0",
+ "0", "1", "0",
+ "0", "0", "1";
+ };
+ };
+
+ &blsp_i2c5 {
+ status = "okay";
+
+ touchscreen: touchscreen@38 {
+ compatible = "edt,edt-ft5306";
+ reg = <0x38>;
+
+ interrupts-extended = <&tlmm 13 IRQ_TYPE_LEVEL_LOW>;
+
+ pinctrl-0 = <&touchscreen_default>;
+ pinctrl-names = "default";
+
+ vcc-supply = <&pm8916_l17>;
+ iovcc-supply = <&pm8916_l6>;
+
+ reset-gpios = <&tlmm 12 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ &blsp_uart2 {
+ status = "okay";
+ };
+
+ &mpss_mem {
+ reg = <0x0 0x86800000 0x0 0x5500000>;
+ };
+
+ &pm8916_pwm {
+ pinctrl-0 = <&pwm_out>;
+ pinctrl-names = "default";
+ status = "okay";
+ };
+
+ &pm8916_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+ status = "okay";
+ };
+
+ &pm8916_rpm_regulators {
+ pm8916_l17: l17 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ };
+ };
+
+ &pm8916_vib {
+ status = "okay";
+ };
+
+ &sdhc_1 {
+ status = "okay";
+ };
+
+ &sdhc_2 {
+ pinctrl-0 = <&sdc2_default>;
+ pinctrl-1 = <&sdc2_sleep>;
+ pinctrl-names = "default", "sleep";
+ non-removable;
+ status = "okay";
+ };
+
+ &usb {
+ extcon = <&usb_id>, <&usb_id>;
+ status = "okay";
+ };
+
+ &usb_hs_phy {
+ extcon = <&usb_id>;
+ };
+
+ &wcnss {
+ status = "okay";
+ };
+
+ &wcnss_iris {
+ compatible = "qcom,wcn3620";
+ };
+
+ &wcnss_mem {
+ status = "okay";
+ };
+
+ &tlmm {
+ accelerometer_default: accelerometer-default-state {
+ pins = "gpio115";
+ function = "gpio";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+
+ camera_front_flash_default: camera-front-flash-default-state {
+ pins = "gpio31", "gpio32";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ gpio_keys_default: gpio-keys-default-state {
+ pins = "gpio107";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ gpio_leds_default: gpio-leds-default-state {
+ pins = "gpio36", "gpio69";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ touchscreen_default: touchscreen-default-state {
+ reset-pins {
+ pins = "gpio12";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ touchscreen-pins {
+ pins = "gpio13";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ usb_id_default: usb-id-default-state {
+ pins = "gpio110";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+ };
+
+ &pm8916_mpps {
+ pwm_out: mpp4-state {
+ pins = "mpp4";
+ function = "digital";
+ power-source = <PM8916_MPP_VPH>;
+ output-low;
+ qcom,dtest = <1>;
+ };
+ };
diff --git a/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918hd.dts
new file mode 100644
index 000000000000..59414db42508
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918hd.dts
@@ -0,0 +1,17 @@
+ // SPDX-License-Identifier: GPL-2.0-only
+
+ /dts-v1/;
+
+ #include "msm8939-pm8916.dtsi"
+ #include "msm8939-wingtech-wt82918.dtsi"
+
+ / {
+ model = "Lenovo Vibe K5 (HD) (Wingtech WT82918)";
+ compatible = "wingtech,wt82918hdhw39", "qcom,msm8939";
+ chassis-type = "handset";
+ };
+
+ &touchscreen {
+ touchscreen-size-x = <720>;
+ touchscreen-size-y = <1280>;
+ };
--
2.45.2
Re: [PATCH v2 2/3] arm64: dts: qcom: msm8916-wingtech-wt865x8: Add Lenovo A6000/A6010
On 22.07.2024 2:47 PM, Nikita Travkin wrote:
> From: Anton Bambura <jenneron@postmarketos.org >
>
> Add initial device-tree for Lenovo A6000 (wt86518) and Lenovo A6010
> (wt86528), which are MSM8916-based devices. These devices are quite
> similar, so some configuration is shared in msm8916-wingtech-wt865x8.dtsi.
[...]
> +/ {
> + model = "Lenovo A6000 (Wingtech WT86518)";
> + compatible = "wingtech,wt86518", "qcom,msm8916";
> + chassis-type = "handset";
> +
> + speaker_amp: audio-amplifier {
> + compatible = "awinic,aw8738";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&spk_ext_pa_default>;
flip
[...]
> +&sound {
> + model = "wt88047";
> + widgets =
> + "Speaker", "Speaker",
> + "Headphone", "Headphones";
Please don't start a new line for this (same below)
> + pin-switches = "Speaker", "Headphones";
> + audio-routing =
> + "Speaker", "Speaker Amp OUT",
> + "Speaker Amp IN", "HPH_R",
[...]
> + /* left AW8736 */
> + speaker_amp_left: audio-amplifier-left {
> + compatible = "awinic,aw8738";
Should this get a new compatible (with a fallback if sw-compatible)?
> +
> + pinctrl-0 = <&spk_ext_pa_left_default>;
> + pinctrl-names = "default";
> +
> + mode-gpios = <&tlmm 119 GPIO_ACTIVE_HIGH>;
> + sound-name-prefix = "Speaker Amp L";
> + awinic,mode = <3>;
> + };
> +
> + /* right AW8736 */
> + speaker_amp_right: audio-amplifier-right {
> + compatible = "awinic,aw8738";
ditto
Konrad
Re: [PATCH v2 2/3] arm64: dts: qcom: msm8916-wingtech-wt865x8: Add Lenovo A6000/A6010
Konrad Dybcio писал(а) 23.07.2024 16:24:
> On 22.07.2024 2:47 PM, Nikita Travkin wrote:
>> From: Anton Bambura <jenneron@postmarketos.org >
>>
>> Add initial device-tree for Lenovo A6000 (wt86518) and Lenovo A6010
>> (wt86528), which are MSM8916-based devices. These devices are quite
>> similar, so some configuration is shared in msm8916-wingtech-wt865x8.dtsi.
>
> [...]
>
>
>> +/ {
>> + model = "Lenovo A6000 (Wingtech WT86518)";
>> + compatible = "wingtech,wt86518", "qcom,msm8916";
>> + chassis-type = "handset";
>> +
>> + speaker_amp: audio-amplifier {
>> + compatible = "awinic,aw8738";
>> +
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&spk_ext_pa_default>;
>
> flip
Oops, missed this one, will fix.
>
> [...]
>
>> +&sound {
>> + model = "wt88047";
>> + widgets =
>> + "Speaker", "Speaker",
>> + "Headphone", "Headphones";
>
> Please don't start a new line for this (same below)
>
Ack, will re-align.
>> + pin-switches = "Speaker", "Headphones";
>> + audio-routing =
>> + "Speaker", "Speaker Amp OUT",
>> + "Speaker Amp IN", "HPH_R",
>
> [...]
>
>> + /* left AW8736 */
>> + speaker_amp_left: audio-amplifier-left {
>> + compatible = "awinic,aw8738";
>
> Should this get a new compatible (with a fallback if sw-compatible)?
>
Per my understanding those two are supposed to be effectively same
chip, not sure if there is any point in adding a new compatible/fallback
in this case...
Thanks for looking at this!
Nikita
>> +
>> + pinctrl-0 = <&spk_ext_pa_left_default>;
>> + pinctrl-names = "default";
>> +
>> + mode-gpios = <&tlmm 119 GPIO_ACTIVE_HIGH>;
>> + sound-name-prefix = "Speaker Amp L";
>> + awinic,mode = <3>;
>> + };
>> +
>> + /* right AW8736 */
>> + speaker_amp_right: audio-amplifier-right {
>> + compatible = "awinic,aw8738";
>
> ditto
>
> Konrad
Re: [PATCH v2 1/3] dt-bindings: arm: qcom: Add msm8916/39 based Lenovo devices
On 22/07/2024 14:47, Nikita Travkin wrote:
> Add compaitble values for some variants of Lenovo A6000/A6010/A6020
> devices. These devices are based on designs from Wingtech so use it's
> vendor prefix and part numbers for compatibles.
>
> Signed-off-by: Nikita Travkin <nikita@trvn.ru >
<form letter>
This is a friendly reminder during the review process.
It looks like you received a tag and forgot to add it.
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
If a tag was not added on purpose, please state why and what changed.
</form letter>
Best regards,
Krzysztof
Re: [PATCH v2 1/3] dt-bindings: arm: qcom: Add msm8916/39 based Lenovo devices
Krzysztof Kozlowski писал(а) 24.07.2024 11:23:
> On 22/07/2024 14:47, Nikita Travkin wrote:
>> Add compaitble values for some variants of Lenovo A6000/A6010/A6020
>> devices. These devices are based on designs from Wingtech so use it's
>> vendor prefix and part numbers for compatibles.
>>
>> Signed-off-by: Nikita Travkin <nikita@trvn.ru >
>
> <form letter>
> This is a friendly reminder during the review process.
>
> It looks like you received a tag and forgot to add it.
Oops, sorry, I indeed forgot to pick up trailers... Seems like
I made a mistake in my usual process and didn't flag the tag mail
as something that I still need to act on :(
Will pick it up in v3 since I need to do changes anyway.
I should probably write an yet another automation rule for this...
Nikita
>
> 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
>
> If a tag was not added on purpose, please state why and what changed.
> </form letter>
>
> Best regards,
> Krzysztof