Re: [U-Boot] [PATCH V2] imx: mx25: Remove SION bit in all pin-mux that are safe

2018-01-25 Thread Fabio Estevam
On Thu, Jan 25, 2018 at 10:43 AM, Michael Trimarchi
 wrote:
> SION bit should be used in the situation that we need
> to read back the value of a pin and should not be set by
> default macro.
>
> We get some mulfuction as raised by following thread

malfunction

>
> https://www.spinics.net/lists/linux-usb/msg162574.html
>
> As reported by this application note:
> https://www.nxp.com/docs/en/application-note/AN5078.pdf
>
> The software input on (SION) bit is an option to force an input
> path to be active regardless of the value driven by the
> corresponding module. It is used when the nature direction
> of a pin depending on selected alternative function is an output,
> but it is needed to read the real logic value on a pin.
>
> The SION bit can be used in:
> • Loopback: the module of a selected alternative function drives
> the pad and also receives the pad value as an input
> • GPIO capture: the module of a selected alternative function
> drives the pin and the value is captured by the GPIO
>
> SION pin is not necessary when the pin is configured as a peripheral

SION bit

Apart from these minor typos:

Reviewed-by: Fabio Estevam 
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH V2] imx: mx25: Remove SION bit in all pin-mux that are safe

2018-01-25 Thread Michael Trimarchi
SION bit should be used in the situation that we need
to read back the value of a pin and should not be set by
default macro.

We get some mulfuction as raised by following thread

https://www.spinics.net/lists/linux-usb/msg162574.html

As reported by this application note:
https://www.nxp.com/docs/en/application-note/AN5078.pdf

The software input on (SION) bit is an option to force an input
path to be active regardless of the value driven by the
corresponding module. It is used when the nature direction
of a pin depending on selected alternative function is an output,
but it is needed to read the real logic value on a pin.

The SION bit can be used in:
• Loopback: the module of a selected alternative function drives
the pad and also receives the pad value as an input
• GPIO capture: the module of a selected alternative function
drives the pin and the value is captured by the GPIO

SION pin is not necessary when the pin is configured as a peripheral
apart specific silicon bug. If an application needs to have this
set, this should be done in board file or in dts file

Signed-off-by: Michael Trimarchi 
---
Changes V1->V2:
- some english typo
- avoid changes from 0x00 to 0 or 0x01 to 1 when are not needed
- preserve one SION bit on sdcard for a bug in silicon and add
  linux comment on it

---
 arch/arm/include/asm/arch-mx25/iomux-mx25.h | 571 ++--
 1 file changed, 290 insertions(+), 281 deletions(-)

diff --git a/arch/arm/include/asm/arch-mx25/iomux-mx25.h 
b/arch/arm/include/asm/arch-mx25/iomux-mx25.h
index 5b2863e..437f122 100644
--- a/arch/arm/include/asm/arch-mx25/iomux-mx25.h
+++ b/arch/arm/include/asm/arch-mx25/iomux-mx25.h
@@ -36,59 +36,59 @@ enum {
MX25_PAD_A13__A13   = IOMUX_PAD(0x22C, 0x00c, 0x00, 
0, 0, NO_PAD_CTRL),
MX25_PAD_A13__GPIO_4_1  = IOMUX_PAD(0x22C, 0x00c, 0x05, 
0, 0, NO_PAD_CTRL),
 
-   MX25_PAD_A14__A14   = IOMUX_PAD(0x230, 0x010, 0x10, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A14__GPIO_2_0  = IOMUX_PAD(0x230, 0x010, 0x15, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A14__A14   = IOMUX_PAD(0x230, 0x010, 0x00, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A14__GPIO_2_0  = IOMUX_PAD(0x230, 0x010, 0x05, 
0, 0, NO_PAD_CTRL),
 
-   MX25_PAD_A15__A15   = IOMUX_PAD(0x234, 0x014, 0x10, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A15__GPIO_2_1  = IOMUX_PAD(0x234, 0x014, 0x15, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A15__A15   = IOMUX_PAD(0x234, 0x014, 0x00, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A15__GPIO_2_1  = IOMUX_PAD(0x234, 0x014, 0x05, 
0, 0, NO_PAD_CTRL),
 
-   MX25_PAD_A16__A16   = IOMUX_PAD(0x000, 0x018, 0x10, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A16__GPIO_2_2  = IOMUX_PAD(0x000, 0x018, 0x15, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A16__A16   = IOMUX_PAD(0x000, 0x018, 0x00, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A16__GPIO_2_2  = IOMUX_PAD(0x000, 0x018, 0x05, 
0, 0, NO_PAD_CTRL),
 
-   MX25_PAD_A17__A17   = IOMUX_PAD(0x238, 0x01c, 0x10, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A17__GPIO_2_3  = IOMUX_PAD(0x238, 0x01c, 0x15, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A17__A17   = IOMUX_PAD(0x238, 0x01c, 0x00, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A17__GPIO_2_3  = IOMUX_PAD(0x238, 0x01c, 0x05, 
0, 0, NO_PAD_CTRL),
 
-   MX25_PAD_A18__A18   = IOMUX_PAD(0x23c, 0x020, 0x10, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A18__GPIO_2_4  = IOMUX_PAD(0x23c, 0x020, 0x15, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A18__FEC_COL   = IOMUX_PAD(0x23c, 0x020, 0x17, 
0x504, 0, NO_PAD_CTRL),
+   MX25_PAD_A18__A18   = IOMUX_PAD(0x23c, 0x020, 0x00, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A18__GPIO_2_4  = IOMUX_PAD(0x23c, 0x020, 0x05, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A18__FEC_COL   = IOMUX_PAD(0x23c, 0x020, 0x07, 
0x504, 0, NO_PAD_CTRL),
 
-   MX25_PAD_A19__A19   = IOMUX_PAD(0x240, 0x024, 0x10, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A19__FEC_RX_ER = IOMUX_PAD(0x240, 0x024, 0x17, 
0x518, 0, NO_PAD_CTRL),
-   MX25_PAD_A19__GPIO_2_5  = IOMUX_PAD(0x240, 0x024, 0x15, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A19__A19   = IOMUX_PAD(0x240, 0x024, 0x00, 
0, 0, NO_PAD_CTRL),
+   MX25_PAD_A19__FEC_RX_ER = IOMUX_PAD(0x240, 0x024, 0x07, 
0x518, 0, NO_PAD_CTRL),
+   MX25_PAD_A19__GPIO_2_5  = IOMUX_PAD(0x240, 0x024, 0x05, 
0, 0, NO_PAD_CTRL),
 
-   MX25_PAD_A20__A20   = IOMUX_PAD(0x244, 0x028, 0x10, 
0, 0, NO_PAD_CTRL),
-   MX25_PAD_A20__GPIO_2_6  = IOMUX_PAD(0x244,