diff mbox

[v2,4/7] ARM: dts: imx27 pinctrl

Message ID 1376921234-26682-5-git-send-email-mpa@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Markus Pargmann Aug. 19, 2013, 2:07 p.m. UTC
Pinctrl driver node and pin group definitions for other driver nodes.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
---
 arch/arm/boot/dts/imx27.dtsi | 84 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

Comments

Sascha Hauer Aug. 20, 2013, 7:14 a.m. UTC | #1
On Mon, Aug 19, 2013 at 04:07:11PM +0200, Markus Pargmann wrote:
> Pinctrl driver node and pin group definitions for other driver nodes.
> 
> Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
> ---
> +					pinctrl_uart_1: uart-1 {
> +						fsl,pins = <
> +							MX27_PAD_UART1_TXD__UART1_TXD 0x0
> +							MX27_PAD_UART1_RXD__UART1_RXD 0x0
> +							MX27_PAD_UART1_CTS__UART1_CTS 0x0
> +							MX27_PAD_UART1_RTS__UART1_RTS 0x0
> +						>;
> +					};

The above either misses a group number or an uart number. We need
pinctrl_uart<uartno>_<groupno>

Also this doesn't scale very good. For boards without RTS/CTS we would have
to add a completely different group. For the FEC I've seen different
groups with a dozen pins each which differ in only a single pin.

I therefore suggest (and Shawn acked the general idea already) to
do this:

	pinctrl_uart1_1: uart1-1 {
		fsl,pins = <
			MX27_PAD_UART1_TXD__UART1_TXD 0x0
			MX27_PAD_UART1_RXD__UART1_RXD 0x0
		>;
	};

	pinctrl_uart1_rtscts_1: uart1-rtscts-1 {
		fsl,pins = <
			MX27_PAD_UART1_CTS__UART1_CTS 0x0
			MX27_PAD_UART1_RTS__UART1_RTS 0x0
		>;
	};

