Hi,
I just looked into the code and it turns out that I have already implemented a while ago what you propose:
http://git.goldelico.com/?p=gta04-uboot.git;a=blob;f=board/goldelico/letux-c...
Only translating into the proper DTB isn't implemented. And, detecting major mainboard variants is missing in
http://git.goldelico.com/?p=gta04-uboot.git;a=blob;f=board/pandora/pyra%2Blc...
Nothing difficult.
I have now finished it and fixed some minor bugs in the code so that U-Boot 2016.11 can be used:
Here is what the automatic can do (the detected DTB is still overwritten in uEnv.txt):
Found LC15 V5.1 Found Pyra MB V5.0 Device Tree: letux-cortex-15-v5.1+pyra-v5.0.dtb
Fortunately, you made me really implement and test this now and not in some weeks.
Because it brought another hidden hardware issue to the surface.
The problem is that the OMAP5 has stronger pull-up/down than I was used to from OMAP3 and I didn't read the data sheet fully. It says in a footnote that the typical PU/PD current is 100µA.
But using a 10k resistor for version encoding pullup/down (which is good for OMAP3) makes a voltage of 1V which means that having a PU programmed by OMAP5 and PD by resistor installed in factory is still read as "1" and not "0" as an external PD should indicate.
This means we have to use an 1k to be on the safe side (and kernel should turn off the PU/PD to save several 100 µA).
After fixing this in 3 CPU and 2 Mainboards I got some combinations working (e.g. 5.0 + 5.1, 5.1 + 5.0, 5.1 + 5.1).
Latest U-Boot code is here:
http://git.goldelico.com/?p=gta04-uboot.git;a=shortlog;h=refs/heads/letux-20...
If you run it on your board there might be false reports unless you fix the resistors. So please keep the uEnv.txt...
So thanks and BR, Nikolaus