dma: Add Synopsys eDMA IP version 0 support
RFC 2/6 dma: Add Synopsys eDMA IP version 0 support
Hi Gustavo,
Quoted 2 lines · Gustavo Pimentel
Add support for the eDMA IP version 0 driver for both register maps (legacy and unroll).
[snip]
Quoted 6 lines
drivers/dma/dw-edma/dw-edma-v0-core.c new file +0
-0
drivers/dma/dw-edma/dw-edma-v0-core.c line 10
Quoted 10 lines
drivers/dma/dw-edma/dw-edma-v0-core.c new file +10
-0@@ -0,0 +1,346 @@ +// SPDX-License-Identifier: GPL-2.0 +// Copyright (c) 2018 Synopsys, Inc. and/or its affiliates. +// Synopsys DesignWare eDMA v0 core + +#include "dw-edma-core.h" +#include "dw-edma-v0-core.h" +#include "dw-edma-v0-regs.h" +#include "dw-edma-v0-debugfs.h" + +#define QWORD_HI (value) ((value & 0xFFFFFFFF00000000llu) >> 32)
Use upper_32_bits() macros.
drivers/dma/dw-edma/dw-edma-v0-core.c line 11
Quoted 1 line
drivers/dma/dw-edma/dw-edma-v0-core.c new file +1
-0+#define QWORD_LO (value) (value & 0x00000000FFFFFFFFllu)
Use lower_32_bits() macros.
Quoted 6 lines
drivers/dma/dw-edma/dw-edma-v0-core.c new file +6
-0+enum dw_edma_control { +DW_EDMA_CB =BIT (0 ), +DW_EDMA_TCB =BIT (1 ), +DW_EDMA_LLP =BIT (2 ), +DW_EDMA_LIE =BIT (3 ), +DW_EDMA_RIE =BIT (4 ),
[snip]
Quoted 1 line
drivers/dma/dw-edma/dw-edma-v0-core.c new file +1
-0+ viewport_sel = (ch &0x00000007ul );
[snip]
Quoted 6 lines
drivers/dma/dw-edma/dw-edma-v0-core.c new file +6
-0+void dw_edma_v0_core_off (struct dw_edma *dw) +{ +SET_BOTH (dw, int_mask,0x00FF00FFul ); +SET_BOTH (dw, int_clear,0x00FF00FFul ); +SET_BOTH (dw, engine_en,0x00000000ul ); +}
[snip]
drivers/dma/dw-edma/dw-edma-v0-core.c
Quoted 3 lines
drivers/dma/dw-edma/dw-edma-v0-core.c new file +3
-0+ num_ch &=0x0000000Ful ; + }else { + num_ch &=0x000F0000ul ;
I guess it's better to name this magic numbers via defines.
[snip]
drivers/dma/dw-edma/dw-edma-v0-core.c
Quoted 10 lines
drivers/dma/dw-edma/dw-edma-v0-core.c new file +10
-0+ +bool dw_edma_v0_core_status_done_int (struct dw_edma_chan *chan) +{ +struct dw_edma *dw = chan->chip->dw; +u32 tmp; + + tmp =GET_RW (dw, chan->dir, int_status); + tmp &=BIT (chan->id); + +return tmp ? true : false;
return !!tmp;
drivers/dma/dw-edma/dw-edma-v0-core.c
Quoted 11 lines
drivers/dma/dw-edma/dw-edma-v0-core.c new file +11
-0+} + +bool dw_edma_v0_core_status_abort_int (struct dw_edma_chan *chan) +{ +struct dw_edma *dw = chan->chip->dw; +u32 tmp; + + tmp =GET_RW (dw, chan->dir, int_status); + tmp &=BIT (chan->id +16 ); + +return tmp ? true : false;
ditto.
Signature · 1 line
Eugeniy Paltsev