I have a beaglebone derived custom board that hangs once it gets to looking for the rootfs off the mmc:
Morgan,
As you've read in other forums, your card is not getting detected. See whether the GPIO that you've used as the card detect line is added properly in your kernel code. Also see whether MMC driver is enabled or not.
-Renjith | www.pathpartnertech.com | Verify the answer if you think your query is resolved
Hi,
Are you seeing the above scenario on Evaluation board or custom board.
If custom board with MMC driver enabled, you are right its CD pin is not getting detected. You will not see this problem with MLO and u-boot because boot loader does not look for this pin.
I have seen this problem couple of times on few of our custom boards and most of the times it was soldering issue or chasi problem.
Try checking the CD pin transition on connecting and look for whether all the pins are soldered on SDcard Chasi.
Regards,
Raja.
@Raja - We're seeing it on our custom board, and yep, we've verified the CD pin is correct, so I'm confused as to why the kernel wouldn't see it correctly.
@Renjith - it turns out we're using a build of OE that runs on the beaglebone, and have verified the card running on the beaglebone. So, we're thinking that the mmc driver and pin detect should work identically - we've used the same pins. The CD line goes to the same pin as the beaglebone, ball C15.
I'm going to double-check this again, but at this point it seems that the card detect pin is in the right state. Have you ever seen anything else cause this hang besides the CD line being incorrect?
Thanks!
Morgan
Hi Morgan,
Have you checked the state of the Write protect pin? Check the state change when SD card is locked and unlocked. I have seen this scenario once.
Thanks
Hi Morgan,I too faced the similar problem in our board i initialized setup_starterkit(); & am33xx_sr_init(); in am335x_evm_setup.In your board as you don't have EEPROM it gets failed to initialize your board configuration in eepromAs from your logs it is clear that beaglebome setup is not invoked.[ 0.831823] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write[ 0.896903] No daughter card found[ 0.900505] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write[ 0.966906] AM335X: EVM Config read fail: -110 Make sure that in am335x_evm_setup function call setup_beaglebone();am33xx_sr_init(); if (ret != sizeof(am335x_mac_addr)) { setup_beaglebone(); am33xx_sr_init(); pr_warning("AM335X:AFTER setup_starterkit & am33xx_sr_init ----------------> "); //pr_warning("AM335X: EVM Config read fail: %d\n", ret); return; }If you get following in debug msg you are done.
The board is a AM335x Beaglebone.
Rajeev Battu.
Thank you very much for that idea Rajeev, that put us on the right track.
Here's what we ended up with that works:
static struct evm_dev_cfg beaglebone_dev_cfg[] = { //{tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE}, //{i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE}, //{mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, //{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {NULL, 0, 0},};
if (ret != sizeof(am335x_mac_addr)) { //pr_warning("AM335X: EVM Config read fail: %d\n", ret);
pr_warning("AM335X:BEFORE setup_starterkit & am33xx_cpsw_init ----------------> "); setup_beaglebone(); //am33xx_cpsw_init(gigabit_enable); pr_warning("AM335X:AFTER setup_starterkit & am33xx_cpsw_init ----------------> ");
return; }
Adding in the mmc0_init into the beaglebone_dev_config and taking the others out ended up being the other trick. With the others in, we saw a kernel panic, but it still hung on mounting the root fs. Putting in the mmc line got us fully booted.
Thanks again, that was a huge help!