On Thu, Oct 26, 2017 at 11:14:53AM -0400, Matt DeVillier wrote:
That sounds like a bad compile then - nothing in the patch should have impacted usb.
In any case, the patch below tests the same thing and it should work on eMMC also.
-Kevin
--- a/src/hw/sdcard.c +++ b/src/hw/sdcard.c @@ -404,19 +404,8 @@ sdcard_card_setup(struct sddrive_s *drive, int volt, int prio) ret = sdcard_pio(regs, SC_SEND_IF_COND, param); if (!ret && param[0] == vrange) hcs = (1<<30); - // Verify SD card (instead of MMC or SDIO) - param[0] = 0x00; - ret = sdcard_pio_app(regs, SC_APP_SEND_OP_COND, param); - if (ret) { - // Check for MMC card - param[0] = 0x00; - ret = sdcard_pio(regs, SC_SEND_OP_COND, param); - if (ret) - return ret; - drive->card_type |= SF_MMC; - hcs = (1<<30); - } // Init card + int firstloop = 1; u32 end = timer_calc(SDHCI_POWERUP_TIMEOUT); for (;;) { param[0] = hcs | volt; // high-capacity support and voltage level @@ -424,8 +413,18 @@ sdcard_card_setup(struct sddrive_s *drive, int volt, int prio) ret = sdcard_pio(regs, SC_SEND_OP_COND, param); else ret = sdcard_pio_app(regs, SC_APP_SEND_OP_COND, param); - if (ret) + if (ret) { + if (firstloop) { + // Check for MMC card + firstloop = 0; + drive->card_type |= SF_MMC; + hcs = (1<<30); + end = timer_calc(SDHCI_POWERUP_TIMEOUT); + continue; + } return ret; + } + firstloop = 0; if (param[0] & SR_OCR_NOTBUSY) break; if (timer_check(end)) {
On Thu, Oct 26, 2017 at 11:26 AM, Kevin O'Connor kevin@koconnor.net wrote:
still timing out on detection: https://paste.ubuntu.com/25826387/