On Wed, Oct 30, 2013 at 2:08 AM, Ryan Mullen rmmullen@gmail.com wrote:
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?
almost certainly!
What's going on here?
we're reliant on you to help diagnose that! can you please check the GPIO line when the card is inserted, by using the gpio kernel module (use 3.4 it's easier) flipping it to input and reading the entry? it could be that the manual-soldering of the mmc card slot was done poorly.
l.