brintos

brintos / linux-shallow public Read only

0
0
Text · 9.2 KiB · 5373e51 Raw
380 lines · plain
1=======================================2Software Interface ALSA-DSP MADI Driver 3=======================================4 5(translated from German, so no good English ;-), 6 72004 - winfried ritsch8 9 10Full functionality has been added to the driver. Since some of11the Controls and startup-options  are ALSA-Standard and only the12special Controls are described and discussed below.13 14 15Hardware functionality16======================17   18Audio transmission19------------------20 21* number of channels --  depends on transmission mode22 23		The number of channels chosen is from 1..Nmax. The reason to24		use for a lower number of channels is only resource allocation,25		since unused DMA channels are disabled and less memory is26		allocated. So also the throughput of the PCI system can be27		scaled. (Only important for low performance boards).28 29* Single Speed -- 1..64 channels 30 31.. note::32		 (Note: Choosing the 56channel mode for transmission or as33		 receiver, only 56 are transmitted/received over the MADI, but34		 all 64 channels are available for the mixer, so channel count35		 for the driver)36 37* Double Speed -- 1..32 channels38 39.. note::40		 Note: Choosing the 56-channel mode for41		 transmission/receive-mode , only 28 are transmitted/received42		 over the MADI, but all 32 channels are available for the mixer,43		 so channel count for the driver44 45 46* Quad Speed -- 1..16 channels 47 48.. note::49		 Choosing the 56-channel mode for50		 transmission/receive-mode , only 14 are transmitted/received51		 over the MADI, but all 16 channels are available for the mixer,52		 so channel count for the driver53 54* Format -- signed 32 Bit Little Endian (SNDRV_PCM_FMTBIT_S32_LE)55 56* Sample Rates --57 58       Single Speed -- 32000, 44100, 4800059 60       Double Speed -- 64000, 88200, 96000 (untested)61 62       Quad Speed -- 128000, 176400, 192000 (untested)63 64* access-mode -- MMAP (memory mapped), Not interleaved (PCM_NON-INTERLEAVED)65 66* buffer-sizes -- 64,128,256,512,1024,2048,8192 Samples67 68* fragments -- 269 70* Hardware-pointer -- 2 Modi71 72 73		 The Card supports the readout of the actual Buffer-pointer,74		 where DMA reads/writes. Since of the bulk mode of PCI it is only75		 64 Byte accurate. SO it is not really usable for the76		 ALSA-mid-level functions (here the buffer-ID gives a better77		 result), but if MMAP is used by the application. Therefore it78		 can be configured at load-time with the parameter79		 precise-pointer.80 81 82.. hint::83		 (Hint: Experimenting I found that the pointer is maximum 64 to84		 large never to small. So if you subtract 64 you always have a85		 safe pointer for writing, which is used on this mode inside86		 ALSA. In theory now you can get now a latency as low as 1687		 Samples, which is a quarter of the interrupt possibilities.)88 89   * Precise Pointer -- off90					interrupt used for pointer-calculation91				92   * Precise Pointer -- on93					hardware pointer used.94 95Controller96----------97 98Since DSP-MADI-Mixer has 8152 Fader, it does not make sense to99use the standard mixer-controls, since this would break most of100(especially graphic) ALSA-Mixer GUIs. So Mixer control has be101provided by a 2-dimensional controller using the102hwdep-interface. 103 104Also all 128+256 Peak and RMS-Meter can be accessed via the105hwdep-interface. Since it could be a performance problem always106copying and converting Peak and RMS-Levels even if you just need107one, I decided to export the hardware structure, so that of108needed some driver-guru can implement a memory-mapping of mixer109or peak-meters over ioctl, or also to do only copying and no110conversion. A test-application shows the usage of the controller.111 112* Latency Controls --- not implemented !!!113 114.. note::115	   Note: Within the windows-driver the latency is accessible of a116	   control-panel, but buffer-sizes are controlled with ALSA from117	   hwparams-calls and should not be changed in run-state, I did not118	   implement it here.119 120 121* System Clock -- suspended !!!!122 123  * Name -- "System Clock Mode"124 125  * Access -- Read Write126    127  * Values -- "Master" "Slave"128 129.. note::130		  !!!! This is a hardware-function but is in conflict with the131		  Clock-source controller, which is a kind of ALSA-standard. I132		  makes sense to set the card to a special mode (master at some133		  frequency or slave), since even not using an Audio-application134		  a studio should have working synchronisations setup. So use135		  Clock-source-controller instead !!!!136 137* Clock Source  138 139  * Name -- "Sample Clock Source"140 141  * Access -- Read Write142 143  * Values -- "AutoSync", "Internal 32.0 kHz", "Internal 44.1 kHz",144    "Internal 48.0 kHz", "Internal 64.0 kHz", "Internal 88.2 kHz",145    "Internal 96.0 kHz"146 147		 Choose between Master at a specific Frequency and so also the148		 Speed-mode or Slave (Autosync). Also see  "Preferred Sync Ref"149 150.. warning::151       !!!! This is no pure hardware function but was implemented by152       ALSA by some ALSA-drivers before, so I use it also. !!!153 154 155* Preferred Sync Ref156 157  * Name -- "Preferred Sync Reference"158 159  * Access -- Read Write160 161  * Values -- "Word" "MADI"162 163 164		 Within the Auto-sync-Mode the preferred Sync Source can be165		 chosen. If it is not available another is used if possible.166 167.. note::168		 Note: Since MADI has a much higher bit-rate than word-clock, the169		 card should synchronise better in MADI Mode. But since the170		 RME-PLL is very good, there are almost no problems with171		 word-clock too. I never found a difference.172 173 174* TX 64 channel175 176  * Name -- "TX 64 channels mode"177 178  * Access -- Read Write179 180  * Values -- 0 1181 182		 Using 64-channel-modus (1) or 56-channel-modus for183		 MADI-transmission (0).184 185 186.. note::187		 Note: This control is for output only. Input-mode is detected188		 automatically from hardware sending MADI.189 190 191* Clear TMS192 193  * Name -- "Clear Track Marker"194 195  * Access -- Read Write196 197  * Values -- 0 1198 199 200		 Don't use to lower 5 Audio-bits on AES as additional Bits.201        202 203* Safe Mode oder Auto Input204 205  * Name -- "Safe Mode"206 207  * Access -- Read Write208 209  * Values -- 0 1 (default on)210 211		 If on (1), then if either the optical or coaxial connection212		 has a failure, there is a takeover to the working one, with no213		 sample failure. Its only useful if you use the second as a214		 backup connection.215 216* Input217 218  * Name -- "Input Select"219 220  * Access -- Read Write221 222  * Values -- optical coaxial223 224 225		 Choosing the Input, optical or coaxial. If Safe-mode is active,226		 this is the preferred Input.227 228Mixer229-----230 231* Mixer232 233  * Name -- "Mixer"234 235  * Access -- Read Write236 237  * Values - <channel-number 0-127> <Value 0-65535>238 239 240		 Here as a first value the channel-index is taken to get/set the241		 corresponding mixer channel, where 0-63 are the input to output242		 fader and 64-127 the playback to outputs fader. Value 0243		 is channel muted 0 and 32768 an amplification of  1.244 245* Chn 1-64246 247       fast mixer for the ALSA-mixer utils. The diagonal of the248       mixer-matrix is implemented from playback to output.249       250 251* Line Out252 253  * Name  -- "Line Out"254 255  * Access -- Read Write256 257  * Values -- 0 1258 259		 Switching on and off the analog out, which has nothing to do260		 with mixing or routing. the analog outs reflects channel 63,64.261 262 263Information (only read access)264------------------------------265 266* Sample Rate267 268  * Name -- "System Sample Rate"269 270  * Access -- Read-only271 272		 getting the sample rate.273 274 275* External Rate measured276 277  * Name -- "External Rate"278 279  * Access -- Read only280 281 282		 Should be "Autosync Rate", but Name used is283		 ALSA-Scheme. External Sample frequency liked used on Autosync is284		 reported.285 286 287* MADI Sync Status288 289  * Name -- "MADI Sync Lock Status"290 291  * Access -- Read292 293  * Values -- 0,1,2294 295       MADI-Input is 0=Unlocked, 1=Locked, or 2=Synced.296 297 298* Word Clock Sync Status299 300  * Name -- "Word Clock Lock Status"301 302  * Access -- Read303 304  * Values -- 0,1,2305 306       Word Clock Input is 0=Unlocked, 1=Locked, or 2=Synced.307 308* AutoSync309 310  * Name -- "AutoSync Reference"311 312  * Access -- Read313 314  * Values -- "WordClock", "MADI", "None"315 316		 Sync-Reference is either "WordClock", "MADI" or none.317 318* RX 64ch --- noch nicht implementiert319 320       MADI-Receiver is in 64 channel mode oder 56 channel mode.321 322 323* AB_inp   --- not tested 324 325		 Used input for Auto-Input.326 327 328* actual Buffer Position --- not implemented329 330	   !!! this is a ALSA internal function, so no control is used !!!331 332 333 334Calling Parameter335=================336 337* index int array (min = 1, max = 8) 338 339     Index value for RME HDSPM interface. card-index within ALSA340 341     note: ALSA-standard342 343* id string array (min = 1, max = 8) 344 345     ID string for RME HDSPM interface.346 347     note: ALSA-standard348 349* enable int array (min = 1, max = 8)350 351     Enable/disable specific HDSPM sound-cards.352 353     note: ALSA-standard354 355* precise_ptr int array (min = 1, max = 8)356 357     Enable precise pointer, or disable.358 359.. note::360     note: Use only when the application supports this (which is a special case).361 362* line_outs_monitor int array (min = 1, max = 8)363 364     Send playback streams to analog outs by default.365 366.. note::367	  note: each playback channel is mixed to the same numbered output368	  channel (routed). This is against the ALSA-convention, where all369	  channels have to be muted on after loading the driver, but was370	  used before on other cards, so i historically use it again)371 372 373 374* enable_monitor int array (min = 1, max = 8)375 376     Enable Analog Out on Channel 63/64 by default.377 378.. note ::379      note: here the analog output is enabled (but not routed).380