Sound Open Firmware
Loading...
Searching...
No Matches
dw-dma.h File Reference
Include dependency graph for dw-dma.h:

Go to the source code of this file.

Data Structures

struct  dw_chan_data
struct  dw_drv_plat_data
struct  dw_lli

Macros

#define DW_MAX_CHAN   8
#define DW_FIFO_SIZE   0x80
#define DW_CHAN_SIZE   0x58
#define DW_CHAN_OFFSET(chan)
#define DW_SAR(chan)
#define DW_DAR(chan)
#define DW_LLP(chan)
#define DW_CTRL_LOW(chan)
#define DW_CTRL_HIGH(chan)
#define DW_CFG_LOW(chan)
#define DW_CFG_HIGH(chan)
#define DW_DSR(chan)
#define DW_RAW_TFR   0x2C0
#define DW_RAW_BLOCK   0x2C8
#define DW_RAW_SRC_TRAN   0x2D0
#define DW_RAW_DST_TRAN   0x2D8
#define DW_RAW_ERR   0x2E0
#define DW_STATUS_TFR   0x2E8
#define DW_STATUS_BLOCK   0x2F0
#define DW_STATUS_SRC_TRAN   0x2F8
#define DW_STATUS_DST_TRAN   0x300
#define DW_STATUS_ERR   0x308
#define DW_MASK_TFR   0x310
#define DW_MASK_BLOCK   0x318
#define DW_MASK_SRC_TRAN   0x320
#define DW_MASK_DST_TRAN   0x328
#define DW_MASK_ERR   0x330
#define DW_CLEAR_TFR   0x338
#define DW_CLEAR_BLOCK   0x340
#define DW_CLEAR_SRC_TRAN   0x348
#define DW_CLEAR_DST_TRAN   0x350
#define DW_CLEAR_ERR   0x358
#define DW_INTR_STATUS   0x360
#define DW_DMA_CFG   0x398
#define DW_DMA_CHAN_EN   0x3A0
#define DW_FIFO_PART0_LO   0x400
#define DW_FIFO_PART0_HI   0x404
#define DW_FIFO_PART1_LO   0x408
#define DW_FIFO_PART1_HI   0x40C
#define DW_CHAN_WRITE_EN_ALL   MASK(2 * DW_MAX_CHAN - 1, DW_MAX_CHAN)
#define DW_CHAN_WRITE_EN(chan)
#define DW_CHAN_ALL   MASK(DW_MAX_CHAN - 1, 0)
#define DW_CHAN(chan)
#define DW_CHAN_MASK_ALL   DW_CHAN_WRITE_EN_ALL
#define DW_CHAN_MASK(chan)
#define DW_CHAN_UNMASK_ALL   (DW_CHAN_WRITE_EN_ALL | DW_CHAN_ALL)
#define DW_CHAN_UNMASK(chan)
#define DW_CFGL_DRAIN   BIT(10)
#define DW_CFGL_FIFO_EMPTY   BIT(9)
#define DW_CFGL_SUSPEND   BIT(8)
#define DW_CTLL_RELOAD_DST   BIT(31)
#define DW_CTLL_RELOAD_SRC   BIT(30)
#define DW_CTLL_LLP_S_EN   BIT(28)
#define DW_CTLL_LLP_D_EN   BIT(27)
#define DW_CTLL_SMS(x)
#define DW_CTLL_DMS(x)
#define DW_CTLL_FC_P2P   SET_BITS(21, 20, 3)
#define DW_CTLL_FC_P2M   SET_BITS(21, 20, 2)
#define DW_CTLL_FC_M2P   SET_BITS(21, 20, 1)
#define DW_CTLL_FC_M2M   SET_BITS(21, 20, 0)
#define DW_CTLL_D_SCAT_EN   BIT(18)
#define DW_CTLL_S_GATH_EN   BIT(17)
#define DW_CTLL_SRC_MSIZE(x)
#define DW_CTLL_DST_MSIZE(x)
#define DW_CTLL_SRC_FIX   SET_BITS(10, 9, 2)
#define DW_CTLL_SRC_DEC   SET_BITS(10, 9, 1)
#define DW_CTLL_SRC_INC   SET_BITS(10, 9, 0)
#define DW_CTLL_DST_FIX   SET_BITS(8, 7, 2)
#define DW_CTLL_DST_DEC   SET_BITS(8, 7, 1)
#define DW_CTLL_DST_INC   SET_BITS(8, 7, 0)
#define DW_CTLL_SRC_WIDTH(x)
#define DW_CTLL_DST_WIDTH(x)
#define DW_CTLL_INT_EN   BIT(0)
#define DW_CTLL_SRC_WIDTH_MASK   MASK(6, 4)
#define DW_CTLL_SRC_WIDTH_SHIFT   4
#define DW_CTLL_DST_WIDTH_MASK   MASK(3, 1)
#define DW_CTLL_DST_WIDTH_SHIFT   1
#define DW_DSR_DSC(x)
#define DW_DSR_DSI(x)
#define DW_FIFO_UPD   BIT(26)
#define DW_FIFO_CHx(x)
#define DW_FIFO_CHy(x)
#define DW_DMA_CFG_TRIES   10000
#define DW_DMA_TIMEOUT   1333
#define DW_DMA_CFG_NO_IRQ_MIN_ELEMS   3
#define DW_DMA_LLI_ADDRESS(lli, dir)
#define DW_DMA_BUFFER_ALIGNMENT   0x4
#define DW_DMA_COPY_ALIGNMENT   0x4

