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