coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
dma.h File Reference
#include <stdint.h>
#include <soc/addressmap.h>
Include dependency graph for dma.h:

Go to the source code of this file.

Data Structures

struct  apb_dma
 
struct  apb_dma_channel_regs
 
struct  apb_dma_channel
 

Macros

#define TEGRA_DMA_ALIGN_BYTES   4
 
#define APB_COMMAND_GEN   (1 << 31)
 
#define APB_CNTRL_REG_COUNT_VALUE_MASK   0xffff
 
#define APB_CNTRL_REG_COUNT_VALUE_SHIFT   0
 
#define APB_COMMAND_GEN   (1 << 31)
 
#define APB_CNTRL_REG_COUNT_VALUE_MASK   0xffff
 
#define APB_CNTRL_REG_COUNT_VALUE_SHIFT   0
 
#define APB_CSR_ENB   (1 << 31)
 
#define APB_CSR_IE_EOC   (1 << 30)
 
#define APB_CSR_HOLD   (1 << 29)
 
#define APB_CSR_DIR   (1 << 28)
 
#define APB_CSR_ONCE   (1 << 27)
 
#define APB_CSR_FLOW   (1 << 21)
 
#define APB_CSR_REQ_SEL_MASK   0x1f
 
#define APB_CSR_REQ_SEL_SHIFT   16
 
#define APB_STA_BSY   (1 << 31)
 
#define APB_STA_ISE_EOC   (1 << 30)
 
#define APB_STA_HALT   (1 << 29)
 
#define APB_STA_PING_PONG_STA   (1 << 28)
 
#define APB_STA_DMA_ACTIVITY   (1 << 27)
 
#define APB_STA_CHANNEL_PAUSE   (1 << 26)
 
#define APB_CSRE_CHANNEL_PAUSE   (1 << 31)
 
#define APB_CSRE_TRIG_SEL_MASK   0x3f
 
#define APB_CSRE_TRIG_SEL_SHIFT   14
 
#define AHB_PTR_MASK   (0x3fffffff)
 
#define AHB_PTR_SHIFT   2
 
#define AHB_SEQ_INTR_ENB   (1 << 31)
 
#define AHB_BUS_WIDTH_MASK   0x7
 
#define AHB_BUS_WIDTH_SHIFT   28
 
#define AHB_DATA_SWAP   (1 << 27)
 
#define AHB_BURST_MASK   0x7
 
#define AHB_BURST_SHIFT   24
 
#define AHB_SEQ_DBL_BUF   (1 << 19)
 
#define AHB_SEQ_WRAP_MASK   0x7
 
#define AHB_SEQ_WRAP_SHIFT   16
 
#define APB_PTR_MASK   0x3fffffff
 
#define APB_PTR_SHIFT   2
 
#define APB_BUS_WIDTH_MASK   0x7
 
#define APB_BUS_WIDTH_SHIFT   28
 
#define APB_DATA_SWAP   (1 << 27)
 
#define APB_ADDR_WRAP_MASK   0x7
 
#define APB_ADDR_WRAP_SHIFT   16
 
#define APB_WORD_TRANSFER_MASK   0x0fffffff
 
#define APB_WORD_TRANSFER_SHIFT   2
 

Enumerations

