Commit faa0c1f1 authored by Douglas Anderson's avatar Douglas Anderson Committed by Bjorn Andersson

soc: qcom: rpmh-rsc: Factor "tcs_reg_addr" and "tcs_cmd_addr" calculation

We can make some of the register access functions more readable by
factoring out the calculations a little bit.
Suggested-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
Link: https://lore.kernel.org/r/20200415095953.v3.1.Ic70288f256ff0be65cac6a600367212dfe39f6c9@changeidSigned-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent 8f09210d
...@@ -137,36 +137,47 @@ ...@@ -137,36 +137,47 @@
* +---------------------------------------------------+ * +---------------------------------------------------+
*/ */
static u32 read_tcs_cmd(struct rsc_drv *drv, int reg, int tcs_id, int cmd_id) static inline void __iomem *
tcs_reg_addr(const struct rsc_drv *drv, int reg, int tcs_id)
{ {
return readl_relaxed(drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg + return drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg;
RSC_DRV_CMD_OFFSET * cmd_id);
} }
static u32 read_tcs_reg(struct rsc_drv *drv, int reg, int tcs_id) static inline void __iomem *
tcs_cmd_addr(const struct rsc_drv *drv, int reg, int tcs_id, int cmd_id)
{ {
return readl_relaxed(drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg); return tcs_reg_addr(drv, reg, tcs_id) + RSC_DRV_CMD_OFFSET * cmd_id;
} }
static void write_tcs_cmd(struct rsc_drv *drv, int reg, int tcs_id, int cmd_id, static u32 read_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id,
u32 data) int cmd_id)
{
return readl_relaxed(tcs_cmd_addr(drv, reg, tcs_id, cmd_id));
}
static u32 read_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id)
{ {
writel_relaxed(data, drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg + return readl_relaxed(tcs_reg_addr(drv, reg, tcs_id));
RSC_DRV_CMD_OFFSET * cmd_id);
} }
static void write_tcs_reg(struct rsc_drv *drv, int reg, int tcs_id, u32 data) static void write_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id,
int cmd_id, u32 data)
{
writel_relaxed(data, tcs_cmd_addr(drv, reg, tcs_id, cmd_id));
}
static void write_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id,
u32 data)
{ {
writel_relaxed(data, drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg); writel_relaxed(data, tcs_reg_addr(drv, reg, tcs_id));
} }
static void write_tcs_reg_sync(struct rsc_drv *drv, int reg, int tcs_id, static void write_tcs_reg_sync(const struct rsc_drv *drv, int reg, int tcs_id,
u32 data) u32 data)
{ {
writel(data, drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg); writel(data, tcs_reg_addr(drv, reg, tcs_id));
for (;;) { for (;;) {
if (data == readl(drv->tcs_base + reg + if (data == readl(tcs_reg_addr(drv, reg, tcs_id)))
RSC_DRV_TCS_OFFSET * tcs_id))
break; break;
udelay(1); udelay(1);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment