24 May
2013
24 May
'13
11:39 a.m.
+static int jz4740_dma_alloc_chan_resources(struct dma_chan *c) +{
- struct jz4740_dmaengine_chan *chan = to_jz4740_dma_chan(c);
- chan->jz_chan = jz4740_dma_request(chan, NULL);
- if (!chan->jz_chan)
return -EBUSY;
- jz4740_dma_set_complete_cb(chan->jz_chan, jz4740_dma_complete_cb);
- return 0;
Zero is not expected value, you need to return the descriptors allocated sucessfully.
Well, zero descriptors have been allocated. As far as I can see only a negative return value is treated as an error. Also the core doesn't seem to use the return value for anything else but checking if it is an error.
This is the API defination
- @device_alloc_chan_resources: allocate resources and return the
number of allocated descriptors
But 0 is still the number of descriptors that have been pre-allocated.
and that should change, typically the driver will preallocate a pool of descriptors. These are to be used later for .device_prep_xxx calls.
Since the size of the descriptor is not know in advance this is not possible.
- Lars