[beagleboard] More expansionboards supported in new kernel/u-boot combination

Hi,

If you head over to http://www.angstrom-distribution.org/demo/beagleboard/ and download the latest u-boot.bin and uImage you will get better support for various expansion boards, the most notable being TCT Zippy2[1] and TCT Trainer[2]. U-boot will detect expansion boards and try to set up the pinmux, while the kernel will try to load the drivers and setup GPIOs.

If you have a Zippy or Zippy2 the DS1307 RTC will be working again and a driver for the AT24 eeprom will get loaded. If you have a Trainer board the kernel will free some GPIOs that you can export to sysfs.

If you're updating from an older uboot (2009.X or earlier), you'll also need the new MLO from the same site. If you are having trouble getting MLO to be detected on the SD card, try flashing it to NAND, instructions are in the README.

regards,

Koen

[1] http://elinux.org/BeagleBoard_Zippy2
[2] http://elinux.org/BeagleBoard_Trainer

Hi Koen,

I just downloaded the files you mentioned (in fact I check every day
http://www.angstrom-distribution.org/demo/beagleboard/ for updates).

Could you please upload the kernel configuration file you used to
build the 2.6.32.r72 kernel?

I have problems with the Zippy2 ethernet interface. I can get it to
work and I don't know whether CONFIG_KS8851 is enabled.

No message during startup seems to indicate the driver is loaded.
(dmesg has no trace of KS8851)

thank you very much

Make sure you pass the "buddy" variable from uboot to the kernel with
the bootargs...

something like:

setenv bootargs console=tty0 console=ttyS2,115200n8
root=/dev/mmcblk0p2 rootwait rw vram=12M
omapfb.mode=dvi:1280x720MR-16@60 buddy=${buddy}

then you should see it with

dmesg | grep zippy

Regards,

Hi Robert,

Thank you very much.

By checking what you said I noticed u-boot detected Zippy board
instead of Zippy2. That's why kernel tried to load ENC28J60 instead of
KS8851.

Problem:

Zippy2 EEPROM doesn't come with correct default values. (At least the
boards shipped Digi-key on 4 of May 2010)

For those encountering the same problem:

1.- Shortcircuit JP1 in Zippy2 (To disable EEPROM write protect)
2.- Using I2C tools package: # i2cset 2 0x50 0x03 0x02 (This changes
device id to 0x02)
3.- Use i2cdump 2 0x50 to check.

First addresses in EEPROM should have the following values:

00 01 00 02 01 00 xx xx xx

Optional: One could use the writeprom.sh to change EEPROM values.

'zcat /proc/config.gz' after booting the kernel. The r70 config on the site practically identical to the r72 one.

regards,

Koen

Hi Robert,

Thank you very much.

By checking buddy variable I noticed u-boot detected a Zippy board
instead of a Zippy2 board. That's why kernel tried to load the
enc28j60 driver instead of the ks8851 one.

It looks like Zippy2 boards shipped by Digikey (5 May 2010) have
default eeprom values for Zippy.

One should update these values using i2c-tools or writeeprom.sh
(recipes/i2c-tools/omap3-writeprom.bb -- by koen).

Procedure using i2c-tools:

1.- Dump EEPROM contents using i2cdump:

#> i2cdump 2 0x50

These are the default values:

     0 1 2 3 4 5 6 7 8 9 a b c d e f
0123456789abcdef
00: 00 01 00 01 01 00 00 00 ff ff ff ff ff ff ff
ff .?.??...........
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................

Meanings:

00 01 -> vendor id
00 01 -> device id (http://www.elinux.org/
BeagleBoardPinMux#Vendor_and_Device_IDs) As you can see deveideid is
0x01 (Zippy)
01-> revision
other values -> environtment variables.

2.- Byte in address 0x03 should be changed to 0x02 to indicate Zippy2.

To do so: #> i2cset 2 0x50 0x03 0x02

Then, use i2cdump again to check the new value:

     0 1 2 3 4 5 6 7 8 9 a b c d e f
0123456789abcdef
00: 00 01 00 02 01 00 00 00 ff ff ff ff ff ff ff
ff .?.??...........
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ................

3.- Reboot

Now, U-boot will detect Zippy2 and will export "buddy=zippy2".

As Robert Nelson said,

Add buddy='${buddy}' to bootargs in u-boot

if you use mmc booting script, as I do:

# setenv mmcargs ${mmcargs} buddy='${buddy}'

Reboot again.

Recent uboots (e.g. 2010.03) have it in bootargs by default. Provided people haven't overwritten the default env :slight_smile:

regards,

Koen

and it's pretty easy to reference it from boot.scr scripts... Which
is really the only new change for people running existing
boot.scr's... :wink:

Regards,

Well I run u-boot from my mcccard and I think it takes nand flash
stored variables.

Should I erase flash variables in order to force u-boot to use its
default variables from now on?

BTW: I checked omap3-beagle.h in include/configs/ and no buddy
variable is present (u-boot-2010.03-rc1)

Well I run u-boot from my mcccard and I think it takes nand flash
stored variables.

Should I erase flash variables in order to force u-boot to use its
default variables from now on?

Yes

BTW: I checked omap3-beagle.h in include/configs/ and no buddy
variable is present (u-boot-2010.03-rc1)

Have a look at http://gitorious.org/beagleboard-validation/u-boot/commits/xm

regards,

Koen

Thanks Koen