Merge branch 'akpm'
[linux-2.6/next.git] / Documentation / sound / alsa / hdspm.txt
blob7a67ff71a9f87eb3e7d5edc9086578525b4efd3e
1 Software Interface ALSA-DSP MADI Driver 
3 (translated from German, so no good English ;-), 
4 2004 - winfried ritsch
8  Full functionality has been added to the driver. Since some of
9  the Controls and startup-options  are ALSA-Standard and only the
10  special Controls are described and discussed below.
13  hardware functionality:
15    
16    Audio transmission:
18      number of channels --  depends on transmission mode
20                 The number of channels chosen is from 1..Nmax. The reason to
21                 use for a lower number of channels is only resource allocation,
22                 since unused DMA channels are disabled and less memory is
23                 allocated. So also the throughput of the PCI system can be
24                 scaled. (Only important for low performance boards).
26        Single Speed -- 1..64 channels 
28                  (Note: Choosing the 56channel mode for transmission or as
29                  receiver, only 56 are transmitted/received over the MADI, but
30                  all 64 channels are available for the mixer, so channel count
31                  for the driver)
33        Double Speed -- 1..32 channels
35                  Note: Choosing the 56-channel mode for
36                  transmission/receive-mode , only 28 are transmitted/received
37                  over the MADI, but all 32 channels are available for the mixer,
38                  so channel count for the driver
41        Quad Speed -- 1..16 channels 
43                  Note: Choosing the 56-channel mode for
44                  transmission/receive-mode , only 14 are transmitted/received
45                  over the MADI, but all 16 channels are available for the mixer,
46                  so channel count for the driver
48      Format -- signed 32 Bit Little Endian (SNDRV_PCM_FMTBIT_S32_LE)
50      Sample Rates --
52        Single Speed -- 32000, 44100, 48000
54        Double Speed -- 64000, 88200, 96000 (untested)
56        Quad Speed -- 128000, 176400, 192000 (untested)
58      access-mode -- MMAP (memory mapped), Not interleaved
59      (PCM_NON-INTERLEAVED)
61      buffer-sizes -- 64,128,256,512,1024,2048,8192 Samples
63      fragments -- 2
65      Hardware-pointer -- 2 Modi
68                  The Card supports the readout of the actual Buffer-pointer,
69                  where DMA reads/writes. Since of the bulk mode of PCI it is only
70                  64 Byte accurate. SO it is not really usable for the
71                  ALSA-mid-level functions (here the buffer-ID gives a better
72                  result), but if MMAP is used by the application. Therefore it
73                  can be configured at load-time with the parameter
74                  precise-pointer.
77                  (Hint: Experimenting I found that the pointer is maximum 64 to
78                  large never to small. So if you subtract 64 you always have a
79                  safe pointer for writing, which is used on this mode inside
80                  ALSA. In theory now you can get now a latency as low as 16
81                  Samples, which is a quarter of the interrupt possibilities.)
83        Precise Pointer -- off
84                                         interrupt used for pointer-calculation
86        Precise Pointer -- on
87                                         hardware pointer used.
89    Controller:
92           Since DSP-MADI-Mixer has 8152 Fader, it does not make sense to
93           use the standard mixer-controls, since this would break most of
94           (especially graphic) ALSA-Mixer GUIs. So Mixer control has be
95           provided by a 2-dimensional controller using the
96           hwdep-interface. 
98      Also all 128+256 Peak and RMS-Meter can be accessed via the
99      hwdep-interface. Since it could be a performance problem always
100      copying and converting Peak and RMS-Levels even if you just need
101      one, I decided to export the hardware structure, so that of
102      needed some driver-guru can implement a memory-mapping of mixer
103      or peak-meters over ioctl, or also to do only copying and no
104      conversion. A test-application shows the usage of the controller.
106     Latency Controls --- not implemented !!!
109            Note: Within the windows-driver the latency is accessible of a
110            control-panel, but buffer-sizes are controlled with ALSA from
111            hwparams-calls and should not be changed in run-state, I did not
112            implement it here.
115     System Clock -- suspended !!!!
117         Name -- "System Clock Mode"
119         Access -- Read Write
121         Values -- "Master" "Slave"
124                   !!!! This is a hardware-function but is in conflict with the
125                   Clock-source controller, which is a kind of ALSA-standard. I
126                   makes sense to set the card to a special mode (master at some
127                   frequency or slave), since even not using an Audio-application
128                   a studio should have working synchronisations setup. So use
129                   Clock-source-controller instead !!!!
131     Clock Source  
133        Name -- "Sample Clock Source"
135        Access -- Read Write
137        Values -- "AutoSync", "Internal 32.0 kHz", "Internal 44.1 kHz",
138        "Internal 48.0 kHz", "Internal 64.0 kHz", "Internal 88.2 kHz",
139        "Internal 96.0 kHz"
141                  Choose between Master at a specific Frequency and so also the
142                  Speed-mode or Slave (Autosync). Also see  "Preferred Sync Ref"
145        !!!! This is no pure hardware function but was implemented by
146        ALSA by some ALSA-drivers before, so I use it also. !!!
149     Preferred Sync Ref
151        Name -- "Preferred Sync Reference"
153        Access -- Read Write
155        Values -- "Word" "MADI"
158                  Within the Auto-sync-Mode the preferred Sync Source can be
159                  chosen. If it is not available another is used if possible.
161                  Note: Since MADI has a much higher bit-rate than word-clock, the
162                  card should synchronise better in MADI Mode. But since the
163                  RME-PLL is very good, there are almost no problems with
164                  word-clock too. I never found a difference.
167     TX 64 channel --- 
169        Name -- "TX 64 channels mode"
171        Access -- Read Write
173        Values -- 0 1
175                  Using 64-channel-modus (1) or 56-channel-modus for
176                  MADI-transmission (0).
179                  Note: This control is for output only. Input-mode is detected
180                  automatically from hardware sending MADI.
183     Clear TMS ---
185        Name -- "Clear Track Marker"
187        Access -- Read Write
189        Values -- 0 1
192                  Don't use to lower 5 Audio-bits on AES as additional Bits.
193         
195     Safe Mode oder Auto Input --- 
197        Name -- "Safe Mode"
199        Access -- Read Write
201        Values -- 0 1
203        (default on)
205                  If on (1), then if either the optical or coaxial connection
206                  has a failure, there is a takeover to the working one, with no
207                  sample failure. Its only useful if you use the second as a
208                  backup connection.
210     Input --- 
212        Name -- "Input Select"
214        Access -- Read Write
216        Values -- optical coaxial
219                  Choosing the Input, optical or coaxial. If Safe-mode is active,
220                  this is the preferred Input.
222 -------------- Mixer ----------------------
224     Mixer
226        Name -- "Mixer"
228        Access -- Read Write
230        Values - <channel-number 0-127> <Value 0-65535>
233                  Here as a first value the channel-index is taken to get/set the
234                  corresponding mixer channel, where 0-63 are the input to output
235                  fader and 64-127 the playback to outputs fader. Value 0
236                  is channel muted 0 and 32768 an amplification of  1.
238     Chn 1-64
240        fast mixer for the ALSA-mixer utils. The diagonal of the
241        mixer-matrix is implemented from playback to output.
242        
244     Line Out
246        Name  -- "Line Out"
248        Access -- Read Write
250        Values -- 0 1
252                  Switching on and off the analog out, which has nothing to do
253                  with mixing or routing. the analog outs reflects channel 63,64.
256 --- information (only read access):
258     Sample Rate
260        Name -- "System Sample Rate"
262        Access -- Read-only
264                  getting the sample rate.
267     External Rate measured
269        Name -- "External Rate"
271        Access -- Read only
274                  Should be "Autosync Rate", but Name used is
275                  ALSA-Scheme. External Sample frequency liked used on Autosync is
276                  reported.
279     MADI Sync Status
281        Name -- "MADI Sync Lock Status"
283        Access -- Read
285        Values -- 0,1,2
287        MADI-Input is 0=Unlocked, 1=Locked, or 2=Synced.
290     Word Clock Sync Status
292        Name -- "Word Clock Lock Status"
294        Access -- Read
296        Values -- 0,1,2
298        Word Clock Input is 0=Unlocked, 1=Locked, or 2=Synced.
300     AutoSync
302        Name -- "AutoSync Reference"
304        Access -- Read
306        Values -- "WordClock", "MADI", "None"
308                  Sync-Reference is either "WordClock", "MADI" or none.
310    RX 64ch --- noch nicht implementiert
312        MADI-Receiver is in 64 channel mode oder 56 channel mode.
315    AB_inp   --- not tested 
317                  Used input for Auto-Input.
320    actual Buffer Position --- not implemented
322            !!! this is a ALSA internal function, so no control is used !!!
326 Calling Parameter:
328    index int array (min = 1, max = 8), 
329      "Index value for RME HDSPM interface." card-index within ALSA
331      note: ALSA-standard
333    id string array (min = 1, max = 8), 
334      "ID string for RME HDSPM interface."
336      note: ALSA-standard
338    enable int array (min = 1, max = 8), 
339      "Enable/disable specific HDSPM sound-cards."
341      note: ALSA-standard
343    precise_ptr int array (min = 1, max = 8), 
344      "Enable precise pointer, or disable."
346      note: Use only when the application supports this (which is a special case).
348    line_outs_monitor int array (min = 1, max = 8), 
349      "Send playback streams to analog outs by default."
352           note: each playback channel is mixed to the same numbered output
353           channel (routed). This is against the ALSA-convention, where all
354           channels have to be muted on after loading the driver, but was
355           used before on other cards, so i historically use it again)
359    enable_monitor int array (min = 1, max = 8), 
360      "Enable Analog Out on Channel 63/64 by default."
362       note: here the analog output is enabled (but not routed).