Here's an update: I have found, in the most unlikely of places, a set of bare-metal drivers for the H3. It was apparently written by someone selling Orange Pis as controllers for stage lighting and related performance equipment. (https://github.com/vanvught/rpidmx512/). It's rather comprehensive (HDMI, Ethernet, SPI, I2C, analog audio, thermal, MMC, timers etc.).
I have integrated two of these driver so far: HDMI and MMC. MMC was a bit of a let-down; I expected it to perform better than my trivial implementation because it supports 4-bit mode and such, but I didn't notice any difference in practice. That might be an integration issue, though, so I left it in as an option.
The second is more interesting: The HDMI driver seems to have been ported from Linux and is pretty comprehensive. Most importantly, it supports various physical resolutions, which should fix the issue some people were having with their DVI monitors. I have added a
CONFIG option (10) with which to set the physical screen resolution. The resolutions available ATM are:
0: 1920x1080 (HDMI)
1: 1280x1024 (DVI)
2: 1280x720 (HDMI)
3: 1024x768 (DVI)
4: 800x600 (DVI)
5: 640x480 (DVI)
6: 1920x1200 (HDMI)
I don't know how tolerant DVI(-only) monitors are towards receiving an HDMI signal, so I have disabled HDMI in DVI modes, which therefore lack sound. I have also changed the config file to be plain-text and renamed it to
config.ini. That way, if you want to boot the system with a resolution other than 1920x1080, you can create a
config.ini file on the SD card containing, for instance,
phys_mode=1, and it will come up in 1280x1024.
On the USB side, there is now support for mass storage devices (
CHDIR "/usb0") and USB controller 3. (The latter has a strange issue, at least on my OPi PC, in that devices plugged in on boot are not recognized. When they are attached while the system is running, they work...)
[My new boards have arrived as well (hence the support for USB3), and exactly five minutes later the lost OPi One has turned up, so I have two now...]