unsigned int timeout_ms, bool use_busy_signal, bool send_status,
                bool ignore_crc)
 {
+       struct mmc_host *host = card->host;
        int err;
        struct mmc_command cmd = {0};
        unsigned long timeout;
        u32 status = 0;
 
-       BUG_ON(!card);
-       BUG_ON(!card->host);
-
        cmd.opcode = MMC_SWITCH;
        cmd.arg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
                  (index << 16) |
        if (index == EXT_CSD_SANITIZE_START)
                cmd.sanitize_busy = true;
 
-       err = mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES);
+       err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
        if (err)
                return err;
 
         * CRC errors shall only be ignored in cases were CMD13 is used to poll
         * to detect busy completion.
         */
-       if (card->host->caps & MMC_CAP_WAIT_WHILE_BUSY)
+       if (host->caps & MMC_CAP_WAIT_WHILE_BUSY)
                ignore_crc = false;
 
        /* Must check status to be sure of no errors. */
                        if (err)
                                return err;
                }
-               if (card->host->caps & MMC_CAP_WAIT_WHILE_BUSY)
+               if (host->caps & MMC_CAP_WAIT_WHILE_BUSY)
                        break;
-               if (mmc_host_is_spi(card->host))
+               if (mmc_host_is_spi(host))
                        break;
 
                /*
                /* Timeout if the device never leaves the program state. */
                if (time_after(jiffies, timeout)) {
                        pr_err("%s: Card stuck in programming state! %s\n",
-                               mmc_hostname(card->host), __func__);
+                               mmc_hostname(host), __func__);
                        return -ETIMEDOUT;
                }
        } while (R1_CURRENT_STATE(status) == R1_STATE_PRG);
 
-       if (mmc_host_is_spi(card->host)) {
+       if (mmc_host_is_spi(host)) {
                if (status & R1_SPI_ILLEGAL_COMMAND)
                        return -EBADMSG;
        } else {
                if (status & 0xFDFFA000)
-                       pr_warning("%s: unexpected status %#x after "
-                              "switch", mmc_hostname(card->host), status);
+                       pr_warn("%s: unexpected status %#x after switch\n",
+                               mmc_hostname(host), status);
                if (status & R1_SWITCH_ERROR)
                        return -EBADMSG;
        }