Skip to content
Snippets Groups Projects
Forked from MediaTek / aiot / linux
Source project has a limited visibility.
user avatar
Andrew Halaney authored
Currently, the CGC enable bit is written and then an mb() is used to ensure
that completes before continuing.

mb() ensures that the write completes, 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 mb()'s purpose
wasn't to add extra ordering (on top of the ordering guaranteed by
writel()/readl()), it can safely be removed.

Reviewed-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: default avatarCan Guo <quic_cang@quicinc.com>
Fixes: 81c0fc51 ("ufs-qcom: add support for Qualcomm Technologies Inc platforms")
Signed-off-by: default avatarAndrew Halaney <ahalaney@redhat.com>
Link: https://lore.kernel.org/r/20240329-ufs-reset-ensure-effect-before-delay-v5-5-181252004586@redhat.com


Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
d9488511
History
user avatar d9488511
Name Last commit Last update