enum  apbdmachan_req_sel {
  APBDMA_SLAVE_CNTR_REQ = 0 , APBDMA_SLAVE_APBIF_CH0 = 1 , APBDMA_SLAVE_APBIF_CH1 = 2 , APBDMA_SLAVE_APBIF_CH2 = 3 ,
  APBDMA_SLAVE_APBIF_CH3 = 4 , APBDMA_SLAVE_HSI = 5 , APBDMA_SLAVE_APBIF_CH4 = 6 , APBDMA_SLAVE_APBIF_CH5 = 7 ,
  APBDMA_SLAVE_UART_A = 8 , APBDMA_SLAVE_UART_B = 9 , APBDMA_SLAVE_UART_C = 10 , APBDMA_SLAVE_DTV = 11 ,
  APBDMA_SLAVE_APBIF_CH6 = 12 , APBDMA_SLAVE_APBIF_CH7 = 13 , APBDMA_SLAVE_APBIF_CH8 = 14 , APBDMA_SLAVE_SL2B1 = 15 ,
  APBDMA_SLAVE_SL2B2 = 16 , APBDMA_SLAVE_SL2B3 = 17 , APBDMA_SLAVE_SL2B4 = 18 , APBDMA_SLAVE_UART_D = 19 ,
  APBDMA_SLAVE_UART_E = 20 , APBDMA_SLAVE_I2C = 21 , APBDMA_SLAVE_I2C2 = 22 , APBDMA_SLAVE_I2C3 = 23 ,
  APBDMA_SLAVE_DVC_I2C = 24 , APBDMA_SLAVE_OWR = 25 , APBDMA_SLAVE_I2C4 = 26 , APBDMA_SLAVE_SL2B5 = 27 ,
  APBDMA_SLAVE_SL2B6 = 28 , APBDMA_SLAVE_APBIF_CH9 = 29 , APBDMA_SLAVE_I2C6 = 30 , APBDMA_SLAVE_NA31 = 31 ,
  APBDMA_SLAVE_CNTR_REQ = 0 , APBDMA_SLAVE_APBIF_CH0 = 1 , APBDMA_SLAVE_APBIF_CH1 = 2 , APBDMA_SLAVE_APBIF_CH2 = 3 ,
  APBDMA_SLAVE_APBIF_CH3 = 4 , APBDMA_SLAVE_QSPI = 5 , APBDMA_SLAVE_APBIF_CH4 = 6 , APBDMA_SLAVE_APBIF_CH5 = 7 ,
  APBDMA_SLAVE_UART_A = 8 , APBDMA_SLAVE_UART_B = 9 , APBDMA_SLAVE_UART_C = 10 , APBDMA_SLAVE_DTV = 11 ,
  APBDMA_SLAVE_APBIF_CH6 = 12 , APBDMA_SLAVE_APBIF_CH7 = 13 , APBDMA_SLAVE_APBIF_CH8 = 14 , APBDMA_SLAVE_SL2B1 = 15 ,
  APBDMA_SLAVE_SL2B2 = 16 , APBDMA_SLAVE_SL2B3 = 17 , APBDMA_SLAVE_SL2B4 = 18 , APBDMA_SLAVE_UART_D = 19 ,
  APBDMA_SLAVE_UART_E = 20 , APBDMA_SLAVE_I2C = 21 , APBDMA_SLAVE_I2C2 = 22 , APBDMA_SLAVE_I2C3 = 23 ,
  APBDMA_SLAVE_DVC_I2C = 24 , APBDMA_SLAVE_OWR = 25 , APBDMA_SLAVE_I2C4 = 26 , APBDMA_SLAVE_SL2B5 = 27 ,
  APBDMA_SLAVE_SL2B6 = 28 , APBDMA_SLAVE_APBIF_CH9 = 29 , APBDMA_SLAVE_I2C6 = 30 , APBDMA_SLAVE_NA31 = 31
}
 

Functions

 check_member (apb_dma, channel_swid1, 0x54)
 
 check_member (apb_dma_channel_regs, word_transfer, 0x24)
 
struct apb_dma_channel *const dma_claim (void)
 
void dma_release (struct apb_dma_channel *const channel)
 
int dma_start (struct apb_dma_channel *const channel)
 
int dma_stop (struct apb_dma_channel *const channel)
 
int dma_busy (struct apb_dma_channel *const channel)
 

Variables

struct apb_dma __packed
 

Macro Definition Documentation

◆ AHB_BURST_MASK

#define AHB_BURST_MASK   0x7

Definition at line 125 of file dma.h.

◆ AHB_BURST_SHIFT

#define AHB_BURST_SHIFT   24

Definition at line 126 of file dma.h.

◆ AHB_BUS_WIDTH_MASK

#define AHB_BUS_WIDTH_MASK   0x7

Definition at line 122 of file dma.h.

◆ AHB_BUS_WIDTH_SHIFT

#define AHB_BUS_WIDTH_SHIFT   28

Definition at line 123 of file dma.h.

◆ AHB_DATA_SWAP

#define AHB_DATA_SWAP   (1 << 27)

Definition at line 124 of file dma.h.

◆ AHB_PTR_MASK

#define AHB_PTR_MASK   (0x3fffffff)

Definition at line 118 of file dma.h.

◆ AHB_PTR_SHIFT

#define AHB_PTR_SHIFT   2

Definition at line 119 of file dma.h.

◆ AHB_SEQ_DBL_BUF

#define AHB_SEQ_DBL_BUF   (1 << 19)

Definition at line 127 of file dma.h.

◆ AHB_SEQ_INTR_ENB

#define AHB_SEQ_INTR_ENB   (1 << 31)

Definition at line 121 of file dma.h.

◆ AHB_SEQ_WRAP_MASK

#define AHB_SEQ_WRAP_MASK   0x7

Definition at line 128 of file dma.h.

◆ AHB_SEQ_WRAP_SHIFT

#define AHB_SEQ_WRAP_SHIFT   16

Definition at line 129 of file dma.h.

◆ APB_ADDR_WRAP_MASK

