Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be8cb7df authored by Jonas Aaberg's avatar Jonas Aaberg Committed by Dan Williams
Browse files

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: default avatarJonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@stericsson.com>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 0747c7ba
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -640,17 +640,13 @@ 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);

	if (d40c->dma_cfg.dir !=  STEDMA40_PERIPH_TO_MEM)
		val = readl(d40c->base->virtbase + D40_DREG_PCBASE +
	val |= readl(d40c->base->virtbase + D40_DREG_PCBASE +
		     d40c->phy_chan->num * D40_DREG_PCDELTA +
		     D40_CHAN_REG_SDLNK);
	return val;