Skip to content

Commit 88167e6

Browse files
Yann-lmsUlf Hansson
authored andcommitted
mmc: mmci: add stm32_idmabsize_align parameter
The alignment for the IDMA size depends on the peripheral version, it should then be configurable. Add stm32_idmabsize_align in the variant structure. And remove now unused (and wrong) MMCI_STM32_IDMABNDT_* macros. Signed-off-by: Yann Gautier <yann.gautier@foss.st.com> Link: https://lore.kernel.org/r/20230619115120.64474-3-yann.gautier@foss.st.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
1 parent 1f9f2cf commit 88167e6

3 files changed

Lines changed: 5 additions & 4 deletions

File tree

drivers/mmc/host/mmci.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ static struct variant_data variant_stm32_sdmmc = {
270270
.datactrl_any_blocksz = true,
271271
.datactrl_mask_sdio = MCI_DPSM_ST_SDIOEN,
272272
.stm32_idmabsize_mask = GENMASK(12, 5),
273+
.stm32_idmabsize_align = BIT(5),
273274
.busy_timeout = true,
274275
.busy_detect = true,
275276
.busy_detect_flag = MCI_STM32_BUSYD0,
@@ -296,6 +297,7 @@ static struct variant_data variant_stm32_sdmmcv2 = {
296297
.datactrl_any_blocksz = true,
297298
.datactrl_mask_sdio = MCI_DPSM_ST_SDIOEN,
298299
.stm32_idmabsize_mask = GENMASK(16, 5),
300+
.stm32_idmabsize_align = BIT(5),
299301
.dma_lli = true,
300302
.busy_timeout = true,
301303
.busy_detect = true,

drivers/mmc/host/mmci.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,6 @@
227227
#define MMCI_STM32_IDMALLIEN BIT(1)
228228

229229
#define MMCI_STM32_IDMABSIZER 0x054
230-
#define MMCI_STM32_IDMABNDT_SHIFT 5
231-
#define MMCI_STM32_IDMABNDT_MASK GENMASK(12, 5)
232230

233231
#define MMCI_STM32_IDMABASE0R 0x058
234232

@@ -374,6 +372,7 @@ struct variant_data {
374372
u32 opendrain;
375373
u8 dma_lli:1;
376374
u32 stm32_idmabsize_mask;
375+
u32 stm32_idmabsize_align;
377376
void (*init)(struct mmci_host *host);
378377
};
379378

drivers/mmc/host/mmci_stm32_sdmmc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include "mmci.h"
1616

1717
#define SDMMC_LLI_BUF_LEN PAGE_SIZE
18-
#define SDMMC_IDMA_BURST BIT(MMCI_STM32_IDMABNDT_SHIFT)
1918

2019
#define DLYB_CR 0x0
2120
#define DLYB_CR_DEN BIT(0)
@@ -69,7 +68,8 @@ static int sdmmc_idma_validate_data(struct mmci_host *host,
6968
idma->use_bounce_buffer = false;
7069
for_each_sg(data->sg, sg, data->sg_len - 1, i) {
7170
if (!IS_ALIGNED(sg->offset, sizeof(u32)) ||
72-
!IS_ALIGNED(sg->length, SDMMC_IDMA_BURST)) {
71+
!IS_ALIGNED(sg->length,
72+
host->variant->stm32_idmabsize_align)) {
7373
dev_dbg(mmc_dev(host->mmc),
7474
"unaligned scatterlist: ofst:%x length:%d\n",
7575
data->sg->offset, data->sg->length);

0 commit comments

Comments
 (0)