提交 b55912c6 编写于 作者: J Jonas Aaberg 提交者: Dan Williams

DMAENGINE: ste_dma40: Code clean-up and removed an unneeded suspend request

This patch cleans up some code and removes a suspend request that was pointless
since the hw was never configured nor running when it was called.
Signed-off-by: NJonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: NLinus Walleij <linus.walleij@stericsson.com>
Signed-off-by: NDan Williams <dan.j.williams@intel.com>
上级 1b00348d
...@@ -652,29 +652,10 @@ static u32 d40_chan_has_events(struct d40_chan *d40c) ...@@ -652,29 +652,10 @@ static u32 d40_chan_has_events(struct d40_chan *d40c)
return val; return val;
} }
static void d40_config_enable_lidx(struct d40_chan *d40c) static void d40_config_write(struct d40_chan *d40c)
{
/* Set LIDX for lcla */
writel((d40c->phy_chan->num << D40_SREG_ELEM_LOG_LIDX_POS) &
D40_SREG_ELEM_LOG_LIDX_MASK,
d40c->base->virtbase + D40_DREG_PCBASE +
d40c->phy_chan->num * D40_DREG_PCDELTA + D40_CHAN_REG_SDELT);
writel((d40c->phy_chan->num << D40_SREG_ELEM_LOG_LIDX_POS) &
D40_SREG_ELEM_LOG_LIDX_MASK,
d40c->base->virtbase + D40_DREG_PCBASE +
d40c->phy_chan->num * D40_DREG_PCDELTA + D40_CHAN_REG_SSELT);
}
static int d40_config_write(struct d40_chan *d40c)
{ {
u32 addr_base; u32 addr_base;
u32 var; u32 var;
int res;
res = d40_channel_execute_command(d40c, D40_DMA_SUSPEND_REQ);
if (res)
return res;
/* Odd addresses are even addresses + 4 */ /* Odd addresses are even addresses + 4 */
addr_base = (d40c->phy_chan->num % 2) * 4; addr_base = (d40c->phy_chan->num % 2) * 4;
...@@ -700,9 +681,20 @@ static int d40_config_write(struct d40_chan *d40c) ...@@ -700,9 +681,20 @@ static int d40_config_write(struct d40_chan *d40c)
d40c->phy_chan->num * D40_DREG_PCDELTA + d40c->phy_chan->num * D40_DREG_PCDELTA +
D40_CHAN_REG_SDCFG); D40_CHAN_REG_SDCFG);
d40_config_enable_lidx(d40c); /* Set LIDX for lcla */
writel((d40c->phy_chan->num << D40_SREG_ELEM_LOG_LIDX_POS) &
D40_SREG_ELEM_LOG_LIDX_MASK,
d40c->base->virtbase + D40_DREG_PCBASE +
d40c->phy_chan->num * D40_DREG_PCDELTA +
D40_CHAN_REG_SDELT);
writel((d40c->phy_chan->num << D40_SREG_ELEM_LOG_LIDX_POS) &
D40_SREG_ELEM_LOG_LIDX_MASK,
d40c->base->virtbase + D40_DREG_PCBASE +
d40c->phy_chan->num * D40_DREG_PCDELTA +
D40_CHAN_REG_SSELT);
} }
return res;
} }
static void d40_desc_load(struct d40_chan *d40c, struct d40_desc *d40d) static void d40_desc_load(struct d40_chan *d40c, struct d40_desc *d40d)
...@@ -1730,14 +1722,8 @@ static int d40_alloc_chan_resources(struct dma_chan *chan) ...@@ -1730,14 +1722,8 @@ static int d40_alloc_chan_resources(struct dma_chan *chan)
* resource is free. In case of multiple logical channels * resource is free. In case of multiple logical channels
* on the same physical resource, only the first write is necessary. * on the same physical resource, only the first write is necessary.
*/ */
if (is_free_phy) { if (is_free_phy)
err = d40_config_write(d40c); d40_config_write(d40c);
if (err) {
dev_err(&d40c->chan.dev->device,
"[%s] Failed to configure channel\n",
__func__);
}
}
fail: fail:
spin_unlock_irqrestore(&d40c->lock, flags); spin_unlock_irqrestore(&d40c->lock, flags);
return err; return err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册