Need cape-manager running, but w/o i2c enabled...

I’ve got a project going on a Beaglebone Black, where I need the I2C2 pins (P9-19 and 20) to be timer inputs. So I’ve commented out the i2c2 entries in the device tree, and have most things working. But I can’t seem to get to eMMC1 with this configuration. My theory is that the cape-manager is confused by not being able to do the I2C scan for the eeproms on the capes (there are none in my setup), so does not continue on to handling the virtual capes. Does anyone know how I might get beyond this? (I am using an old, 3.8 kernel, as had different difficulties trying to get my H/W setup going w/ a 4.1 kernel).

Andy S.

If you can live with the pins being I2C during boot, you can setup a
device tree that has the pinmux control for the I2C pins exported to
user-space via pinmux-helper, with the default pinmux set to I2C.

Then when the system boots, the pins will be in I2C mode, cape-manager
will do it's thing, and once everything is up and running you can
change the pinmux to turn the pins into timer inputs.

To answer my own question, the solution was to remove the slot0 → slot3 definitions from the device tree - that way, the cape manager runs, but does not invoke the i2c driver to search for EEPROMs on the capes. This may also speed up the boot, as it won’t wait for the timeouts from each of the (empty) slots. It may even be worthwhile to remove the “extra” slot definitions if you know that your application will always have only N (N<4) capes installed…