diff --git a/drivers/soc/ti/knav_dma.c b/drivers/soc/ti/knav_dma.c index a6f5637..c3b82fb 100644 --- a/drivers/soc/ti/knav_dma.c +++ b/drivers/soc/ti/knav_dma.c @@ -401,7 +401,7 @@ static int of_channel_match_helper(struct device_node *np, const char *name, if (of_parse_phandle_with_fixed_args(np, "ti,navigator-dmas", 1, index, &args)) { - dev_err(kdev->dev, "Missing the pahndle args name %s\n", name); + dev_err(kdev->dev, "Missing the phandle args name %s\n", name); return -ENODEV; } @@ -414,6 +414,28 @@ static int of_channel_match_helper(struct device_node *np, const char *name, } /** + * knav_dma_get_flow() - retrieve flow Id from a given channel handle + * @channel dma channel handle + * + * Returns corresponding flow Id on success or -EINVAL in case of error + */ +int knav_dma_get_flow(void *channel) +{ + struct knav_dma_chan *chan = channel; + + if (!chan) + return -EINVAL; + + if (!kdev) { + pr_err("keystone-navigator-dma driver not registered\n"); + return -EINVAL; + } + + return chan->flow; +} +EXPORT_SYMBOL_GPL(knav_dma_get_flow); + +/** * knav_dma_open_channel() - try to setup an exclusive slave channel * @dev: pointer to client device structure * @name: slave channel name @@ -442,7 +464,7 @@ void *knav_dma_open_channel(struct device *dev, const char *name, } dev_dbg(kdev->dev, "initializing %s channel %d from DMA %s\n", - config->direction == DMA_MEM_TO_DEV ? "transmit" : + config->direction == DMA_MEM_TO_DEV ? "transmit" : config->direction == DMA_DEV_TO_MEM ? "receive" : "unknown", chan_num, instance); diff --git a/include/linux/soc/ti/knav_dma.h b/include/linux/soc/ti/knav_dma.h index 0a9e61f..7f7db9e 100644 --- a/include/linux/soc/ti/knav_dma.h +++ b/include/linux/soc/ti/knav_dma.h @@ -162,6 +162,7 @@ void *knav_dma_open_channel(struct device *dev, const char *name, struct knav_dma_cfg *config); void knav_dma_close_channel(void *channel); bool knav_dma_device_ready(void); +int knav_dma_get_flow(void *channel); #else static inline void *knav_dma_open_channel(struct device *dev, const char *name, struct knav_dma_cfg *config)