[Letux-kernel] [RFC 2/2] DTS: ARM: gta04: SPI panel chip select is active low
H. Nikolaus Schaller
hns at goldelico.com
Wed Dec 2 09:56:02 CET 2020
Historically the panel driver did know the polarity and
the device tree introduced by
commit c2e138bc8ed8 ("ARM: dts: omap3-gta04: Add display support")
as
cs-gpios = <&gpio1 19 0>;
The 0 was ignored because the spi-gpio driver did only
look at the presence of an spi-cs-high property. Since
it was not present, the CS was active low.
commit 3a637e008e54 ("ARM: dts: Use defined GPIO constants in flags cell for OMAP2+ boards")
replaced the constant 0 by the constant GPIO_ACTIVE_HIGH
which was no problem because it was still ignored.
Starting with
commit 6953c57ab172 ("gpio: of: Handle SPI chipselect legacy bindings")
the gpiolib and spi-gpio drivers tried to handle both properties
by making an inversion for GPIO_ACTIVE_HIGH definitions.
To keep the device tree compatible with older kernels which
ignored the GPIO_ACTIVE property we just added spi-cs-high;.
This tells the inversion logic that we want an active low
chip select as defined by the rule documented by the commit
message of
commit 6953c57ab172 ("gpio: of: Handle SPI chipselect legacy bindings")
"If the line is tagged as active high in the device tree with
the second cell flag and has no "spi-cs-high" property we
enforce active low semantics (as this is the exception we can
just tag on the flag)."
This went well until
commit 766c6b63aa04 ("spi: fix client driver breakages when using GPIO descriptors")
arrived which effectively removes the inversion logic rule.
Removing spi-cs-high; in a separate patch already solves the
urgent problem, but to remove
[ 3.629791] td028ttec1 at 0 enforce active low on chipselect handle
and to be safe against future changes of such rules we also define
the cs-gpio explicitly as GPIO_ACTIVE_LOW.
Note that this patch breaks all kernels between
commit 6953c57ab172 ("gpio: of: Handle SPI chipselect legacy bindings")
and
commit 766c6b63aa04 ("spi: fix client driver breakages when using GPIO descriptors")
Fixes: 766c6b63aa04 ("spi: fix client driver breakages when using GPIO descriptors")
CC: stable at vger.kernel.org
Signed-off-by: H. Nikolaus Schaller <hns at goldelico.com>
---
arch/arm/boot/dts/omap3-gta04.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index 7c4c0124e20d45..76344b9c294512 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -139,7 +139,7 @@ spi_lcd: spi_lcd {
gpio-sck = <&gpio1 12 GPIO_ACTIVE_HIGH>;
gpio-miso = <&gpio1 18 GPIO_ACTIVE_HIGH>;
gpio-mosi = <&gpio1 20 GPIO_ACTIVE_HIGH>;
- cs-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
+ cs-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
num-chipselects = <1>;
/* lcd panel */
--
2.26.2
More information about the Letux-kernel
mailing list