soc: qcom: rpmh-rsc: read_tcs_reg()/write_tcs_reg() are not for IRQ
The RSC_DRV_IRQ_ENABLE, RSC_DRV_IRQ_STATUS, and RSC_DRV_IRQ_CLEAR registers are not part of TCS 0. Let's not pretend that they are by using read_tcs_reg() and write_tcs_reg() and passing a bogus tcs_id of 0. We could introduce a new wrapper for these registers but it wouldn't buy us much. Let's just read/write directly. Signed-off-by: Douglas Anderson <dianders@chromium.org> Reviewed-by: Maulik Shah <mkshah@codeaurora.org> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Tested-by: Maulik Shah <mkshah@codeaurora.org> Link: https://lore.kernel.org/r/20200413100321.v4.10.I2adf93809c692d0b673e1a86ea97c45644aa8d97@changeid Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
parent
881808d0bb
commit
032c692ae5
|
@ -364,12 +364,12 @@ static void enable_tcs_irq(struct rsc_drv *drv, int tcs_id, bool enable)
|
|||
{
|
||||
u32 data;
|
||||
|
||||
data = read_tcs_reg(drv, RSC_DRV_IRQ_ENABLE, 0);
|
||||
data = readl_relaxed(drv->tcs_base + RSC_DRV_IRQ_ENABLE);
|
||||
if (enable)
|
||||
data |= BIT(tcs_id);
|
||||
else
|
||||
data &= ~BIT(tcs_id);
|
||||
write_tcs_reg(drv, RSC_DRV_IRQ_ENABLE, 0, data);
|
||||
writel_relaxed(data, drv->tcs_base + RSC_DRV_IRQ_ENABLE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -390,7 +390,7 @@ static irqreturn_t tcs_tx_done(int irq, void *p)
|
|||
const struct tcs_request *req;
|
||||
struct tcs_cmd *cmd;
|
||||
|
||||
irq_status = read_tcs_reg(drv, RSC_DRV_IRQ_STATUS, 0);
|
||||
irq_status = readl_relaxed(drv->tcs_base + RSC_DRV_IRQ_STATUS);
|
||||
|
||||
for_each_set_bit(i, &irq_status, BITS_PER_LONG) {
|
||||
req = get_req_from_tcs(drv, i);
|
||||
|
@ -427,7 +427,7 @@ skip:
|
|||
/* Reclaim the TCS */
|
||||
write_tcs_reg(drv, RSC_DRV_CMD_ENABLE, i, 0);
|
||||
write_tcs_reg(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, i, 0);
|
||||
write_tcs_reg(drv, RSC_DRV_IRQ_CLEAR, 0, BIT(i));
|
||||
writel_relaxed(BIT(i), drv->tcs_base + RSC_DRV_IRQ_CLEAR);
|
||||
spin_lock(&drv->lock);
|
||||
clear_bit(i, drv->tcs_in_use);
|
||||
/*
|
||||
|
@ -969,7 +969,8 @@ static int rpmh_rsc_probe(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
/* Enable the active TCS to send requests immediately */
|
||||
write_tcs_reg(drv, RSC_DRV_IRQ_ENABLE, 0, drv->tcs[ACTIVE_TCS].mask);
|
||||
writel_relaxed(drv->tcs[ACTIVE_TCS].mask,
|
||||
drv->tcs_base + RSC_DRV_IRQ_ENABLE);
|
||||
|
||||
spin_lock_init(&drv->client.cache_lock);
|
||||
INIT_LIST_HEAD(&drv->client.cache);
|
||||
|
|
Loading…
Reference in New Issue