Has any activated both user I2C buses with a DT overlay?

For my robot project I would like to create a virtual cape that includes 3 UARTs, the SPI interface, and both I2C devices (I2c0) is used on the board and not accessible as I remember it. I need 2 buses for my project. I got all those items working by hard-coding them into the bone-common device tree source and replacing the /boot/am335x-boneblack.dtb with it but that really doesn’t seem like the way to go. Arch updates appear to replace that file at times.

I’m lost though in the weeds of the syntax for the fragment sections and how that applies to the I2C devices. I think I understand that the first fragment sets the correct mux modes and claims certain pins and the second section connects the kernel device to the hardware but I’m not sure how to convert from the working entries I have in am335x-bone-common.dtsi to an overlay fragment. Lots of the stuff in there seems to be incantations and the incantations vary from the SPI overlay I have and the others that activate serial ports so I’m not sure what proper incantations are needed for the I2C device.

Has anyone setup the other I2C port using an overlay?

At this point i’d almost be ready to paypal someone if they can provide a working sample. Now my earlier edits no longer work in the boneblack.dtb file and prevent the system from booting up at all. I still seem no closer to understanding how some of the magic numbers in the fragment syntax are derived. Still need to have both I2C buses. One high and one low speed.

I’d suggest switching to the latest Robert Nelson Ubuntu 3.8 Kernel - there have been a lot of patches with DTS files for various single pin modes, so your i2c config may already be there.

I got I2C1, I2C2 and I2C3 working by editing the default am335x-bone-common.dts file. Then use uEnv to load this tree.