dmaengine: PL08x: clean up get_signal/put_signal
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 17 May 2012 14:01:28 +0000 (15:01 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 1 Jul 2012 13:15:38 +0000 (14:15 +0100)
Try to avoid dereferencing the DMA engine's channel struct in these
platform helpers; instead, pass a pointer to the channel data into
get_signal(), and the returned signal number to put_signal().

Tested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/dma/amba-pl08x.c
include/linux/amba/pl08x.h

index 5821125..cc08c8c 100644 (file)
@@ -874,7 +874,7 @@ static int prep_phy_channel(struct pl08x_dma_chan *plchan,
         * Can the platform allow us to use this channel?
         */
        if (plchan->slave && pl08x->pd->get_signal) {
-               ret = pl08x->pd->get_signal(plchan);
+               ret = pl08x->pd->get_signal(plchan->cd);
                if (ret < 0) {
                        dev_dbg(&pl08x->adev->dev,
                                "unable to use physical channel %d for transfer on %s due to platform restrictions\n",
@@ -909,7 +909,7 @@ static void release_phy_channel(struct pl08x_dma_chan *plchan)
        struct pl08x_driver_data *pl08x = plchan->host;
 
        if ((plchan->phychan->signal >= 0) && pl08x->pd->put_signal) {
-               pl08x->pd->put_signal(plchan);
+               pl08x->pd->put_signal(plchan->cd, plchan->phychan->signal);
                plchan->phychan->signal = -1;
        }
        pl08x_put_phy_channel(pl08x, plchan->phychan);
index 0f5b34d..88765a6 100644 (file)
@@ -225,8 +225,8 @@ struct pl08x_platform_data {
        const struct pl08x_channel_data *slave_channels;
        unsigned int num_slave_channels;
        struct pl08x_channel_data memcpy_channel;
-       int (*get_signal)(struct pl08x_dma_chan *);
-       void (*put_signal)(struct pl08x_dma_chan *);
+       int (*get_signal)(const struct pl08x_channel_data *);
+       void (*put_signal)(const struct pl08x_channel_data *, int);
        u8 lli_buses;
        u8 mem_buses;
 };