Rev C USB - much different than Rev B?

I have both a Rev B and a Rev C Beagleboard, and an SDHC card with a
working Debian image on it.

On the Rev B Board, the Debian image will come up, find my USB hubs,
USB Keyboard, USB mouse, USB Ethernet dongle, USB touchscreen
controller, and all is fine.

So, I figured I'd move the SDHC over to the Rev C board, and
theoretically it should find both the On-The-Go interface AND the host
interface, right? Well, it finds NOTHING - no matter if the hubs are
plugged into the host port or if they are plugged into the On-The-Go
port.

Is there that much difference between the B and the C?

From a HW perspective Rev C2 has the EHCI port, twice the DDR. From a SW perspective it has a new UBoot.

Gerald

You definitely want to use the new u-boot (from the revC validation
page) with your C2 board.

Well, I put the new u-boot in, and I now have a slight change in
behavior - before, nothing unusual was printed when things started.

With the new u-boot (from http://code.google.com/p/beagleboard/wiki/BeagleboardRevCValidation)
in place, I get the following during startup:

U-Boot 2009.01-dirty (Feb 19 2009 -
12:22:31)

I2C:
ready
OMAP3530-GP rev 2, CPU-OPP2
L3-165MHz
OMAP3 Beagle board + LPDDR/
NAND
DRAM: 256
MB
NAND: 256
MiB
MUSB: using high
speed
In: serial
usbtty
Out: serial
usbtty
Err: serial
usbtty
Board revision
C
Serial
#7dcc00030000000004013f8a17022013
Hit any key to stop autoboot:
0
reading
boot.scr

279 bytes
read
Running bootscript from
mmc ...
## Executing script at
80200000
reading
uImage.dss

2402028 bytes
read
## Booting kernel from Legacy Image at
80200000 ...
   Image Name: Linux-2.6.29-rc3-omap1-05424-
g94
   Image Type: ARM Linux Kernel Image
(uncompressed)
   Data Size: 2401964 Bytes = 2.3
MB
   Load Address:
80008000
   Entry Point:
80008000
   Verifying Checksum ...
OK
   Loading Kernel Image ...
OK
OK

Starting
kernel ...

Error, the USB hardware is not on B modeUncompressing
Linux.....................
................................................................................

The "Error, the USB hardware is not on B mode" is new. It seems this
is generated by the u-boot code. This is correct in that this is a Rev
C board, but what do I do to enable the Rev C USB ports?

This error is normal. If you refer to the validation page, http://code.google.com/p/beagleboard/wiki/BeagleboardRevCValidation ,it provides information on how to verify the USB ports. You can also refer to the System Reference Manual for the same information.

Gerald

Let me restate my question, as I don't seem to be making myself clear.

I have a kernel.

It works on a Rev B Beagleboard.

It does not work on a Rev C Beagleboard - it cannot access USB.

What do I need to do in order to allow my kernel to work on the Rev C
Beagleboard - that is, to be able to access USB on that board?

First, the Rev B kernel cannot fully function on the Rev C because it does not have support for the EHCI host port. The Rev C also has twice the DDR memory.

Let’s assume you have a bad board. So, let’s go through the process to make sure the HW is good. A kernel is loaded into the board as part of the test is to verify the operation of the HW interfaces. Once done, you can take that off the list as the possible issue.

Does this make sense?

Gerald

That's not true for the angstrom kernels, they work equally well on revB and revC and support EHCI on revC.

regards,

Koen

OK, let me restate my question AGAIN, as once again it seems I am not
making myself clear.

What version of the Linux kernel source, from what repository(ies), do
I have to get in order to build a kernel that will work with a Rev C
Beagleboard.

What kernel option(s) have to be set, and to what settings, in order
to build a kernel that will work with the Rev C board.

Use the Tony's tree as a the GIT base:
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=summary

Look for the 'latest' commit in Openembedded's tree :
http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=fbf22c52a21c8f423d8c6683155be9248f21b31a

Review the git sha used (you need the same checkout
linux-omap_2.6.29.bb file), apply koen's patchset, copy defconfig and
rebuild..

For my internal projects, I have these combined into a single *.diff
and defconfig listed here: http://rcn-ee.homeip.net:81/dl/omap/beagle/

Eventually a lenny chroot build of this latest kernel will be uploaded
here for end user's ease:
http://www.rcn-ee.com/deb/kernel/beagle/lenny/

To get something up asap, use this uImage:
http://www.rcn-ee.com/deb/kernel/CC-v2.6.28-79d042a-oer17 I've been
using it 24/7 this last week on a Rev C beagle, playing with building
a native java build.

Regards,

Let me once more try restating my question.

What are the kernel options needed to get the linux-omap-2.6 kernel to
boot on a Rev C Beagleboard, such that it will correctly identify and
access both the dedicated USB host and the USB OTG port.

I want either
a) a pointer to a working .config file for building the kernel
or, preferably
b) a list of the kernel options that need to be set and the values to
which they need to be set.

NOTE: NOT EVERBODY IS USING OPEN EMBEDDED OR BITBAKE.

Please be considerate and post the options in a form that EVERYBODY
can use.

I have pulled the linux-omap-2.6 branch from GIT as of 09:00 CDT 8th
April 2009, run a "make oldconfig" using the configuration that I had
WORKING on a Rev B board, installed the resulting uImage and modules
onto my SD card, and now I get a paging failure at startup:

I don't use openembedded or bitbake. (you skipped steps in my email.)
I just use openembedded *.bb scripts as a kernel starting point
reference point.

