diff mbox series

[3/3] arm64: dts: qcom: msm8939-wingtech-wt82918: Add Lenovo Vibe K5 devices

Message ID 20240712-msm89xx-wingtech-init-v1-3-64f4aa1870bd@trvn.ru (mailing list archive)
State Superseded
Headers show
Series Introduce msm8916/39 based Lenovo devices | expand

Commit Message

Nikita Travkin July 12, 2024, 4:04 p.m. UTC
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 +
 .../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts   |  17 ++
 arch/arm64/boot/dts/qcom/msm8929.dtsi              |   5 +
 .../boot/dts/qcom/msm8939-wingtech-wt82918.dts     |  16 ++
 .../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi    | 254 +++++++++++++++++++++
 .../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts   |  16 ++
 6 files changed, 311 insertions(+)

Comments

Konrad Dybcio July 12, 2024, 7:53 p.m. UTC | #1
On 12.07.2024 6:04 PM, Nikita Travkin wrote:
> 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 +
>  .../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts   |  17 ++
>  arch/arm64/boot/dts/qcom/msm8929.dtsi              |   5 +
>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dts     |  16 ++
>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi    | 254 +++++++++++++++++++++
>  .../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts   |  16 ++
>  6 files changed, 311 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-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
> new file mode 100644
> index 000000000000..f9a358e852f8
> --- /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 "msm8939-wingtech-wt82918.dtsi"
> +#include "msm8929.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..c3d1d1ace2f6
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
> @@ -0,0 +1,5 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +&opp_table {

No way somebody called the gpu opp table "opp table"..

> +	/delete-node/ opp-550000000;

Looking at downstream, seems like there isn't a speedbin fuse for
this :(

[...]

> +
> +&blsp_i2c2 {
> +	status = "okay";
> +
> +	accelerometer@68 {
> +		compatible = "invensense,icm20608";
> +		reg = <0x68>;
> +
> +		pinctrl-0 = <&accelerometer_default>;
> +		pinctrl-names = "default";

interesting choice to stick pintrl before interrupts

> +
> +		interrupts-extended = <&tlmm 115 IRQ_TYPE_EDGE_FALLING>;
> +
> +		vdd-supply = <&pm8916_l17>;
> +		vddio-supply = <&pm8916_l6>;
> +
> +		mount-matrix = "-1", "0", "0",
> +				"0", "1", "0",
> +				"0", "0", "1";
> +	};
> +};

[...]

> +&pm8916_mpps {
> +	pwm_out: mpp4-state {
> +		pins = "mpp4";
> +		function = "digital";
> +		power-source = <PM8916_MPP_VPH>;
> +		output-low;
> +		qcom,dtest = <1>;

I think you meant qcom,dtest-output

looks good otherwise

Konrad
Konrad Dybcio July 12, 2024, 7:54 p.m. UTC | #2
On 12.07.2024 9:53 PM, Konrad Dybcio wrote:
> On 12.07.2024 6:04 PM, Nikita Travkin wrote:

[...]


>> +&pm8916_mpps {
>> +	pwm_out: mpp4-state {
>> +		pins = "mpp4";
>> +		function = "digital";
>> +		power-source = <PM8916_MPP_VPH>;
>> +		output-low;
>> +		qcom,dtest = <1>;
> 
> I think you meant qcom,dtest-output

No, I apparently found this in msm-3.10, ignore this comment

Konrad
Krzysztof Kozlowski July 13, 2024, 10:02 a.m. UTC | #3
On 12/07/2024 18:04, Nikita Travkin wrote:
> 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 +
>  .../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts   |  17 ++
>  arch/arm64/boot/dts/qcom/msm8929.dtsi              |   5 +
>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dts     |  16 ++
>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi    | 254 +++++++++++++++++++++
>  .../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts   |  16 ++
>  6 files changed, 311 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-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
> new file mode 100644
> index 000000000000..f9a358e852f8
> --- /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 "msm8939-wingtech-wt82918.dtsi"
> +#include "msm8929.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..c3d1d1ace2f6
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
> @@ -0,0 +1,5 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +&opp_table {
> +	/delete-node/ opp-550000000;
> +};

That's a very odd SoC DTSI.

SoCs DTSIs are not meant to be included as complementary, but rather as
full DTSI.

IOW, this is very confusing code and will confuse everyone reading it.


Best regards,
Krzysztof
Nikita Travkin July 13, 2024, 10:37 a.m. UTC | #4
Krzysztof Kozlowski писал(а) 13.07.2024 15:02:
> On 12/07/2024 18:04, Nikita Travkin wrote:
>> 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 +
>>  .../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts   |  17 ++
>>  arch/arm64/boot/dts/qcom/msm8929.dtsi              |   5 +
>>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dts     |  16 ++
>>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi    | 254 +++++++++++++++++++++
>>  .../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts   |  16 ++
>>  6 files changed, 311 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-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
>> new file mode 100644
>> index 000000000000..f9a358e852f8
>> --- /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 "msm8939-wingtech-wt82918.dtsi"
>> +#include "msm8929.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..c3d1d1ace2f6
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
>> @@ -0,0 +1,5 @@
>> +// SPDX-License-Identifier: GPL-2.0-only
>> +
>> +&opp_table {
>> +	/delete-node/ opp-550000000;
>> +};
> 
> That's a very odd SoC DTSI.
> 
> SoCs DTSIs are not meant to be included as complementary, but rather as
> full DTSI.
> 
> IOW, this is very confusing code and will confuse everyone reading it.
> 

I think Adam wanted to keep the common device dtsi based on msm8939.dtsi to
simplify things a bit. I was also a bit unsure if I should change how it's
done but decided to keep it as it was. I will rework the v2 so:

- msm8929.dtsi includes msm8939.dtsi
- devices .dts include needed soc.dtsi, then include the common.dtsi
- common.dtsi doesn't include any soc.dtsi

Thanks for the review!
Nikita

> 
> Best regards,
> Krzysztof
Nikita Travkin July 13, 2024, 10:41 a.m. UTC | #5
Konrad Dybcio писал(а) 13.07.2024 00:53:
> On 12.07.2024 6:04 PM, Nikita Travkin wrote:
>> 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 +
>>  .../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts   |  17 ++
>>  arch/arm64/boot/dts/qcom/msm8929.dtsi              |   5 +
>>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dts     |  16 ++
>>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi    | 254 +++++++++++++++++++++
>>  .../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts   |  16 ++
>>  6 files changed, 311 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-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
>> new file mode 100644
>> index 000000000000..f9a358e852f8
>> --- /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 "msm8939-wingtech-wt82918.dtsi"
>> +#include "msm8929.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..c3d1d1ace2f6
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
>> @@ -0,0 +1,5 @@
>> +// SPDX-License-Identifier: GPL-2.0-only
>> +
>> +&opp_table {
> 
> No way somebody called the gpu opp table "opp table"..
> 
>> +	/delete-node/ opp-550000000;
> 
> Looking at downstream, seems like there isn't a speedbin fuse for
> this :(
> 
> [...]
> 
>> +
>> +&blsp_i2c2 {
>> +	status = "okay";
>> +
>> +	accelerometer@68 {
>> +		compatible = "invensense,icm20608";
>> +		reg = <0x68>;
>> +
>> +		pinctrl-0 = <&accelerometer_default>;
>> +		pinctrl-names = "default";
> 
> interesting choice to stick pintrl before interrupts
> 

Hm, yeah... I will move it a bit down in v2.

Thanks!
Nikita

>> +
>> +		interrupts-extended = <&tlmm 115 IRQ_TYPE_EDGE_FALLING>;
>> +
>> +		vdd-supply = <&pm8916_l17>;
>> +		vddio-supply = <&pm8916_l6>;
>> +
>> +		mount-matrix = "-1", "0", "0",
>> +				"0", "1", "0",
>> +				"0", "0", "1";
>> +	};
>> +};
> 
> [...]
> 
>> +&pm8916_mpps {
>> +	pwm_out: mpp4-state {
>> +		pins = "mpp4";
>> +		function = "digital";
>> +		power-source = <PM8916_MPP_VPH>;
>> +		output-low;
>> +		qcom,dtest = <1>;
> 
> I think you meant qcom,dtest-output
> 
> looks good otherwise
> 
> Konrad
Nikita Travkin July 13, 2024, 11:07 a.m. UTC | #6
Nikita Travkin писал(а) 13.07.2024 15:37:
> Krzysztof Kozlowski писал(а) 13.07.2024 15:02:
>> On 12/07/2024 18:04, Nikita Travkin wrote:
>>> 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 +
>>>  .../boot/dts/qcom/msm8929-wingtech-wt82918hd.dts   |  17 ++
>>>  arch/arm64/boot/dts/qcom/msm8929.dtsi              |   5 +
>>>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dts     |  16 ++
>>>  .../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi    | 254 +++++++++++++++++++++
>>>  .../boot/dts/qcom/msm8939-wingtech-wt82918hd.dts   |  16 ++
>>>  6 files changed, 311 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-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
>>> new file mode 100644
>>> index 000000000000..f9a358e852f8
>>> --- /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 "msm8939-wingtech-wt82918.dtsi"
>>> +#include "msm8929.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..c3d1d1ace2f6
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
>>> @@ -0,0 +1,5 @@
>>> +// SPDX-License-Identifier: GPL-2.0-only
>>> +
>>> +&opp_table {
>>> +	/delete-node/ opp-550000000;
>>> +};
>>
>> That's a very odd SoC DTSI.
>>
>> SoCs DTSIs are not meant to be included as complementary, but rather as
>> full DTSI.
>>
>> IOW, this is very confusing code and will confuse everyone reading it.
>>
> 
> I think Adam wanted to keep the common device dtsi based on msm8939.dtsi to
> simplify things a bit. I was also a bit unsure if I should change how it's
> done but decided to keep it as it was. I will rework the v2 so:
> 
> - msm8929.dtsi includes msm8939.dtsi
> - devices .dts include needed soc.dtsi, then include the common.dtsi
> - common.dtsi doesn't include any soc.dtsi
> 

(...) except gah this makes things quite a bit more complicated since the
device makes use of the "generic design" msm8939-pm8916.dtsi and duplicating
that would be quite silly IMO...

I wonder if we can clarify things without making everything too complicated 
by calling that dtsi "msm8929-opp.dtsi" and keeping it as extension for now,
then if we find that msm8929 has more differences - we can unfold and refactor
everything.

What do you think?

Nikita

> Thanks for the review!
> Nikita
> 
>>
>> Best regards,
>> Krzysztof
Dmitry Baryshkov July 13, 2024, 4:12 p.m. UTC | #7
On Sat, Jul 13, 2024 at 04:07:13PM GMT, Nikita Travkin wrote:
> Nikita Travkin писал(а) 13.07.2024 15:37:
> > Krzysztof Kozlowski писал(а) 13.07.2024 15:02:
> >> On 12/07/2024 18:04, Nikita Travkin wrote:
> >>> 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.
> >>>

> >>> diff --git a/arch/arm64/boot/dts/qcom/msm8929.dtsi b/arch/arm64/boot/dts/qcom/msm8929.dtsi
> >>> new file mode 100644
> >>> index 000000000000..c3d1d1ace2f6
> >>> --- /dev/null
> >>> +++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
> >>> @@ -0,0 +1,5 @@
> >>> +// SPDX-License-Identifier: GPL-2.0-only
> >>> +
> >>> +&opp_table {
> >>> +	/delete-node/ opp-550000000;
> >>> +};
> >>
> >> That's a very odd SoC DTSI.
> >>
> >> SoCs DTSIs are not meant to be included as complementary, but rather as
> >> full DTSI.
> >>
> >> IOW, this is very confusing code and will confuse everyone reading it.
> >>
> > 
> > I think Adam wanted to keep the common device dtsi based on msm8939.dtsi to
> > simplify things a bit. I was also a bit unsure if I should change how it's
> > done but decided to keep it as it was. I will rework the v2 so:
> > 
> > - msm8929.dtsi includes msm8939.dtsi
> > - devices .dts include needed soc.dtsi, then include the common.dtsi
> > - common.dtsi doesn't include any soc.dtsi
> > 
> 
> (...) except gah this makes things quite a bit more complicated since the
> device makes use of the "generic design" msm8939-pm8916.dtsi and duplicating
> that would be quite silly IMO...
> 
> I wonder if we can clarify things without making everything too complicated 
> by calling that dtsi "msm8929-opp.dtsi" and keeping it as extension for now,
> then if we find that msm8929 has more differences - we can unfold and refactor
> everything.
> 
> What do you think?

What about adding msm8929-pm8916.dtsi, which includes just the right
things? This might result in duplication with the existing files, but in
the end msm8939-pm8916 and msm8919-pm8916 are also very similar.
Nikita Travkin July 13, 2024, 4:26 p.m. UTC | #8
Dmitry Baryshkov писал(а) 13.07.2024 21:12:
> On Sat, Jul 13, 2024 at 04:07:13PM GMT, Nikita Travkin wrote:
>> Nikita Travkin писал(а) 13.07.2024 15:37:
>> > Krzysztof Kozlowski писал(а) 13.07.2024 15:02:
>> >> On 12/07/2024 18:04, Nikita Travkin wrote:
>> >>> 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.
>> >>>
> 
>> >>> diff --git a/arch/arm64/boot/dts/qcom/msm8929.dtsi b/arch/arm64/boot/dts/qcom/msm8929.dtsi
>> >>> new file mode 100644
>> >>> index 000000000000..c3d1d1ace2f6
>> >>> --- /dev/null
>> >>> +++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
>> >>> @@ -0,0 +1,5 @@
>> >>> +// SPDX-License-Identifier: GPL-2.0-only
>> >>> +
>> >>> +&opp_table {
>> >>> +	/delete-node/ opp-550000000;
>> >>> +};
>> >>
>> >> That's a very odd SoC DTSI.
>> >>
>> >> SoCs DTSIs are not meant to be included as complementary, but rather as
>> >> full DTSI.
>> >>
>> >> IOW, this is very confusing code and will confuse everyone reading it.
>> >>
>> >
>> > I think Adam wanted to keep the common device dtsi based on msm8939.dtsi to
>> > simplify things a bit. I was also a bit unsure if I should change how it's
>> > done but decided to keep it as it was. I will rework the v2 so:
>> >
>> > - msm8929.dtsi includes msm8939.dtsi
>> > - devices .dts include needed soc.dtsi, then include the common.dtsi
>> > - common.dtsi doesn't include any soc.dtsi
>> >
>>
>> (...) except gah this makes things quite a bit more complicated since the
>> device makes use of the "generic design" msm8939-pm8916.dtsi and duplicating
>> that would be quite silly IMO...
>>
>> I wonder if we can clarify things without making everything too complicated
>> by calling that dtsi "msm8929-opp.dtsi" and keeping it as extension for now,
>> then if we find that msm8929 has more differences - we can unfold and refactor
>> everything.
>>
>> What do you think?
> 
> What about adding msm8929-pm8916.dtsi, which includes just the right
> things? This might result in duplication with the existing files, but in
> the end msm8939-pm8916 and msm8919-pm8916 are also very similar.

Right, I guess the reason my thought was to avoid it is that msm8929 is
(seemingly) just a bin of msm8939, compared to i.e. msm8916 which is a
different soc.

But I suppose it's fine to create a new dtsi for it too, will create it
and change the includes as suggested (soc+pmic dtsi is included by
device, then common dtsi that itself doesn't include soc dtsi)

Thanks!
Nikita
diff mbox series

Patch

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-wingtech-wt82918hd.dts b/arch/arm64/boot/dts/qcom/msm8929-wingtech-wt82918hd.dts
new file mode 100644
index 000000000000..f9a358e852f8
--- /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 "msm8939-wingtech-wt82918.dtsi"
+#include "msm8929.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..c3d1d1ace2f6
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8929.dtsi
@@ -0,0 +1,5 @@ 
+// SPDX-License-Identifier: GPL-2.0-only
+
+&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..ebc624db880e
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dts
@@ -0,0 +1,16 @@ 
+// SPDX-License-Identifier: GPL-2.0-only
+
+/dts-v1/;
+
+#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..ff45ba8e02b1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918.dtsi
@@ -0,0 +1,254 @@ 
+// SPDX-License-Identifier: GPL-2.0-only
+
+#include "msm8939-pm8916.dtsi"
+#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>;
+
+		pinctrl-0 = <&accelerometer_default>;
+		pinctrl-names = "default";
+
+		interrupts-extended = <&tlmm 115 IRQ_TYPE_EDGE_FALLING>;
+
+		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 {
+		/* actually FT5336 */
+		compatible = "edt,edt-ft5306";
+		reg = <0x38>;
+
+		pinctrl-0 = <&touchscreen_default>;
+		pinctrl-names = "default";
+
+		interrupts-extended = <&tlmm 13 IRQ_TYPE_LEVEL_LOW>;
+
+		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..87016b5c44fd
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939-wingtech-wt82918hd.dts
@@ -0,0 +1,16 @@ 
+// SPDX-License-Identifier: GPL-2.0-only
+
+/dts-v1/;
+
+#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>;
+};