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

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

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: 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 1b00348d
Loading
Loading
Loading
Loading
+16 −30
Original line number Diff line number Diff line
@@ -652,29 +652,10 @@ static u32 d40_chan_has_events(struct d40_chan *d40c)
	return val;
}

static void d40_config_enable_lidx(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)
static void d40_config_write(struct d40_chan *d40c)
{
	u32 addr_base;
	u32 var;
	int res;

	res = d40_channel_execute_command(d40c, D40_DMA_SUSPEND_REQ);
	if (res)
		return res;

	/* Odd addresses are even addresses + 4 */
	addr_base = (d40c->phy_chan->num % 2) * 4;
@@ -700,9 +681,20 @@ static int d40_config_write(struct d40_chan *d40c)
		       d40c->phy_chan->num * D40_DREG_PCDELTA +
		       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)
@@ -1730,14 +1722,8 @@ static int d40_alloc_chan_resources(struct dma_chan *chan)
	 * resource is free. In case of multiple logical channels
	 * on the same physical resource, only the first write is necessary.
	 */
	if (is_free_phy) {
		err = d40_config_write(d40c);
		if (err) {
			dev_err(&d40c->chan.dev->device,
				"[%s] Failed to configure channel\n",
				__func__);
		}
	}
	if (is_free_phy)
		d40_config_write(d40c);
fail:
	spin_unlock_irqrestore(&d40c->lock, flags);
	return err;