6#ifndef __SOF_LIB_DMA_LEGACY_H__
7#define __SOF_LIB_DMA_LEGACY_H__
10#define DMA_ATTR_BUFFER_ALIGNMENT 0
11#define DMA_ATTR_COPY_ALIGNMENT 1
12#define DMA_ATTR_BUFFER_ADDRESS_ALIGNMENT 2
13#define DMA_ATTR_BUFFER_PERIOD_COUNT 3
16#define DMA_DIR_MEM_TO_MEM SOF_DMA_DIR_MEM_TO_MEM
17#define DMA_DIR_HMEM_TO_LMEM SOF_DMA_DIR_HMEM_TO_LMEM
18#define DMA_DIR_LMEM_TO_HMEM SOF_DMA_DIR_LMEM_TO_HMEM
19#define DMA_DIR_MEM_TO_DEV SOF_DMA_DIR_MEM_TO_DEV
20#define DMA_DIR_DEV_TO_MEM SOF_DMA_DIR_DEV_TO_MEM
21#define DMA_DIR_DEV_TO_DEV SOF_DMA_DIR_DEV_TO_DEV
22#define DMA_COPY_BLOCKING SOF_DMA_COPY_BLOCKING
23#define DMA_COPY_ONE_SHOT SOF_DMA_COPY_ONE_SHOT
24#define DMA_DEV_HOST SOF_DMA_DEV_HOST
25#define DMA_ACCESS_EXCLUSIVE SOF_DMA_ACCESS_EXCLUSIVE
26#define DMA_ACCESS_SHARED SOF_DMA_ACCESS_SHARED
27#define DMA_CHAN_INVALID SOF_DMA_CHAN_INVALID
28#define DMA_CORE_INVALID SOF_DMA_CORE_INVALID
30struct dma *
dma_get(uint32_t dir, uint32_t caps, uint32_t dev, uint32_t flags);
50 unsigned int req_channel);
135 return channel->
dma->
ops->
copy(channel, bytes, flags);
178 uint32_t *avail, uint32_t *free)
195#define dma_set_drvdata(dma, data) \
196 (dma->priv_data = data)
197#define dma_get_drvdata(dma) \
199#define dma_base(dma) \
201#define dma_irq(dma) \
203#define dma_irq_name(dma) \
204 dma->plat_data.irq_name
205#define dma_chan_size(dma) \
206 dma->plat_data.chan_size
207#define dma_chan_base(dma, chan) \
208 (dma->plat_data.base + chan * dma->plat_data.chan_size)
209#define dma_chan_get_data(chan) \
211#define dma_chan_set_data(chan, data) \
212 ((chan)->priv_data = data)
237 uint32_t mask, uint32_t
value)
255 uint32_t reg, uint32_t
value)
261 uint32_t reg, uint16_t
value)
268 uint32_t reg, uint32_t mask,
276 uint32_t reg, uint16_t mask,
294 int32_t host_offset,
void *local_ptr, int32_t size);
297 int32_t host_offset,
void *local_ptr,
302 int32_t host_offset,
void *local_ptr, int32_t size);
304 int32_t host_offset,
void *local_ptr, int32_t size);
static void dma_chan_reg_update_bits(struct dma_chan_data *channel, uint32_t reg, uint32_t mask, uint32_t value)
Definition dma-legacy.h:267
static uint16_t dma_reg_read16(struct dma *dma, uint32_t reg)
Definition dma-legacy.h:220
static void dma_reg_write16(struct dma *dma, uint32_t reg, uint16_t value)
Definition dma-legacy.h:230
static int dma_release_legacy(struct dma_chan_data *channel)
Definition dma-legacy.h:147
static uint32_t dma_reg_read(struct dma *dma, uint32_t reg)
Definition dma-legacy.h:215
static void dma_copy_free(struct dma_copy *dc)
Definition dma-legacy.h:287
static void dma_reg_write(struct dma *dma, uint32_t reg, uint32_t value)
Definition dma-legacy.h:225
#define dma_chan_base(dma, chan)
Definition dma-legacy.h:207
static int dma_stop_legacy(struct dma_chan_data *channel)
Definition dma-legacy.h:110
static int dma_start_legacy(struct dma_chan_data *channel)
Definition dma-legacy.h:105
static void dma_reg_update_bits(struct dma *dma, uint32_t reg, uint32_t mask, uint32_t value)
Definition dma-legacy.h:236
static void dma_chan_reg_write16(struct dma_chan_data *channel, uint32_t reg, uint16_t value)
Definition dma-legacy.h:260
static uint16_t dma_chan_reg_read16(struct dma_chan_data *channel, uint32_t reg)
Definition dma-legacy.h:248
static void dma_chan_reg_update_bits16(struct dma_chan_data *channel, uint32_t reg, uint16_t mask, uint16_t value)
Definition dma-legacy.h:275
static void dma_channel_put_legacy(struct dma_chan_data *channel)
Definition dma-legacy.h:100
static void dma_chan_reg_write(struct dma_chan_data *channel, uint32_t reg, uint32_t value)
Definition dma-legacy.h:254
static struct dma_chan_data * dma_channel_get_legacy(struct dma *dma, int req_channel)
Definition dma-legacy.h:89
int dma_copy_set_stream_tag(struct dma_copy *dc, uint32_t stream_tag)
static uint32_t dma_chan_reg_read(struct dma_chan_data *channel, uint32_t reg)
Definition dma-legacy.h:242
void dma_put(struct dma *dma)
static int dma_probe_legacy(struct dma *dma)
Definition dma-legacy.h:167
static int dma_pause_legacy(struct dma_chan_data *channel)
Definition dma-legacy.h:139
int dma_copy_from_host(struct dma_copy *dc, struct dma_sg_config *host_sg, int32_t host_offset, void *local_ptr, int32_t size)
static int dma_status_legacy(struct dma_chan_data *channel, struct dma_chan_status *status, uint8_t direction)
Definition dma-legacy.h:155
int dma_copy_new(struct dma_copy *dc)
static int dma_interrupt_legacy(struct dma_chan_data *channel, enum dma_irq_cmd cmd)
Definition dma-legacy.h:189
static int dma_remove_legacy(struct dma *dma)
Definition dma-legacy.h:172
dma_cb_status
Definition dma-legacy.h:33
@ DMA_CB_STATUS_END
Definition dma-legacy.h:35
@ DMA_CB_STATUS_RELOAD
Definition dma-legacy.h:34
static int dma_set_config_legacy(struct dma_chan_data *channel, struct dma_sg_config *config)
Definition dma-legacy.h:161
static int dma_get_data_size_legacy(struct dma_chan_data *channel, uint32_t *avail, uint32_t *free)
Definition dma-legacy.h:177
static int dma_stop_delayed_legacy(struct dma_chan_data *channel)
Definition dma-legacy.h:118
dma_irq_cmd
Definition dma-legacy.h:39
@ DMA_IRQ_STATUS_GET
Definition dma-legacy.h:40
@ DMA_IRQ_CLEAR
Definition dma-legacy.h:41
@ DMA_IRQ_UNMASK
Definition dma-legacy.h:43
@ DMA_IRQ_MASK
Definition dma-legacy.h:42
struct dma * dma_get(uint32_t dir, uint32_t caps, uint32_t dev, uint32_t flags)
static int dma_get_attribute_legacy(struct dma *dma, uint32_t type, uint32_t *value)
Definition dma-legacy.h:183
#define dma_base(dma)
Definition dma-legacy.h:199
int dma_copy_to_host(struct dma_copy *dc, struct dma_sg_config *host_sg, int32_t host_offset, void *local_ptr, int32_t size)
int dma_copy_to_host_nowait(struct dma_copy *dc, struct dma_sg_config *host_sg, int32_t host_offset, void *local_ptr, int32_t size)
int dma_copy_from_host_nowait(struct dma_copy *dc, struct dma_sg_config *host_sg, int32_t host_offset, void *local_ptr, int32_t size)
static int dma_copy_legacy(struct dma_chan_data *channel, int bytes, uint32_t flags)
Definition dma-legacy.h:132
static void io_reg_update_bits(uint32_t reg, uint32_t mask, uint32_t value)
Definition io.h:66
static void io_reg_write16(uint32_t reg, uint16_t val)
Definition io.h:44
static uint32_t io_reg_read(uint32_t reg)
Definition io.h:56
static void io_reg_write(uint32_t reg, uint32_t val)
Definition io.h:61
static uint16_t io_reg_read16(uint32_t reg)
Definition io.h:39
static void io_reg_update_bits16(uint32_t reg, uint16_t mask, uint16_t value)
Definition io.h:49
uint32_t index
Definition dma.h:231
uint32_t direction
Definition dma.h:229
uint32_t status
Definition dma.h:228
struct dma * dma
Definition dma.h:225
struct dma_chan_data * chan
Definition dma.h:254
Definition dma-legacy.h:47
int(* get_attribute)(struct dma *dma, uint32_t type, uint32_t *value)
Definition dma-legacy.h:71
struct dma_chan_data *(* channel_get)(struct dma *dma, unsigned int req_channel)
Definition dma-legacy.h:49
int(* get_data_size)(struct dma_chan_data *channel, uint32_t *avail, uint32_t *free)
Definition dma-legacy.h:68
int(* start)(struct dma_chan_data *channel)
Definition dma-legacy.h:53
int(* interrupt)(struct dma_chan_data *channel, enum dma_irq_cmd cmd)
Definition dma-legacy.h:73
void(* channel_put)(struct dma_chan_data *channel)
Definition dma-legacy.h:51
int(* remove)(struct dma *dma)
Definition dma-legacy.h:66
int(* status)(struct dma_chan_data *channel, struct dma_chan_status *status, uint8_t direction)
Definition dma-legacy.h:59
int(* stop_delayed)(struct dma_chan_data *channel)
Definition dma-legacy.h:55
int(* stop)(struct dma_chan_data *channel)
Definition dma-legacy.h:54
int(* release)(struct dma_chan_data *channel)
Definition dma-legacy.h:58
int(* set_config)(struct dma_chan_data *channel, struct dma_sg_config *config)
Definition dma-legacy.h:62
int(* pause)(struct dma_chan_data *channel)
Definition dma-legacy.h:57
int(* copy)(struct dma_chan_data *channel, int bytes, uint32_t flags)
Definition dma-legacy.h:56
int(* probe)(struct dma *dma)
Definition dma-legacy.h:65
const struct dma_ops * ops
Definition dma.h:214
char value[]
Definition tlv.h:2
uint32_t type
Definition tlv.h:0