diff --git a/bsp/at91sam9260/at91_mci.c b/bsp/at91sam9260/at91_mci.c index b9c2611f3610fbfe736f0c32b0fb781488b5e109..39fd364f11818e98e767e987485372e46ee77db2 100755 --- a/bsp/at91sam9260/at91_mci.c +++ b/bsp/at91sam9260/at91_mci.c @@ -340,7 +340,7 @@ static void at91_mci_send_command(struct at91_mci *mci, struct rt_mmcsd_cmd *cmd * Handle a read */ - mmu_invalidate_dcache(data->buf, data->blksize*data->blks); + mmu_invalidate_dcache((rt_uint32_t)data->buf, data->blksize*data->blks); at91_mci_init_dma_read(mci); ier = AT91_MCI_ENDRX /* | AT91_MCI_RXBUFF */; } @@ -367,14 +367,14 @@ static void at91_mci_send_command(struct at91_mci *mci, struct rt_mmcsd_cmd *cmd } rt_memset(mci->buf, 0, 12); rt_memcpy(mci->buf, data->buf, length); - mmu_clean_dcache(mci->buf, length); + mmu_clean_dcache((rt_uint32_t)mci->buf, length); at91_mci_write(AT91_PDC_TPR, (rt_uint32_t)(mci->buf)); at91_mci_write(AT91_PDC_TCR, (data->blksize & 0x3) ? length : length / 4); } else { - mmu_clean_dcache(data->buf, data->blksize*data->blks); + mmu_clean_dcache((rt_uint32_t)data->buf, data->blksize*data->blks); at91_mci_write(AT91_PDC_TPR, (rt_uint32_t)(data->buf)); at91_mci_write(AT91_PDC_TCR, (data->blksize & 0x3) ? length : length / 4); @@ -848,7 +848,8 @@ rt_int32_t at91_mci_init(void) host->freq_min = 375000; host->freq_max = 25000000; host->valid_ocr = VDD_32_33 | VDD_33_34; - host->flags = MMCSD_BUSWIDTH_4 | MMCSD_MUTBLKWRITE; + host->flags = MMCSD_BUSWIDTH_4 | MMCSD_MUTBLKWRITE | \ + MMCSD_SUP_HIGHSPEED | MMCSD_SUP_SDIO_IRQ; host->max_seg_size = 65535; host->max_dma_segs = 2; host->max_blk_size = 512;