/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ #ifndef __SOUND_HDSPM_H #define __SOUND_HDSPM_H /* * Copyright (C) 2003 Winfried Ritsch (IEM) * based on hdsp.h from Thomas Charbonnel ([email protected]) */ #ifdef __linux__ #include <linux/types.h> #endif /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */ #define HDSPM_MAX_CHANNELS … enum hdspm_io_type { … }; enum hdspm_speed { … }; /* -------------------- IOCTL Peak/RMS Meters -------------------- */ struct hdspm_peak_rms { … }; #define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS … /* ------------ CONFIG block IOCTL ---------------------- */ struct hdspm_config { … }; #define SNDRV_HDSPM_IOCTL_GET_CONFIG … /* * If there's a TCO (TimeCode Option) board installed, * there are further options and status data available. * The hdspm_ltc structure contains the current SMPTE * timecode and some status information and can be * obtained via SNDRV_HDSPM_IOCTL_GET_LTC or in the * hdspm_status struct. */ enum hdspm_ltc_format { … }; enum hdspm_ltc_frame { … }; enum hdspm_ltc_input_format { … }; struct hdspm_ltc { … }; #define SNDRV_HDSPM_IOCTL_GET_LTC … /* * The status data reflects the device's current state * as determined by the card's configuration and * connection status. */ enum hdspm_sync { … }; enum hdspm_madi_input { … }; enum hdspm_madi_channel_format { … }; enum hdspm_madi_frame_format { … }; enum hdspm_syncsource { … }; struct hdspm_status { … }; #define SNDRV_HDSPM_IOCTL_GET_STATUS … /* * Get information about the card and its add-ons. */ #define HDSPM_ADDON_TCO … struct hdspm_version { … }; #define SNDRV_HDSPM_IOCTL_GET_VERSION … /* ------------- get Matrix Mixer IOCTL --------------- */ /* MADI mixer: 64inputs+64playback in 64outputs = 8192 => *4Byte = * 32768 Bytes */ /* organisation is 64 channelfader in a continuous memory block */ /* equivalent to hardware definition, maybe for future feature of mmap of * them */ /* each of 64 outputs has 64 infader and 64 outfader: Ins to Outs mixer[out].in[in], Outstreams to Outs mixer[out].pb[pb] */ #define HDSPM_MIXER_CHANNELS … struct hdspm_channelfader { … }; struct hdspm_mixer { … }; struct hdspm_mixer_ioctl { … }; /* use indirect access due to the limit of ioctl bit size */ #define SNDRV_HDSPM_IOCTL_GET_MIXER … #endif