git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@16148 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2023-03-09 16:19:47 +00:00
parent dab9ebf762
commit 26aab35d00
2 changed files with 12 additions and 10 deletions

View File

@ -540,7 +540,8 @@ void sdc_lld_set_data_clk(SDCDriver *sdcp, sdcbusclk_t clk) {
#if STM32_SDC_SDMMC_50MHZ
if (SDC_CLK_50MHz == clk) {
sdcp->sdmmc->CLKCR = (sdcp->sdmmc->CLKCR & 0xFFFFFF00U) |
sdcp->sdmmc->CLKCR = (sdcp->sdmmc->CLKCR & ~(SDMMC_CLKCR_PWRSAV_Msk |
SDMMC_CLKCR_CLKDIV_Msk)) |
#if STM32_SDC_SDMMC_PWRSAV
SDMMC_CLKDIV_HS | SDMMC_CLKCR_BYPASS |
SDMMC_CLKCR_PWRSAV;
@ -549,11 +550,12 @@ void sdc_lld_set_data_clk(SDCDriver *sdcp, sdcbusclk_t clk) {
#endif
}
else {
sdcp->sdmmc->CLKCR = (sdcp->sdmmc->CLKCR & ~(SDMMC_CLKCR_PWRSAV_Msk |
SDMMC_CLKCR_CLKDIV_Msk)) |
#if STM32_SDC_SDMMC_PWRSAV
sdcp->sdmmc->CLKCR = (sdcp->sdmmc->CLKCR & 0xFFFFFF00U) | SDMMC_CLKDIV_HS |
SDMMC_CLKCR_PWRSAV;
SDMMC_CLKDIV_HS | SDMMC_CLKCR_PWRSAV;
#else
sdcp->sdmmc->CLKCR = (sdcp->sdmmc->CLKCR & 0xFFFFFF00U) | SDMMC_CLKDIV_HS;
SDMMC_CLKDIV_HS;
#endif
}
#else

View File

@ -725,6 +725,9 @@ bool sdc_lld_read_aligned(SDCDriver *sdcp, uint32_t startblk,
SDMMC_MASK_DATAENDIE;
sdcp->sdmmc->DLEN = blocks * MMCSD_BLOCK_SIZE;
if (sdc_lld_prepare_read(sdcp, startblk, blocks, sdcp->resp) == true)
goto error;
/* Transfer modes.*/
sdcp->sdmmc->DCTRL = SDMMC_DCTRL_DTDIR |
SDMMC_DCTRL_FIFORST |
@ -732,9 +735,6 @@ bool sdc_lld_read_aligned(SDCDriver *sdcp, uint32_t startblk,
SDMMC_DCTRL_DBLOCKSIZE_0 |
SDMMC_DCTRL_DTEN;
if (sdc_lld_prepare_read(sdcp, startblk, blocks, sdcp->resp) == true)
goto error;
if (sdc_lld_wait_transaction_end(sdcp, blocks, sdcp->resp) == true)
goto error;
@ -782,15 +782,15 @@ bool sdc_lld_write_aligned(SDCDriver *sdcp, uint32_t startblk,
SDMMC_MASK_DATAENDIE;
sdcp->sdmmc->DLEN = blocks * MMCSD_BLOCK_SIZE;
if (sdc_lld_prepare_write(sdcp, startblk, blocks, sdcp->resp) == true)
goto error;
/* Transfer modes.*/
sdcp->sdmmc->DCTRL = SDMMC_DCTRL_FIFORST |
SDMMC_DCTRL_DBLOCKSIZE_3 |
SDMMC_DCTRL_DBLOCKSIZE_0 |
SDMMC_DCTRL_DTEN;
if (sdc_lld_prepare_write(sdcp, startblk, blocks, sdcp->resp) == true)
goto error;
if (sdc_lld_wait_transaction_end(sdcp, blocks, sdcp->resp) == true)
goto error;