1#ifndef __VSF_LINUX_SOUND_PCM_H__
2#define __VSF_LINUX_SOUND_PCM_H__
8#define snd_pcm_substream_chip(substream) ((substream)->private_data)
94#define SNDRV_PCM_TRIGGER_STOP 0
95#define SNDRV_PCM_TRIGGER_START 1
96#define SNDRV_PCM_TRIGGER_PAUSE_PUSH 3
97#define SNDRV_PCM_TRIGGER_PAUSE_RELEASE 4
98#define SNDRV_PCM_TRIGGER_SUSPEND 5
99#define SNDRV_PCM_TRIGGER_RESUME 6
100#define SNDRV_PCM_TRIGGER_DRAIN 7
102#define SNDRV_PCM_RATE_5512 (1 << 0)
103#define SNDRV_PCM_RATE_8000 (1 << 1)
104#define SNDRV_PCM_RATE_11025 (1 << 2)
105#define SNDRV_PCM_RATE_16000 (1 << 3)
106#define SNDRV_PCM_RATE_22050 (1 << 4)
107#define SNDRV_PCM_RATE_32000 (1 << 5)
108#define SNDRV_PCM_RATE_44100 (1 << 6)
109#define SNDRV_PCM_RATE_48000 (1 << 7)
110#define SNDRV_PCM_RATE_64000 (1 << 8)
111#define SNDRV_PCM_RATE_88200 (1 << 9)
112#define SNDRV_PCM_RATE_96000 (1 << 10)
113#define SNDRV_PCM_RATE_176400 (1 << 11)
114#define SNDRV_PCM_RATE_192000 (1 << 12)
116#define SNDRV_PCM_RATE_CONTINUOUS (1 << 30)
117#define SNDRV_PCM_RATE_KNOT (1 << 31)
119#define _SNDRV_PCM_FMTBIT(fmt) (1ULL << (int)SNDRV_PCM_FORMAT_##fmt)
120#define SNDRV_PCM_FMTBIT_S8 _SNDRV_PCM_FMTBIT(S8)
121#define SNDRV_PCM_FMTBIT_U8 _SNDRV_PCM_FMTBIT(U8)
122#define SNDRV_PCM_FMTBIT_S16_LE _SNDRV_PCM_FMTBIT(S16_LE)
123#define SNDRV_PCM_FMTBIT_S16_BE _SNDRV_PCM_FMTBIT(S16_BE)
124#define SNDRV_PCM_FMTBIT_U16_LE _SNDRV_PCM_FMTBIT(U16_LE)
125#define SNDRV_PCM_FMTBIT_U16_BE _SNDRV_PCM_FMTBIT(U16_BE)
126#define SNDRV_PCM_FMTBIT_S24_LE _SNDRV_PCM_FMTBIT(S24_LE)
127#define SNDRV_PCM_FMTBIT_S24_BE _SNDRV_PCM_FMTBIT(S24_BE)
128#define SNDRV_PCM_FMTBIT_U24_LE _SNDRV_PCM_FMTBIT(U24_LE)
129#define SNDRV_PCM_FMTBIT_U24_BE _SNDRV_PCM_FMTBIT(U24_BE)
130#define SNDRV_PCM_FMTBIT_S32_LE _SNDRV_PCM_FMTBIT(S32_LE)
131#define SNDRV_PCM_FMTBIT_S32_BE _SNDRV_PCM_FMTBIT(S32_BE)
132#define SNDRV_PCM_FMTBIT_U32_LE _SNDRV_PCM_FMTBIT(U32_LE)
133#define SNDRV_PCM_FMTBIT_U32_BE _SNDRV_PCM_FMTBIT(U32_BE)
134#define SNDRV_PCM_FMTBIT_FLOAT_LE _SNDRV_PCM_FMTBIT(FLOAT_LE)
135#define SNDRV_PCM_FMTBIT_FLOAT_BE _SNDRV_PCM_FMTBIT(FLOAT_BE)
136#define SNDRV_PCM_FMTBIT_FLOAT64_LE _SNDRV_PCM_FMTBIT(FLOAT64_LE)
137#define SNDRV_PCM_FMTBIT_FLOAT64_BE _SNDRV_PCM_FMTBIT(FLOAT64_BE)
138#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_LE)
139#define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_BE)
140#define SNDRV_PCM_FMTBIT_MU_LAW _SNDRV_PCM_FMTBIT(MU_LAW)
141#define SNDRV_PCM_FMTBIT_A_LAW _SNDRV_PCM_FMTBIT(A_LAW)
142#define SNDRV_PCM_FMTBIT_IMA_ADPCM _SNDRV_PCM_FMTBIT(IMA_ADPCM)
143#define SNDRV_PCM_FMTBIT_MPEG _SNDRV_PCM_FMTBIT(MPEG)
144#define SNDRV_PCM_FMTBIT_GSM _SNDRV_PCM_FMTBIT(GSM)
145#define SNDRV_PCM_FMTBIT_SPECIAL _SNDRV_PCM_FMTBIT(SPECIAL)
146#define SNDRV_PCM_FMTBIT_S24_3LE _SNDRV_PCM_FMTBIT(S24_3LE)
147#define SNDRV_PCM_FMTBIT_U24_3LE _SNDRV_PCM_FMTBIT(U24_3LE)
148#define SNDRV_PCM_FMTBIT_S24_3BE _SNDRV_PCM_FMTBIT(S24_3BE)
149#define SNDRV_PCM_FMTBIT_U24_3BE _SNDRV_PCM_FMTBIT(U24_3BE)
150#define SNDRV_PCM_FMTBIT_S20_3LE _SNDRV_PCM_FMTBIT(S20_3LE)
151#define SNDRV_PCM_FMTBIT_U20_3LE _SNDRV_PCM_FMTBIT(U20_3LE)
152#define SNDRV_PCM_FMTBIT_S20_3BE _SNDRV_PCM_FMTBIT(S20_3BE)
153#define SNDRV_PCM_FMTBIT_U20_3BE _SNDRV_PCM_FMTBIT(U20_3BE)
154#define SNDRV_PCM_FMTBIT_S18_3LE _SNDRV_PCM_FMTBIT(S18_3LE)
155#define SNDRV_PCM_FMTBIT_U18_3LE _SNDRV_PCM_FMTBIT(U18_3LE)
156#define SNDRV_PCM_FMTBIT_S18_3BE _SNDRV_PCM_FMTBIT(S18_3BE)
157#define SNDRV_PCM_FMTBIT_U18_3BE _SNDRV_PCM_FMTBIT(U18_3BE)
158#define SNDRV_PCM_FMTBIT_G723_24 _SNDRV_PCM_FMTBIT(G723_24)
159#define SNDRV_PCM_FMTBIT_G723_24_1B _SNDRV_PCM_FMTBIT(G723_24_1B)
160#define SNDRV_PCM_FMTBIT_G723_40 _SNDRV_PCM_FMTBIT(G723_40)
161#define SNDRV_PCM_FMTBIT_G723_40_1B _SNDRV_PCM_FMTBIT(G723_40_1B)
162#define SNDRV_PCM_FMTBIT_DSD_U8 _SNDRV_PCM_FMTBIT(DSD_U8)
163#define SNDRV_PCM_FMTBIT_DSD_U16_LE _SNDRV_PCM_FMTBIT(DSD_U16_LE)
164#define SNDRV_PCM_FMTBIT_DSD_U32_LE _SNDRV_PCM_FMTBIT(DSD_U32_LE)
165#define SNDRV_PCM_FMTBIT_DSD_U16_BE _SNDRV_PCM_FMTBIT(DSD_U16_BE)
166#define SNDRV_PCM_FMTBIT_DSD_U32_BE _SNDRV_PCM_FMTBIT(DSD_U32_BE)
205static inline size_t snd_pcm_lib_buffer_bytes(
struct snd_pcm_substream *substream)
208 return frames_to_bytes(runtime, runtime->
buffer_size);
221#define snd_pcm_stream_lock_irqsave(__substream, __flags) ({ \
222 if ((__substream)->pcm->nonatomic) { \
223 mutex_lock(&(__substream)->pstr->mutex); \
225 spin_lock_irqsave(&(__substream)->pstr->lock, (__flags)); \
230#define snd_pcm_stream_unlock_irqrestore(__substream, __flags) ({ \
231 if ((__substream)->pcm->nonatomic) { \
232 mutex_unlock(&(__substream)->pstr->mutex); \
234 spin_unlock_irqrestore(&(__substream)->pstr->lock, (__flags)); \
signed long snd_pcm_sframes_t
Definition asound.h:64
#define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL
Definition asound.h:238
#define SNDRV_PCM_STATE_RUNNING
Definition asound.h:192
int snd_pcm_hw_param_t
Definition asound.h:219
#define SNDRV_PCM_HW_PARAM_BUFFER_BYTES
Definition asound.h:236
@ SNDRV_PCM_STREAM_PLAYBACK
Definition asound.h:67
unsigned long snd_pcm_uframes_t
Definition asound.h:63
#define SNDRV_PCM_STATE_DRAINING
Definition asound.h:194
__le16 params
Definition ieee80211.h:108
int spinlock_t
Definition spinlock.h:26
__u64 u64
Definition types.h:75
int ssize_t
Definition types.h:71
void snd_pcm_period_elapsed(struct snd_pcm_substream *substream)
Definition vsf_linux_core_sound.c:167
int snd_pcm_lib_free_vmalloc_buffer(struct snd_pcm_substream *substream)
Definition vsf_linux_core_sound.c:196
void snd_pcm_set_ops(struct snd_pcm *pcm, int direction, const struct snd_pcm_ops *ops)
Definition vsf_linux_core_sound.c:135
int snd_pcm_lib_alloc_vmalloc_buffer(struct snd_pcm_substream *substream, size_t size)
Definition vsf_linux_core_sound.c:175
int snd_pcm_new(struct snd_card *card, const char *id, int device, int playback_count, int capture_count, struct snd_pcm **rpcm)
Definition vsf_linux_core_sound.c:104
int snd_pcm_lib_ioctl(struct snd_pcm_substream *substream, unsigned int cmd, void *arg)
Definition vsf_linux_core_sound.c:213
struct page * snd_pcm_lib_get_vmalloc_page(struct snd_pcm_substream *substream, unsigned long offset)
Definition vsf_linux_core_sound.c:208
unsigned int min
Definition asound.h:247
size_t buffer_bytes_max
Definition pcm.h:16
unsigned int periods_max
Definition pcm.h:18
unsigned int info
Definition pcm.h:11
unsigned int rate_min
Definition pcm.h:14
u64 formats
Definition pcm.h:12
unsigned int periods_min
Definition pcm.h:18
unsigned int channels_min
Definition pcm.h:15
size_t period_bytes_min
Definition pcm.h:17
size_t period_bytes_max
Definition pcm.h:17
unsigned int rate_max
Definition pcm.h:14
size_t fifo_size
Definition pcm.h:19
unsigned int rates
Definition pcm.h:13
unsigned int channels_max
Definition pcm.h:15
snd_pcm_state_t state
Definition asound.h:320
int(* prepare)(struct snd_pcm_substream *substream)
Definition pcm.h:30
int(* open)(struct snd_pcm_substream *substream)
Definition pcm.h:25
int(* hw_params)(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params)
Definition pcm.h:28
int(* close)(struct snd_pcm_substream *substream)
Definition pcm.h:26
int(* hw_free)(struct snd_pcm_substream *substream)
Definition pcm.h:29
int(* ioctl)(struct snd_pcm_substream *substream, unsigned int cmd, void *arg)
Definition pcm.h:27
int(* trigger)(struct snd_pcm_substream *substream, int cmd)
Definition pcm.h:31
struct page *(* page)(struct snd_pcm_substream *substream, unsigned long offset)
Definition pcm.h:33
snd_pcm_uframes_t(* pointer)(struct snd_pcm_substream *substream)
Definition pcm.h:32
size_t byte_align
Definition pcm.h:43
struct snd_pcm_mmap_status * status
Definition pcm.h:45
struct snd_pcm_hardware hw
Definition pcm.h:37
unsigned int frame_bits
Definition pcm.h:38
unsigned int sample_bits
Definition pcm.h:39
unsigned char * dma_area
Definition pcm.h:48
snd_pcm_uframes_t buffer_size
Definition pcm.h:42
size_t dma_bytes
Definition pcm.h:49
struct snd_pcm_mmap_control * control
Definition pcm.h:46
snd_pcm_uframes_t period_size
Definition pcm.h:40
unsigned int periods
Definition pcm.h:41
struct device * dev
Definition pcm.h:71
spinlock_t lock
Definition pcm.h:74
int stream
Definition pcm.h:65
unsigned int substream_count
Definition pcm.h:68
struct snd_pcm * pcm
Definition pcm.h:66
vsf_slist_t substream_list
Definition pcm.h:69
vsf_slist_node_t list_node
Definition pcm.h:61
struct snd_pcm_runtime * runtime
Definition pcm.h:60
int number
Definition pcm.h:56
struct snd_pcm * pcm
Definition pcm.h:53
const struct snd_pcm_ops * ops
Definition pcm.h:59
struct snd_pcm_str * pstr
Definition pcm.h:54
void * private_data
Definition pcm.h:55
int stream
Definition pcm.h:58
void(* private_free)(struct snd_pcm *pcm)
Definition pcm.h:89
struct snd_pcm_str streams[2]
Definition pcm.h:86
void * private_data
Definition pcm.h:88
struct list_head list
Definition pcm.h:81
struct snd_card * card
Definition pcm.h:80
char name[80]
Definition pcm.h:85
int device
Definition pcm.h:82
bool nonatomic
Definition pcm.h:91
Definition vsf_list.h:876
Definition vsf_list.h:872
uint64_t offset
Definition vsf_memfs.h:49
uint32_t size
Definition vsf_memfs.h:50