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

Reply via email to