AnsweredAssumed Answered

i.MX53 System Development User’s Guide GPIO Chapter Outdated

Question asked by TomE on Jan 26, 2016
Latest reply on Jan 27, 2016 by igorpadykov

This problem came up in this post:

 

https://community.freescale.com/thread/384191

 

Igorpadycov wrote:

Guidelines for code modifications are given in Chapter 12 Configuring the IOMUX

Controller (IOMUXC) i.MX53 System Development User’s Guide (rev.1, 3/2011)

http://www.freescale.com/files/32bit/doc/user_guide/MX53UG.pdf

 

The link above now point to "(Rev. 2, 06/2015)" of the document, but Chapter 12 hasn't change at all.

 

Which is a problem because it doesn't match Freescale's code releases for this chip.

 

The 2011 version got outdated about a month after its release, and the 2015 version didn't fix that problem.

 

MX53UG.pdf says that the "arch/arm/plat-mxc/include/mach/iomux-mx53.h" file should contain lines like:

 

#define MX53_PAD_ATA_CS_1__UART3_RXD IOMUX_PAD (0x620, 0x2A0, 4, 0x888, 3, MX53_UART_PAD_CTRL)

 

That was correct up to and including the "imx_2.6.35_10.12.01" version of Freescale's code, which is here:

 

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/plat-mxc/include/mach/iomux-mx53.h?h=imx_2.6.35_10.12.01

 

In the very next version (11.04.01), this changed from a 746 line file configured specifically to the board in use to a 2,433 line file that includes every possible pin configuration, where the above single line has changed to this:

 

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/plat-mxc/include/mach/iomux-mx53.h?h=imx_2.6.35_11.04.01

 

#define _MX53_PAD_PATA_CS_1__PATA_CS_1          IOMUX_PAD(0x620, 0x2A0, 0, 0x0, 0, 0)
#define _MX53_PAD_PATA_CS_1__GPIO7_10           IOMUX_PAD(0x620, 0x2A0, 1, 0x0, 0, 0)
#define _MX53_PAD_PATA_CS_1__UART3_RXD_MUX      IOMUX_PAD(0x620, 0x2A0, 4, 0x888, 3, 0)
#define _MX53_PAD_PATA_CS_1__USBPHY1_DATAOUT_6  IOMUX_PAD(0x620, 0x2A0, 7, 0x0, 0, 0

 

#define MX53_PAD_PATA_CS_1__PATA_CS_1           (_MX53_PAD_PATA_CS_1__PATA_CS_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX53_PAD_PATA_CS_1__GPIO7_10            (_MX53_PAD_PATA_CS_1__GPIO7_10 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX53_PAD_PATA_CS_1__UART3_RXD_MUX       (_MX53_PAD_PATA_CS_1__UART3_RXD_MUX | MUX_PAD_CTRL(MX53_UART_PAD_CTRL))
#define MX53_PAD_PATA_CS_1__USBPHY1_DATAOUT_6   (_MX53_PAD_PATA_CS_1__USBPHY1_DATAOUT_6 | MUX_PAD_CTRL(NO_PAD_CTRL))

 

This means that the "iomux-mx53.h" file doesn't needs to be edited like the instructions say it does, as only the appropriate pin name in this file needs to be entered into the "machine layer file".

 

That change was made to the code in February 2011, but apparently released in April 2011, only one month after the User Guide was released in March 2011. But this wasn't picked up in the nearly 5 years since, and has missed making it into the next version.

 

According to this page, the currently supported versions of Linux for the i.MX53 products are as listed:

 

http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors-based-on-arm-cores/i.mx53-processors/i.mx53-software-and-development-tool-resources:IMX53_SW?fsrch=1&sr=6&pageNum=1

 

QSB: Linux 2.6.35 Source Code Files and documentation 11.09
Sabre Tablet: Linux 2.6.35 Source Code Files and documentation 11.05
Sabre Automotive: Linux 2.6.35 Source Code Files and documentation 11.03

 

All of those with the possible exception of the latter (11.03 and 11.04 dates don't match between package and kernel) aren't covered by the documentation.

 

As a separate problem, the last version matching the documentation was the last version that actually WORKED. All of the following ones seem to corrupt the pin configuration, disabling the pullups and changing the Drive Strength. That's what the other post is about. This was fixed in the Android releases and the code used for i.MX6 though.

 

Tom

Outcomes