Sascha
Shawn Guo Aug. 21, 2013, 1:30 a.m. UTC | #2
On Mon, Aug 19, 2013 at 04:07:11PM +0200, Markus Pargmann wrote:
> Pinctrl driver node and pin group definitions for other driver nodes.
> 
> Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
> ---
>  arch/arm/boot/dts/imx27.dtsi | 84 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 84 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
> index 76cd89f..b9477d6 100644
> --- a/arch/arm/boot/dts/imx27.dtsi
> +++ b/arch/arm/boot/dts/imx27.dtsi
> @@ -10,6 +10,7 @@
>   */
>  
>  #include "skeleton.dtsi"
> +#include "imx27-pinfunc.h"
>  
>  / {
>  	aliases {
> @@ -235,6 +236,89 @@
>  				status = "disabled";
>  			};
>  
> +			iomuxc: iomuxc@10015000 {
> +				compatible = "fsl,imx27-iomuxc";
> +				reg = <0x10015000 0x600>;
> +
> +				fec {
> +					pinctrl_fec_1: fec-1 {
> +						fsl,pins = <
> +							MX27_PAD_SD3_CMD__FEC_TXD0 0x0
> +							MX27_PAD_SD3_CLK__FEC_TXD1 0x0
> +							MX27_PAD_ATA_DATA0__FEC_TXD2 0x0
> +							MX27_PAD_ATA_DATA1__FEC_TXD3 0x0
> +							MX27_PAD_ATA_DATA2__FEC_RX_ER 0x0
> +							MX27_PAD_ATA_DATA3__FEC_RXD1 0x0
> +							MX27_PAD_ATA_DATA4__FEC_RXD2 0x0
> +							MX27_PAD_ATA_DATA5__FEC_RXD3 0x0
> +							MX27_PAD_ATA_DATA6__FEC_MDIO 0x0
> +							MX27_PAD_ATA_DATA7__FEC_MDC 0x0
> +							MX27_PAD_ATA_DATA8__FEC_CRS 0x0
> +							MX27_PAD_ATA_DATA9__FEC_TX_CLK 0x0
> +							MX27_PAD_ATA_DATA10__FEC_RXD0 0x0
> +							MX27_PAD_ATA_DATA11__FEC_RX_DV 0x0
> +							MX27_PAD_ATA_DATA12__FEC_RX_CLK 0x0
> +							MX27_PAD_ATA_DATA13__FEC_COL 0x0
> +							MX27_PAD_ATA_DATA14__FEC_TX_ER 0x0
> +							MX27_PAD_ATA_DATA15__FEC_TX_EN 0x0
> +						>;
> +					};
> +				};

I like the idea [1] from Alexander Shiyan that maintains all these
pinctrl setting entries outside the main device nodes structure.  Can
you please do that for imx27.dtsi from the beginning?

Shawn

[1] http://article.gmane.org/gmane.linux.ports.arm.kernel/260404

> +
> +				i2c {
> +					pinctrl_i2c_1: i2c-1 {
> +						fsl,pins = <
> +							MX27_PAD_I2C_DATA__I2C_DATA 0x0
> +							MX27_PAD_I2C_CLK__I2C_CLK 0x0
> +						>;
> +					};
> +
> +					pinctrl_i2c_2: i2c-2 {
> +						fsl,pins = <
> +							MX27_PAD_I2C2_SDA__I2C2_SDA 0x0
> +							MX27_PAD_I2C2_SCL__I2C2_SCL 0x0
> +						>;
> +					};
> +				};
> +
> +				owire {
> +					pinctrl_owire_1: owire-1 {
> +						fsl,pins = <
> +							MX27_PAD_RTCK__OWIRE 0x0
> +						>;
> +					};
> +				};
> +
> +				uart {
> +					pinctrl_uart_1: uart-1 {
> +						fsl,pins = <
> +							MX27_PAD_UART1_TXD__UART1_TXD 0x0
> +							MX27_PAD_UART1_RXD__UART1_RXD 0x0
> +							MX27_PAD_UART1_CTS__UART1_CTS 0x0
> +							MX27_PAD_UART1_RTS__UART1_RTS 0x0
> +						>;
> +					};
> +
> +					pinctrl_uart_2: uart-2 {
> +						fsl,pins = <
> +							MX27_PAD_UART2_TXD__UART2_TXD 0x0
> +							MX27_PAD_UART2_RXD__UART2_RXD 0x0
> +							MX27_PAD_UART2_CTS__UART2_CTS 0x0
> +							MX27_PAD_UART2_RTS__UART2_RTS 0x0
> +						>;
> +					};
> +
> +					pinctrl_uart_3: uart-3 {
> +						fsl,pins = <
> +							MX27_PAD_UART3_TXD__UART3_TXD 0x0
> +							MX27_PAD_UART3_RXD__UART3_RXD 0x0
> +							MX27_PAD_UART3_CTS__UART3_CTS 0x0
> +							MX27_PAD_UART3_RTS__UART3_RTS 0x0
> +						>;
> +					};
> +				};
> +			};
> +
>  			gpio1: gpio@10015000 {
>  				compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
>  				reg = <0x10015000 0x100>;
> -- 
> 1.8.4.rc3
>
Markus Pargmann Aug. 31, 2013, 6:29 a.m. UTC | #3
Hi Sascha,

On Tue, Aug 20, 2013 at 09:14:11AM +0200, Sascha Hauer wrote:
> On Mon, Aug 19, 2013 at 04:07:11PM +0200, Markus Pargmann wrote:
> > Pinctrl driver node and pin group definitions for other driver nodes.
> > 
> > Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
> > ---
> > +					pinctrl_uart_1: uart-1 {
> > +						fsl,pins = <
> > +							MX27_PAD_UART1_TXD__UART1_TXD 0x0
> > +							MX27_PAD_UART1_RXD__UART1_RXD 0x0
> > +							MX27_PAD_UART1_CTS__UART1_CTS 0x0
> > +							MX27_PAD_UART1_RTS__UART1_RTS 0x0
> > +						>;
> > +					};
> 
> The above either misses a group number or an uart number. We need
> pinctrl_uart<uartno>_<groupno>

Fixed.

> 
> Also this doesn't scale very good. For boards without RTS/CTS we would have
> to add a completely different group. For the FEC I've seen different
> groups with a dozen pins each which differ in only a single pin.
> 
> I therefore suggest (and Shawn acked the general idea already) to
> do this:
> 
> 	pinctrl_uart1_1: uart1-1 {
> 		fsl,pins = <
> 			MX27_PAD_UART1_TXD__UART1_TXD 0x0
> 			MX27_PAD_UART1_RXD__UART1_RXD 0x0
> 		>;
> 	};
> 
> 	pinctrl_uart1_rtscts_1: uart1-rtscts-1 {
> 		fsl,pins = <
> 			MX27_PAD_UART1_CTS__UART1_CTS 0x0
> 			MX27_PAD_UART1_RTS__UART1_RTS 0x0
> 		>;
> 	};

I changed the uart groups accordingly.

Thanks,

Markus
Markus Pargmann Aug. 31, 2013, 6:31 a.m. UTC | #4
On Wed, Aug 21, 2013 at 09:30:36AM +0800, Shawn Guo wrote:
> On Mon, Aug 19, 2013 at 04:07:11PM +0200, Markus Pargmann wrote:
> > Pinctrl driver node and pin group definitions for other driver nodes.
> > 
> > Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
> > ---
> >  arch/arm/boot/dts/imx27.dtsi | 84 ++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 84 insertions(+)
> > 
> > diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
> > index 76cd89f..b9477d6 100644
> > --- a/arch/arm/boot/dts/imx27.dtsi
> > +++ b/arch/arm/boot/dts/imx27.dtsi
> > @@ -10,6 +10,7 @@
> >   */
> >  
> >  #include "skeleton.dtsi"
> > +#include "imx27-pinfunc.h"
> >  
> >  / {
> >  	aliases {
> > @@ -235,6 +236,89 @@
> >  				status = "disabled";
> >  			};
> >  
> > +			iomuxc: iomuxc@10015000 {
> > +				compatible = "fsl,imx27-iomuxc";
> > +				reg = <0x10015000 0x600>;
> > +
> > +				fec {
> > +					pinctrl_fec_1: fec-1 {
> > +						fsl,pins = <
> > +							MX27_PAD_SD3_CMD__FEC_TXD0 0x0
> > +							MX27_PAD_SD3_CLK__FEC_TXD1 0x0
> > +							MX27_PAD_ATA_DATA0__FEC_TXD2 0x0
> > +							MX27_PAD_ATA_DATA1__FEC_TXD3 0x0
> > +							MX27_PAD_ATA_DATA2__FEC_RX_ER 0x0
> > +							MX27_PAD_ATA_DATA3__FEC_RXD1 0x0
> > +							MX27_PAD_ATA_DATA4__FEC_RXD2 0x0
> > +							MX27_PAD_ATA_DATA5__FEC_RXD3 0x0
> > +							MX27_PAD_ATA_DATA6__FEC_MDIO 0x0
> > +							MX27_PAD_ATA_DATA7__FEC_MDC 0x0
> > +							MX27_PAD_ATA_DATA8__FEC_CRS 0x0
> > +							MX27_PAD_ATA_DATA9__FEC_TX_CLK 0x0
> > +							MX27_PAD_ATA_DATA10__FEC_RXD0 0x0
> > +							MX27_PAD_ATA_DATA11__FEC_RX_DV 0x0
> > +							MX27_PAD_ATA_DATA12__FEC_RX_CLK 0x0
> > +							MX27_PAD_ATA_DATA13__FEC_COL 0x0
> > +							MX27_PAD_ATA_DATA14__FEC_TX_ER 0x0
> > +							MX27_PAD_ATA_DATA15__FEC_TX_EN 0x0
> > +						>;
> > +					};
> > +				};
> 
> I like the idea [1] from Alexander Shiyan that maintains all these
> pinctrl setting entries outside the main device nodes structure.  Can
> you please do that for imx27.dtsi from the beginning?

Yes, the seperation looks better, I changed it.

Regards,

Markus

> 
> Shawn
> 
> [1] http://article.gmane.org/gmane.linux.ports.arm.kernel/260404
> 
> > +
> > +				i2c {
> > +					pinctrl_i2c_1: i2c-1 {
> > +						fsl,pins = <
> > +							MX27_PAD_I2C_DATA__I2C_DATA 0x0
> > +							MX27_PAD_I2C_CLK__I2C_CLK 0x0
> > +						>;
> > +					};
> > +
> > +					pinctrl_i2c_2: i2c-2 {
> > +						fsl,pins = <
> > +							MX27_PAD_I2C2_SDA__I2C2_SDA 0x0
> > +							MX27_PAD_I2C2_SCL__I2C2_SCL 0x0
> > +						>;
> > +					};
> > +				};
> > +
> > +				owire {
> > +					pinctrl_owire_1: owire-1 {
> > +						fsl,pins = <
> > +							MX27_PAD_RTCK__OWIRE 0x0
> > +						>;
> > +					};
> > +				};
> > +
> > +				uart {
> > +					pinctrl_uart_1: uart-1 {
> > +						fsl,pins = <
> > +							MX27_PAD_UART1_TXD__UART1_TXD 0x0
> > +							MX27_PAD_UART1_RXD__UART1_RXD 0x0
> > +							MX27_PAD_UART1_CTS__UART1_CTS 0x0
> > +							MX27_PAD_UART1_RTS__UART1_RTS 0x0
> > +						>;
> > +					};
> > +
> > +					pinctrl_uart_2: uart-2 {
> > +						fsl,pins = <
> > +							MX27_PAD_UART2_TXD__UART2_TXD 0x0
> > +							MX27_PAD_UART2_RXD__UART2_RXD 0x0
> > +							MX27_PAD_UART2_CTS__UART2_CTS 0x0
> > +							MX27_PAD_UART2_RTS__UART2_RTS 0x0
> > +						>;
> > +					};
> > +
> > +					pinctrl_uart_3: uart-3 {
> > +						fsl,pins = <
> > +							MX27_PAD_UART3_TXD__UART3_TXD 0x0
> > +							MX27_PAD_UART3_RXD__UART3_RXD 0x0
> > +							MX27_PAD_UART3_CTS__UART3_CTS 0x0
> > +							MX27_PAD_UART3_RTS__UART3_RTS 0x0
> > +						>;
> > +					};
> > +				};
> > +			};
> > +
> >  			gpio1: gpio@10015000 {
> >  				compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
> >  				reg = <0x10015000 0x100>;
> > -- 
> > 1.8.4.rc3
> > 
> 
>
diff mbox

Patch

diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
index 76cd89f..b9477d6 100644
--- a/arch/arm/boot/dts/imx27.dtsi
+++ b/arch/arm/boot/dts/imx27.dtsi
@@ -10,6 +10,7 @@ 
  */
 
 #include "skeleton.dtsi"
+#include "imx27-pinfunc.h"
 
 / {
 	aliases {
@@ -235,6 +236,89 @@ 
 				status = "disabled";
 			};
 
+			iomuxc: iomuxc@10015000 {
+				compatible = "fsl,imx27-iomuxc";
+				reg = <0x10015000 0x600>;
+
+				fec {
+					pinctrl_fec_1: fec-1 {
+						fsl,pins = <
+							MX27_PAD_SD3_CMD__FEC_TXD0 0x0
+							MX27_PAD_SD3_CLK__FEC_TXD1 0x0
+							MX27_PAD_ATA_DATA0__FEC_TXD2 0x0
+							MX27_PAD_ATA_DATA1__FEC_TXD3 0x0
+							MX27_PAD_ATA_DATA2__FEC_RX_ER 0x0
+							MX27_PAD_ATA_DATA3__FEC_RXD1 0x0
+							MX27_PAD_ATA_DATA4__FEC_RXD2 0x0
+							MX27_PAD_ATA_DATA5__FEC_RXD3 0x0
+							MX27_PAD_ATA_DATA6__FEC_MDIO 0x0
+							MX27_PAD_ATA_DATA7__FEC_MDC 0x0
+							MX27_PAD_ATA_DATA8__FEC_CRS 0x0
+							MX27_PAD_ATA_DATA9__FEC_TX_CLK 0x0
+							MX27_PAD_ATA_DATA10__FEC_RXD0 0x0
+							MX27_PAD_ATA_DATA11__FEC_RX_DV 0x0
+							MX27_PAD_ATA_DATA12__FEC_RX_CLK 0x0
+							MX27_PAD_ATA_DATA13__FEC_COL 0x0
+							MX27_PAD_ATA_DATA14__FEC_TX_ER 0x0
+							MX27_PAD_ATA_DATA15__FEC_TX_EN 0x0
+						>;
+					};
+				};
+
+				i2c {
+					pinctrl_i2c_1: i2c-1 {
+						fsl,pins = <
+							MX27_PAD_I2C_DATA__I2C_DATA 0x0
+							MX27_PAD_I2C_CLK__I2C_CLK 0x0
+						>;
+					};
+
+					pinctrl_i2c_2: i2c-2 {
+						fsl,pins = <
+							MX27_PAD_I2C2_SDA__I2C2_SDA 0x0
+							MX27_PAD_I2C2_SCL__I2C2_SCL 0x0
+						>;
+					};
+				};
+
+				owire {
+					pinctrl_owire_1: owire-1 {
+						fsl,pins = <
+							MX27_PAD_RTCK__OWIRE 0x0
+						>;
+					};
+				};
+
+				uart {
+					pinctrl_uart_1: uart-1 {
+						fsl,pins = <
+							MX27_PAD_UART1_TXD__UART1_TXD 0x0
+							MX27_PAD_UART1_RXD__UART1_RXD 0x0
+							MX27_PAD_UART1_CTS__UART1_CTS 0x0
+							MX27_PAD_UART1_RTS__UART1_RTS 0x0
+						>;
+					};
+
+					pinctrl_uart_2: uart-2 {
+						fsl,pins = <
+							MX27_PAD_UART2_TXD__UART2_TXD 0x0
+							MX27_PAD_UART2_RXD__UART2_RXD 0x0
+							MX27_PAD_UART2_CTS__UART2_CTS 0x0
+							MX27_PAD_UART2_RTS__UART2_RTS 0x0
+						>;
+					};
+
+					pinctrl_uart_3: uart-3 {
+						fsl,pins = <
+							MX27_PAD_UART3_TXD__UART3_TXD 0x0
+							MX27_PAD_UART3_RXD__UART3_RXD 0x0
+							MX27_PAD_UART3_CTS__UART3_CTS 0x0
+							MX27_PAD_UART3_RTS__UART3_RTS 0x0
+						>;
+					};
+				};
+			};
+
 			gpio1: gpio@10015000 {
 				compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
 				reg = <0x10015000 0x100>;