EDIT: After discussion with a few users, to avoid the issue of having this modification wiped out by a future DTB update and create the unfortunate scenario where the /boot/armbianEnv.txt requests to load a DTB which no longer exists, it's a lot simpler to overwrite the original DTB thus keeping the naming identical. If the DTB gets overwritten by an update then the reboot functionality may just revert to the no-reboot behavior until the fix is re-applied to the newer DTB.
The problem lies in the SDCARD signals not being in the right state for a reboot. To solve this we will de-compile the DTB in /boot/dtb/amlogic/meson-gxbb-odroidc2.dtb to create a source version (DTS), modify it, and re-generate the new DTB with the same name. The board will need to be re-started to load-in the new DTB after which the following reboots should be automatic.
1) Back-Up everything - if the DTB is somehow not at the right place or the 1 character editing goings wrong there's probably a way to recover from the u-boot console but I haven't explored that.
2) Go To:
/boot/dtb/amlogic
ls -al (you will see your meson-gxbb-odroidc2.dtb which is hardcoded in the bootloader as the DTB to load)
3) Convert to a source file by doing:
dtc -I dtb -O dts -o meson-gxbb-odroidc2.dts meson-gxbb-odroidc2.dtb (you will now have a new DT Source file meson-gxbb-odroidc2.dts)
4) Edit:
vi meson-gxbb-odroidc2.dts
find the entry TF_IO
look for the line gpios = <0x38 0x03 0x00>;
the hex number in red is to be changed from 0x00 to 0x06 (what this does is set the SDCARD in a mode to be ready to boot by allowing the resistor pull-down to enable the VDDIO Regulator to go to 3.3V which is the proper boot voltage)
save, exit
5) Return the DTS file to a new DTB file (which is the only format accepted by the bootloader). We will copy the original DTB to another name and overwrite the original:
cp meson-gxbb-odroidc2.dtb meson-gxbb-odroidc2-ORIGINAL.dtb
dtc -O dtb -o meson-gxbb-odroidc2.dtb meson-gxbb-odroidc2.dts
many warnings will be emitted, they can be safely ignored
6) No changes need be performed to /boot/armbianEnv.txt (ie. the 'fdtfile=' directive) as the DTB file with the expected naming will be loaded except now it has the TF_IO mod.
7) Now you will reboot - THIS WILL SHUTDOWN BUT WILL NOT REBOOT AUTOMATICALLY BECAUSE THE NEW DTB IS NOT ACTIVE YET.
8 ) Do a Power Reset to bring-up the board and load the new DTB.
9) Now if you do a reboot you will finally get a proper reboot sequence.