Right way to configure ID EEPROM on new cape?

Hi Guys,

Lurker here. I have been working on developing audio capes for the Beaglebone Black. I now have a design I am poised to ship. First, however, I need to know the right thing to do with the cape’s EEPROM so it works “out of the box” for users.

I believe the EEPROM is read by the BBB during boot, and the info in the EEPROM helps the BBB load the correct device tree overlay, right?

Can one of the experts on this list please point me to a HOWTO or other documentation which describes how to put the correct ID into the EEPROM so the BBB knows what to do with the associated cape? Some info about where to stage the cape’s .dtbo file so it is loaded during boot would also be appreciated.

Thanks for any pointers you have,
Stuart

Hi Guys,

Lurker here. I have been working on developing audio capes for the
Beaglebone Black. I now have a design I am poised to ship. First, however,
I need to know the right thing to do with the cape's EEPROM so it works "out
of the box" for users.

I believe the EEPROM is read by the BBB during boot, and the info in the
EEPROM helps the BBB load the correct device tree overlay, right?

Correct, we do it in u-boot now:

http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays

Can one of the experts on this list please point me to a HOWTO or other
documentation which describes how to put the correct ID into the EEPROM so
the BBB knows what to do with the associated cape? Some info about where to
stage the cape's .dtbo file so it is loaded during boot would also be
appreciated.

Here's one example eeprom:

TI: DLPDLCR2000

Overlay:

https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/DLPDLCR2000-00A0.dts

it's eeprom:

https://github.com/RobertCNelson/boot-scripts/blob/master/device/bone/capes/DLPDLCR2000/eeprom.dump

voodoo@hestia:/opt/github/boot-scripts/device/bone/capes/DLPDLCR2000$
hexdump -C eeprom.dump
00000000 aa 55 33 ee 41 31 44 4c 50 44 4c 43 52 32 30 30 |.U3.A1DLPDLCR200|
00000010 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |0...............|
00000020 00 00 00 00 00 00 30 30 41 30 54 49 00 00 00 04 |......00A0TI....|
00000030 00 00 00 00 00 00 00 00 00 00 44 4c 50 44 4c 43 |..........DLPDLC|
00000040 52 32 30 30 30 00 00 00 00 00 31 32 33 34 35 36 |R2000.....123456|
00000050 37 38 39 30 31 32 33 34 00 00 00 00 00 00 00 00 |78901234........|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

In addition to Robert’s response, here is a second (though somewhat outdated) page and associated links that show how to write to eeprom of a custom cape.

https://github.com/jbdatko/eeprom_tutorial/blob/master/eeprom.md

Note: some of the information on this page is old stuff, for example the i2c channels used. Verify with your kernel version.

Hope this helps,
Gaurav