Variables

struct dw_lli __packed
const struct dma_ops dw_dma_ops

Macro Definition Documentation

◆ DW_CFG_HIGH

#define DW_CFG_HIGH ( chan)
Value:
(0x44 + DW_CHAN_OFFSET(chan))
#define DW_CHAN_OFFSET(chan)
Definition dw-dma.h:24

◆ DW_CFG_LOW

#define DW_CFG_LOW ( chan)
Value:
(0x40 + DW_CHAN_OFFSET(chan))

◆ DW_CFGL_DRAIN

#define DW_CFGL_DRAIN   BIT(10)

◆ DW_CFGL_FIFO_EMPTY

#define DW_CFGL_FIFO_EMPTY   BIT(9)

◆ DW_CFGL_SUSPEND

#define DW_CFGL_SUSPEND   BIT(8)

◆ DW_CHAN

#define DW_CHAN ( chan)
Value:
BIT(chan)
#define BIT(b)
Definition bit.h:14

◆ DW_CHAN_ALL

#define DW_CHAN_ALL   MASK(DW_MAX_CHAN - 1, 0)

◆ DW_CHAN_MASK

#define DW_CHAN_MASK ( chan)
Value:
#define DW_CHAN_WRITE_EN(chan)
Definition dw-dma.h:66

◆ DW_CHAN_MASK_ALL

#define DW_CHAN_MASK_ALL   DW_CHAN_WRITE_EN_ALL

◆ DW_CHAN_OFFSET

#define DW_CHAN_OFFSET ( chan)
Value:
(DW_CHAN_SIZE * (chan))
#define DW_CHAN_SIZE
Definition dw-dma.h:23

◆ DW_CHAN_SIZE

#define DW_CHAN_SIZE   0x58

◆ DW_CHAN_UNMASK

#define DW_CHAN_UNMASK ( chan)
Value:
(DW_CHAN_WRITE_EN(chan) | DW_CHAN(chan))
#define DW_CHAN(chan)
Definition dw-dma.h:68

◆ DW_CHAN_UNMASK_ALL

#define DW_CHAN_UNMASK_ALL   (DW_CHAN_WRITE_EN_ALL | DW_CHAN_ALL)

◆ DW_CHAN_WRITE_EN

#define DW_CHAN_WRITE_EN ( chan)
Value:
BIT((chan) + DW_MAX_CHAN)
#define DW_MAX_CHAN
Definition dw-dma.h:21

◆ DW_CHAN_WRITE_EN_ALL

#define DW_CHAN_WRITE_EN_ALL   MASK(2 * DW_MAX_CHAN - 1, DW_MAX_CHAN)

◆ DW_CLEAR_BLOCK

#define DW_CLEAR_BLOCK   0x340

◆ DW_CLEAR_DST_TRAN

#define DW_CLEAR_DST_TRAN   0x350

◆ DW_CLEAR_ERR

#define DW_CLEAR_ERR   0x358

◆ DW_CLEAR_SRC_TRAN

#define DW_CLEAR_SRC_TRAN   0x348

