
On Thu, Jun 19, 2008 at 2:34 PM, Sascha Hauer s.hauer@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