The mmc switch was misbehaving for me. This fixes the problem:
Oh! Yes. Seems to be right.
I thought that setting a gpio to input is just a marker for the driver. But it seems to touch the gpio controller...
The only thing we want here is to read back in U-Boot the state that was set by MLO. But not modify anything.
So your patch is doing the right thing and I have applied it so that you can rebase:
The rest of the master branch of that repository is some experimentation I did to see if I could get some of the features of the dra7 and beaglebone u-boot's working, and to get a bit more familiar with the u-boot source code.
It is sometimes a big hack. My approach is to be minimally invasive to upstream code, i.e. try to add things to new files and #include maintained code where possible. So I usually take a working base device, remove some things and add others instead of maintaining a completely new board file. This is usually simlar to how hardware was developed (GTA04 = beagleboard + display + GSM, Pyra = omap5evm + mainboard + display). This should make rebasing to newer u-boot releases easier.
Highlights:
- LPAE build of u-boot, runs in hypervisor mode
Do we need different U-Boot binaries for LPAE and non-LPAE, like for the Kernel?
Or can we simply enable LPAE for everyone?
- usb mass storage gadget mode allows flashing or mounting the eMMC (or any attached card) via the USB3 device port. It's not fast, but useful for testing and recovery purposes.
Interesting feature. Have to look how it works.
- made some way in converting to the new driver model
- cosmetic stuff here and there
Which is debatable by nature...
I've also explored how ram init is done, but haven't yet attempted to get it to recognize the 4 GB.
Fine!
I'm afraid that most of the work and play is in one big commit. I should probably try to separate out the more useful stuff, but that's not going to happen today anymore :-)
There is no need to hurry... Rome wasn't built in one day and it took me several months to get to where we are now.
And, IMHO, a boot loader should be stabilized once and then not be touched for years (or you invite a lot of problems into kernel and user support). For example we did use the 2011.03 u-boot for the GTA04 until now. But now we have a variant that needs a working OneNAND driver and this forced to port everything to the letux-2016.11. And it is still not as stable as the 2011.03 was (for example a user-space triggered reboot makes u-boot stop when trying to read the MMC).