#define APB_ADDR_WRAP_MASK   0x7

Definition at line 137 of file dma.h.

◆ APB_ADDR_WRAP_SHIFT

#define APB_ADDR_WRAP_SHIFT   16

Definition at line 138 of file dma.h.

◆ APB_BUS_WIDTH_MASK

#define APB_BUS_WIDTH_MASK   0x7

Definition at line 134 of file dma.h.

◆ APB_BUS_WIDTH_SHIFT

#define APB_BUS_WIDTH_SHIFT   28

Definition at line 135 of file dma.h.

◆ APB_CNTRL_REG_COUNT_VALUE_MASK [1/2]

#define APB_CNTRL_REG_COUNT_VALUE_MASK   0xffff

Definition at line 32 of file dma.h.

◆ APB_CNTRL_REG_COUNT_VALUE_MASK [2/2]

#define APB_CNTRL_REG_COUNT_VALUE_MASK   0xffff

Definition at line 32 of file dma.h.

◆ APB_CNTRL_REG_COUNT_VALUE_SHIFT [1/2]

#define APB_CNTRL_REG_COUNT_VALUE_SHIFT   0

Definition at line 33 of file dma.h.

◆ APB_CNTRL_REG_COUNT_VALUE_SHIFT [2/2]

#define APB_CNTRL_REG_COUNT_VALUE_SHIFT   0

Definition at line 33 of file dma.h.

◆ APB_COMMAND_GEN [1/2]

#define APB_COMMAND_GEN   (1 << 31)

Definition at line 30 of file dma.h.

◆ APB_COMMAND_GEN [2/2]

#define APB_COMMAND_GEN   (1 << 31)

Definition at line 30 of file dma.h.

◆ APB_CSR_DIR

#define APB_CSR_DIR   (1 << 28)

Definition at line 66 of file dma.h.

◆ APB_CSR_ENB

#define APB_CSR_ENB   (1 << 31)

Definition at line 63 of file dma.h.

◆ APB_CSR_FLOW

#define APB_CSR_FLOW   (1 << 21)

Definition at line 68 of file dma.h.

◆ APB_CSR_HOLD

#define APB_CSR_HOLD   (1 << 29)

Definition at line 65 of file dma.h.

◆ APB_CSR_IE_EOC

#define APB_CSR_IE_EOC   (1 << 30)

Definition at line 64 of file dma.h.

◆ APB_CSR_ONCE

#define APB_CSR_ONCE   (1 << 27)

Definition at line 67 of file dma.h.

◆ APB_CSR_REQ_SEL_MASK

#define APB_CSR_REQ_SEL_MASK   0x1f

Definition at line 69 of file dma.h.

◆ APB_CSR_REQ_SEL_SHIFT

#define APB_CSR_REQ_SEL_SHIFT   16

Definition at line 70 of file dma.h.

◆ APB_CSRE_CHANNEL_PAUSE

#define APB_CSRE_CHANNEL_PAUSE   (1 << 31)

Definition at line 114 of file dma.h.

◆ APB_CSRE_TRIG_SEL_MASK

#define APB_CSRE_TRIG_SEL_MASK   0x3f

Definition at line 115 of file dma.h.

◆ APB_CSRE_TRIG_SEL_SHIFT

#define APB_CSRE_TRIG_SEL_SHIFT   14

Definition at line 116 of file dma.h.

◆ APB_DATA_SWAP

#define APB_DATA_SWAP   (1 << 27)

Definition at line 136 of file dma.h.

◆ APB_PTR_MASK

#define APB_PTR_MASK   0x3fffffff

Definition at line 131 of file dma.h.

◆ APB_PTR_SHIFT

#define APB_PTR_SHIFT   2

Definition at line 132 of file dma.h.

◆ APB_STA_BSY

#define APB_STA_BSY   (1 << 31)

Definition at line 107 of file dma.h.

◆ APB_STA_CHANNEL_PAUSE

#define APB_STA_CHANNEL_PAUSE   (1 << 26)

Definition at line 112 of file dma.h.

◆ APB_STA_DMA_ACTIVITY

#define APB_STA_DMA_ACTIVITY   (1 << 27)

Definition at line 111 of file dma.h.

◆ APB_STA_HALT

#define APB_STA_HALT   (1 << 29)

Definition at line 109 of file dma.h.

◆ APB_STA_ISE_EOC

#define APB_STA_ISE_EOC   (1 << 30)

Definition at line 108 of file dma.h.

◆ APB_STA_PING_PONG_STA

#define APB_STA_PING_PONG_STA   (1 << 28)

Definition at line 110 of file dma.h.

