18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci#ifndef __SPRD_PCM_DMA_H 48c2ecf20Sopenharmony_ci#define __SPRD_PCM_DMA_H 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#define DRV_NAME "sprd_pcm_dma" 78c2ecf20Sopenharmony_ci#define SPRD_PCM_CHANNEL_MAX 2 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciextern const struct snd_compress_ops sprd_platform_compress_ops; 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct sprd_pcm_dma_params { 128c2ecf20Sopenharmony_ci dma_addr_t dev_phys[SPRD_PCM_CHANNEL_MAX]; 138c2ecf20Sopenharmony_ci u32 datawidth[SPRD_PCM_CHANNEL_MAX]; 148c2ecf20Sopenharmony_ci u32 fragment_len[SPRD_PCM_CHANNEL_MAX]; 158c2ecf20Sopenharmony_ci const char *chan_name[SPRD_PCM_CHANNEL_MAX]; 168c2ecf20Sopenharmony_ci}; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistruct sprd_compr_playinfo { 198c2ecf20Sopenharmony_ci int total_time; 208c2ecf20Sopenharmony_ci int current_time; 218c2ecf20Sopenharmony_ci int total_data_length; 228c2ecf20Sopenharmony_ci int current_data_offset; 238c2ecf20Sopenharmony_ci}; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistruct sprd_compr_params { 268c2ecf20Sopenharmony_ci u32 direction; 278c2ecf20Sopenharmony_ci u32 rate; 288c2ecf20Sopenharmony_ci u32 sample_rate; 298c2ecf20Sopenharmony_ci u32 channels; 308c2ecf20Sopenharmony_ci u32 format; 318c2ecf20Sopenharmony_ci u32 period; 328c2ecf20Sopenharmony_ci u32 periods; 338c2ecf20Sopenharmony_ci u32 info_phys; 348c2ecf20Sopenharmony_ci u32 info_size; 358c2ecf20Sopenharmony_ci}; 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_cistruct sprd_compr_callback { 388c2ecf20Sopenharmony_ci void (*drain_notify)(void *data); 398c2ecf20Sopenharmony_ci void *drain_data; 408c2ecf20Sopenharmony_ci}; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistruct sprd_compr_ops { 438c2ecf20Sopenharmony_ci int (*open)(int str_id, struct sprd_compr_callback *cb); 448c2ecf20Sopenharmony_ci int (*close)(int str_id); 458c2ecf20Sopenharmony_ci int (*start)(int str_id); 468c2ecf20Sopenharmony_ci int (*stop)(int str_id); 478c2ecf20Sopenharmony_ci int (*pause)(int str_id); 488c2ecf20Sopenharmony_ci int (*pause_release)(int str_id); 498c2ecf20Sopenharmony_ci int (*drain)(int received_total); 508c2ecf20Sopenharmony_ci int (*set_params)(int str_id, struct sprd_compr_params *params); 518c2ecf20Sopenharmony_ci}; 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_cistruct sprd_compr_data { 548c2ecf20Sopenharmony_ci struct sprd_compr_ops *ops; 558c2ecf20Sopenharmony_ci struct sprd_pcm_dma_params *dma_params; 568c2ecf20Sopenharmony_ci}; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci#endif /* __SPRD_PCM_DMA_H */ 59