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