]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
feat(st-sdmmc2): make reset property optional
authorYann Gautier <yann.gautier@foss.st.com>
Tue, 3 May 2022 13:37:54 +0000 (15:37 +0200)
committerYann Gautier <yann.gautier@st.com>
Tue, 16 Aug 2022 13:58:22 +0000 (15:58 +0200)
Although not recommended, the reset property could be made optional.
This way the driver will probe even if no reset property is provided
in an sdmmc node in DT. This reset is already optional in Linux.

Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
Change-Id: I6e63ff00118d9497f505d6379982334dd62686ca

drivers/st/mmc/stm32_sdmmc2.c

index dda981c56915e80854d88abffbefd68cbd93da9a..c9bad711ce93e4b5200b9d205e2e14c4492e8f23 100644 (file)
@@ -754,8 +754,6 @@ unsigned long long stm32_sdmmc2_mmc_get_device_size(void)
 
 int stm32_sdmmc2_mmc_init(struct stm32_sdmmc2_params *params)
 {
-       int rc;
-
        assert((params != NULL) &&
               ((params->reg_base & MMC_BLOCK_MASK) == 0U) &&
               ((params->bus_width == MMC_BUS_WIDTH_1) ||
@@ -773,16 +771,20 @@ int stm32_sdmmc2_mmc_init(struct stm32_sdmmc2_params *params)
 
        clk_enable(sdmmc2_params.clock_id);
 
-       rc = stm32mp_reset_assert(sdmmc2_params.reset_id, TIMEOUT_US_1_MS);
-       if (rc != 0) {
-               panic();
-       }
-       udelay(2);
-       rc = stm32mp_reset_deassert(sdmmc2_params.reset_id, TIMEOUT_US_1_MS);
-       if (rc != 0) {
-               panic();
+       if ((int)sdmmc2_params.reset_id >= 0) {
+               int rc;
+
+               rc = stm32mp_reset_assert(sdmmc2_params.reset_id, TIMEOUT_US_1_MS);
+               if (rc != 0) {
+                       panic();
+               }
+               udelay(2);
+               rc = stm32mp_reset_deassert(sdmmc2_params.reset_id, TIMEOUT_US_1_MS);
+               if (rc != 0) {
+                       panic();
+               }
+               mdelay(1);
        }
-       mdelay(1);
 
        sdmmc2_params.clk_rate = clk_get_rate(sdmmc2_params.clock_id);
        sdmmc2_params.device_info->ocr_voltage = OCR_3_2_3_3 | OCR_3_3_3_4;