forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.2 KiB
58 lines
1.2 KiB
// SPDX-License-Identifier: GPL-2.0 |
|
|
|
#ifndef __SPRD_PCM_DMA_H |
|
#define __SPRD_PCM_DMA_H |
|
|
|
#define DRV_NAME "sprd_pcm_dma" |
|
#define SPRD_PCM_CHANNEL_MAX 2 |
|
|
|
extern const struct snd_compress_ops sprd_platform_compress_ops; |
|
|
|
struct sprd_pcm_dma_params { |
|
dma_addr_t dev_phys[SPRD_PCM_CHANNEL_MAX]; |
|
u32 datawidth[SPRD_PCM_CHANNEL_MAX]; |
|
u32 fragment_len[SPRD_PCM_CHANNEL_MAX]; |
|
const char *chan_name[SPRD_PCM_CHANNEL_MAX]; |
|
}; |
|
|
|
struct sprd_compr_playinfo { |
|
int total_time; |
|
int current_time; |
|
int total_data_length; |
|
int current_data_offset; |
|
}; |
|
|
|
struct sprd_compr_params { |
|
u32 direction; |
|
u32 rate; |
|
u32 sample_rate; |
|
u32 channels; |
|
u32 format; |
|
u32 period; |
|
u32 periods; |
|
u32 info_phys; |
|
u32 info_size; |
|
}; |
|
|
|
struct sprd_compr_callback { |
|
void (*drain_notify)(void *data); |
|
void *drain_data; |
|
}; |
|
|
|
struct sprd_compr_ops { |
|
int (*open)(int str_id, struct sprd_compr_callback *cb); |
|
int (*close)(int str_id); |
|
int (*start)(int str_id); |
|
int (*stop)(int str_id); |
|
int (*pause)(int str_id); |
|
int (*pause_release)(int str_id); |
|
int (*drain)(int received_total); |
|
int (*set_params)(int str_id, struct sprd_compr_params *params); |
|
}; |
|
|
|
struct sprd_compr_data { |
|
struct sprd_compr_ops *ops; |
|
struct sprd_pcm_dma_params *dma_params; |
|
}; |
|
|
|
#endif /* __SPRD_PCM_DMA_H */
|
|
|