]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mmc: zynq_sdhci: Allow configuring zero Tap values
authorAshok Reddy Soma <ashok.reddy.soma@xilinx.com>
Fri, 9 Jul 2021 11:53:40 +0000 (05:53 -0600)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 26 Jul 2021 07:18:45 +0000 (09:18 +0200)
Allow configuring ITAP and OTAP values with zero to avoid failures in
some cases (one of them is SD boot mode). Legacy, SDR12 modes require
to program the ITAP and OTAP values as zero, whereas for SDR50 and SDR104
modes ITAP value is zero.

In SD boot mode firmware configures the SD ITAP and OTAP values and
in this case u-boot has to re-configure required tap values(including zero)
based on the operating mode.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/mmc/zynq_sdhci.c

index 5bad5cb9e7a5c3707744d91a53b44ee6dea0d732..f65a87a4e140a2fd9f5a4aa77f98a9a8210e2d8e 100644 (file)
@@ -198,9 +198,7 @@ static int sdhci_zynqmp_sdcardclk_set_phase(struct sdhci_host *host,
         * ZynqMP does not set phase for <=25MHz clock.
         * If degrees is zero, no need to do anything.
         */
-       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300 ||
-           timing == MMC_TIMING_LEGACY ||
-           timing == MMC_TIMING_UHS_SDR12 || !degrees)
+       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300)
                return 0;
 
        switch (timing) {
@@ -253,9 +251,7 @@ static int sdhci_zynqmp_sampleclk_set_phase(struct sdhci_host *host,
         * ZynqMP does not set phase for <=25MHz clock.
         * If degrees is zero, no need to do anything.
         */
-       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300 ||
-           timing == MMC_TIMING_LEGACY ||
-           timing == MMC_TIMING_UHS_SDR12 || !degrees)
+       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300)
                return 0;
 
        switch (timing) {
@@ -307,9 +303,7 @@ static int sdhci_versal_sdcardclk_set_phase(struct sdhci_host *host,
         * Versal does not set phase for <=25MHz clock.
         * If degrees is zero, no need to do anything.
         */
-       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300 ||
-           timing == MMC_TIMING_LEGACY ||
-           timing == MMC_TIMING_UHS_SDR12 || !degrees)
+       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300)
                return 0;
 
        switch (timing) {
@@ -370,9 +364,7 @@ static int sdhci_versal_sampleclk_set_phase(struct sdhci_host *host,
         * Versal does not set phase for <=25MHz clock.
         * If degrees is zero, no need to do anything.
         */
-       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300 ||
-           timing == MMC_TIMING_LEGACY ||
-           timing == MMC_TIMING_UHS_SDR12 || !degrees)
+       if (SDHCI_GET_VERSION(host) < SDHCI_SPEC_300)
                return 0;
 
        switch (timing) {