unsigned int status)
 {
        void __iomem *base = host->base;
-       bool sbc;
+       bool sbc, busy_resp;
 
        if (!cmd)
                return;
 
        sbc = (cmd == host->mrq->sbc);
+       busy_resp = !!(cmd->flags & MMC_RSP_BUSY);
 
        /*
         * We need to be one of these interrupts to be considered worth
        /*
         * ST Micro variant: handle busy detection.
         */
-       if (host->variant->busy_detect) {
-               bool busy_resp = !!(cmd->flags & MMC_RSP_BUSY);
+       if (busy_resp && host->variant->busy_detect) {
 
                /* We are busy with a command, return */
                if (host->busy_status &&
                 * that the special busy status bit is still set before
                 * proceeding.
                 */
-               if (!host->busy_status && busy_resp &&
+               if (!host->busy_status &&
                    !(status & (MCI_CMDCRCFAIL|MCI_CMDTIMEOUT)) &&
                    (readl(base + MMCISTATUS) & host->variant->busy_detect_flag)) {