mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-13 00:29:50 +00:00
rcar-hpbdma: add parameter to set_slave() method
Commit 4981c4dc194efb18f0e9a02f1b43e926f2f0d2bb (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 c4f6c41ba790bbbfcebb4c47a (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: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Tested-by: Simon Horman <horms+renesas@verge.net.au> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
cdeb5c033f
commit
08d08bcdee
@ -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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user