Description
Source
Call Graph
Start Line: 494
void MEDSdcard_Initialize(Media *media, unsigned char mciID)
{
TRACE_INFO("MEDSdcard init\n\r");
// Initialize SDcard
//--------------------------------------------------------------------------
// Configure SDcard pins
ConfigurePIO(mciID);
// Wait for SD card connection (if supported)
WaitSdConn(mciID);
// Check if card is write-protected (if supported)
CheckProtection(mciID);
// Initialize the MCI driver
if(mciID == 0) {
AIC_ConfigureIT(BOARD_SD_MCI_ID, AT91C_AIC_PRIOR_LOWEST, ISR_Mci);
MCI_Init(&mciDrv, BOARD_SD_MCI_BASE, BOARD_SD_MCI_ID, BOARD_SD_SLOT);
AIC_EnableIT(BOARD_SD_MCI_ID);
} else {
#if defined(BOARD_SD_MCI1_ID)
AIC_ConfigureIT(BOARD_SD_MCI1_ID, AT91C_AIC_PRIOR_LOWEST, ISR_Mci);
MCI_Init(&mciDrv, BOARD_SD_MCI1_BASE, BOARD_SD_MCI1_ID, BOARD_SD_SLOT);
AIC_EnableIT(BOARD_SD_MCI1_ID);
#else
TRACE_ERROR("SD/MMC card initialization failed (MCI1 not supported)\n\r");
#endif
}
// Initialize the SD card driver
if (SD_Init(&sdDrv, (SdDriver *)&mciDrv)) {
TRACE_ERROR("SD/MMC card initialization failed\n\r");
}
else {
TRACE_INFO("SD/MMC card initialization successful\n\r");
TRACE_INFO("Card size: %d MB\n\r", SD_TOTAL_SIZE(&sdDrv)/(1024*1024));
TRACE_INFO("Block size: %d Bytes\n\r", (SD_TOTAL_SIZE(&sdDrv) / SD_TOTAL_BLOCK(&sdDrv)) );
}
MCI_SetSpeed(&mciDrv, 10000000);
// Initialize media fields
//--------------------------------------------------------------------------
media->write = MEDSdcard_Write;
media->read = MEDSdcard_Read;
media->handler = 0;
media->flush = 0;
media->baseAddress = 0;
media->size = SD_TOTAL_SIZE(&sdDrv);
media->state = MED_STATE_READY;
media->transfer.data = 0;
media->transfer.address = 0;
media->transfer.length = 0;
media->transfer.callback = 0;
media->transfer.argument = 0;
numMedias++;
}