From 2d29e47aaf3c7631f1676d71df2c99fc6e9fd8e6 Mon Sep 17 00:00:00 2001 From: Jonas Aaberg Date: Mon, 9 Aug 2010 12:08:02 +0000 Subject: [PATCH] --- yaml --- r: 218775 b: refs/heads/master c: b55912c66a317d9aaf4749488ca43d510c8a8a87 h: refs/heads/master i: 218773: 8d5182652f2a0faa4e7d5a5852d479e32fb9cc6d 218771: 541d739b255eaade8c2b6a08704b61bf3ade8cf9 218767: 920e3cf882964e33e8bd367bb580cad2adf9b1e4 v: v3 --- [refs] | 2 +- trunk/drivers/dma/ste_dma40.c | 46 ++++++++++++----------------------- 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/[refs] b/[refs] index 207ebd79f00a..4d0324ed3f4b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1b00348d5d0b3423fe21f499bf30d40a4d1dc594 +refs/heads/master: b55912c66a317d9aaf4749488ca43d510c8a8a87 diff --git a/trunk/drivers/dma/ste_dma40.c b/trunk/drivers/dma/ste_dma40.c index 538c35d05a57..1adaebf49774 100644 --- a/trunk/drivers/dma/ste_dma40.c +++ b/trunk/drivers/dma/ste_dma40.c @@ -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;