}
                        retries--;
                }
-               dev_dbg(mmc_dev(host->mmc), "no busy signalling in time\n");
+               dev_dbg(mmc_dev(host->mmc),
+                       "no busy signalling in time CMD%02x\n", cmd->opcode);
                ux500_busy_clear_mask_done(host);
                break;
 
                        host->busy_state = MMCI_BUSY_WAITING_FOR_END_IRQ;
                } else {
                        dev_dbg(mmc_dev(host->mmc),
-                               "lost busy status when waiting for busy start IRQ\n");
+                               "lost busy status when waiting for busy start IRQ CMD%02x\n",
+                               cmd->opcode);
                        cancel_delayed_work(&host->ux500_busy_timeout_work);
                        ux500_busy_clear_mask_done(host);
                }
                        ux500_busy_clear_mask_done(host);
                } else {
                        dev_dbg(mmc_dev(host->mmc),
-                               "busy status still asserted when handling busy end IRQ - will keep waiting\n");
+                               "busy status still asserted when handling busy end IRQ - will keep waiting CMD%02x\n",
+                               cmd->opcode);
                }
                break;
 
        default:
-               dev_dbg(mmc_dev(host->mmc), "fell through on state %d\n",
-                       host->busy_state);
+               dev_dbg(mmc_dev(host->mmc), "fell through on state %d, CMD%02x\n",
+                       host->busy_state, cmd->opcode);
                break;
        }
 
        }
 }
 
+static char *ux500_state_str(struct mmci_host *host)
+{
+       switch (host->busy_state) {
+       case MMCI_BUSY_WAITING_FOR_START_IRQ:
+               return "waiting for start IRQ";
+       case MMCI_BUSY_WAITING_FOR_END_IRQ:
+               return "waiting for end IRQ";
+       case MMCI_BUSY_DONE:
+               return "not waiting for IRQs";
+       default:
+               return "unknown";
+       }
+}
+
 /*
  * This busy timeout worker is used to "kick" the command IRQ if a
  * busy detect IRQ fails to appear in reasonable time. Only used on
        spin_lock_irqsave(&host->lock, flags);
 
        if (host->cmd) {
-               dev_dbg(mmc_dev(host->mmc), "timeout waiting for busy IRQ\n");
-
                /* If we are still busy let's tag on a cmd-timeout error. */
                status = readl(host->base + MMCISTATUS);
-               if (status & host->variant->busy_detect_flag)
+               if (status & host->variant->busy_detect_flag) {
                        status |= MCI_CMDTIMEOUT;
+                       dev_err(mmc_dev(host->mmc),
+                               "timeout in state %s still busy with CMD%02x\n",
+                               ux500_state_str(host), host->cmd->opcode);
+               } else {
+                       dev_err(mmc_dev(host->mmc),
+                               "timeout in state %s waiting for busy CMD%02x\n",
+                               ux500_state_str(host), host->cmd->opcode);
+               }
 
                mmci_cmd_irq(host, host->cmd, status);
        }