On Friday 01 November 2013, Alexander Popov wrote: > + * of_dma_xlate_by_chan_id - Translate dt property to DMA channel by channel id > + * @dma_spec: pointer to DMA specifier as found in the device tree > + * @of_dma: pointer to DMA controller data > + * > + * This function can be used as the of xlate callback for DMA driver which wants > + * to match the channel based on the channel id. When using this xlate function > + * the #dma-cells propety of the DMA controller dt node needs to be set to 1. > + * The data parameter of of_dma_controller_register must be a pointer to the > + * dma_device struct the function should match upon. > + * > + * 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_filter_by_chan_id_args args; > + dma_cap_mask_t cap; > + > + args.dev = ofdma->of_dma_data; > + if (!args.dev) > + return NULL; > + > + if (dma_spec->args_count != 1) > + return NULL; > + > + dma_cap_zero(cap); > + dma_cap_set(DMA_SLAVE, cap); > + > + args.chan_id = dma_spec->args[0]; > + > + return dma_request_channel(cap, of_dma_filter_by_chan_id, &args); > +} > +EXPORT_SYMBOL_GPL(of_dma_xlate_by_chan_id); This seems rather clumsy, now that we have added the dma_get_slave_channel interface. Can you try using that instead of dma_request_channel() now? -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html