From 4797b42e763f6a47f51618451a251916c00eae48 Mon Sep 17 00:00:00 2001 From: CTCaer Date: Wed, 17 Dec 2025 04:30:12 +0200 Subject: [PATCH] bdk: sdmmc: add defines for max block number --- bdk/storage/sdmmc.c | 2 +- bdk/storage/sdmmc.h | 2 ++ bdk/storage/sdmmc_driver.c | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bdk/storage/sdmmc.c b/bdk/storage/sdmmc.c index 0dd994f6..d5842155 100644 --- a/bdk/storage/sdmmc.c +++ b/bdk/storage/sdmmc.c @@ -327,7 +327,7 @@ static int _sdmmc_storage_readwrite(sdmmc_storage_t *storage, u32 sector, u32 nu do { reinit_try: - if (_sdmmc_storage_readwrite_ex(storage, &blkcnt, sct_off, MIN(sct_total, 0xFFFF), bbuf, is_write)) + if (_sdmmc_storage_readwrite_ex(storage, &blkcnt, sct_off, MIN(sct_total, SDMMC_AMAX_BLOCKNUM), bbuf, is_write)) goto out; else retries--; diff --git a/bdk/storage/sdmmc.h b/bdk/storage/sdmmc.h index 6da130a0..e1b3fcda 100644 --- a/bdk/storage/sdmmc.h +++ b/bdk/storage/sdmmc.h @@ -24,6 +24,8 @@ #define SDMMC_CMD_BLOCKSIZE 64 #define SDMMC_DAT_BLOCKSIZE 512 +#define SDMMC_HMAX_BLOCKNUM 0xFFFF // HW max. +#define SDMMC_AMAX_BLOCKNUM 0xF000 // Aligned max. extern u32 sd_power_cycle_time_start; diff --git a/bdk/storage/sdmmc_driver.c b/bdk/storage/sdmmc_driver.c index f46f67bb..c279ec86 100644 --- a/bdk/storage/sdmmc_driver.c +++ b/bdk/storage/sdmmc_driver.c @@ -1008,8 +1008,8 @@ static int _sdmmc_config_sdma(sdmmc_t *sdmmc, u32 *blkcnt_out, const sdmmc_req_t return 0; u32 blkcnt = req->num_sectors; - if (blkcnt >= 0xFFFF) - blkcnt = 0xFFFF; + if (blkcnt >= SDMMC_HMAX_BLOCKNUM) + blkcnt = SDMMC_HMAX_BLOCKNUM; u32 admaaddr = (u32)req->buf; // Check alignment.