[PATCH] dmaengine: fsl-edma: fix dmamux index calculating error
Vinod Koul
vinod.koul at intel.com
Fri Jul 25 01:42:15 PDT 2014
On Tue, Jul 01, 2014 at 04:41:03PM +0800, Jingchang Lu wrote:
> Signed-off-by: Jingchang Lu <jingchang.lu at freescale.com>
Applied, thanks
--
~Vinod
> ---
> drivers/dma/fsl-edma.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma/fsl-edma.c b/drivers/dma/fsl-edma.c
> index b396a7f..24ab3d3 100644
> --- a/drivers/dma/fsl-edma.c
> +++ b/drivers/dma/fsl-edma.c
> @@ -248,11 +248,12 @@ static void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan,
> unsigned int slot, bool enable)
> {
> u32 ch = fsl_chan->vchan.chan.chan_id;
> - void __iomem *muxaddr = fsl_chan->edma->muxbase[ch / DMAMUX_NR];
> + void __iomem *muxaddr;
> unsigned chans_per_mux, ch_off;
>
> chans_per_mux = fsl_chan->edma->n_chans / DMAMUX_NR;
> ch_off = fsl_chan->vchan.chan.chan_id % chans_per_mux;
> + muxaddr = fsl_chan->edma->muxbase[ch / chans_per_mux];
>
> if (enable)
> edma_writeb(fsl_chan->edma,
> @@ -724,6 +725,7 @@ static struct dma_chan *fsl_edma_xlate(struct of_phandle_args *dma_spec,
> {
> struct fsl_edma_engine *fsl_edma = ofdma->of_dma_data;
> struct dma_chan *chan, *_chan;
> + unsigned long chans_per_mux = fsl_edma->n_chans / DMAMUX_NR;
>
> if (dma_spec->args_count != 2)
> return NULL;
> @@ -732,7 +734,7 @@ static struct dma_chan *fsl_edma_xlate(struct of_phandle_args *dma_spec,
> list_for_each_entry_safe(chan, _chan, &fsl_edma->dma_dev.channels, device_node) {
> if (chan->client_count)
> continue;
> - if ((chan->chan_id / DMAMUX_NR) == dma_spec->args[0]) {
> + if ((chan->chan_id / chans_per_mux) == dma_spec->args[0]) {
> chan = dma_get_slave_channel(chan);
> if (chan) {
> chan->device->privatecnt++;
> --
> 1.8.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe dmaengine" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
More information about the linux-arm-kernel
mailing list