f98c6fd4ec
[ Upstream commit 4bf3855497b60765ca03b983d064b25e99b97657 ]
Currently, the UIC_COMMAND_COMPL interrupt is disabled and a wmb() is used
to complete the register write before any following writes.
wmb() ensures the writes complete in that order, but completion doesn't
mean that it isn't stored in a buffer somewhere. The recommendation for
ensuring this bit has taken effect on the device is to perform a read back
to force it to make it all the way to the device. This is documented in
device-io.rst and a talk by Will Deacon on this can be seen over here:
https://youtu.be/i6DayghhA8Q?si=MiyxB5cKJXSaoc01&t=1678
Let's do that to ensure the bit hits the device. Because the wmb()'s
purpose wasn't to add extra ordering (on top of the ordering guaranteed by
writel()/readl()), it can safely be removed.
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
cdns-pltfrm.c | ||
tc-dwc-g210-pci.c | ||
tc-dwc-g210-pltfrm.c | ||
tc-dwc-g210.c | ||
tc-dwc-g210.h | ||
ti-j721e-ufs.c | ||
ufs-debugfs.c | ||
ufs-debugfs.h | ||
ufs-exynos.c | ||
ufs-exynos.h | ||
ufs-fault-injection.c | ||
ufs-fault-injection.h | ||
ufs-hisi.c | ||
ufs-hisi.h | ||
ufs-mediatek-trace.h | ||
ufs-mediatek.c | ||
ufs-mediatek.h | ||
ufs-qcom-ice.c | ||
ufs-qcom.c | ||
ufs-qcom.h | ||
ufs-sysfs.c | ||
ufs-sysfs.h | ||
ufs.h | ||
ufs_bsg.c | ||
ufs_bsg.h | ||
ufs_quirks.h | ||
ufshcd-crypto.c | ||
ufshcd-crypto.h | ||
ufshcd-dwc.c | ||
ufshcd-dwc.h | ||
ufshcd-pci.c | ||
ufshcd-pltfrm.c | ||
ufshcd-pltfrm.h | ||
ufshcd.c | ||
ufshcd.h | ||
ufshci-dwc.h | ||
ufshci.h | ||
ufshpb.c | ||
ufshpb.h | ||
unipro.h |