blob: b56e61fc997d3808ab8460b4efe1567425c0ab78 [file] [log] [blame]
Takashi Sakamoto59558152015-09-19 11:21:55 +09001#ifndef SOUND_FIREWIRE_AMDTP_AM824_H_INCLUDED
2#define SOUND_FIREWIRE_AMDTP_AM824_H_INCLUDED
3
Takashi Sakamotobc8500d2015-09-19 11:21:57 +09004#include <sound/pcm.h>
Takashi Sakamoto03e2a672015-09-19 11:21:59 +09005#include <sound/rawmidi.h>
Takashi Sakamotobc8500d2015-09-19 11:21:57 +09006
Takashi Sakamoto59558152015-09-19 11:21:55 +09007#include "amdtp-stream.h"
8
Takashi Sakamotodf075fe2015-09-19 11:22:02 +09009#define AM824_IN_PCM_FORMAT_BITS SNDRV_PCM_FMTBIT_S32
10
Takashi Sakamotoa02cb8f2017-05-22 22:22:21 +090011#define AM824_OUT_PCM_FORMAT_BITS SNDRV_PCM_FMTBIT_S32
Takashi Sakamotodf075fe2015-09-19 11:22:02 +090012
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
Takashi Sakamoto51c29fd2015-09-19 11:21:56 +090029int 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
Takashi Sakamotof65be912015-09-19 11:21:58 +090034void amdtp_am824_set_pcm_position(struct amdtp_stream *s, unsigned int index,
35 unsigned int position);
36
37void amdtp_am824_set_midi_position(struct amdtp_stream *s,
38 unsigned int position);
39
Takashi Sakamotobc8500d2015-09-19 11:21:57 +090040int amdtp_am824_add_pcm_hw_constraints(struct amdtp_stream *s,
41 struct snd_pcm_runtime *runtime);
42
Takashi Sakamoto03e2a672015-09-19 11:21:59 +090043void amdtp_am824_midi_trigger(struct amdtp_stream *s, unsigned int port,
44 struct snd_rawmidi_substream *midi);
45
Takashi Sakamoto59558152015-09-19 11:21:55 +090046int amdtp_am824_init(struct amdtp_stream *s, struct fw_unit *unit,
47 enum amdtp_stream_direction dir, enum cip_flags flags);
48#endif