soc: qcom-geni-se: Don't use relaxed writes when writing commands
authorDouglas Anderson <dianders@chromium.org>
Wed, 22 Jul 2020 22:01:20 +0000 (15:01 -0700)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 10 Sep 2020 16:55:00 +0000 (16:55 +0000)
Writing the command is the final step in kicking off a transfer.
Let's use writel() to ensure that any other memory accesses are done
before the command kicks off.  It's expected that this is mostly
relevant if we're in DMA mode but since it doesn't appear to regress
performance in a measurable way [1] even in PIO mode and it's easier
to reason about then let's just always use it.

NOTE: this patch came about due to code inspection.  No actual
problems were observed that this patch fixes.

[1] Tested by timing "flashrom -p ec" on a Chromebook which stresses
GENI SPI a lot.

Reviewed-by: Mukesh Kumar Savaliya <msavaliy@codeaurora.org>
Reviewed-by: Akash Asthana <akashast@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Suggested-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20200722150113.1.Ia50ab5cb8a6d3a73d302e6bdc25542d48ffd27f4@changeid
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
include/linux/qcom-geni-se.h

index 8f385fbe5a0ebcf9c1a7a6ff6c986893548b4209..ae4a8a766b690182fd5150506416776ce21b2d94 100644 (file)
@@ -296,7 +296,7 @@ static inline void geni_se_setup_m_cmd(struct geni_se *se, u32 cmd, u32 params)
        u32 m_cmd;
 
        m_cmd = (cmd << M_OPCODE_SHFT) | (params & M_PARAMS_MSK);
-       writel_relaxed(m_cmd, se->base + SE_GENI_M_CMD0);
+       writel(m_cmd, se->base + SE_GENI_M_CMD0);
 }
 
 /**
@@ -316,7 +316,7 @@ static inline void geni_se_setup_s_cmd(struct geni_se *se, u32 cmd, u32 params)
        s_cmd &= ~(S_OPCODE_MSK | S_PARAMS_MSK);
        s_cmd |= (cmd << S_OPCODE_SHFT);
        s_cmd |= (params & S_PARAMS_MSK);
-       writel_relaxed(s_cmd, se->base + SE_GENI_S_CMD0);
+       writel(s_cmd, se->base + SE_GENI_S_CMD0);
 }
 
 /**