mirror of
https://github.com/drasko/open-ameba.git
synced 2024-11-21 21:44:19 +00:00
fix error (Ameba SDK)
This commit is contained in:
parent
d34db1740e
commit
7de420b89f
2 changed files with 34 additions and 22 deletions
|
@ -10,7 +10,6 @@
|
|||
|
||||
#define SIZE_BLOCK_ADMA 512
|
||||
|
||||
|
||||
SemaphoreHandle_t sdWSema;
|
||||
|
||||
void sd_xfer_done_callback(void *obj) {
|
||||
|
@ -30,9 +29,11 @@ SD_RESULT SD_WaitReady() {
|
|||
SD_RESULT SD_Init() {
|
||||
SD_RESULT result;
|
||||
|
||||
if (sdio_sd_init() != 0) result = SD_INITERR;
|
||||
if (sdio_sd_init() != 0)
|
||||
result = SD_INITERR;
|
||||
else {
|
||||
if (sdio_sd_getProtection() != 0) result = SD_PROTECTED;
|
||||
if (sdio_sd_getProtection() != 0)
|
||||
result = SD_PROTECTED;
|
||||
RtlInitSema(&sdWSema, 0);
|
||||
sdio_sd_hook_xfer_cmp_cb(sd_xfer_done_callback, 0);
|
||||
sdio_sd_hook_xfer_err_cb(sd_xfer_err_callback, 0);
|
||||
|
@ -67,14 +68,17 @@ SD_RESULT SD_SetCLK(SD_CLK CLK) {
|
|||
// DBG_SDIO_INFO("clk = %d ?\n", CLK);
|
||||
return SD_ERROR;
|
||||
}
|
||||
if(result) return SD_ERROR;
|
||||
if (result)
|
||||
return SD_ERROR;
|
||||
return SD_OK;
|
||||
}
|
||||
|
||||
//----- SD_Status
|
||||
SD_RESULT SD_Status() {
|
||||
if (sdio_sd_isReady()) return SD_NODISK;
|
||||
else return sdio_sd_getProtection() != 0;
|
||||
if (sdio_sd_isReady())
|
||||
return SD_NODISK;
|
||||
else
|
||||
return sdio_sd_getProtection() != 0;
|
||||
}
|
||||
|
||||
//----- SD_GetCID
|
||||
|
@ -84,8 +88,10 @@ SD_RESULT SD_GetCID(u8 *cid_data) {
|
|||
|
||||
//----- SD_GetCSD
|
||||
SD_RESULT SD_GetCSD(u8 *csd_data) {
|
||||
if (sdio_sd_getCSD(csd_data)) return SD_ERROR;
|
||||
else return SD_OK;
|
||||
if (sdio_sd_getCSD(csd_data))
|
||||
return SD_ERROR;
|
||||
else
|
||||
return SD_OK;
|
||||
}
|
||||
|
||||
//----- SD_GetCapacity
|
||||
|
@ -93,8 +99,10 @@ SD_RESULT SD_GetCapacity(uint32_t *sector_count) {
|
|||
|
||||
u32 sc = sdio_sd_getCapacity();
|
||||
*sector_count = sc;
|
||||
if (sc != 0) return SD_OK;
|
||||
else return SD_ERROR;
|
||||
if (sc != 0)
|
||||
return SD_OK;
|
||||
else
|
||||
return SD_ERROR;
|
||||
}
|
||||
|
||||
//----- SD_ReadBlocks
|
||||
|
@ -102,7 +110,7 @@ SD_RESULT SD_ReadBlocks(u32 sector, u8 *data, u32 count) {
|
|||
int rd_count;
|
||||
unsigned char * buf;
|
||||
|
||||
if ((u32)data & 3) {
|
||||
if ((u32) data & 3) {
|
||||
buf = pvPortMalloc(SIZE_BLOCK_ADMA);
|
||||
if (buf == NULL)
|
||||
DBG_SDIO_ERR("Fail to malloc cache for SDIO host!\n");
|
||||
|
@ -119,11 +127,13 @@ SD_RESULT SD_ReadBlocks(u32 sector, u8 *data, u32 count) {
|
|||
data += SIZE_BLOCK_ADMA;
|
||||
}
|
||||
vPortFree(buf);
|
||||
if (rd_count) return SD_ERROR;
|
||||
if (rd_count)
|
||||
return SD_ERROR;
|
||||
return SD_OK;
|
||||
} else {
|
||||
if (sdio_read_blocks(sector, data, count) == 0) {
|
||||
if (RtlDownSemaWithTimeout(&sdWSema, 1000) == 1) return SD_OK;
|
||||
if (RtlDownSemaWithTimeout(&sdWSema, 1000) == 1)
|
||||
return SD_OK;
|
||||
DBG_SDIO_ERR("SD_ReadBlocks timeout\n");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -205,8 +205,9 @@ s8 sdio_write_blocks(uint32_t sector, const uint8_t *buffer, uint32_t count) {
|
|||
}
|
||||
SdioHostAdapter.AdmaDescTbl = gAdmaTbls;
|
||||
}
|
||||
HAL_Status result = HalSdioHostOp.HalSdioHostWriteBlocksDma(&SdioHostAdapter,
|
||||
(unsigned long long) sector * SIZE_BLOCK_ADMA, count);
|
||||
HAL_Status result = HalSdioHostOp.HalSdioHostWriteBlocksDma(
|
||||
&SdioHostAdapter, (unsigned long long) sector * SIZE_BLOCK_ADMA,
|
||||
count);
|
||||
if (result) {
|
||||
DBG_SDIO_ERR("write fail(0x%02x)\n", result);
|
||||
return -1;
|
||||
|
@ -239,6 +240,7 @@ s8 sdio_sd_init(void) {
|
|||
void sdio_sd_deinit() {
|
||||
if (sdio_status > SDIO_SD_NONE)
|
||||
sdio_status = 1;
|
||||
sdio_deinit_host(); // add pvvx (fix SD_DeInit())
|
||||
}
|
||||
|
||||
//-----
|
||||
|
@ -276,7 +278,8 @@ s8 sdio_sd_setProtection(bool protection) {
|
|||
goto LABEL_8;
|
||||
hls = HalSdioHostOp.HalSdioHostSetWriteProtect(&SdioHostAdapter, 1);
|
||||
} else {
|
||||
if (sd_protected == 0) goto LABEL_8;
|
||||
if (sd_protected == 0)
|
||||
goto LABEL_8;
|
||||
hls = HalSdioHostOp.HalSdioHostSetWriteProtect(&SdioHostAdapter, 0);
|
||||
}
|
||||
if (hls) {
|
||||
|
@ -284,13 +287,11 @@ s8 sdio_sd_setProtection(bool protection) {
|
|||
result = -1;
|
||||
goto LABEL_17;
|
||||
}
|
||||
LABEL_8:
|
||||
sd_protected = protection;
|
||||
LABEL_7:
|
||||
LABEL_8: sd_protected = protection;
|
||||
LABEL_7:
|
||||
DBG_SDIO_INFO("Set SD card Protection done.\n");
|
||||
result = 0;
|
||||
LABEL_17:
|
||||
rtw_mfree(padma, sizeof(ADMA2_DESC_FMT));
|
||||
LABEL_17: rtw_mfree(padma, sizeof(ADMA2_DESC_FMT));
|
||||
return result;
|
||||
}
|
||||
return -1;
|
||||
|
@ -364,7 +365,8 @@ u32 sdio_sd_getCapacity(void) {
|
|||
if ((csd[0] & 0xC0) == 64)
|
||||
result = (u16) (csd[9] + 1 + (csd[8] << 8)) << 9;
|
||||
else
|
||||
result = (4 * csd[7] + ((u32) csd[8] >> 6) + 1 + ((csd[6] & 3) << 10))
|
||||
result = (4 * csd[7] + ((u32) csd[8] >> 6) + 1
|
||||
+ ((csd[6] & 3) << 10))
|
||||
<< ((csd[5] & 0xF) + (csd[10] >> 7) + 2 * (csd[9] & 3) - 8);
|
||||
result *= 2;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue