dmaengine pl08x dt crash

Johannes Stezenbach js at sig21.net
Wed Mar 23 10:26:00 PDT 2016


On Wed, Mar 23, 2016 at 05:35:17PM +0100, Johannes Stezenbach wrote:
> On Wed, Mar 23, 2016 at 05:23:09PM +0100, Johannes Stezenbach wrote:
> > On Wed, Mar 23, 2016 at 05:12:13PM +0100, Linus Walleij wrote:
> > > https://git.kernel.org/cgit/linux/kernel/git/linusw/linux-nomadik.git/log/?h=pl08x-dma
> > > 
> > > dma: pl08x: support fixed signal assignment
> 
> This method of using vendor_data for the fixed_signals flag
> doesn't help me much, as my IP is a plain ARM pl081.
> 
> I'm also not sure how it would help, since pl08x_of_probe()
> is only called for !pl08x->pd (no platform_data) and thus
> pl08x_dma_init_virtual_channels() sees 0 channels.
> And with platform_data the driver worked fine with fixed channels.
> 
> > > dma: pl08x: allocate OF slave channel data at probe time
> 
> This looks ore promising, I'm checking it.

Now I see the need for the first patch, but I wonder
why not just amend the second one with this instead:

@@ -1916,6 +1916,7 @@ static int pl08x_dma_init_virtual_channels(struct pl08x_driver_data *pl08x,

                if (slave) {
                        chan->cd = &pl08x->pd->slave_channels[i];
+                       chan->signal = i;
                        pl08x_dma_slave_init(chan);
                } else {
                        chan->cd = &pl08x->pd->memcpy_channel;

(The assignment of chan->name = chan->cd->bus_id is
already done by pl08x_dma_slave_init().)

If the platform is using a mux then pd->get_xfer_signal()
would replace the signal, so this initialization wouldn't
do any harm, right?

Also, I wonder if "#define PL08X_DMA_SIGNALS 32" is an issue
with pl081 which only has 16 signals?  But I guess not since
nothing would request them.


Johannes



More information about the linux-arm-kernel mailing list