◆ DW_CLEAR_TFR

#define DW_CLEAR_TFR   0x338

◆ DW_CTLL_D_SCAT_EN

#define DW_CTLL_D_SCAT_EN   BIT(18)

◆ DW_CTLL_DMS

#define DW_CTLL_DMS ( x)
Value:
SET_BIT(23, x)
#define SET_BIT(b, x)
Definition bit.h:19

◆ DW_CTLL_DST_DEC

#define DW_CTLL_DST_DEC   SET_BITS(8, 7, 1)

◆ DW_CTLL_DST_FIX

#define DW_CTLL_DST_FIX   SET_BITS(8, 7, 2)

◆ DW_CTLL_DST_INC

#define DW_CTLL_DST_INC   SET_BITS(8, 7, 0)

◆ DW_CTLL_DST_MSIZE

#define DW_CTLL_DST_MSIZE ( x)
Value:
SET_BITS(13, 11, x)
#define SET_BITS(b_hi, b_lo, x)
Definition bit.h:20

◆ DW_CTLL_DST_WIDTH

#define DW_CTLL_DST_WIDTH ( x)
Value:
SET_BITS(3, 1, x)

◆ DW_CTLL_DST_WIDTH_MASK

#define DW_CTLL_DST_WIDTH_MASK   MASK(3, 1)

◆ DW_CTLL_DST_WIDTH_SHIFT

#define DW_CTLL_DST_WIDTH_SHIFT   1

◆ DW_CTLL_FC_M2M

#define DW_CTLL_FC_M2M   SET_BITS(21, 20, 0)

◆ DW_CTLL_FC_M2P

#define DW_CTLL_FC_M2P   SET_BITS(21, 20, 1)

◆ DW_CTLL_FC_P2M

#define DW_CTLL_FC_P2M   SET_BITS(21, 20, 2)

◆ DW_CTLL_FC_P2P

#define DW_CTLL_FC_P2P   SET_BITS(21, 20, 3)

◆ DW_CTLL_INT_EN

#define DW_CTLL_INT_EN   BIT(0)

◆ DW_CTLL_LLP_D_EN

#define DW_CTLL_LLP_D_EN   BIT(27)

◆ DW_CTLL_LLP_S_EN

#define DW_CTLL_LLP_S_EN   BIT(28)

◆ DW_CTLL_RELOAD_DST

#define DW_CTLL_RELOAD_DST   BIT(31)

◆ DW_CTLL_RELOAD_SRC

#define DW_CTLL_RELOAD_SRC   BIT(30)

◆ DW_CTLL_S_GATH_EN

#define DW_CTLL_S_GATH_EN   BIT(17)

◆ DW_CTLL_SMS

#define DW_CTLL_SMS ( x)
Value:
SET_BIT(25, x)

◆ DW_CTLL_SRC_DEC

#define DW_CTLL_SRC_DEC   SET_BITS(10, 9, 1)

◆ DW_CTLL_SRC_FIX

#define DW_CTLL_SRC_FIX   SET_BITS(10, 9, 2)

◆ DW_CTLL_SRC_INC

#define DW_CTLL_SRC_INC   SET_BITS(10, 9, 0)

◆ DW_CTLL_SRC_MSIZE

#define DW_CTLL_SRC_MSIZE ( x)
Value:
SET_BITS(16, 14, x)

◆ DW_CTLL_SRC_WIDTH

#define DW_CTLL_SRC_WIDTH ( x)
Value:
SET_BITS(6, 4, x)

◆ DW_CTLL_SRC_WIDTH_MASK

#define DW_CTLL_SRC_WIDTH_MASK   MASK(6, 4)

◆ DW_CTLL_SRC_WIDTH_SHIFT

#define DW_CTLL_SRC_WIDTH_SHIFT   4

◆ DW_CTRL_HIGH

#define DW_CTRL_HIGH ( chan)
Value:
(0x1C + DW_CHAN_OFFSET(chan))

◆ DW_CTRL_LOW

#define DW_CTRL_LOW ( chan)
Value:
(0x18 + DW_CHAN_OFFSET(chan))

◆ DW_DAR

#define DW_DAR ( chan)
Value:
(0x08 + DW_CHAN_OFFSET(chan))

◆ DW_DMA_BUFFER_ALIGNMENT

