Commit 08d08bcd authored by Sergei Shtylyov's avatar Sergei Shtylyov Committed by Vinod Koul

rcar-hpbdma: add parameter to set_slave() method

Commit 4981c4dc (DMA: shdma: switch DT mode to
use configuration data from a match table) added a new parameter to set_slave()
method but unfortunately got merged later than commit c4f6c41b
(dma: add driver for R-Car HPB-DMAC), so that the HPB-DMAC driver retained the
old prototype which caused this warning:

drivers/dma/sh/rcar-hpbdma.c:485: warning: initialization from incompatible
pointer type

The newly added parameter  is used to override DMA slave address from 'struct
hpb_dmae_slave_config', so we have to add the 'slave_addr' field to 'struct
hpb_dmae_chan', conditionally assign it in set_slave() method, and return in
slave_addr() method.
Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Tested-by: default avatarSimon Horman <horms+renesas@verge.net.au>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent cdeb5c03
...@@ -93,6 +93,7 @@ struct hpb_dmae_chan { ...@@ -93,6 +93,7 @@ struct hpb_dmae_chan {
void __iomem *base; void __iomem *base;
const struct hpb_dmae_slave_config *cfg; const struct hpb_dmae_slave_config *cfg;
char dev_id[16]; /* unique name per DMAC of channel */ char dev_id[16]; /* unique name per DMAC of channel */
dma_addr_t slave_addr;
}; };
struct hpb_dmae_device { struct hpb_dmae_device {
...@@ -445,7 +446,8 @@ hpb_dmae_alloc_chan_resources(struct hpb_dmae_chan *hpb_chan, ...@@ -445,7 +446,8 @@ hpb_dmae_alloc_chan_resources(struct hpb_dmae_chan *hpb_chan,
return 0; return 0;
} }
static int hpb_dmae_set_slave(struct shdma_chan *schan, int slave_id, bool try) static int hpb_dmae_set_slave(struct shdma_chan *schan, int slave_id,
dma_addr_t slave_addr, bool try)
{ {
struct hpb_dmae_chan *chan = to_chan(schan); struct hpb_dmae_chan *chan = to_chan(schan);
const struct hpb_dmae_slave_config *sc = const struct hpb_dmae_slave_config *sc =
...@@ -456,6 +458,7 @@ static int hpb_dmae_set_slave(struct shdma_chan *schan, int slave_id, bool try) ...@@ -456,6 +458,7 @@ static int hpb_dmae_set_slave(struct shdma_chan *schan, int slave_id, bool try)
if (try) if (try)
return 0; return 0;
chan->cfg = sc; chan->cfg = sc;
chan->slave_addr = slave_addr ? : sc->addr;
return hpb_dmae_alloc_chan_resources(chan, sc); return hpb_dmae_alloc_chan_resources(chan, sc);
} }
...@@ -467,7 +470,7 @@ static dma_addr_t hpb_dmae_slave_addr(struct shdma_chan *schan) ...@@ -467,7 +470,7 @@ static dma_addr_t hpb_dmae_slave_addr(struct shdma_chan *schan)
{ {
struct hpb_dmae_chan *chan = to_chan(schan); struct hpb_dmae_chan *chan = to_chan(schan);
return chan->cfg->addr; return chan->slave_addr;
} }
static struct shdma_desc *hpb_dmae_embedded_desc(void *buf, int i) static struct shdma_desc *hpb_dmae_embedded_desc(void *buf, int i)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment