On Tue, May 26, 2015 at 04:25:57PM +0300, Peter Ujfalusi wrote: > dma_request_slave_channel_compat() 'eats' up the returned error codes which > prevents drivers using the compat call to be able to do deferred probing. > > The new wrapper is identical in functionality but it will return with error > code in case of failure and will pass the -EPROBE_DEFER to the caller in > case dma_request_slave_channel_reason() returned with it. This is okay but am worried about one more warpper, how about fixing dma_request_slave_channel_compat() -- ~Vinod > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx> > --- > include/linux/dmaengine.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h > index abf63ceabef9..6c777394835c 100644 > --- a/include/linux/dmaengine.h > +++ b/include/linux/dmaengine.h > @@ -1120,4 +1120,26 @@ static inline struct dma_chan > > return __dma_request_channel(mask, fn, fn_param); > } > + > +#define dma_request_slave_channel_compat_reason(mask, x, y, dev, name) \ > + __dma_request_slave_channel_compat_reason(&(mask), x, y, dev, name) > + > +static inline struct dma_chan > +*__dma_request_slave_channel_compat_reason(const dma_cap_mask_t *mask, > + dma_filter_fn fn, void *fn_param, > + struct device *dev, char *name) > +{ > + struct dma_chan *chan; > + > + chan = dma_request_slave_channel_reason(dev, name); > + /* Try via legacy API if not requesting for deferred probing */ > + if (IS_ERR(chan) && PTR_ERR(chan) != -EPROBE_DEFER) > + chan = __dma_request_channel(mask, fn, fn_param); > + > + if (!chan) > + chan = ERR_PTR(-ENODEV); > + > + return chan; > +} > + > #endif /* DMAENGINE_H */ > -- > 2.3.5 > -- -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html