ARM: sunxi: dt: Split the SPI pinctrl groups
Subsystems (2)
PATCH 1/1 ARM: sunxi: dt: Split the SPI pinctrl groups
The pinctrl groups for SPI until now were also adding the chip selects in the SPI pinctrl group.
This was causing a few issues, since a board was forced to use a random number of chipselects, even though it might use one of these chip selects for another pin.
The number of chipselects defined was also not the same from one group to another because of different needs at the time these groups have been introduced, resulting in no clear view from the board DTS on what exactly is being muxed, which even might change in the future.
Solve this by creating different pinctrl groups for the chipselects and the standard SPI pins (CLK, MOSI and MISO) so that we fix both issues.
--- arch/arm/boot/dts/sun4i-a10-cubieboard.dts | 3 +- arch/arm/boot/dts/sun4i-a10-marsboard.dts | 3 +- arch/arm/boot/dts/sun4i-a10.dtsi | 36 ++++++++++++++++++--- arch/arm/boot/dts/sun7i-a20-bananapi.dts | 4 ++- arch/arm/boot/dts/sun7i-a20-bananapro.dts | 4 ++- arch/arm/boot/dts/sun7i-a20-hummingbird.dts | 3 +- arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts | 6 ++-- arch/arm/boot/dts/sun7i-a20.dtsi | 43 ++++++++++++++++++++++--- 8 files changed, 87 insertions(+), 15 deletions(-)
arch/arm/boot/dts/sun4i-a10-cubieboard.dts +2 -1
@@ -206,7 +206,8 @@ &spi0 { pinctrl-names = "default"; - pinctrl-0 = <&spi0_pins_a>; + pinctrl-0 = <&spi0_pins_a>, + <&spi0_cs0_pins_a>; status = "okay"; };
arch/arm/boot/dts/sun4i-a10-marsboard.dts +2 -1
@@ -174,7 +174,8 @@ &spi0 { pinctrl-names = "default"; - pinctrl-0 = <&spi0_pins_a>; + pinctrl-0 = <&spi0_pins_a>, + <&spi0_cs0_pins_a>; status = "okay"; };
arch/arm/boot/dts/sun4i-a10.dtsi +32 -4
@@ -812,28 +812,56 @@ }; spi0_pins_a: spi0 at 0 { - allwinner,pins = "PI10", "PI11", "PI12", "PI13"; + allwinner,pins = "PI11", "PI12", "PI13"; + allwinner,function = "spi0"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + spi0_cs0_pins_a: spi0_cs0 at 0 { + allwinner,pins = "PI10"; allwinner,function = "spi0"; allwinner,drive = <SUN4I_PINCTRL_10_MA>; allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; }; spi1_pins_a: spi1 at 0 { - allwinner,pins = "PI16", "PI17", "PI18", "PI19"; + allwinner,pins = "PI17", "PI18", "PI19"; + allwinner,function = "spi1"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + spi1_cs0_pins_a: spi1_cs0 at 0 { + allwinner,pins = "PI16"; allwinner,function = "spi1"; allwinner,drive = <SUN4I_PINCTRL_10_MA>; allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; }; spi2_pins_a: spi2 at 0 { - allwinner,pins = "PB14", "PB15", "PB16", "PB17"; + allwinner,pins = "PC20", "PC21", "PC22"; allwinner,function = "spi2"; allwinner,drive = <SUN4I_PINCTRL_10_MA>; allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; }; spi2_pins_b: spi2 at 1 { - allwinner,pins = "PC19", "PC20", "PC21", "PC22"; + allwinner,pins = "PB15", "PB16", "PB17"; + allwinner,function = "spi2"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + spi2_cs0_pins_a: spi2_cs0 at 0 { + allwinner,pins = "PC19"; + allwinner,function = "spi2"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + + spi2_cs0_pins_b: spi2_cs0 at 1 { + allwinner,pins = "PB14"; allwinner,function = "spi2"; allwinner,drive = <SUN4I_PINCTRL_10_MA>; allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
arch/arm/boot/dts/sun7i-a20-bananapi.dts +3 -1
@@ -197,7 +197,9 @@ &spi0 { pinctrl-names = "default"; - pinctrl-0 = <&spi0_pins_a>; + pinctrl-0 = <&spi0_pins_a>, + <&spi0_cs0_pins_a>, + <&spi0_cs1_pins_a>; status = "okay"; };
arch/arm/boot/dts/sun7i-a20-bananapro.dts +3 -1
@@ -243,7 +243,9 @@ &spi0 { pinctrl-names = "default"; - pinctrl-0 = <&spi0_pins_a>; + pinctrl-0 = <&spi0_pins_a>, + <&spi0_cs0_pins_a>, + <&spi0_cs1_pins_a>; status = "okay"; };
arch/arm/boot/dts/sun7i-a20-hummingbird.dts +2 -1
@@ -245,7 +245,8 @@ &spi2 { pinctrl-names = "default"; - pinctrl-0 = <&spi2_pins_b>; + pinctrl-0 = <&spi2_pins_b>, + <&spi2_cs0_pins_b>; status = "okay"; };
arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +4 -2
@@ -250,13 +250,15 @@ &spi1 { pinctrl-names = "default"; - pinctrl-0 = <&spi1_pins_a>; + pinctrl-0 = <&spi1_pins_a>, + <&spi1_cs0_pins_a>; status = "okay"; }; &spi2 { pinctrl-names = "default"; - pinctrl-0 = <&spi2_pins_a>; + pinctrl-0 = <&spi2_pins_a>, + <&spi2_cs0_pins_a>; status = "okay"; };
arch/arm/boot/dts/sun7i-a20.dtsi +39 -4
67 lines not on this page · raw message
Signature · 1 line
2.3.6
Maxime Ripard
AppliedPATCH 1/1 ARM: sunxi: dt: Split the SPI pinctrl groups
Quoted 12 lines · Maxime Ripard
The pinctrl groups for SPI until now were also adding the chip selects in the SPI pinctrl group.
This was causing a few issues, since a board was forced to use a random number of chipselects, even though it might use one of these chip selects for another pin.
The number of chipselects defined was also not the same from one group to another because of different needs at the time these groups have been introduced, resulting in no clear view from the board DTS on what exactly is being muxed, which even might change in the future.
Quoted 4 lines
Solve this by creating different pinctrl groups for the chipselects and the standard SPI pins (CLK, MOSI and MISO) so that we fix both issues.
Signed-off-by Maxime Ripard <[email protected]>
Applied.
Maxime
Signature · 10 lines
Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150510/67ae2005/attachment.sig>