I've also documented this in the wiki awhile ago:
http://elinux.org/BeagleBoardDebian#Rebuilding_.2A.deb_Kernel.27s_from_Source
( a little old, but here's an update)...

Starting again after your git clone.

do:

git pull

git checkout 79d042a
git checkout -b v2.6.28-79d042a
git archive --format=tar --prefix=v2.6.28-79d042a/ v2.6.28-79d042a |
gzip > ../v2.6.28-79d042a.tar.gz
git checkout master
git branch v2.6.28-79d042a -D
cd ..

Now you should have "v2.6.28-79d042a.tar.gz" listed in a folder below
your git checkouts..

Next download these two files:

wget http://rcn-ee.homeip.net:81/dl/omap/beagle/v2.6.28-79d042a-oer17/v2.6.28-79d042a-oer17.diff
wget http://rcn-ee.homeip.net:81/dl/omap/beagle/v2.6.28-79d042a-oer17/defconfig

"ls" should print: "v2.6.28-79d042a.tar.gz",
"v2.6.28-79d042a-oer17.diff", "defconfig"

Now:

tar -xfv v2.6.28-79d042a.tar.gz
cd v2.6.28-79d042a/
patch -p1 < ../v2.6.28-79d042a-oer17.diff

*Now I'm assuming you've added your crosscompiler to the path so:

make CROSS_COMPILE=${BIN_DIR}${CC} distclean

cp ../defconfig .config
make CROSS_COMPILE=${BIN_DIR}${CC} menuconfig

(change you usb ethernet from [M] to [X] if you'd like network access)

make CROSS_COMPILE=${BIN_DIR}${CC} uImage
cp arch/arm/boot/uImage ../uImage-2.6.28-79d042a

This (with network modules built in) is exactly the same build i run
on rev B and C boards, which you can download here:

wget http://www.rcn-ee.com/deb/kernel/CC-v2.6.28-79d042a-oer17

Regards,

Now we are at least getting somewhere.

git pull

git checkout 79d042a
git checkout -b v2.6.28-79d042a
git archive --format=tar --prefix=v2.6.28-79d042a/ v2.6.28-79d042a |
gzip > ../v2.6.28-79d042a.tar.gz
git checkout master
git branch v2.6.28-79d042a -D
cd ..

So, rather than working with the head of the repo, we are working with
a specific snapshot. It would have been nice to have noted that,
rather than give a bunch of steps with no real explanation of the
goal.

Why not just pull the desired branch directly, rather than all of
these gyrations?

Now you should have "v2.6.28-79d042a.tar.gz" listed in a folder below
your git checkouts..

Next download these two files:

wgethttp://rcn-ee.homeip.net:81/dl/omap/beagle/v2.6.28-79d042a-oer17/v2.6…

I see a large amount of video patches, logo patches, and things OTHER
than USB here. While those things may be needed, they do complicate
trying to work out "what I need" vs. "other random stuff I don't care
about".

wgethttp://rcn-ee.homeip.net:81/dl/omap/beagle/v2.6.28-79d042a-oer17/defc…

OK, now we are getting what I asked for - a configuration set to
compare to my configuration.

Hi,

So, rather than working with the head of the repo, we are working with
a specific snapshot. It would have been nice to have noted that,
rather than give a bunch of steps with no real explanation of the
goal.

Yeah, the head is always in flux. For best odd's stay with branches
tagged like: v2.6.28-omap1

Why not just pull the desired branch directly, rather than all of
these gyrations?

You could do that, I'm just not a git expert.

I see a large amount of video patches, logo patches, and things OTHER
than USB here. While those things may be needed, they do complicate
trying to work out "what I need" vs. "other random stuff I don't care
about".

That diff is just all the patches the openembedded group applied to
that git checkout to create 2.6.28-r17.

For reference v2.6.28-79d042a-oer17 is Commit:
http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=df49f5e7f5a14c6736806f3163787608c958f4c9

Which contains this for linux-omap_2.6.28.bb :
http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/recipes/linux/linux-omap_2.6.28.bb&id=df49f5e7f5a14c6736806f3163787608c958f4c9

Note: (in linux-omap_2.6.28.bb)

"SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;branch=omap-2.6.28;protocol=git
\" -> git tree your using

"SRCREV = "79d042a081d3e467c735bb0d9569ed6296f85a3c" " -> git checkout 79d042a

Then all the patches listed: which i've combined for my own purposes
into a single diff.

Too work out what you need vs random stuff, start with that checkout
and only apply some of the patches listed in the linux-omap_2.6.28.bb
file.

I'm just keeping things compatible to hopefully some day have sgx/dsp
on debian/ubuntu/etc.

wgethttp://rcn-ee.homeip.net:81/dl/omap/beagle/v2.6.28-79d042a-oer17/defc…

OK, now we are getting what I asked for - a configuration set to
compare to my configuration.

------
Now, looking at the patch set, it would seem to me that the fact that
big chunks of the USB drivers are being patched would indicate that
the current linux-omap-2.6 tip DOES NOT support the hardware on the
Beagleboard Rev C by default, and that a set of patches are needed to
support the BeagleBoard Rev C vs. the BeagleBoard Rev B.

Is that a correct summary?

Current linux-omap-2.6 tip is to volatile to say either statement.
But for the time being "full or 100%" support of the beagle's isn't in
this tree yet.

Regards,

Still you can get the info from oe.
E.g. if you pull the tree you can get the config file from it.
If I recall correctly:
.../openembedded/recipes/linux/linux-omap.2.6.29/beagleboard/defconfig
or from the web
http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/recipes/linux/linux-omap-2.6.29/beagleboard/defconfig

Then again you will need to use a kernel that comes from e.g. tony's
omap git: git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
an official stabe kernel from kernel.org (e.g.
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.1.tar.bz2 )
is not going to work as the several driver issues are not merged into
that one.

Frans