|
@@ -1447,18 +1447,20 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, u32 ocr)
|
|
|
pr_warn("%s: cannot verify signal voltage switch\n",
|
|
|
mmc_hostname(host));
|
|
|
|
|
|
+ mmc_host_clk_hold(host);
|
|
|
+
|
|
|
cmd.opcode = SD_SWITCH_VOLTAGE;
|
|
|
cmd.arg = 0;
|
|
|
cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
|
|
|
|
|
|
err = mmc_wait_for_cmd(host, &cmd, 0);
|
|
|
if (err)
|
|
|
- return err;
|
|
|
-
|
|
|
- if (!mmc_host_is_spi(host) && (cmd.resp[0] & R1_ERROR))
|
|
|
- return -EIO;
|
|
|
+ goto err_command;
|
|
|
|
|
|
- mmc_host_clk_hold(host);
|
|
|
+ if (!mmc_host_is_spi(host) && (cmd.resp[0] & R1_ERROR)) {
|
|
|
+ err = -EIO;
|
|
|
+ goto err_command;
|
|
|
+ }
|
|
|
/*
|
|
|
* The card should drive cmd and dat[0:3] low immediately
|
|
|
* after the response of cmd11, but wait 1 ms to be sure
|
|
@@ -1507,6 +1509,7 @@ power_cycle:
|
|
|
mmc_power_cycle(host, ocr);
|
|
|
}
|
|
|
|
|
|
+err_command:
|
|
|
mmc_host_clk_release(host);
|
|
|
|
|
|
return err;
|