+
+#if CPU_CM3_SAM3X8
+
+ /* Wait a few moments for supply voltage to stabilize */
+ timer_delay(SD_START_DELAY);
+
+ sd_sendInit();
+ sd_goIdle();
+
+ sd_sendIfCond(sd);
+
+ ticks_t start = timer_clock();
+ bool sd_power_on = false;
+ do
+ {
+ if (!sd_sendAppOpCond(sd))
+ {
+ sd_power_on = true;
+ break;
+ }
+ cpu_relax();
+ }
+ while (timer_clock() - start < SD_INIT_TIMEOUT);
+
+
+ if (sd_power_on)
+ {
+
+ if(!sd_getCid(sd, 0, SD_SEND_ALL_CID))
+ {
+ sd_dumpCid(sd);
+ }
+
+ if (!sd_getRelativeAddr(sd))
+ {
+ LOG_INFO("RCA: %0lx\n", sd->addr);
+ }
+
+
+ if (!sd_getCsd(sd))
+ {
+ sd_dumpCsd(sd);
+ }
+
+ if (!sd_appStatus(sd))
+ {
+ LOG_INFO("STATUS: %ld\n", sd->status);
+ }
+
+ if (sd->status & SD_CARD_IS_LOCKED)
+ {
+ LOG_INFO("SD is locked!\n");
+ }
+ else if (sd->status & SD_READY_FOR_DATA)
+ {
+ sd_selectCard(sd);
+ sd_set_BlockLen(sd, SD_DEFAULT_BLOCKLEN);
+ sd_setBus4bit(sd);
+ sd_setHightSpeed(sd);
+ sd_deSelectCard(sd);
+ }
+
+ }
+#else