mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +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
@ -1793,6 +1793,13 @@ bool pl08x_filter_id(struct dma_chan *chan, void *chan_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
|
||||
* 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;
|
||||
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 */
|
||||
|
@ -84,6 +84,8 @@ struct pl08x_channel_data {
|
||||
* running any DMA transfer and multiplexing can be recycled
|
||||
* @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
|
||||
* @slave_map: DMA slave matching table
|
||||
* @slave_map_len: number of elements in @slave_map
|
||||
*/
|
||||
struct pl08x_platform_data {
|
||||
struct pl08x_channel_data *slave_channels;
|
||||
@ -93,6 +95,8 @@ struct pl08x_platform_data {
|
||||
void (*put_xfer_signal)(const struct pl08x_channel_data *, int);
|
||||
u8 lli_buses;
|
||||
u8 mem_buses;
|
||||
const struct dma_slave_map *slave_map;
|
||||
int slave_map_len;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_AMBA_PL08X
|
||||
|
Loading…
Reference in New Issue
Block a user