forked from luck/tmp_suning_uos_patched
mmc: sdhci-of-arasan: Use Mask writes for Tap delays
Mask the ITAP and OTAP delay bits before updating with the new
tap value for Versal platform.
Fixes: 1a470721c8
("sdhci: arasan: Add support for Versal Tap Delays")
Signed-off-by: Sai Krishna Potthuri <lakshmi.sai.krishna.potthuri@xilinx.com>
Signed-off-by: Manish Narani <manish.narani@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/1605515565-117562-3-git-send-email-manish.narani@xilinx.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
9e95343293
commit
d338c6d01d
|
@ -30,7 +30,10 @@
|
||||||
#define SDHCI_ARASAN_VENDOR_REGISTER 0x78
|
#define SDHCI_ARASAN_VENDOR_REGISTER 0x78
|
||||||
|
|
||||||
#define SDHCI_ARASAN_ITAPDLY_REGISTER 0xF0F8
|
#define SDHCI_ARASAN_ITAPDLY_REGISTER 0xF0F8
|
||||||
|
#define SDHCI_ARASAN_ITAPDLY_SEL_MASK 0xFF
|
||||||
|
|
||||||
#define SDHCI_ARASAN_OTAPDLY_REGISTER 0xF0FC
|
#define SDHCI_ARASAN_OTAPDLY_REGISTER 0xF0FC
|
||||||
|
#define SDHCI_ARASAN_OTAPDLY_SEL_MASK 0x3F
|
||||||
|
|
||||||
#define SDHCI_ARASAN_CQE_BASE_ADDR 0x200
|
#define SDHCI_ARASAN_CQE_BASE_ADDR 0x200
|
||||||
#define VENDOR_ENHANCED_STROBE BIT(0)
|
#define VENDOR_ENHANCED_STROBE BIT(0)
|
||||||
|
@ -755,6 +758,7 @@ static int sdhci_versal_sdcardclk_set_phase(struct clk_hw *hw, int degrees)
|
||||||
regval = sdhci_readl(host, SDHCI_ARASAN_OTAPDLY_REGISTER);
|
regval = sdhci_readl(host, SDHCI_ARASAN_OTAPDLY_REGISTER);
|
||||||
regval |= SDHCI_OTAPDLY_ENABLE;
|
regval |= SDHCI_OTAPDLY_ENABLE;
|
||||||
sdhci_writel(host, regval, SDHCI_ARASAN_OTAPDLY_REGISTER);
|
sdhci_writel(host, regval, SDHCI_ARASAN_OTAPDLY_REGISTER);
|
||||||
|
regval &= ~SDHCI_ARASAN_OTAPDLY_SEL_MASK;
|
||||||
regval |= tap_delay;
|
regval |= tap_delay;
|
||||||
sdhci_writel(host, regval, SDHCI_ARASAN_OTAPDLY_REGISTER);
|
sdhci_writel(host, regval, SDHCI_ARASAN_OTAPDLY_REGISTER);
|
||||||
}
|
}
|
||||||
|
@ -822,6 +826,7 @@ static int sdhci_versal_sampleclk_set_phase(struct clk_hw *hw, int degrees)
|
||||||
sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER);
|
sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER);
|
||||||
regval |= SDHCI_ITAPDLY_ENABLE;
|
regval |= SDHCI_ITAPDLY_ENABLE;
|
||||||
sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER);
|
sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER);
|
||||||
|
regval &= ~SDHCI_ARASAN_ITAPDLY_SEL_MASK;
|
||||||
regval |= tap_delay;
|
regval |= tap_delay;
|
||||||
sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER);
|
sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER);
|
||||||
regval &= ~SDHCI_ITAPDLY_CHGWIN;
|
regval &= ~SDHCI_ITAPDLY_CHGWIN;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user