Commit 2bfdd113 authored by Fabio Estevam's avatar Fabio Estevam Committed by Shawn Guo
Browse files

ARM: dts: imx: Fix the SPI chipselect polarity



The conversion of the spi-imx driver to use GPIO descriptors
in commit 8cdcd8ae ("spi: imx/fsl-lpspi: Convert to GPIO descriptors")
helped to detect the following SPI chipselect polarity mismatch on an
imx6q-sabresd:

[    4.854337] m25p80@0 enforce active low on chipselect handle

Prior to the above commit, the chipselect polarity passed via cs-gpios
property was ignored and considered active-low.

The reason for such mismatch is clearly explained in the comments inside
drivers/gpio/gpiolib-of.c:

 * SPI children have active low chip selects
 * by default. This can be specified negatively
 * by just omitting "spi-cs-high" in the
 * device node, or actively by tagging on
 * GPIO_ACTIVE_LOW as flag in the device
 * tree. If the line is simultaneously
 * tagged as active low in the device tree
 * and has the "spi-cs-high" set, we get a
 * conflict and the "spi-cs-high" flag will
 * take precedence.

To properly represent the SPI chipselect polarity, change it to active-low
when the "spi-cs-high" property is absent.

Signed-off-by: default avatarFabio Estevam <festevam@gmail.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 0b784a7b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -18,8 +18,8 @@
};

&cspi1 {
	cs-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>,
		   <&gpio4 27 GPIO_ACTIVE_HIGH>;
	cs-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>,
		   <&gpio4 27 GPIO_ACTIVE_LOW>;
	status = "okay";
};

+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@

&cspi1 {
	pinctrl-0 = <&pinctrl_cspi1>, <&pinctrl_cspi1cs1>;
	cs-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>,
	cs-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>,
		   <&gpio4 27 GPIO_ACTIVE_LOW>;
};

+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
&cspi {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_cspi>;
	cs-gpios = <&gpio4 11 0>, <&gpio4 13 0>;
	cs-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>, <&gpio4 13 GPIO_ACTIVE_LOW>;
	status = "okay";

	flash: m25p32@1 {
+2 −2
Original line number Diff line number Diff line
@@ -74,8 +74,8 @@
&ecspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi1>;
	cs-gpios = <&gpio4 24 GPIO_ACTIVE_HIGH>,
		   <&gpio4 25 GPIO_ACTIVE_HIGH>;
	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>,
		   <&gpio4 25 GPIO_ACTIVE_LOW>;
	status = "okay";
};

+1 −1
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@
&ecspi2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi2>;
	cs-gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>, <&gpio2 27 GPIO_ACTIVE_HIGH>;
	cs-gpios = <&gpio2 26 GPIO_ACTIVE_LOW>, <&gpio2 27 GPIO_ACTIVE_LOW>;
	status = "okay";

	spidev@0 {
Loading