lkml.org 
[lkml]   [2014]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 10/53] dmaengine: bcm2835: Split device_control
    Date
    Split the device_control callback of the Broadcom BCM2835 DMA driver to make
    use of the newly introduced callbacks, that will eventually be used to retrieve
    slave capabilities.

    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    ---
    drivers/dma/bcm2835-dma.c | 31 ++++++++-----------------------
    1 file changed, 8 insertions(+), 23 deletions(-)

    diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
    index 8a6a9c27fe83..243bb1ed6bfc 100644
    --- a/drivers/dma/bcm2835-dma.c
    +++ b/drivers/dma/bcm2835-dma.c
    @@ -436,9 +436,11 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
    return vchan_tx_prep(&c->vc, &d->vd, flags);
    }

    -static int bcm2835_dma_slave_config(struct bcm2835_chan *c,
    - struct dma_slave_config *cfg)
    +static int bcm2835_dma_slave_config(struct dma_chan *chan,
    + struct dma_slave_config *cfg)
    {
    + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan);
    +
    if ((cfg->direction == DMA_DEV_TO_MEM &&
    cfg->src_addr_width != DMA_SLAVE_BUSWIDTH_4_BYTES) ||
    (cfg->direction == DMA_MEM_TO_DEV &&
    @@ -452,8 +454,9 @@ static int bcm2835_dma_slave_config(struct bcm2835_chan *c,
    return 0;
    }

    -static int bcm2835_dma_terminate_all(struct bcm2835_chan *c)
    +static int bcm2835_dma_terminate_all(struct dma_chan *chan)
    {
    + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan);
    struct bcm2835_dmadev *d = to_bcm2835_dma_dev(c->vc.chan.device);
    unsigned long flags;
    int timeout = 10000;
    @@ -495,24 +498,6 @@ static int bcm2835_dma_terminate_all(struct bcm2835_chan *c)
    return 0;
    }

    -static int bcm2835_dma_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
    - unsigned long arg)
    -{
    - struct bcm2835_chan *c = to_bcm2835_dma_chan(chan);
    -
    - switch (cmd) {
    - case DMA_SLAVE_CONFIG:
    - return bcm2835_dma_slave_config(c,
    - (struct dma_slave_config *)arg);
    -
    - case DMA_TERMINATE_ALL:
    - return bcm2835_dma_terminate_all(c);
    -
    - default:
    - return -ENXIO;
    - }
    -}
    -
    static int bcm2835_dma_chan_init(struct bcm2835_dmadev *d, int chan_id, int irq)
    {
    struct bcm2835_chan *c;
    @@ -617,9 +602,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
    od->ddev.device_free_chan_resources = bcm2835_dma_free_chan_resources;
    od->ddev.device_tx_status = bcm2835_dma_tx_status;
    od->ddev.device_issue_pending = bcm2835_dma_issue_pending;
    - od->ddev.device_slave_caps = bcm2835_dma_device_slave_caps;
    od->ddev.device_prep_dma_cyclic = bcm2835_dma_prep_dma_cyclic;
    - od->ddev.device_control = bcm2835_dma_control;
    + od->ddev.device_config = bcm2835_dma_slave_config;
    + od->ddev.device_terminate_all = bcm2835_dma_terminate_all;
    od->ddev.dev = &pdev->dev;
    INIT_LIST_HEAD(&od->ddev.channels);
    spin_lock_init(&od->lock);
    --
    2.1.1


    \
     
     \ /
      Last update: 2014-10-16 13:01    [W:2.915 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site