Hi Rob,
Allow me to answer this. Most the balls on the OMAP can be configured for
one of several different signals - This is the Mux mode, which is a number
from 0-7 - causing one of 7 internal signals to reach the ball on the
package. Furthermore most balls have an internal pull up/down, which can be
en- or disabled as wanted... The comment copied below tells the meaning of
the different constants in U-Boot...
/*
* IEN - Input Enable
* IDIS - Input Disable
* PTD - Pull type Down
* PTU - Pull type Up
* DIS - Pull type selection is inactive
* EN - Pull type selection is active
* M0 - Mode 0
*/
The main constants, which might cause confusion are the DIS and EN, which
only decides if the PULL is active or not - It has nothing to do with
indicating if the pin as such is enabled or disabled. Pins are always
enabled, and can't be disabled. The IP blocks internal can however be
disabled causing output-pins to be not controlled unless the pull (up or
down) is active, but this is another advanced topic left for next time - Or
the ones aiming at reading the complete TRM chapter 7 in details... :-)
Information about mux mode correlation to IP block (function) can be found
in table 7.4 in the TRM. A look in the Data Manual is however very helpful
as well, since this gives the correlation to the actual ball names (i.e.
AB25 or K9) :-)
Your confusion with respect to UART2_TX and GPIO 146 is answered by the
fact, that GPIO 146 is activated on the ball called UART2_TX in case it's
muxed to mode 4 - Look at page 819 in the TRM... :-)
I hope this answers your questions? In case not please don't hesitate to ask
again and I will try to answer best possible...
Best regards
Søren
Hmm - Apparently TI could improve on the description of the PADCONF and the
pin muxing since it's causing may persons trouble :-( Having worked with it
for 6+ years, it's however kind of trivial - Therefore please forgive me in
case I make any assumptions only for "internals" :-)
You are right, that the CP(xxx) refers to an actual ball (one of the PADCONF
registers) - Or to be completely correct ½ of a PADCONF register, since they
are 32-bit and thereby manages two balls using the upper and lower 16-bits
of the register as just described by Hunyue Yau.
The UART and McBSP signals can me muxed to one of several balls - (even to
multiple balls at the same time, although it's usually not a good idea, but
for some output pins it might sometimes be an advantage :-)
The change from Rev B to Rev C boards is the change from balls AF6, AE6 and
AF5 to balls AB26, AB25 and AA25...
In the code above, the four balls associated with the MCBSP3_ *PADCONF are
configured to GPIOs (mode 4), while the balls associated with the UART2_*
PADCONF are configured for their main function UART2 = Mode0.
You cannot OR/AND the modes as in our previous post - only select function
per pin at a time, but I guess you already learned this recognized this...
:-)
Best regards - I hope this helps - Don't hesitate to ask - Good luck
Søren
The omap3-dev banch of u-boot already has code to deal with the rev
B/C differences in pinmux:
Info to clone this u-boot repo:
http://www.sakoman.net/cgi-bin/gitweb.cgi?p=u-boot-omap3.git;a=summary
Be sure to use the omap3-dev branch.
Pre-built binaries can be found here:
http://www.sakoman.com/feeds/omap3/glibc/images/beagleboard/
If you find any issues please post bug reports/patches on this list
and Dirk and I will work to integrate them and push them upstream.
Steve
Yes, as Steve mentions, omap3-dev branch already deals with UART2 pin
mux differences.
Alternatively, if you like to use U-Boot mainline, you could try to grab
http://lists.denx.de/pipermail/u-boot/2009-April/051013.html
and apply it manually to mainline.
I was confused a little by this pin mux stuff, too. Hopefully we have
it correct now ;)
Best regards
Dirk
Yes, at least we hope so. See Steve's comment about 'report problems' ;)
Best regards
Dirk
Btw.: You don't have to make the changes in that patch marked with '+'
manually. You can use the tool 'patch' to apply it to mainline. See e.g.
http://wiki.davincidsp.com/index.php?title=Working_with_Linux_patches#Applying_a_patch
While this is Kernel specific, it will work similar with all patches.
E.g. save above patch in a file, and then do
patch -p1 < file_which_contains_the_patch
Update the x-loader in the NAND to the newest version from GIT (1.4.2 - or
something like this I think to remember). This will use the U-boot on MMC
preferred to the U-boot in NAND... In case of no MMC or no U-boot on MMC it
will try to load U-boot from NAND...
You can update the x-loader by following the BeagleBoard recovery
procedure...
Best regards
Søren
In recent U-Boot mmcinit command changed. 'mmcinit' is replaced by
'mmc init' (with additional device parameter which seems we don't need
here).
I.e. try to replace 'mmcinit' by 'mmc init'.
With this I get
-- cut --
...
mmc1 is available
reading uImage
2502044 bytes read
...
-- cut --
Best regards
Dirk
What does
printenv
gives you?
Dirk
Btw.: You might like to join #beagle for questions like this.