mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 18:11:20 +00:00
dmaengine: pl08x: Add support for the DMA slave map
This patch adds support for the new channel request API introduced
in commit a8135d0d79
"dmaengine: core: Introduce new, universal API to request a channel".
param field of struct dma_slave_map type entries in the platform
data structure should be pointing to struct pl08x_channel_data
of related DMA channel.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Tested-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
1001354ca3
commit
da6f8ca13f
2 changed files with 15 additions and 0 deletions
|
@ -1793,6 +1793,13 @@ bool pl08x_filter_id(struct dma_chan *chan, void *chan_id)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(pl08x_filter_id);
|
EXPORT_SYMBOL_GPL(pl08x_filter_id);
|
||||||
|
|
||||||
|
static bool pl08x_filter_fn(struct dma_chan *chan, void *chan_id)
|
||||||
|
{
|
||||||
|
struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
|
||||||
|
|
||||||
|
return plchan->cd == chan_id;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Just check that the device is there and active
|
* Just check that the device is there and active
|
||||||
* TODO: turn this bit on/off depending on the number of physical channels
|
* TODO: turn this bit on/off depending on the number of physical channels
|
||||||
|
@ -2307,6 +2314,10 @@ static int pl08x_probe(struct amba_device *adev, const struct amba_id *id)
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto out_no_platdata;
|
goto out_no_platdata;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
pl08x->slave.filter.map = pl08x->pd->slave_map;
|
||||||
|
pl08x->slave.filter.mapcnt = pl08x->pd->slave_map_len;
|
||||||
|
pl08x->slave.filter.fn = pl08x_filter_fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* By default, AHB1 only. If dualmaster, from platform */
|
/* By default, AHB1 only. If dualmaster, from platform */
|
||||||
|
|
|
@ -84,6 +84,8 @@ struct pl08x_channel_data {
|
||||||
* running any DMA transfer and multiplexing can be recycled
|
* running any DMA transfer and multiplexing can be recycled
|
||||||
* @lli_buses: buses which LLIs can be fetched from: PL08X_AHB1 | PL08X_AHB2
|
* @lli_buses: buses which LLIs can be fetched from: PL08X_AHB1 | PL08X_AHB2
|
||||||
* @mem_buses: buses which memory can be accessed from: PL08X_AHB1 | PL08X_AHB2
|
* @mem_buses: buses which memory can be accessed from: PL08X_AHB1 | PL08X_AHB2
|
||||||
|
* @slave_map: DMA slave matching table
|
||||||
|
* @slave_map_len: number of elements in @slave_map
|
||||||
*/
|
*/
|
||||||
struct pl08x_platform_data {
|
struct pl08x_platform_data {
|
||||||
struct pl08x_channel_data *slave_channels;
|
struct pl08x_channel_data *slave_channels;
|
||||||
|
@ -93,6 +95,8 @@ struct pl08x_platform_data {
|
||||||
void (*put_xfer_signal)(const struct pl08x_channel_data *, int);
|
void (*put_xfer_signal)(const struct pl08x_channel_data *, int);
|
||||||
u8 lli_buses;
|
u8 lli_buses;
|
||||||
u8 mem_buses;
|
u8 mem_buses;
|
||||||
|
const struct dma_slave_map *slave_map;
|
||||||
|
int slave_map_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_AMBA_PL08X
|
#ifdef CONFIG_AMBA_PL08X
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue