Update of /cvsroot/alsa/alsa-driver/doc
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16216/doc

Added Files:
        hdspm.txt 
Log Message:
- added HDSP MADI driver by Winfried Ritsch.





--- NEW FILE: hdspm.txt ---
Software Interface ALSA-DSP MADI Driver 

(translated from German, so no good English ;-), 
2004 - winfried ritsch



 Full functionality has been added to the driver. Since some of
 the Controls and startup-options  are ALSA-Standard and only the
 special Controls are described and discussed below.


 hardware functionality:

   
   Audio transmission:

     number of channels --  depends on transmission mode

                The number of channels chosen is from 1..Nmax. The reason to
                use for a lower number of channels is only resource allocation,
                since unused DMA channels are disabled and less memory is
                allocated. So also the throughput of the PCI system can be
                scaled. (Only important for low performance boards).

       Single Speed -- 1..64 channels 

                 (Note: Choosing the 56channel mode for transmission or as
                 receiver, only 56 are transmitted/received over the MADI, but
                 all 64 channels are available for the mixer, so channel count
                 for the driver)

       Double Speed -- 1..32 channels

                 Note: Choosing the 56-channel mode for
                 transmission/receive-mode , only 28 are transmitted/received
                 over the MADI, but all 32 channels are available for the mixer,
                 so channel count for the driver


       Quad Speed -- 1..16 channels 

                 Note: Choosing the 56-channel mode for
                 transmission/receive-mode , only 14 are transmitted/received
                 over the MADI, but all 16 channels are available for the mixer,
                 so channel count for the driver

     Format -- signed 32 Bit Little Endian (SNDRV_PCM_FMTBIT_S32_LE)

     Sample Rates --

       Single Speed -- 32000, 44100, 48000

       Double Speed -- 64000, 88200, 96000 (untested)

       Quad Speed -- 128000, 176400, 192000 (untested)

     access-mode -- MMAP (memory mapped), Not interleaved
     (PCM_NON-INTERLEAVED)

     buffer-sizes -- 64,128,256,512,1024,2048,8192 Samples

     fragments -- 2

     Hardware-pointer -- 2 Modi


                 The Card supports the readout of the actual Buffer-pointer,
                 where DMA reads/writes. Since of the bulk mode of PCI it is only
                 64 Byte accurate. SO it is not really usable for the
                 ALSA-mid-level functions (here the buffer-ID gives a better
                 result), but if MMAP is used by the application. Therefore it
                 can be configured at load-time with the parameter
                 precise-pointer.


                 (Hint: Experimenting I found that the pointer is maximum 64 to
                 large never to small. So if you subtract 64 you always have a
                 safe pointer for writing, which is used on this mode inside
                 ALSA. In theory now you can get now a latency as low as 16
                 Samples, which is a quarter of the interrupt possibilities.)

       Precise Pointer -- off
                                        interrupt used for pointer-calculation

       Precise Pointer -- on
                                        hardware pointer used.

   Controller:


          Since DSP-MADI-Mixer has 8152 Fader, it does not make sense to
          use the standard mixer-controls, since this would break most of
          (especially graphic) ALSA-Mixer GUIs. So Mixer control has be
          provided by a 2-dimensional controller using the
          hwdep-interface. 

     Also all 128+256 Peak and RMS-Meter can be accessed via the
     hwdep-interface. Since it could be a performance problem always
     copying and converting Peak and RMS-Levels even if you just need
     one, I decided to export the hardware structure, so that of
     needed some driver-guru can implement a memory-mapping of mixer
     or peak-meters over ioctl, or also to do only copying and no
     conversion. A test-application shows the usage of the controller.

    Latency Controls --- not implemented !!!


           Note: Within the windows-driver the latency is accessible of a
           control-panel, but buffer-sizes are controlled with ALSA from
           hwparams-calls and should not be changed in run-state, I did not
           implement it here.


    System Clock -- suspended !!!!

        Name -- "System Clock Mode"

        Access -- Read Write

        Values -- "Master" "Slave"


                  !!!! This is a hardware-function but is in conflict with the
                  Clock-source controller, which is a kind of ALSA-standard. I
                  makes sense to set the card to a special mode (master at some
                  frequency or slave), since even not using an Audio-application
                  a studio should have working synchronisations setup. So use
                  Clock-source-controller instead !!!!

    Clock Source  

       Name -- "Sample Clock Source"

       Access -- Read Write

       Values -- "AutoSync", "Internal 32.0 kHz", "Internal 44.1 kHz",
       "Internal 48.0 kHz", "Internal 64.0 kHz", "Internal 88.2 kHz",
       "Internal 96.0 kHz"

                 Choose between Master at a specific Frequency and so also the
                 Speed-mode or Slave (Autosync). Also see  "Preferred Sync Ref"


       !!!! This is no pure hardware function but was implemented by
       ALSA by some ALSA-drivers before, so I use it also. !!!


    Preferred Sync Ref

       Name -- "Preferred Sync Reference"

       Access -- Read Write

       Values -- "Word" "MADI"


                 Within the Auto-sync-Mode the preferred Sync Source can be
                 chosen. If it is not available another is used if possible.

                 Note: Since MADI has a much higher bit-rate than word-clock, the
                 card should synchronise better in MADI Mode. But since the
                 RME-PLL is very good, there are almost no problems with
                 word-clock too. I never found a difference.


    TX 64 channel --- 

       Name -- "TX 64 channels mode"

       Access -- Read Write

       Values -- 0 1

                 Using 64-channel-modus (1) or 56-channel-modus for
                 MADI-transmission (0).


                 Note: This control is for output only. Input-mode is detected
                 automatically from hardware sending MADI.


    Clear TMS ---

       Name -- "Clear Track Marker"

       Access -- Read Write

       Values -- 0 1


                 Don't use to lower 5 Audio-bits on AES as additional Bits.
        

    Safe Mode oder Auto Input --- 

       Name -- "Safe Mode"

       Access -- Read Write

       Values -- 0 1

       (default on)

                 If on (1), then if either the optical or coaxial connection
                 has a failure, there is a takeover to the working one, with no
                 sample failure. Its only useful if you use the second as a
                 backup connection.

    Input --- 

       Name -- "Input Select"

       Access -- Read Write

       Values -- optical coaxial


                 Choosing the Input, optical or coaxial. If Safe-mode is active,
                 this is the preferred Input.

-------------- Mixer ----------------------

    Mixer

       Name -- "Mixer"

       Access -- Read Write

       Values - <channel-number 0-127> <Value 0-65535>


                 Here as a first value the channel-index is taken to get/set the
                 corresponding mixer channel, where 0-63 are the input to output
                 fader and 64-127 the playback to outputs fader. Value 0
                 is channel muted 0 and 32768 an amplification of  1.

    Chn 1-64

       fast mixer for the ALSA-mixer utils. The diagonal of the
       mixer-matrix is implemented from playback to output.
       

    Line Out

       Name  -- "Line Out"

       Access -- Read Write

       Values -- 0 1

                 Switching on and off the analog out, which has nothing to do
                 with mixing or routing. the analog outs reflects channel 63,64.


--- information (only read access):
 
    Sample Rate

       Name -- "System Sample Rate"

       Access -- Read-only

                 getting the sample rate.


    External Rate measured

       Name -- "External Rate"

       Access -- Read only


                 Should be "Autosync Rate", but Name used is
                 ALSA-Scheme. External Sample frequency liked used on Autosync is
                 reported.


    MADI Sync Status

       Name -- "MADI Sync Lock Status"

       Access -- Read

       Values -- 0,1,2

       MADI-Input is 0=Unlocked, 1=Locked, or 2=Synced.


    Word Clock Sync Status

       Name -- "Word Clock Lock Status"

       Access -- Read

       Values -- 0,1,2

       Word Clock Input is 0=Unlocked, 1=Locked, or 2=Synced.

    AutoSync

       Name -- "AutoSync Reference"

       Access -- Read

       Values -- "WordClock", "MADI", "None"

                 Sync-Reference is either "WordClock", "MADI" or none.

   RX 64ch --- noch nicht implementiert

       MADI-Receiver is in 64 channel mode oder 56 channel mode.


   AB_inp   --- not tested 

                 Used input for Auto-Input.


   actual Buffer Position --- not implemented

           !!! this is a ALSA internal function, so no control is used !!!



Calling Parameter:

   index int array (min = 1, max = 8), 
     "Index value for RME HDSPM interface." card-index within ALSA

     note: ALSA-standard

   id string array (min = 1, max = 8), 
     "ID string for RME HDSPM interface."

     note: ALSA-standard

   enable int array (min = 1, max = 8), 
     "Enable/disable specific HDSPM sound-cards."

     note: ALSA-standard

   precise_ptr int array (min = 1, max = 8), 
     "Enable precise pointer, or disable."

     note: Use only when the application supports this (which is a special case).

   line_outs_monitor int array (min = 1, max = 8), 
     "Send playback streams to analog outs by default."


          note: each playback channel is mixed to the same numbered output
          channel (routed). This is against the ALSA-convention, where all
          channels have to be muted on after loading the driver, but was
          used before on other cards, so i historically use it again)



   enable_monitor int array (min = 1, max = 8), 
     "Enable Analog Out on Channel 63/64 by default."

      note: here the analog output is enabled (but not routed).


-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to