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