Hi,
I am booting an eoma68-a20 using the script.fex (converted to script.bin with sunxi-tools' fex2bin) found here:
http://rhombus-tech.net/allwinner/a20/boot/script.fex
I have run the instructions found on that page under the subtitle "setup boot instructions for booting directly off of sd/mmc" and all seems well.
However, my kernel (linux-sunxi 3.4 with some custom config options) tells me this when booting:
[ 1.663649] [mmc-msg] sw_mci_init [ 1.667156] [mmc-msg] get mmc1's IO(det) failed [ 1.671684] [mmc-msg] Not using mmc1 due to script.bin parse failure [ 1.678123] [mmc-msg] MMC host used card: 0x9, boot card: 0x0, io_card 8 [ 1.685471] [mmc-msg] sdc0 set round clock 400000, src 24000000 [ 1.691708] [mmc-msg] sdc0 set ios: clk 0Hz bm OD pm OFF vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 1.702062] [mmc-msg] sdc0 Probe: base:0xf0034000 irq:64 sg_cpu:ffdfb000(4fc00000) ret 0. [ 1.710382] [mmc-msg] sdc3 set round clock 400000, src 24000000 [ 1.716717] [mmc-msg] sdc3 set ios: clk 0Hz bm OD pm OFF vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 1.726839] [mmc-msg] sdc3 Probe: base:0xf0036000 irq:67 sg_cpu:ffdfa000(4fc01000) ret 0.
After I boot an initrd, there are no /dev/mmcblk0 entries in my dev filesystem. However, I can make it appear if I do the following:
echo 1 > /proc/driver/sunxi-mmc.3/insert
This causes the card to be registered at /dev/mmcblk0 as expected.
Digging deeper, it would seem that the script.fex sets the card-detect mode for mmc0 and mmc1 both to 1, which is CARD_DETECT_BY_GPIO. The failure in the kernel log occurs when the script.bin parser tries to read the "sdc_det" key and doesn't get a valid value describing the GPIO it should be using, I assume. mmc3 doesn't have that problem because script.fex sets the card-detect mode to 4, which is manual mode - this requires me to write a 1 to the control node in the procfs as I experienced.
Is the script.fex incomplete? What's going on here?
Thanks for any help, Ryan