@@ -2529,7 +2529,8 @@ static struct dma_chan *pl08x_find_chan_id(struct pl08x_driver_data *pl08x,
}
static struct dma_chan *pl08x_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct pl08x_driver_data *pl08x = ofdma->of_dma_data;
struct dma_chan *dma_chan;
@@ -579,7 +579,8 @@ static void admac_free_chan_resources(struct dma_chan *chan)
}
static struct dma_chan *admac_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct admac_data *ad = (struct admac_data *) ofdma->of_dma_data;
unsigned int index;
@@ -1794,7 +1794,8 @@ static bool at_dma_filter(struct dma_chan *chan, void *slave)
}
static struct dma_chan *at_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *of_dma)
+ struct of_dma *of_dma,
+ void *data)
{
struct dma_chan *chan;
struct at_dma_chan *atchan;
@@ -1861,7 +1862,8 @@ static struct dma_chan *at_dma_xlate(struct of_phandle_args *dma_spec,
}
#else
static struct dma_chan *at_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *of_dma)
+ struct of_dma *of_dma,
+ void *data)
{
return NULL;
}
@@ -633,7 +633,8 @@ static inline void at_xdmac_increment_block_count(struct dma_chan *chan,
}
static struct dma_chan *at_xdmac_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *of_dma)
+ struct of_dma *of_dma,
+ void *data)
{
struct at_xdmac *atxdmac = of_dma->of_dma_data;
struct at_xdmac_chan *atchan;
@@ -860,7 +860,8 @@ static const struct of_device_id bcm2835_dma_of_match[] = {
MODULE_DEVICE_TABLE(of, bcm2835_dma_of_match);
static struct dma_chan *bcm2835_dma_xlate(struct of_phandle_args *spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct bcm2835_dmadev *d = ofdma->of_dma_data;
struct dma_chan *chan;
@@ -803,7 +803,8 @@ static bool jz4780_dma_filter_fn(struct dma_chan *chan, void *param)
}
static struct dma_chan *jz4780_of_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct jz4780_dma_dev *jzdma = ofdma->of_dma_data;
dma_cap_mask_t mask = jzdma->dma_device.cap_mask;
@@ -806,20 +806,21 @@ static const struct dma_slave_map *dma_filter_match(struct dma_device *device,
}
/**
- * dma_request_chan - try to allocate an exclusive slave channel
+ * dma_request_chan_w_data - try to allocate an exclusive slave channel, with extra data
* @dev: pointer to client device structure
* @name: slave channel name
+ * @data: pointer to producer-consumer specific data
*
* Returns pointer to appropriate DMA channel on success or an error pointer.
*/
-struct dma_chan *dma_request_chan(struct device *dev, const char *name)
+struct dma_chan *dma_request_chan_w_data(struct device *dev, const char *name, void *data)
{
struct fwnode_handle *fwnode = dev_fwnode(dev);
struct dma_device *d, *_d;
struct dma_chan *chan = NULL;
if (is_of_node(fwnode))
- chan = of_dma_request_slave_channel(to_of_node(fwnode), name);
+ chan = of_dma_request_slave_channel(to_of_node(fwnode), name, data);
else if (is_acpi_device_node(fwnode))
chan = acpi_dma_request_slave_chan_by_name(dev, name);
@@ -871,6 +872,19 @@ struct dma_chan *dma_request_chan(struct device *dev, const char *name)
return chan;
}
+EXPORT_SYMBOL_GPL(dma_request_chan_w_data);
+
+/**
+ * dma_request_chan - try to allocate an exclusive slave channel
+ * @dev: pointer to client device structure
+ * @name: slave channel name
+ *
+ * Returns pointer to appropriate DMA channel on success or an error pointer.
+ */
+struct dma_chan *dma_request_chan(struct device *dev, const char *name)
+{
+ return dma_request_chan_w_data(dev, name, NULL);
+}
EXPORT_SYMBOL_GPL(dma_request_chan);
/**
@@ -1358,7 +1358,8 @@ static int __maybe_unused axi_dma_runtime_resume(struct device *dev)
}
static struct dma_chan *dw_axi_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct dw_axi_dma *dw = ofdma->of_dma_data;
struct axi_dma_chan *chan;
@@ -14,7 +14,8 @@
#include "internal.h"
static struct dma_chan *dw_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct dw_dma *dw = ofdma->of_dma_data;
struct dw_dma_slave slave = {
@@ -1443,7 +1443,8 @@ static bool ep93xx_m2p_dma_filter(struct dma_chan *chan, void *filter_param)
}
static struct dma_chan *ep93xx_m2p_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct ep93xx_dma_engine *edma = ofdma->of_dma_data;
dma_cap_mask_t mask = edma->dma_dev.cap_mask;
@@ -1474,7 +1475,8 @@ static bool ep93xx_m2m_dma_filter(struct dma_chan *chan, void *filter_param)
}
static struct dma_chan *ep93xx_m2m_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct ep93xx_dma_engine *edma = ofdma->of_dma_data;
dma_cap_mask_t mask = edma->dma_dev.cap_mask;
@@ -249,7 +249,8 @@ static bool fsl_edma_srcid_in_use(struct fsl_edma_engine *fsl_edma, u32 srcid)
}
static struct dma_chan *fsl_edma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct fsl_edma_engine *fsl_edma = ofdma->of_dma_data;
struct dma_chan *chan, *_chan;
@@ -292,7 +293,8 @@ static struct dma_chan *fsl_edma_xlate(struct of_phandle_args *dma_spec,
}
static struct dma_chan *fsl_edma3_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct fsl_edma_engine *fsl_edma = ofdma->of_dma_data;
struct dma_chan *chan, *_chan;
@@ -805,7 +805,8 @@ static irqreturn_t mdc_chan_irq(int irq, void *dev_id)
}
static struct dma_chan *mdc_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct mdc_dma *mdma = ofdma->of_dma_data;
struct dma_chan *chan;
@@ -1016,7 +1016,8 @@ static bool imxdma_filter_fn(struct dma_chan *chan, void *param)
}
static struct dma_chan *imxdma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
int count = dma_spec->args_count;
struct imxdma_engine *imxdma = ofdma->of_dma_data;
@@ -2207,7 +2207,8 @@ static bool sdma_filter_fn(struct dma_chan *chan, void *fn_param)
}
static struct dma_chan *sdma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct sdma_engine *sdma = ofdma->of_dma_data;
dma_cap_mask_t mask = sdma->dma_device.cap_mask;
@@ -1382,7 +1382,8 @@ update_client_configs(struct of_dma *ofdma, struct of_phandle_args *spec)
}
static struct dma_chan *ldma_xlate(struct of_phandle_args *spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct ldma_dev *d = ofdma->of_dma_data;
u32 chan_id = spec->args[0];
@@ -400,7 +400,9 @@ static void milbeaut_hdmac_desc_free(struct virt_dma_desc *vd)
}
static struct dma_chan *
-milbeaut_hdmac_xlate(struct of_phandle_args *dma_spec, struct of_dma *of_dma)
+milbeaut_hdmac_xlate(struct of_phandle_args *dma_spec,
+ struct of_dma *of_dma,
+ void *data)
{
struct milbeaut_hdmac_device *mdev = of_dma->of_dma_data;
struct milbeaut_hdmac_chan *mc;
@@ -1001,7 +1001,8 @@ static const struct of_device_id mmp_pdma_dt_ids[] = {
MODULE_DEVICE_TABLE(of, mmp_pdma_dt_ids);
static struct dma_chan *mmp_pdma_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct mmp_pdma_device *d = ofdma->of_dma_data;
struct dma_chan *chan;
@@ -607,7 +607,8 @@ static bool mmp_tdma_filter_fn(struct dma_chan *chan, void *fn_param)
}
static struct dma_chan *mmp_tdma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct mmp_tdma_device *tdev = ofdma->of_dma_data;
dma_cap_mask_t mask = tdev->device.cap_mask;
@@ -321,7 +321,8 @@ static struct dma_async_tx_descriptor *moxart_prep_slave_sg(
}
static struct dma_chan *moxart_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct moxart_dmadev *mdc = ofdma->of_dma_data;
struct dma_chan *chan;
@@ -722,7 +722,8 @@ static bool mxs_dma_filter_fn(struct dma_chan *chan, void *fn_param)
}
static struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct mxs_dma_engine *mxs_dma = ofdma->of_dma_data;
dma_cap_mask_t mask = mxs_dma->dma_device.cap_mask;
@@ -1098,7 +1098,8 @@ static void nbpf_free_chan_resources(struct dma_chan *dchan)
}
static struct dma_chan *nbpf_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct nbpf_device *nbpf = ofdma->of_dma_data;
struct dma_chan *dchan;
@@ -53,7 +53,8 @@ static struct of_dma *of_dma_find_controller(const struct of_phandle_args *dma_s
* to request channel from the real DMA controller.
*/
static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct dma_chan *chan;
struct of_dma *ofdma_target;
@@ -74,7 +75,7 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec,
goto err;
}
- chan = ofdma_target->of_dma_xlate(&dma_spec_target, ofdma_target);
+ chan = ofdma_target->of_dma_xlate(&dma_spec_target, ofdma_target, NULL);
if (IS_ERR_OR_NULL(chan)) {
ofdma->dma_router->route_free(ofdma->dma_router->dev,
route_data);
@@ -117,7 +118,7 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec,
*/
int of_dma_controller_register(struct device_node *np,
struct dma_chan *(*of_dma_xlate)
- (struct of_phandle_args *, struct of_dma *),
+ (struct of_phandle_args *, struct of_dma *, void *),
void *data)
{
struct of_dma *ofdma;
@@ -249,7 +250,8 @@ static int of_dma_match_channel(struct device_node *np, const char *name,
* Returns pointer to appropriate DMA channel on success or an error pointer.
*/
struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
- const char *name)
+ const char *name,
+ void *data)
{
struct of_phandle_args dma_spec;
struct of_dma *ofdma;
@@ -289,7 +291,7 @@ struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
ofdma = of_dma_find_controller(&dma_spec);
if (ofdma) {
- chan = ofdma->of_dma_xlate(&dma_spec, ofdma);
+ chan = ofdma->of_dma_xlate(&dma_spec, ofdma, data);
} else {
ret_no_channel = -EPROBE_DEFER;
chan = NULL;
@@ -319,7 +321,8 @@ EXPORT_SYMBOL_GPL(of_dma_request_slave_channel);
* pointer to appropriate dma channel on success or NULL on error.
*/
struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
int count = dma_spec->args_count;
struct of_dma_filter_info *info = ofdma->of_dma_data;
@@ -349,7 +352,8 @@ EXPORT_SYMBOL_GPL(of_dma_simple_xlate);
* Returns pointer to appropriate dma channel on success or NULL on error.
*/
struct dma_chan *of_dma_xlate_by_chan_id(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct dma_device *dev = ofdma->of_dma_data;
struct dma_chan *chan, *candidate = NULL;
@@ -1060,7 +1060,8 @@ static inline void owl_dma_free(struct owl_dma *od)
}
static struct dma_chan *owl_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct owl_dma *od = ofdma->of_dma_data;
struct owl_dma_vchan *vchan;
@@ -2140,7 +2140,8 @@ static void pl330_tasklet(struct tasklet_struct *t)
}
static struct dma_chan *of_dma_pl330_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
int count = dma_spec->args_count;
struct pl330_dmac *pl330 = ofdma->of_dma_data;
@@ -1281,7 +1281,8 @@ static const struct of_device_id pxad_dt_ids[] = {
MODULE_DEVICE_TABLE(of, pxad_dt_ids);
static struct dma_chan *pxad_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct pxad_device *d = ofdma->of_dma_data;
struct dma_chan *chan;
@@ -1165,7 +1165,8 @@ static void bam_dma_free_desc(struct virt_dma_desc *vd)
}
static struct dma_chan *bam_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *of)
+ struct of_dma *of,
+ void *data)
{
struct bam_device *bdev = container_of(of->of_dma_data,
struct bam_device, common);
@@ -2108,7 +2108,8 @@ static int gpi_find_avail_gpii(struct gpi_dev *gpi_dev, u32 seid)
/* gpi_of_dma_xlate: open client requested channel */
static struct dma_chan *gpi_of_dma_xlate(struct of_phandle_args *args,
- struct of_dma *of_dma)
+ struct of_dma *of_dma,
+ void *data)
{
struct gpi_dev *gpi_dev = (struct gpi_dev *)of_dma->of_dma_data;
u32 seid, chid;
@@ -716,7 +716,8 @@ static void adm_channel_init(struct adm_device *adev, struct adm_chan *achan,
* Returns pointer to appropriate dma channel on success or NULL on error.
*/
static struct dma_chan *adm_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct dma_device *dev = ofdma->of_dma_data;
struct dma_chan *chan, *candidate = NULL;
@@ -1700,7 +1700,8 @@ static bool rcar_dmac_chan_filter(struct dma_chan *chan, void *arg)
}
static struct dma_chan *rcar_dmac_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct rcar_dmac_chan *rchan;
struct dma_chan *chan;
@@ -767,7 +767,8 @@ static bool rz_dmac_chan_filter(struct dma_chan *chan, void *arg)
}
static struct dma_chan *rz_dmac_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
dma_cap_mask_t mask;
@@ -646,7 +646,8 @@ static bool usb_dmac_chan_filter(struct dma_chan *chan, void *arg)
}
static struct dma_chan *usb_dmac_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct dma_chan *chan;
dma_cap_mask_t mask;
@@ -165,7 +165,8 @@ static irqreturn_t st_fdma_irq_handler(int irq, void *dev_id)
}
static struct dma_chan *st_fdma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct st_fdma_dev *fdev = ofdma->of_dma_data;
struct dma_chan *chan;
@@ -2365,7 +2365,8 @@ static void d40_set_prio_realtime(struct d40_chan *d40c)
#define D40_DT_FLAGS_HIGH_PRIO(flags) ((flags >> 4) & 0x1)
static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct stedma40_chan_cfg cfg;
dma_cap_mask_t cap;
@@ -1519,7 +1519,8 @@ static void stm32_dma_set_config(struct stm32_dma_chan *chan,
}
static struct dma_chan *stm32_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct stm32_dma_device *dmadev = ofdma->of_dma_data;
struct device *dev = dmadev->ddev.dev;
@@ -1582,7 +1582,9 @@ static bool stm32_dma3_filter_fn(struct dma_chan *c, void *fn_param)
return true;
}
-static struct dma_chan *stm32_dma3_of_xlate(struct of_phandle_args *dma_spec, struct of_dma *ofdma)
+static struct dma_chan *stm32_dma3_of_xlate(struct of_phandle_args *dma_spec,
+ struct of_dma *ofdma,
+ void *data)
{
struct stm32_dma3_ddata *ddata = ofdma->of_dma_data;
dma_cap_mask_t mask = ddata->dma_dev.cap_mask;
@@ -1539,7 +1539,8 @@ static bool stm32_mdma_filter_fn(struct dma_chan *c, void *fn_param)
}
static struct dma_chan *stm32_mdma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct stm32_mdma_device *dmadev = ofdma->of_dma_data;
dma_cap_mask_t mask = dmadev->ddev.cap_mask;
@@ -1018,7 +1018,8 @@ static int sun4i_dma_config(struct dma_chan *chan,
}
static struct dma_chan *sun4i_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct sun4i_dma_dev *priv = ofdma->of_dma_data;
struct sun4i_dma_vchan *vchan;
@@ -1029,7 +1029,8 @@ static void sun6i_dma_free_chan_resources(struct dma_chan *chan)
}
static struct dma_chan *sun6i_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct sun6i_dma_dev *sdev = ofdma->of_dma_data;
struct sun6i_vchan *vchan;
@@ -1289,7 +1289,8 @@ static void tegra_dma_free_chan_resources(struct dma_chan *dc)
}
static struct dma_chan *tegra_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct tegra_dma *tdma = ofdma->of_dma_data;
struct tegra_dma_channel *tdc;
@@ -1343,7 +1343,8 @@ static void tegra_dma_free_chan_resources(struct dma_chan *dc)
}
static struct dma_chan *tegra_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct tegra_dma *tdma = ofdma->of_dma_data;
struct tegra_dma_channel *tdc;
@@ -802,7 +802,8 @@ static void tegra_adma_free_chan_resources(struct dma_chan *dc)
}
static struct dma_chan *tegra_dma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct tegra_adma *tdma = ofdma->of_dma_data;
struct tegra_adma_chan *tdc;
@@ -981,7 +981,8 @@ static struct of_dma_filter_info cpp41_dma_info = {
};
static struct dma_chan *cppi41_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
int count = dma_spec->args_count;
struct of_dma_filter_info *info = ofdma->of_dma_data;
@@ -2275,7 +2275,8 @@ static struct edma_soc_info *edma_setup_info_from_dt(struct device *dev,
}
static struct dma_chan *of_edma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
return NULL;
}
@@ -4250,7 +4250,8 @@ static bool udma_dma_filter_fn(struct dma_chan *chan, void *param)
}
static struct dma_chan *udma_of_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct udma_dev *ud = ofdma->of_dma_data;
struct udma_filter_param filter_param;
@@ -464,7 +464,8 @@ static void uniphier_xdmac_chan_init(struct uniphier_xdmac_device *xdev,
}
static struct dma_chan *of_dma_uniphier_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct uniphier_xdmac_device *xdev = ofdma->of_dma_data;
int chan_id = dma_spec->args[0];
@@ -3005,7 +3005,8 @@ static int xilinx_dma_child_probe(struct xilinx_dma_device *xdev,
* Return: DMA channel pointer on success and NULL on error
*/
static struct dma_chan *of_dma_xilinx_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct xilinx_dma_device *xdev = ofdma->of_dma_data;
int chan_id = dma_spec->args[0];
@@ -1689,7 +1689,8 @@ static void xilinx_dpdma_chan_remove(struct xilinx_dpdma_chan *chan)
}
static struct dma_chan *of_dma_xilinx_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct xilinx_dpdma_device *xdev = ofdma->of_dma_data;
u32 chan_id = dma_spec->args[0];
@@ -972,7 +972,8 @@ static int zynqmp_dma_chan_probe(struct zynqmp_dma_device *zdev,
* Return: DMA channel pointer on success and NULL on error
*/
static struct dma_chan *of_zynqmp_dma_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma)
+ struct of_dma *ofdma,
+ void *data)
{
struct zynqmp_dma_device *zdev = ofdma->of_dma_data;
@@ -1522,6 +1522,7 @@ struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask,
dma_filter_fn fn, void *fn_param,
struct device_node *np);
+struct dma_chan *dma_request_chan_w_data(struct device *dev, const char *name, void *data);
struct dma_chan *dma_request_chan(struct device *dev, const char *name);
struct dma_chan *dma_request_chan_by_mask(const dma_cap_mask_t *mask);
struct dma_chan *devm_dma_request_chan(struct device *dev, const char *name);
@@ -1551,6 +1552,12 @@ static inline struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask,
{
return NULL;
}
+struct dma_chan *dma_request_chan_w_data(struct device *dev,
+ const char *name,
+ void *data)
+{
+ return ERR_PTR(-ENODEV);
+}
static inline struct dma_chan *dma_request_chan(struct device *dev,
const char *name)
{
@@ -19,7 +19,7 @@ struct of_dma {
struct list_head of_dma_controllers;
struct device_node *of_node;
struct dma_chan *(*of_dma_xlate)
- (struct of_phandle_args *, struct of_dma *);
+ (struct of_phandle_args *, struct of_dma *, void *);
void *(*of_dma_route_allocate)
(struct of_phandle_args *, struct of_dma *);
struct dma_router *dma_router;
@@ -34,7 +34,7 @@ struct of_dma_filter_info {
#ifdef CONFIG_DMA_OF
extern int of_dma_controller_register(struct device_node *np,
struct dma_chan *(*of_dma_xlate)
- (struct of_phandle_args *, struct of_dma *),
+ (struct of_phandle_args *, struct of_dma *, void *),
void *data);
extern void of_dma_controller_free(struct device_node *np);
@@ -45,16 +45,17 @@ extern int of_dma_router_register(struct device_node *np,
#define of_dma_router_free of_dma_controller_free
extern struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
- const char *name);
+ const char *name,
+ void *data);
extern struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma);
+ struct of_dma *ofdma, void *data);
extern struct dma_chan *of_dma_xlate_by_chan_id(struct of_phandle_args *dma_spec,
- struct of_dma *ofdma);
+ struct of_dma *ofdma, void *data);
#else
static inline int of_dma_controller_register(struct device_node *np,
struct dma_chan *(*of_dma_xlate)
- (struct of_phandle_args *, struct of_dma *),
+ (struct of_phandle_args *, struct of_dma *, void *),
void *data)
{
return -ENODEV;
@@ -75,7 +76,8 @@ static inline int of_dma_router_register(struct device_node *np,
#define of_dma_router_free of_dma_controller_free
static inline struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
- const char *name)
+ const char *name,
+ void *data)
{
return ERR_PTR(-ENODEV);
}
@@ -926,7 +926,7 @@ static struct dma_chan *mca_request_dma_channel(struct mca_cluster *cl, unsigned
char *name = devm_kasprintf(cl->host->dev, GFP_KERNEL,
is_tx ? "tx%da" : "rx%db", cl->no);
#endif
- return of_dma_request_slave_channel(cl->host->dev->of_node, name);
+ return of_dma_request_slave_channel(cl->host->dev->of_node, name, NULL);
}
@@ -204,7 +204,7 @@ struct dma_chan *rsnd_dma_request_channel(struct device_node *of_node, char *nam
}
if (i == rsnd_mod_id_raw(mod) && (!chan))
- chan = of_dma_request_slave_channel(np, x);
+ chan = of_dma_request_slave_channel(np, x, NULL);
i++;
}