Hey 6by9 — thanks for the explanation! Ok, so I went ahead and double-checked with a logic analyzer. Here's what I'm seeing:
* IO0 line starts low, then goes high during bootup for about 6ms, during which time there is some I2C chatter. Then the line goes low again.
* IO0 goes high when I actually start capturing video, then goes low again.
This is all good and exactly matches what you are saying. What I don't understand however:
* IO1 starts high and always stays high. Looks like it has a pullup, weaker than my I2C, because it goes high slightly later than I2C lines, but still. I don't think this matters much, as it isn't used anyway in v2.1 camera boards. I will not connect it at all.
* There are I2C transactions when IO0 is low. And something (device 0xc8/0xc9, 0x64 in 7-bit) is definitely responding.
I thought that instead of pullups I'd still allow IO0 through, and use it to control the enable signal of a level shifter, but why are there I2C transactions when IO0 is low? And what responds, if IO0 is supposed to control the voltage regulators on the camera board?
I verified this with both camera ports, exact same behavior. I also checked my dt-blob, it seems correct. I am using the same pins and the same blob that the CM IO developer board uses.
PS: sorry, I got the IO0 and IO1 lines mixed up in the previous post.
Founder at PartsBox: https://partsbox.io/ (keep track of your electronic components)