All of lore.kernel.org
 help / color / mirror / Atom feed
* doubt about where to put pin-mux in MX28 based platform DT
@ 2013-03-06 17:02 Hector Palacios
       [not found] ` <5137769F.1000308-i7dp0qKlBMg@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Hector Palacios @ 2013-03-06 17:02 UTC (permalink / raw)
  To: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ
  Cc: fabio.estevam-KZfg59tc24xl57MIdRCFDg

Hello,

I'm creating the DT for a custom platform based on Freescale MX28 CPU and I have some 
doubts about where to add some pin mux configurations: whether in imx28.dtsi or in my 
platform dts.

A pair of examples folow:

Example #1. My platform is using a valid IOMUX for DUART TX/RX lines which is not 
covered in imx28.dtsi, namely the I2C0 pins. Since this is a valid IOMUX that can be 
used by other platforms, I'd say I should included it in imx28.dtsi:

diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
index 3fa6d19..8928b7b 100644
--- a/arch/arm/boot/dts/imx28.dtsi
+++ b/arch/arm/boot/dts/imx28.dtsi
@@ -186,6 +186,17 @@
                                         fsl,pull-up = <0>;
                                 };

+                               duart_pins_c: duart@2 {
+                                       reg = <2>;
+                                       fsl,pinmux-ids = <
+                                               0x3182 /* MX28_PAD_I2C0_SCL__DUART_RX */
+                                               0x3192 /* MX28_PAD_I2C0_SDA__DUART_TX */
+                                       >;
+                                       fsl,drive-strength = <0>;
+                                       fsl,voltage = <1>;
+                                       fsl,pull-up = <0>;
+                               };
+
                                 duart_4pins_a: duart-4pins@0 {
                                         reg = <0>;
                                         fsl,pinmux-ids = <

Example #2. My platform assembles a NAND chip which is powered at 1.8V. The imx28.dtsi 
has a configuration 'gpmi_pins_a: gpmi-nand@0' that configures the pins at 3.3V.
Should I create another entry here 'gpmi_pins_b: gpmi-nand@1' with fsl,voltage = <0>; 
or should I create a specific entry in my platform's DT instead?
What is the convention?
-- 
Héctor Palacios

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: doubt about where to put pin-mux in MX28 based platform DT
  2013-03-06 17:02 doubt about where to put pin-mux in MX28 based platform DT Hector Palacios
@ 2013-03-07 13:06     ` Maxime Ripard
  0 siblings, 0 replies; 5+ messages in thread
From: Maxime Ripard @ 2013-03-07 13:06 UTC (permalink / raw)
  To: Hector Palacios
  Cc: fabio.estevam-KZfg59tc24xl57MIdRCFDg,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Sascha Hauer,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

Hi Hector,