#define DW_DMA_BUFFER_ALIGNMENT   0x4

◆ DW_DMA_CFG

#define DW_DMA_CFG   0x398

◆ DW_DMA_CFG_NO_IRQ_MIN_ELEMS

#define DW_DMA_CFG_NO_IRQ_MIN_ELEMS   3

◆ DW_DMA_CFG_TRIES

#define DW_DMA_CFG_TRIES   10000

◆ DW_DMA_CHAN_EN

#define DW_DMA_CHAN_EN   0x3A0

◆ DW_DMA_COPY_ALIGNMENT

#define DW_DMA_COPY_ALIGNMENT   0x4

◆ DW_DMA_LLI_ADDRESS

#define DW_DMA_LLI_ADDRESS ( lli,
dir )
Value:
(((dir) == DMA_DIR_MEM_TO_DEV) ? ((lli)->sar) : ((lli)->dar))
#define DMA_DIR_MEM_TO_DEV
Definition dma-legacy.h:19

◆ DW_DMA_TIMEOUT

#define DW_DMA_TIMEOUT   1333

◆ DW_DSR

#define DW_DSR ( chan)
Value:
(0x50 + DW_CHAN_OFFSET(chan))

◆ DW_DSR_DSC

#define DW_DSR_DSC ( x)
Value:
SET_BITS(31, 20, x)

◆ DW_DSR_DSI

#define DW_DSR_DSI ( x)
Value:
SET_BITS(19, 0, x)

◆ DW_FIFO_CHx

#define DW_FIFO_CHx ( x)
Value:
SET_BITS(25, 13, x)

◆ DW_FIFO_CHy

#define DW_FIFO_CHy ( x)
Value:
SET_BITS(12, 0, x)

◆ DW_FIFO_PART0_HI

#define DW_FIFO_PART0_HI   0x404

◆ DW_FIFO_PART0_LO

#define DW_FIFO_PART0_LO   0x400

◆ DW_FIFO_PART1_HI

#define DW_FIFO_PART1_HI   0x40C

◆ DW_FIFO_PART1_LO

#define DW_FIFO_PART1_LO   0x408

◆ DW_FIFO_SIZE

#define DW_FIFO_SIZE   0x80

◆ DW_FIFO_UPD

#define DW_FIFO_UPD   BIT(26)

◆ DW_INTR_STATUS

#define DW_INTR_STATUS   0x360

◆ DW_LLP

#define DW_LLP ( chan)
Value:
(0x10 + DW_CHAN_OFFSET(chan))

◆ DW_MASK_BLOCK

#define DW_MASK_BLOCK   0x318

◆ DW_MASK_DST_TRAN

#define DW_MASK_DST_TRAN   0x328

◆ DW_MASK_ERR

#define DW_MASK_ERR   0x330

◆ DW_MASK_SRC_TRAN

#define DW_MASK_SRC_TRAN   0x320

◆ DW_MASK_TFR

#define DW_MASK_TFR   0x310

◆ DW_MAX_CHAN

#define DW_MAX_CHAN   8

◆ DW_RAW_BLOCK

#define DW_RAW_BLOCK   0x2C8

◆ DW_RAW_DST_TRAN

#define DW_RAW_DST_TRAN   0x2D8

◆ DW_RAW_ERR

#define DW_RAW_ERR   0x2E0

◆ DW_RAW_SRC_TRAN

#define DW_RAW_SRC_TRAN   0x2D0

◆ DW_RAW_TFR

#define DW_RAW_TFR   0x2C0

◆ DW_SAR

#define DW_SAR ( chan)
Value:
(0x00 + DW_CHAN_OFFSET(chan))

◆ DW_STATUS_BLOCK

#define DW_STATUS_BLOCK   0x2F0

◆ DW_STATUS_DST_TRAN

#define DW_STATUS_DST_TRAN   0x300

◆ DW_STATUS_ERR

#define DW_STATUS_ERR   0x308

◆ DW_STATUS_SRC_TRAN

#define DW_STATUS_SRC_TRAN   0x2F8

◆ DW_STATUS_TFR

#define DW_STATUS_TFR   0x2E8

Variable Documentation

◆ __packed

struct dw_lli __packed

◆ dw_dma_ops

const struct dma_ops dw_dma_ops
extern