mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
DMAENGINE: ste_dma40: Fix failed to restart logical channel bug
A transfer that runs in the different direction on the same channel will now be resumed when the other is suspend/stopped. Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
0747c7bae5
commit
be8cb7dfd9
1 changed files with 7 additions and 11 deletions
|
@ -640,19 +640,15 @@ static void d40_config_set_event(struct d40_chan *d40c, bool do_enable)
|
|||
|
||||
static u32 d40_chan_has_events(struct d40_chan *d40c)
|
||||
{
|
||||
u32 val = 0;
|
||||
u32 val;
|
||||
|
||||
/* If SSLNK or SDLNK is zero all events are disabled */
|
||||
if ((d40c->dma_cfg.dir == STEDMA40_PERIPH_TO_MEM) ||
|
||||
(d40c->dma_cfg.dir == STEDMA40_PERIPH_TO_PERIPH))
|
||||
val = readl(d40c->base->virtbase + D40_DREG_PCBASE +
|
||||
d40c->phy_chan->num * D40_DREG_PCDELTA +
|
||||
D40_CHAN_REG_SSLNK);
|
||||
val = readl(d40c->base->virtbase + D40_DREG_PCBASE +
|
||||
d40c->phy_chan->num * D40_DREG_PCDELTA +
|
||||
D40_CHAN_REG_SSLNK);
|
||||
|
||||
if (d40c->dma_cfg.dir != STEDMA40_PERIPH_TO_MEM)
|
||||
val = readl(d40c->base->virtbase + D40_DREG_PCBASE +
|
||||
d40c->phy_chan->num * D40_DREG_PCDELTA +
|
||||
D40_CHAN_REG_SDLNK);
|
||||
val |= readl(d40c->base->virtbase + D40_DREG_PCBASE +
|
||||
d40c->phy_chan->num * D40_DREG_PCDELTA +
|
||||
D40_CHAN_REG_SDLNK);
|
||||
return val;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue