|
@@ -93,6 +93,7 @@ struct hpb_dmae_chan {
|
|
|
void __iomem *base;
|
|
|
const struct hpb_dmae_slave_config *cfg;
|
|
|
char dev_id[16]; /* unique name per DMAC of channel */
|
|
|
+ dma_addr_t slave_addr;
|
|
|
};
|
|
|
|
|
|
struct hpb_dmae_device {
|
|
@@ -445,7 +446,8 @@ hpb_dmae_alloc_chan_resources(struct hpb_dmae_chan *hpb_chan,
|
|
|
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);
|
|
|
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)
|
|
|
return 0;
|
|
|
chan->cfg = sc;
|
|
|
+ chan->slave_addr = slave_addr ? : sc->addr;
|
|
|
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);
|
|
|
|
|
|
- return chan->cfg->addr;
|
|
|
+ return chan->slave_addr;
|
|
|
}
|
|
|
|
|
|
static struct shdma_desc *hpb_dmae_embedded_desc(void *buf, int i)
|