On 2022-11-22 09:58, Quentin Schulz wrote:
Hi David,
Thanks Fabio for the Cc.
On 11/22/22 08:18, David Jander wrote:
On Mon, 21 Nov 2022 15:18:32 -0300
Fabio Estevam <festevam@xxxxxxxxx> wrote:
[Adding Angus and David]
Thanks. This was apparently necessary ;-)
On Mon, Nov 21, 2022 at 3:12 PM Quentin Schulz <foss+kernel@xxxxxxxxx> wrote:
From: Quentin Schulz <quentin.schulz@xxxxxxxxxxxxxxxxxxxxx>
The reset line is active low for the Goodix touchscreen controller so
let's fix the polarity in the Device Tree node.
Signed-off-by: Quentin Schulz <quentin.schulz@xxxxxxxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/freescale/imx8mm-prt8mm.dts | 2 +-
arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-prt8mm.dts b/arch/arm64/boot/dts/freescale/imx8mm-prt8mm.dts
index 9fbbbb556c0b3..df7e5ae9698e1 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-prt8mm.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mm-prt8mm.dts
@@ -107,7 +107,7 @@ touchscreeen@5d {
interrupt-parent = <&gpio1>;
interrupts = <8 IRQ_TYPE_NONE>;
irq-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
- reset-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
NACK!
The PRT8MM has an inverter in the reset line. The reason for that is that the
reset line needs to be inactive when the driving side is unpowered.
The DT was correct, this change will break it.
The DT was correct. The implementation in the driver is changed (the polarity is swapped) in this patch series, therefore the DT isn't correct anymore, hence this patch.
I'm not sure it's quite that simple... FWIW I'm using an add-on LCD module with a GT9271[1] (and I won't be the only one - Raspberry Pi and other SBC users using DT overlays or custom-built DTBs are a whole other can of worms here), where GPIO_ACTIVE_LOW is correctly specified per the schematics, thus "wrong" for the current driver behaviour, yet it *is* working OK as-is. I guess that's because /RSTB ends up driven low for long enough between the current "deassertion" by gpiod_direction_output(1) and gpiod_direction_input() allowing the external pull-up to take it high again.