[U-Boot-Users] i.MX31: mx31_gpio_mux() problem

Magnus Lilja lilja.magnus at gmail.com
Thu Jun 19 14:51:32 CEST 2008


On Thu, Jun 19, 2008 at 2:34 PM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
> On Wed, Jun 18, 2008 at 10:21:10PM +0200, Magnus Lilja wrote:
>> Hi all
>>
>>
>> While I was using the mx31_gpio_mux() function in cpu/arm1136/mx31/generic.c to modify the IOMUX for some IO pads I discovered that only the first 256 pads can be modified by this function.
>>
>> It's pretty easy to fix this (see patch below) but I wonder if it's really the right way to fix this problem. Currently mx31_gpio_mux() takes only one argument, mode, which contains both the pad number and the new mode.
>>
>> Current use:
>> mx31_gpio_mux((MUX_CTL_FUNC << 8) | MUX_CTL_CSPI2_MISO);
>>
>> (the patch below changes << 8 to << 9 and modifies the mx31_gpiomux() function accordingly)
>>
>> Perhaps it's better to split the above into two arguments, pad number and pad mode, the function will then be called with:
>> mx31_gpio_mux(MUX_CTL_CSPI2_MISO, MUX_CTL_FUNC);
>>
>> I prefer the second approach (i.e. not the one in the patch below).
>
> The first approach has the advantage that you can define convenience
> macros like MUX_RXD1__UART1_RXD_MUX which makes it easy to setup new
> boards by only reading the definition instead of crawling the datasheet
> for Alternate function assignments once the list of defined is somewhat
> completed. Looking in the datasheet for every new pin is a pain and
> error prone.


Thanks for the background info. I'll try to submit a patch in a couple
of days (using the first approach).

/Magnus




More information about the U-Boot mailing list