diff mbox series

[v2] arm64: dts: qcom: c630: keep both touchpad devices enabled

Message ID 20210102045940.26874-1-shawn.guo@linaro.org
State Accepted
Commit a9164910c5ceed63551280a4a0b85d37ac2b19a5
Headers show
Series [v2] arm64: dts: qcom: c630: keep both touchpad devices enabled | expand

Commit Message

Shawn Guo Jan. 2, 2021, 4:59 a.m. UTC
Indicated by AML code in ACPI table, the touchpad in-use could be found
on two possible slave addresses on &i2c3, i.e. hid@15 and hid@2c.  And
which one is in-use can be determined by reading another address on the
I2C bus.  Unfortunately, for DT boot, there is currently no support in
firmware to make this check and patch DT accordingly.  This results in
a non-functional touchpad on those C630 devices with hid@2c.

As i2c-hid driver will stop probing the device if there is nothing on
the slave address, we can actually keep both devices enabled in DT, and
i2c-hid driver will only probe the existing one.  The only problem is
that we cannot set up pinctrl in both device nodes, as two devices with
the same pinctrl will cause pin conflict that makes the second device
fail to probe.  Let's move the pinctrl state up to parent node to solve
this problem.  As the pinctrl state of parent node is already defined in
sdm845.dtsi, it ends up with overwriting pinctrl-0 with i2c3_hid_active
state added in there.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>

---
Changes for v2:
- Overwrite pinctrl-0 from sdm845.dtsi with qup_i2c3_default preserved.

 arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

-- 
2.17.1

Comments

patchwork-bot+linux-arm-msm@kernel.org Jan. 4, 2021, 4:40 a.m. UTC | #1
Hello:

This patch was applied to qcom/linux.git (refs/heads/for-next):

On Sat,  2 Jan 2021 12:59:40 +0800 you wrote:
> Indicated by AML code in ACPI table, the touchpad in-use could be found

> on two possible slave addresses on &i2c3, i.e. hid@15 and hid@2c.  And

> which one is in-use can be determined by reading another address on the

> I2C bus.  Unfortunately, for DT boot, there is currently no support in

> firmware to make this check and patch DT accordingly.  This results in

> a non-functional touchpad on those C630 devices with hid@2c.

> 

> [...]


Here is the summary with links:
  - [v2] arm64: dts: qcom: c630: keep both touchpad devices enabled
    https://git.kernel.org/qcom/c/a9164910c5ce

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
index dcfe66f169f9..7929665aeaee 100644
--- a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
+++ b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
@@ -353,6 +353,8 @@ 
 &i2c3 {
 	status = "okay";
 	clock-frequency = <400000>;
+	/* Overwrite pinctrl-0 from sdm845.dtsi */
+	pinctrl-0 = <&qup_i2c3_default &i2c3_hid_active>;
 
 	tsel: hid@15 {
 		compatible = "hid-over-i2c";
@@ -360,9 +362,6 @@ 
 		hid-descr-addr = <0x1>;
 
 		interrupts-extended = <&tlmm 37 IRQ_TYPE_LEVEL_HIGH>;
-
-		pinctrl-names = "default";
-		pinctrl-0 = <&i2c3_hid_active>;
 	};
 
 	tsc2: hid@2c {
@@ -371,11 +370,6 @@ 
 		hid-descr-addr = <0x20>;
 
 		interrupts-extended = <&tlmm 37 IRQ_TYPE_LEVEL_HIGH>;
-
-		pinctrl-names = "default";
-		pinctrl-0 = <&i2c3_hid_active>;
-
-		status = "disabled";
 	};
 };