How do you use IOMUX generated files?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How do you use IOMUX generated files?

Jump to solution
4,757 Views
bonzo
NXP Employee
NXP Employee

I have been using IOMux Tool to set up the peripherals.  One of the features it the ability of this tool to generate the configuration files for each peripheral.

But how do I use these configuration files to add to LTIB for a custom BSP?

The IOMux_Tool_v3_Users_Manual.pdf and BSP_Porting_Guide_L3.035_1.1.0.pdf do not mention how to use the generated files.

Is there other documentation I'm missing?

Also...after installing LTIB, I noticed the file in the kernel tree /rpm/BUILD/linux-3.0.35/arch/arm/plat-mxc/include/mach/iomux-mx6q.h. 

Inside this file, there is a line that says, "Auto Generate file, please don't edit it"

So the next question is, what generated this file?  It's not LTIB as I removed it.  Was it generated when I installed LTIB?

Labels (2)
Tags (3)
0 Kudos
1 Solution
1,046 Views
JimMalone
Contributor III

Hi Brad,

I've copied an email thread that I had with my local FAEs on this very issue.  This conversation occured in August 2012 and I have not heard of the issue being fixed yet.

----------------------------------------------------------------------------------------

Hi,

We have the IOMux 3.2.1.28034 for the I.MX6 Solo/DualLite/Dual/Quad.  I went to generate code and that works.

    

What I don’t understand is how it is being used in Linux.  The current board configuration for the i.MX6 boards is using
something completely different but with hints of iomux headers.  None of the headers are the same format as IOMux spits out so I am very confused.

I can adapt to the existing implementation in the kernel, but I am more than a little frustrated that the IOMux tool does not document (that I can find) how to move these files that are generated on a PC to the Linux kernel build.  The current kernel method uses macros.  For example in the boards_sabresd.h file used in the Sabre SD kernel, the following (partial) structure exists:

    

static iomux_v3_cfg_t mx6q_sabresd_pads[] = { /* AUDMUX */

     MX6Q_PAD_CSI0_DAT4__AUDMUX_AUD3_TXC,

     MX6Q_PAD_CSI0_DAT5__AUDMUX_AUD3_TXD,

           MX6Q_PAD_CSI0_DAT6__AUDMUX_AUD3_TXFS,

           MX6Q_PAD_CSI0_DAT7__AUDMUX_AUD3_RXD,

           

};

These macros have the form of pad on the left of the double underscore “__” and function on the right.  Converting this by hand from the generated IOMux code seems fraught with peril and very error prone.

    

Any suggestions?

Thanks,

Jim

Reply:

Hi Jim,

  

The Linux BSP coding format that you describe here below is brand new to all of us. It has only recently been implemented for the MX6 (U-Boot & Kernel).

Unfortunately, the IOMux tool has not caught up with this new format yet.

  

We would all like to see the IOMux tool create compatible code. This has been requested, and the
implementation decision & timing are being discussed. We will keep you updated.

  

Sorry for the frustration this has created.

View solution in original post

0 Kudos
7 Replies
1,046 Views
YixingKong
Senior Contributor IV

Bradley, please click Correct Answer/Helpful Answer, if your question has been answered.

Thanks,

Yixing

0 Kudos
1,046 Views
qiang_li-mpu_se
NXP Employee
NXP Employee

For IOMUX Tool, when you want to config one pin as one function, it shows which registry and what value should be set. It will also generate sample codes.

But due to different OS code style, maybe it can't be used directly. For linux BSP, you'd better reference to BSP_Porting_Guide.

For iomux-mx6q.h, it had listed all configable setting for all pins, for a new board, the customer just need select some of them for use.

0 Kudos
1,046 Views
phil_martin
Contributor II

So a similar related question

- where does the Platform BSP fit into the u_boot & linux kernel?

- and how are the features of the BSP exposed to the user app?

0 Kudos
1,046 Views
qiang_li-mpu_se
NXP Employee
NXP Employee

The freescale uboot and kernel were implemented early than the IOMUX Tool.

For customer, when they implemented their own BSP, maybe they can use the IOMUX Tool directly. For Freescale released BSP, since the code is already there, we don't need re-create the IOMUX files again.

0 Kudos
1,047 Views
JimMalone
Contributor III

Hi Brad,

I've copied an email thread that I had with my local FAEs on this very issue.  This conversation occured in August 2012 and I have not heard of the issue being fixed yet.

----------------------------------------------------------------------------------------

Hi,

We have the IOMux 3.2.1.28034 for the I.MX6 Solo/DualLite/Dual/Quad.  I went to generate code and that works.

    

What I don’t understand is how it is being used in Linux.  The current board configuration for the i.MX6 boards is using
something completely different but with hints of iomux headers.  None of the headers are the same format as IOMux spits out so I am very confused.

I can adapt to the existing implementation in the kernel, but I am more than a little frustrated that the IOMux tool does not document (that I can find) how to move these files that are generated on a PC to the Linux kernel build.  The current kernel method uses macros.  For example in the boards_sabresd.h file used in the Sabre SD kernel, the following (partial) structure exists:

    

static iomux_v3_cfg_t mx6q_sabresd_pads[] = { /* AUDMUX */

     MX6Q_PAD_CSI0_DAT4__AUDMUX_AUD3_TXC,

     MX6Q_PAD_CSI0_DAT5__AUDMUX_AUD3_TXD,

           MX6Q_PAD_CSI0_DAT6__AUDMUX_AUD3_TXFS,

           MX6Q_PAD_CSI0_DAT7__AUDMUX_AUD3_RXD,

           

};

These macros have the form of pad on the left of the double underscore “__” and function on the right.  Converting this by hand from the generated IOMux code seems fraught with peril and very error prone.

    

Any suggestions?

Thanks,

Jim

Reply:

Hi Jim,

  

The Linux BSP coding format that you describe here below is brand new to all of us. It has only recently been implemented for the MX6 (U-Boot & Kernel).

Unfortunately, the IOMux tool has not caught up with this new format yet.

  

We would all like to see the IOMux tool create compatible code. This has been requested, and the
implementation decision & timing are being discussed. We will keep you updated.

  

Sorry for the frustration this has created.

0 Kudos
1,046 Views
phil_martin
Contributor II

So, I just want to confirm if this is correct or not??:

- the IOMUX tools doesn't currently produce code that can be used directly.

So, we must mod, say, board-mx6q_sabresd.h to set up the IOMUX correctly?

Can you confirm this is the best way to do it?

Thanks,

Phil

0 Kudos
1,046 Views
frankcarpenter
Contributor III

It appears the output from the current version of iomux tool is intended for the "i.MX 6 Platform SDK".

I too wish we had automatic iomux output generated for uboot and the kernel.

0 Kudos