Blame view
include/sound/hdspm.h
5.34 KB
ef5fa1a49 [ALSA] hdspm - Co... |
1 |
#ifndef __SOUND_HDSPM_H |
763f356cd [ALSA] Add HDSP M... |
2 3 4 5 |
#define __SOUND_HDSPM_H /* * Copyright (C) 2003 Winfried Ritsch (IEM) * based on hdsp.h from Thomas Charbonnel (thomas@undata.org) |
0dca17930 ALSA: hdspm - Add... |
6 7 |
* * |
763f356cd [ALSA] Add HDSP M... |
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
* This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */ #define HDSPM_MAX_CHANNELS 64 |
0dca17930 ALSA: hdspm - Add... |
25 26 27 28 29 30 31 |
enum hdspm_io_type { MADI, MADIface, AIO, AES32, RayDAT }; |
763f356cd [ALSA] Add HDSP M... |
32 |
|
0dca17930 ALSA: hdspm - Add... |
33 34 35 36 37 |
enum hdspm_speed { ss, ds, qs }; |
763f356cd [ALSA] Add HDSP M... |
38 |
|
0dca17930 ALSA: hdspm - Add... |
39 |
/* -------------------- IOCTL Peak/RMS Meters -------------------- */ |
763f356cd [ALSA] Add HDSP M... |
40 |
|
0dca17930 ALSA: hdspm - Add... |
41 42 43 44 |
struct hdspm_peak_rms { uint32_t input_peaks[64]; uint32_t playback_peaks[64]; uint32_t output_peaks[64]; |
763f356cd [ALSA] Add HDSP M... |
45 |
|
0dca17930 ALSA: hdspm - Add... |
46 47 48 |
uint64_t input_rms[64]; uint64_t playback_rms[64]; uint64_t output_rms[64]; |
763f356cd [ALSA] Add HDSP M... |
49 |
|
0dca17930 ALSA: hdspm - Add... |
50 51 |
uint8_t speed; /* enum {ss, ds, qs} */ int status2; |
763f356cd [ALSA] Add HDSP M... |
52 |
}; |
ef5fa1a49 [ALSA] hdspm - Co... |
53 |
#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS \ |
0dca17930 ALSA: hdspm - Add... |
54 |
_IOR('H', 0x42, struct hdspm_peak_rms) |
763f356cd [ALSA] Add HDSP M... |
55 56 |
/* ------------ CONFIG block IOCTL ---------------------- */ |
0dca17930 ALSA: hdspm - Add... |
57 |
struct hdspm_config { |
763f356cd [ALSA] Add HDSP M... |
58 59 60 61 62 63 64 65 66 67 68 69 |
unsigned char pref_sync_ref; unsigned char wordclock_sync_check; unsigned char madi_sync_check; unsigned int system_sample_rate; unsigned int autosync_sample_rate; unsigned char system_clock_mode; unsigned char clock_source; unsigned char autosync_ref; unsigned char line_out; unsigned int passthru; unsigned int analog_out; }; |
0dca17930 ALSA: hdspm - Add... |
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
#define SNDRV_HDSPM_IOCTL_GET_CONFIG \ _IOR('H', 0x41, struct hdspm_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 { format_invalid, fps_24, fps_25, fps_2997, fps_30 }; enum hdspm_ltc_frame { frame_invalid, drop_frame, full_frame }; enum hdspm_ltc_input_format { ntsc, pal, no_video }; struct hdspm_ltc { unsigned int ltc; enum hdspm_ltc_format format; enum hdspm_ltc_frame frame; enum hdspm_ltc_input_format input_format; }; #define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_mixer_ioctl) /** * The status data reflects the device's current state * as determined by the card's configuration and * connection status. **/ enum hdspm_sync { hdspm_sync_no_lock = 0, hdspm_sync_lock = 1, hdspm_sync_sync = 2 }; enum hdspm_madi_input { hdspm_input_optical = 0, hdspm_input_coax = 1 }; enum hdspm_madi_channel_format { hdspm_format_ch_64 = 0, hdspm_format_ch_56 = 1 }; enum hdspm_madi_frame_format { hdspm_frame_48 = 0, hdspm_frame_96 = 1 }; enum hdspm_syncsource { syncsource_wc = 0, syncsource_madi = 1, syncsource_tco = 2, syncsource_sync = 3, syncsource_none = 4 }; struct hdspm_status { uint8_t card_type; /* enum hdspm_io_type */ enum hdspm_syncsource autosync_source; |
763f356cd [ALSA] Add HDSP M... |
150 |
|
0dca17930 ALSA: hdspm - Add... |
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
uint64_t card_clock; uint32_t master_period; union { struct { uint8_t sync_wc; /* enum hdspm_sync */ uint8_t sync_madi; /* enum hdspm_sync */ uint8_t sync_tco; /* enum hdspm_sync */ uint8_t sync_in; /* enum hdspm_sync */ uint8_t madi_input; /* enum hdspm_madi_input */ uint8_t channel_format; /* enum hdspm_madi_channel_format */ uint8_t frame_format; /* enum hdspm_madi_frame_format */ } madi; } card_specific; }; |
763f356cd [ALSA] Add HDSP M... |
166 |
|
0dca17930 ALSA: hdspm - Add... |
167 168 169 170 171 172 173 174 |
#define SNDRV_HDSPM_IOCTL_GET_STATUS \ _IOR('H', 0x47, struct hdspm_status) /** * Get information about the card and its add-ons. **/ #define HDSPM_ADDON_TCO 1 |
763f356cd [ALSA] Add HDSP M... |
175 |
|
98274f070 [ALSA] Remove xxx... |
176 |
struct hdspm_version { |
0dca17930 ALSA: hdspm - Add... |
177 178 179 |
uint8_t card_type; /* enum hdspm_io_type */ char cardname[20]; unsigned int serial; |
763f356cd [ALSA] Add HDSP M... |
180 |
unsigned short firmware_rev; |
0dca17930 ALSA: hdspm - Add... |
181 |
int addons; |
763f356cd [ALSA] Add HDSP M... |
182 |
}; |
0dca17930 ALSA: hdspm - Add... |
183 |
#define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version) |
763f356cd [ALSA] Add HDSP M... |
184 185 |
/* ------------- get Matrix Mixer IOCTL --------------- */ |
ef5fa1a49 [ALSA] hdspm - Co... |
186 187 188 |
/* MADI mixer: 64inputs+64playback in 64outputs = 8192 => *4Byte = * 32768 Bytes */ |
763f356cd [ALSA] Add HDSP M... |
189 |
|
25985edce Fix common misspe... |
190 |
/* organisation is 64 channelfader in a continuous memory block */ |
ef5fa1a49 [ALSA] hdspm - Co... |
191 192 193 |
/* equivalent to hardware definition, maybe for future feature of mmap of * them */ |
0dca17930 ALSA: hdspm - Add... |
194 |
/* each of 64 outputs has 64 infader and 64 outfader: |
763f356cd [ALSA] Add HDSP M... |
195 196 197 |
Ins to Outs mixer[out].in[in], Outstreams to Outs mixer[out].pb[pb] */ #define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS |
98274f070 [ALSA] Remove xxx... |
198 |
struct hdspm_channelfader { |
763f356cd [ALSA] Add HDSP M... |
199 200 201 |
unsigned int in[HDSPM_MIXER_CHANNELS]; unsigned int pb[HDSPM_MIXER_CHANNELS]; }; |
98274f070 [ALSA] Remove xxx... |
202 203 |
struct hdspm_mixer { struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS]; |
763f356cd [ALSA] Add HDSP M... |
204 |
}; |
98274f070 [ALSA] Remove xxx... |
205 206 |
struct hdspm_mixer_ioctl { struct hdspm_mixer *mixer; |
763f356cd [ALSA] Add HDSP M... |
207 208 209 |
}; /* use indirect access due to the limit of ioctl bit size */ |
98274f070 [ALSA] Remove xxx... |
210 211 212 213 214 215 216 217 |
#define SNDRV_HDSPM_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdspm_mixer_ioctl) /* typedefs for compatibility to user-space */ typedef struct hdspm_peak_rms hdspm_peak_rms_t; typedef struct hdspm_config_info hdspm_config_info_t; typedef struct hdspm_version hdspm_version_t; typedef struct hdspm_channelfader snd_hdspm_channelfader_t; typedef struct hdspm_mixer hdspm_mixer_t; |
763f356cd [ALSA] Add HDSP M... |
218 |
|
0dca17930 ALSA: hdspm - Add... |
219 220 |
#endif |