Otherwise the dwmmc on the RK3128 fails to "switch func mode 0" --- sys/dev/sdmmc/sdmmc_mem.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/sys/dev/sdmmc/sdmmc_mem.c b/sys/dev/sdmmc/sdmmc_mem.c index ffabcc8a040..ebfdf3c5e60 100644 --- a/sys/dev/sdmmc/sdmmc_mem.c +++ b/sys/dev/sdmmc/sdmmc_mem.c @@ -756,15 +756,6 @@ sdmmc_mem_sd_init(struct sdmmc_softc *sc, struct sdmmc_function *sf) return error; } - error = sdmmc_mem_send_scr(sc, raw_scr); - if (error) { - printf("%s: SD_SEND_SCR send failed\n", DEVNAME(sc)); - return error; - } - error = sdmmc_mem_decode_scr(sc, raw_scr, sf); - if (error) - return error; - if (ISSET(sc->sc_caps, SMC_CAPS_4BIT_MODE) && ISSET(sf->scr.bus_width, SCR_SD_BUS_WIDTHS_4BIT)) { DPRINTF(("%s: change bus width\n", DEVNAME(sc))); @@ -775,6 +766,15 @@ sdmmc_mem_sd_init(struct sdmmc_softc *sc, struct sdmmc_function *sf) } } + error = sdmmc_mem_send_scr(sc, raw_scr); + if (error) { + printf("%s: SD_SEND_SCR send failed\n", DEVNAME(sc)); + return error; + } + error = sdmmc_mem_decode_scr(sc, raw_scr, sf); + if (error) + return error; + best_func = 0; if (sf->scr.sd_spec >= SCR_SD_SPEC_VER_1_10 && ISSET(sf->csd.ccc, SD_CSD_CCC_SWITCH)) { -- 2.47.1