◆ APB_WORD_TRANSFER_MASK

#define APB_WORD_TRANSFER_MASK   0x0fffffff

Definition at line 140 of file dma.h.

◆ APB_WORD_TRANSFER_SHIFT

#define APB_WORD_TRANSFER_SHIFT   2

Definition at line 141 of file dma.h.

◆ TEGRA_DMA_ALIGN_BYTES

#define TEGRA_DMA_ALIGN_BYTES   4

Definition at line 13 of file dma.h.

Enumeration Type Documentation

◆ apbdmachan_req_sel

Enumerator
APBDMA_SLAVE_CNTR_REQ 
APBDMA_SLAVE_APBIF_CH0 
APBDMA_SLAVE_APBIF_CH1 
APBDMA_SLAVE_APBIF_CH2 
APBDMA_SLAVE_APBIF_CH3 
APBDMA_SLAVE_HSI 
APBDMA_SLAVE_APBIF_CH4 
APBDMA_SLAVE_APBIF_CH5 
APBDMA_SLAVE_UART_A 
APBDMA_SLAVE_UART_B 
APBDMA_SLAVE_UART_C 
APBDMA_SLAVE_DTV 
APBDMA_SLAVE_APBIF_CH6 
APBDMA_SLAVE_APBIF_CH7 
APBDMA_SLAVE_APBIF_CH8 
APBDMA_SLAVE_SL2B1 
APBDMA_SLAVE_SL2B2 
APBDMA_SLAVE_SL2B3 
APBDMA_SLAVE_SL2B4 
APBDMA_SLAVE_UART_D 
APBDMA_SLAVE_UART_E 
APBDMA_SLAVE_I2C 
APBDMA_SLAVE_I2C2 
APBDMA_SLAVE_I2C3 
APBDMA_SLAVE_DVC_I2C 
APBDMA_SLAVE_OWR 
APBDMA_SLAVE_I2C4 
APBDMA_SLAVE_SL2B5 
APBDMA_SLAVE_SL2B6 
APBDMA_SLAVE_APBIF_CH9 
APBDMA_SLAVE_I2C6 
APBDMA_SLAVE_NA31 
APBDMA_SLAVE_CNTR_REQ 
APBDMA_SLAVE_APBIF_CH0 
APBDMA_SLAVE_APBIF_CH1 
APBDMA_SLAVE_APBIF_CH2 
APBDMA_SLAVE_APBIF_CH3 
APBDMA_SLAVE_QSPI 
APBDMA_SLAVE_APBIF_CH4 
APBDMA_SLAVE_APBIF_CH5 
APBDMA_SLAVE_UART_A 
APBDMA_SLAVE_UART_B 
APBDMA_SLAVE_UART_C 
APBDMA_SLAVE_DTV 
APBDMA_SLAVE_APBIF_CH6 
APBDMA_SLAVE_APBIF_CH7 
APBDMA_SLAVE_APBIF_CH8 
APBDMA_SLAVE_SL2B1 
APBDMA_SLAVE_SL2B2 
APBDMA_SLAVE_SL2B3 
APBDMA_SLAVE_SL2B4 
APBDMA_SLAVE_UART_D 
APBDMA_SLAVE_UART_E 
APBDMA_SLAVE_I2C 
APBDMA_SLAVE_I2C2 
APBDMA_SLAVE_I2C3 
APBDMA_SLAVE_DVC_I2C 
APBDMA_SLAVE_OWR 
APBDMA_SLAVE_I2C4 
APBDMA_SLAVE_SL2B5 
APBDMA_SLAVE_SL2B6 
APBDMA_SLAVE_APBIF_CH9 
APBDMA_SLAVE_I2C6 
APBDMA_SLAVE_NA31 

Definition at line 72 of file dma.h.

Function Documentation

◆ check_member() [1/2]

check_member ( apb_dma  ,
channel_swid1  ,
0x54   
)

◆ check_member() [2/2]

check_member ( apb_dma_channel_regs  ,
word_transfer  ,
0x24   
)

◆ dma_busy()

int dma_busy ( struct apb_dma_channel *const  channel)

Definition at line 48 of file dma.c.

◆ dma_claim()

struct apb_dma_channel* const dma_claim ( void  )

Definition at line 59 of file dma.c.

◆ dma_release()

void dma_release ( struct apb_dma_channel *const  channel)

Definition at line 92 of file dma.c.

◆ dma_start()

int dma_start ( struct apb_dma_channel *const  channel)

Definition at line 111 of file dma.c.

◆ dma_stop()

int dma_stop ( struct apb_dma_channel *const  channel)

Definition at line 121 of file dma.c.

Variable Documentation

◆ __packed