xref: /OK3568_Linux_fs/kernel/sound/firewire/amdtp-am824.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef SOUND_FIREWIRE_AMDTP_AM824_H_INCLUDED
3*4882a593Smuzhiyun #define SOUND_FIREWIRE_AMDTP_AM824_H_INCLUDED
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <sound/pcm.h>
6*4882a593Smuzhiyun #include <sound/rawmidi.h>
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include "amdtp-stream.h"
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #define AM824_IN_PCM_FORMAT_BITS	SNDRV_PCM_FMTBIT_S32
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define AM824_OUT_PCM_FORMAT_BITS	SNDRV_PCM_FMTBIT_S32
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /*
15*4882a593Smuzhiyun  * This module supports maximum 64 PCM channels for one PCM stream
16*4882a593Smuzhiyun  * This is for our convenience.
17*4882a593Smuzhiyun  */
18*4882a593Smuzhiyun #define AM824_MAX_CHANNELS_FOR_PCM	64
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun /*
21*4882a593Smuzhiyun  * AMDTP packet can include channels for MIDI conformant data.
22*4882a593Smuzhiyun  * Each MIDI conformant data channel includes 8 MPX-MIDI data stream.
23*4882a593Smuzhiyun  * Each MPX-MIDI data stream includes one data stream from/to MIDI ports.
24*4882a593Smuzhiyun  *
25*4882a593Smuzhiyun  * This module supports maximum 1 MIDI conformant data channels.
26*4882a593Smuzhiyun  * Then this AMDTP packets can transfer maximum 8 MIDI data streams.
27*4882a593Smuzhiyun  */
28*4882a593Smuzhiyun #define AM824_MAX_CHANNELS_FOR_MIDI	1
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun int amdtp_am824_set_parameters(struct amdtp_stream *s, unsigned int rate,
31*4882a593Smuzhiyun 			       unsigned int pcm_channels,
32*4882a593Smuzhiyun 			       unsigned int midi_ports,
33*4882a593Smuzhiyun 			       bool double_pcm_frames);
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun void amdtp_am824_set_pcm_position(struct amdtp_stream *s, unsigned int index,
36*4882a593Smuzhiyun 				 unsigned int position);
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun void amdtp_am824_set_midi_position(struct amdtp_stream *s,
39*4882a593Smuzhiyun 				   unsigned int position);
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun int amdtp_am824_add_pcm_hw_constraints(struct amdtp_stream *s,
42*4882a593Smuzhiyun 				       struct snd_pcm_runtime *runtime);
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun void amdtp_am824_midi_trigger(struct amdtp_stream *s, unsigned int port,
45*4882a593Smuzhiyun 			      struct snd_rawmidi_substream *midi);
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun int amdtp_am824_init(struct amdtp_stream *s, struct fw_unit *unit,
48*4882a593Smuzhiyun 		     enum amdtp_stream_direction dir, enum cip_flags flags);
49*4882a593Smuzhiyun #endif
50