From b7164a629fdf5b27924b1c5bd6d8c175aa0e9375 Mon Sep 17 00:00:00 2001 From: CTCaer Date: Fri, 31 Mar 2023 08:24:52 +0300 Subject: [PATCH] bdk: sdmmc: allow max power limit to be set Even if it defaults to 1.44W. Some cards' firmware maybe be bugged. The 3.3V regulator on all SKUs allow more than 800mA current anyway. --- bdk/storage/sdmmc.c | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/bdk/storage/sdmmc.c b/bdk/storage/sdmmc.c index 0a9f834..b17c092 100644 --- a/bdk/storage/sdmmc.c +++ b/bdk/storage/sdmmc.c @@ -998,43 +998,34 @@ static void _sd_storage_set_power_limit(sdmmc_storage_t *storage, u16 power_limi { u32 pwr = SD_SET_POWER_LIMIT_0_72; -// If UHS-I only, anything above 1.44W defaults to 1.44W. -#if SDMMC_UHS2_SUPPORT + // If UHS-I only, anything above 1.44W defaults to 1.44W. if (power_limit & SD_MAX_POWER_2_88) pwr = SD_SET_POWER_LIMIT_2_88; else if (power_limit & SD_MAX_POWER_2_16) pwr = SD_SET_POWER_LIMIT_2_16; else if (power_limit & SD_MAX_POWER_1_44) pwr = SD_SET_POWER_LIMIT_1_44; -#else - if (power_limit & SD_MAX_POWER_1_44) - pwr = SD_SET_POWER_LIMIT_1_44; -#endif _sd_storage_switch(storage, buf, SD_SWITCH_SET, SD_SWITCH_GRP_PWRLIM, pwr); - if (((buf[15] >> 4) & 0x0F) == pwr) + switch ((buf[15] >> 4) & 0x0F) { - switch (pwr) - { -#if SDMMC_UHS2_SUPPORT - case SD_SET_POWER_LIMIT_2_88: -DPRINTF("[SD] power limit raised to 2880 mW\n"); - break; + case SD_SET_POWER_LIMIT_2_88: + DPRINTF("[SD] power limit raised to 2880 mW\n"); + break; - case SD_SET_POWER_LIMIT_2_16: -DPRINTF("[SD] power limit raised to 2160 mW\n"); - break; -#endif - case SD_SET_POWER_LIMIT_1_44: -DPRINTF("[SD] power limit raised to 1440 mW\n"); - break; + case SD_SET_POWER_LIMIT_2_16: + DPRINTF("[SD] power limit raised to 2160 mW\n"); + break; - default: - case SD_SET_POWER_LIMIT_0_72: -DPRINTF("[SD] power limit defaulted to 720 mW\n"); - break; - } + case SD_SET_POWER_LIMIT_1_44: + DPRINTF("[SD] power limit raised to 1440 mW\n"); + break; + + default: + case SD_SET_POWER_LIMIT_0_72: + DPRINTF("[SD] power limit defaulted to 720 mW\n"); + break; } }