Le 06/03/2013 18:02, Hector Palacios a écrit :
> I'm creating the DT for a custom platform based on Freescale MX28 CPU
> and I have some doubts about where to add some pin mux configurations:
> whether in imx28.dtsi or in my platform dts.
> 
> A pair of examples folow:
> 
> Example #1. My platform is using a valid IOMUX for DUART TX/RX lines
> which is not covered in imx28.dtsi, namely the I2C0 pins. Since this is
> a valid IOMUX that can be used by other platforms, I'd say I should
> included it in imx28.dtsi:
> 
> diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
> index 3fa6d19..8928b7b 100644
> --- a/arch/arm/boot/dts/imx28.dtsi
> +++ b/arch/arm/boot/dts/imx28.dtsi
> @@ -186,6 +186,17 @@
>                                         fsl,pull-up = <0>;
>                                 };
> 
> +                               duart_pins_c: duart@2 {
> +                                       reg = <2>;
> +                                       fsl,pinmux-ids = <
> +                                               0x3182 /*
> MX28_PAD_I2C0_SCL__DUART_RX */
> +                                               0x3192 /*
> MX28_PAD_I2C0_SDA__DUART_TX */
> +                                       >;
> +                                       fsl,drive-strength = <0>;
> +                                       fsl,voltage = <1>;
> +                                       fsl,pull-up = <0>;
> +                               };
> +
>                                 duart_4pins_a: duart-4pins@0 {
>                                         reg = <0>;
>                                         fsl,pinmux-ids = <

That's right.

> Example #2. My platform assembles a NAND chip which is powered at 1.8V.
> The imx28.dtsi has a configuration 'gpmi_pins_a: gpmi-nand@0' that
> configures the pins at 3.3V.
> Should I create another entry here 'gpmi_pins_b: gpmi-nand@1' with
> fsl,voltage = <0>; or should I create a specific entry in my platform's
> DT instead?
> What is the convention?

Since it's the same pinset, I'd rather go for using gpmi_pins_a in your
NAND chip node, but also overload the fsl,voltage property of
gpmi_pins_a in your board device tree.

That would give something like

pinctrl@80018000 {
	gpmi_pins_a: gpmi-nand@0 {
		fsl,voltage = <0>;
	};
};

nand@deadbeef {
	pinctrl-names = "default";
	pinctrl-0 = <&gpmi_pins_a>;
}

But maybe Sascha will have a different view on this.

Maxime

-- 
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* doubt about where to put pin-mux in MX28 based platform DT
@ 2013-03-07 13:06     ` Maxime Ripard
  0 siblings, 0 replies; 5+ messages in thread
From: Maxime Ripard @ 2013-03-07 13:06 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Hector,

Le 06/03/2013 18:02, Hector Palacios a ?crit :
> I'm creating the DT for a custom platform based on Freescale MX28 CPU
> and I have some doubts about where to add some pin mux configurations:
> whether in imx28.dtsi or in my platform dts.
> 
> A pair of examples folow:
> 
> Example #1. My platform is using a valid IOMUX for DUART TX/RX lines
> which is not covered in imx28.dtsi, namely the I2C0 pins. Since this is
> a valid IOMUX that can be used by other platforms, I'd say I should
> included it in imx28.dtsi:
> 
> diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
> index 3fa6d19..8928b7b 100644
> --- a/arch/arm/boot/dts/imx28.dtsi
> +++ b/arch/arm/boot/dts/imx28.dtsi
> @@ -186,6 +186,17 @@
>                                         fsl,pull-up = <0>;
>                                 };
> 
> +                               duart_pins_c: duart at 2 {
> +                                       reg = <2>;
> +                                       fsl,pinmux-ids = <
> +                                               0x3182 /*
> MX28_PAD_I2C0_SCL__DUART_RX */
> +                                               0x3192 /*
> MX28_PAD_I2C0_SDA__DUART_TX */
> +                                       >;
> +                                       fsl,drive-strength = <0>;
> +                                       fsl,voltage = <1>;
> +                                       fsl,pull-up = <0>;
> +                               };
> +
>                                 duart_4pins_a: duart-4pins at 0 {
>                                         reg = <0>;
>                                         fsl,pinmux-ids = <

That's right.

> Example #2. My platform assembles a NAND chip which is powered at 1.8V.
> The imx28.dtsi has a configuration 'gpmi_pins_a: gpmi-nand at 0' that
> configures the pins at 3.3V.
> Should I create another entry here 'gpmi_pins_b: gpmi-nand at 1' with
> fsl,voltage = <0>; or should I create a specific entry in my platform's
> DT instead?
> What is the convention?

Since it's the same pinset, I'd rather go for using gpmi_pins_a in your
NAND chip node, but also overload the fsl,voltage property of
gpmi_pins_a in your board device tree.

That would give something like

pinctrl at 80018000 {
	gpmi_pins_a: gpmi-nand at 0 {
		fsl,voltage = <0>;
	};
};

nand at deadbeef {
	pinctrl-names = "default";
	pinctrl-0 = <&gpmi_pins_a>;
}

But maybe Sascha will have a different view on this.

Maxime

-- 
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: doubt about where to put pin-mux in MX28 based platform DT
       [not found]     ` <513890D3.5060905-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
@ 2013-03-21 16:57       ` Hector Palacios
       [not found]         ` <514B3C15.8080103-i7dp0qKlBMg@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Hector Palacios @ 2013-03-21 16:57 UTC (permalink / raw)
  To: maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8
  Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Palacios, Hector,
	Fabio Estevam, s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ

Hello Maxime,

On 03/07/2013 02:06 PM, Maxime Ripard wrote:
> Hi Hector,
>
> Le 06/03/2013 18:02, Hector Palacios a écrit :
>> I'm creating the DT for a custom platform based on Freescale MX28 CPU
>> and I have some doubts about where to add some pin mux configurations:
>> whether in imx28.dtsi or in my platform dts.
>>
>> A pair of examples folow:
>>
>> Example #1. My platform is using a valid IOMUX for DUART TX/RX lines
>> which is not covered in imx28.dtsi, namely the I2C0 pins. Since this is
>> a valid IOMUX that can be used by other platforms, I'd say I should
>> included it in imx28.dtsi:
>>
>> diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
>> index 3fa6d19..8928b7b 100644
>> --- a/arch/arm/boot/dts/imx28.dtsi
>> +++ b/arch/arm/boot/dts/imx28.dtsi
>> @@ -186,6 +186,17 @@
>>                                          fsl,pull-up = <0>;
>>                                  };
>>
>> +                               duart_pins_c: duart@2 {
>> +                                       reg = <2>;
>> +                                       fsl,pinmux-ids = <
>> +                                               0x3182 /*
>> MX28_PAD_I2C0_SCL__DUART_RX */
>> +                                               0x3192 /*
>> MX28_PAD_I2C0_SDA__DUART_TX */
>> +                                       >;
>> +                                       fsl,drive-strength = <0>;
>> +                                       fsl,voltage = <1>;
>> +                                       fsl,pull-up = <0>;
>> +                               };
>> +
>>                                  duart_4pins_a: duart-4pins@0 {
>>                                          reg = <0>;
>>                                          fsl,pinmux-ids = <
>
> That's right.

I'm getting into more cases like this: valid IOMUX configurations that my platform 
uses but are not included into imx28.dtsi.
So before adding new entries I was wondering whether it is a good idea to have IOMUX 
configurations in this include file at all. There are multiple valid combinations so 
why not adding these to the specific platform DTS files instead?

Existing IOMUX configurations in imx28.dtsi that later are not used by platform *.dts 
files are 'polluting' the final DTB with unused nodes.
Do other architectures follow the same approach?
Maybe there is a good reason that I simply don't see.

Hector

>
>> Example #2. My platform assembles a NAND chip which is powered at 1.8V.
>> The imx28.dtsi has a configuration 'gpmi_pins_a: gpmi-nand@0' that
>> configures the pins at 3.3V.
>> Should I create another entry here 'gpmi_pins_b: gpmi-nand@1' with
>> fsl,voltage = <0>; or should I create a specific entry in my platform's
>> DT instead?
>> What is the convention?
>
> Since it's the same pinset, I'd rather go for using gpmi_pins_a in your
> NAND chip node, but also overload the fsl,voltage property of
> gpmi_pins_a in your board device tree.
>
> That would give something like
>
> pinctrl@80018000 {
> 	gpmi_pins_a: gpmi-nand@0 {
> 		fsl,voltage = <0>;
> 	};
> };
>
> nand@deadbeef {
> 	pinctrl-names = "default";
> 	pinctrl-0 = <&gpmi_pins_a>;
> }
>
> But maybe Sascha will have a different view on this.
>
> Maxime
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: doubt about where to put pin-mux in MX28 based platform DT
       [not found]         ` <514B3C15.8080103-i7dp0qKlBMg@public.gmane.org>
@ 2013-03-22 13:28           ` Maxime Ripard
  0 siblings, 0 replies; 5+ messages in thread
From: Maxime Ripard @ 2013-03-22 13:28 UTC (permalink / raw)
  To: Hector Palacios
  Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Fabio Estevam,
	s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ

Hi Hector,

Le 21/03/2013 17:57, Hector Palacios a écrit :
> On 03/07/2013 02:06 PM, Maxime Ripard wrote:
>> Hi Hector,
>>
>> Le 06/03/2013 18:02, Hector Palacios a écrit :
>>> I'm creating the DT for a custom platform based on Freescale MX28 CPU
>>> and I have some doubts about where to add some pin mux configurations:
>>> whether in imx28.dtsi or in my platform dts.
>>>
>>> A pair of examples folow:
>>>
>>> Example #1. My platform is using a valid IOMUX for DUART TX/RX lines
>>> which is not covered in imx28.dtsi, namely the I2C0 pins. Since this is
>>> a valid IOMUX that can be used by other platforms, I'd say I should
>>> included it in imx28.dtsi:
>>>
>>> diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
>>> index 3fa6d19..8928b7b 100644
>>> --- a/arch/arm/boot/dts/imx28.dtsi
>>> +++ b/arch/arm/boot/dts/imx28.dtsi
>>> @@ -186,6 +186,17 @@
>>>                                          fsl,pull-up = <0>;
>>>                                  };
>>>
>>> +                               duart_pins_c: duart@2 {
>>> +                                       reg = <2>;
>>> +                                       fsl,pinmux-ids = <
>>> +                                               0x3182 /*
>>> MX28_PAD_I2C0_SCL__DUART_RX */
>>> +                                               0x3192 /*
>>> MX28_PAD_I2C0_SDA__DUART_TX */
>>> +                                       >;
>>> +                                       fsl,drive-strength = <0>;
>>> +                                       fsl,voltage = <1>;
>>> +                                       fsl,pull-up = <0>;
>>> +                               };
>>> +
>>>                                  duart_4pins_a: duart-4pins@0 {
>>>                                          reg = <0>;
>>>                                          fsl,pinmux-ids = <
>>
>> That's right.
> 
> I'm getting into more cases like this: valid IOMUX configurations that
> my platform uses but are not included into imx28.dtsi.
> So before adding new entries I was wondering whether it is a good idea
> to have IOMUX configurations in this include file at all. There are
> multiple valid combinations so why not adding these to the specific
> platform DTS files instead?
> 
> Existing IOMUX configurations in imx28.dtsi that later are not used by
> platform *.dts files are 'polluting' the final DTB with unused nodes.
> Do other architectures follow the same approach?
> Maybe there is a good reason that I simply don't see.

My view on this is: as long as a pinmux combination is defined in the
datasheet, we should add it to the DTSI to avoid duplication and errors
in boards DTS. And all the muxing that is board specific (like which pin
should I mux to the GPIO function to use the LED on my board) should be
in the board DTS.

You have a point about the final DTB size, but I don't think we care
that much...

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-03-22 13:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-06 17:02 doubt about where to put pin-mux in MX28 based platform DT Hector Palacios
     [not found] ` <5137769F.1000308-i7dp0qKlBMg@public.gmane.org>
2013-03-07 13:06   ` Maxime Ripard
2013-03-07 13:06     ` Maxime Ripard
     [not found]     ` <513890D3.5060905-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2013-03-21 16:57       ` Hector Palacios
     [not found]         ` <514B3C15.8080103-i7dp0qKlBMg@public.gmane.org>
2013-03-22 13:28           ` Maxime Ripard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.