]> xenbits.xensource.com Git - seabios.git/commitdiff
sdcard: Check if card is present before sending commands to card
authorKevin O'Connor <kevin@koconnor.net>
Tue, 28 Jul 2015 17:06:41 +0000 (13:06 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Tue, 4 Aug 2015 13:19:14 +0000 (09:19 -0400)
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
src/hw/sdcard.c

index d2c32881065b3c49abce8bfac51b2c7276fd6496..7523ab83c41efd62e8a35d2678278112607c8e85 100644 (file)
@@ -73,8 +73,9 @@ struct sdhci_s {
 #define SI_READ_READY   (1<<5)
 
 // SDHCI present_state flags
-#define SP_CMD_INHIBIT (1<<0)
-#define SP_DAT_INHIBIT (1<<1)
+#define SP_CMD_INHIBIT   (1<<0)
+#define SP_DAT_INHIBIT   (1<<1)
+#define SP_CARD_INSERTED (1<<16)
 
 // SDHCI transfer_mode flags
 #define ST_BLOCKCOUNT (1<<1)
@@ -269,6 +270,10 @@ sdcard_controller_setup(void *data)
     if (!runningOnQEMU())
         // XXX - this init logic will probably only work on qemu!
         return;
+    u32 present_state = readl(&regs->present_state);
+    if (!(present_state & SP_CARD_INSERTED))
+        // No card present
+        return;
     writew(&regs->irq_signal, 0);
     writew(&regs->irq_enable, 0xffff);
     writew(&regs->error_signal, 0);