1. 15 6月, 2015 5 次提交
    • T
      ALSA: bebob: add 'version' member for BeBoB protocol version · 7b4d7dcf
      Takashi Sakamoto 提交于
      BeBoB installed devices have BeBoB register area. This area stores
      basic information about its firmware. A register has its protocol
      version.
      
      This commit adds 'version' member and store the device's protocol
      version to handle v3 quirks in following commits.
      Tested-by: NKim Tore Jensen <kim@incendio.no>
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7b4d7dcf
    • T
      ALSA: bebob: obsolete string literal expression for clock source · 554d8983
      Takashi Sakamoto 提交于
      The old string literals were completely replaced by new normalized
      representation.
      
      This commit obsoletes it.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      554d8983
    • T
      ALSA: bebob: use normalized representation for the type of clock source · 3e254b16
      Takashi Sakamoto 提交于
      This commit changes function prototype and its processing. As a result,
      function caller can execute additional processing according to detected
      clock source.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      3e254b16
    • T
      ALSA: bebob: apply new enumerator to normalize the type of clock source · 13a4f420
      Takashi Sakamoto 提交于
      Previous commit allows this driver to detect several types of clock
      source, while there's no normalized expression for it.
      
      This commit adds a new enumerator for this purpose.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      13a4f420
    • T
      ALSA: bebob: improve signal mode detection for clock source · 5a668812
      Takashi Sakamoto 提交于
      With BeBoB version 3, current ALSA BeBoB driver detects the type of
      current clock signal source wrongly. This is due to a lack of proper
      implementation to parse the information.
      
      This commit renews the parser. As a result, this driver detects
      SYT-Match clock signal, thus it can start streams with two modes;
      SYT-Match mode and the others. SYT-Match mode will be supported in future
      commits.
      
      There's a constrain about detected internal/external clock source.
      When detecting external clock source, this driver allows userspace
      applications to use current sampling rate only. This is due to consider
      abour synchronization to external clock sources such as S/PDIF, ADAT or
      word-clock.
      
      According to several information from some devices, I guesss that the
      internal clock of most devices synchronize to IEEE 1394 cycle start
      packet. In this case, by a usual way, it's detect as 'Sync type
      of output Music Sub-Unit' connected to 'Sync type of PCR output Unit
      (oPCR)', and this driver judges it as internal clock. Therefore,
      userspace applications is allowed to request arbitrary supported sampling
      rates.
      
      On the other hand, several devices based on BeBoB version 3 have
      additional internal clock. In this case, by a usual way, it's detect as
      'Sync/Additional type of External input Unit'. Unfortunately, there's no
      way to distinguish this sync type from the other external clock sources
      such as word-clock. In this case, this driver handles it as external and
      userspace applications is forced to use current sampling rate.
      
      I note that when the source of clock is detected as 'Isochronous stream
      type of input PCR[0]', it's under 'SYT-Match' mode. In this mode, the
      synchronization clock is generated according to SYT-series in received
      packets. In this case, this driver generates the series by myself. I
      experienced this mode often make the device silent suddenly during
      playbacking. This means that the mode is easy to lost synchronization.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      5a668812
  2. 21 10月, 2014 1 次提交
  3. 04 6月, 2014 1 次提交
  4. 27 5月, 2014 2 次提交
  5. 26 5月, 2014 15 次提交
    • T
      ALSA: firewire/bebob: Add a workaround for M-Audio special Firewire series · 9b1ee0b2
      Takashi Sakamoto 提交于
      In post commit, a quirk of this firmware about transactions is reported.
      This commit apply a workaround for this quirk.
      
      They often fail transactions due to gap_count mismatch. This state is changed
      by generating bus reset.
      
      The fw_schedule_bus_reset() is an exported symbol in firewire-core. But there
      are no header for public. This commit moves its prototype from
      drivers/firewire/core.h to include/linux/firewire.h.
      
      This mismatch still affects bus management before generating this bus reset.
      It still takes a time to call driver's probe() because transactions are still
      often failed.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      9b1ee0b2
    • T
      ALSA: bebob: Send a cue to load firmware for M-Audio Firewire series · a2b2a779
      Takashi Sakamoto 提交于
      Just powering on, these devices below wait to download firmware.
       - Firewire Audiophile
       - Firewire 410
       - Firewire 1814
       - ProjectMix I/O
      
      But firmware version 5058 or later, flash memory in the device stores the
      firmware. So this driver can enable these devices by sending a certain cue to
      load the firmware.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a2b2a779
    • T
      ALSA: bebob: Add support for M-Audio special Firewire series · 3149ac48
      Takashi Sakamoto 提交于
      This commit allows this driver to support some models which M-Audio produces
      with DM1000 but its firmware is special. They are:
       - Firewire 1814
       - ProjectMix I/O
      
      They have heavily customized firmware. The usual operations can't be applied to
      them. For this reason, this commit adds a model specific member to 'struct
      snd_bebob' and some model specific functions. Some parameters are write-only so
      this commit also adds control interface for applications to set them.
      
      M-Audio special firmware quirks:
       - Just after powering on, they wait to download firmware. This state is
         changed when receiving cue. Then bus reset is generated and the device is
         recognized as a different model with the uploaded firmware.
       - They don't respond against BridgeCo AV/C extension commands. So drivers
         can't get their stream formations and so on.
       - They do not start to transmit packets only by establishing connection but
         also by receiving SIGNAL FORMAT command.
       - After booting up, they often fail to send response against driver's request
         due to mismatch of gap_count.
      
      This module don't support to upload firmware.
      
      Tested-by: Darren Anderson <darrena092@gmail.com> (ProjectMix I/O)
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      3149ac48
    • T
      ALSA: bebob: Add support for M-Audio usual Firewire series · 9076c22d
      Takashi Sakamoto 提交于
      This commit allows this driver to support some models which M-Audio produces
      with DM1000/DM1000E with usual firmware. They are:
       - Firewire 410
       - Firewire AudioPhile
       - Firewire Solo
       - Ozonic
       - NRV10
       - FirewireLightBridge
      
      According to a person who worked in BridgeCo, some models are produced with
      'Pre-BeBoB'. This means that these products were released before BeBoB was
      officially produced, and later BeBoB specification was formed. So these models
      have some quirks.
      
      M-Audio usual firmware quirks:
       - Just after powering on, 'Firewire 410' waits to download firmware. This
         state is changed when receiving cue. Then bus reset is generated and the
         device is recognized as a different model with the uploaded firmware.
       - 'Firewire Audiophile' also waits to download firmware but its
         vendor id/model id is the same as the one after loading firmware.
       - The information of channel mapping for MIDI conformant data channel is
         invalid against BridgeCo specification.
      
      This commit adds some codes for these quirks but don't support to upload
      firmware.
      
      This commit also adds specific operations to get metering information. The
      metering information also includes status of clock synchronization if the model
      supports to switch source of clock.
      
      The specification of FirewireLightBridge is unknown. So in this time, normal
      operations are applied for this model.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      9076c22d
    • T
      ALSA: bebob: Add support for Focusrite Saffire/SaffirePro series · 25784ec2
      Takashi Sakamoto 提交于
      This commit allows this driver to support all of models which Focusrite
      produces with DM1000/BeBoB. They are:
       - Saffire
       - Saffire LE
       - SaffirePro 10 I/O
       - SaffirePro 26 I/O
      
      This commit adds Focusrite specific operations:
      1. Get source of clock
      2. Get/Set sampling frequency
      3. Get metering information
      
      The driver uses these functionalities to read/write specific address by async
      transaction.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      25784ec2
    • T
      ALSA: bebob: Add support for Yamaha GO series · 8ac98a35
      Takashi Sakamoto 提交于
      This commit allows this driver to support all of models which Yamaha produced
      with DM1000/BeBoB. They are:
       - GO44
       - GO46
      
      This commit adds Yamaha specific operations. To get source of clock, AV/C Audio
      Subunit command is used.
      
      I note that their appearances are similar to some models of TerraTec; 'Go44' is
      similar to 'PHASE 24 FW' and 'GO46' is similar to 'PHASE X24 FW'. But their
      combination of Audio/Music subunits is a bit different.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      8ac98a35
    • T
      ALSA: bebob: Add support for Terratec PHASE, EWS series and Aureon · 326b9cac
      Takashi Sakamoto 提交于
      This commit allows this driver to support all of models which Terratec produced
      with DM1000/BeBoB. They are:
       - PHASE 24 FW
       - PHASE X24 FW
       - PHASE 88 Rack FW
       - EWS MIC2
       - EWS MIC4
       - Aureon 7.1 Firewire
      
      For Phase series, this commit adds a Terratec specific operation. To get source
      of clock. AV/C Audio Subunit command is used.
      
      For EWS series and Aureon, this module uses normal operations.
      
      Tested-by: Maximilian Engelhardt <maxi@daemonizer.de> (PHASE 24 FW)
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      326b9cac
    • T
      ALSA: bebob: Prepare for device specific operations · 1fc9522a
      Takashi Sakamoto 提交于
      This commit is for some devices which have its own operations or quirks.
      
      Many functionality should be implemented in user land. Then this commit adds
      functionality related to stream such as sampling frequency or clock source. For
      help to debug, this commit adds the functionality to get metering information
      if it's available.
      
      To help these functionalities, this commit adds some AV/C commands defined in
      'AV/C Audio Subunit Specification (1394TA).
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1fc9522a
    • T
      ALSA: bebob: Add hwdep interface · 618eabea
      Takashi Sakamoto 提交于
      This interface is designed for mixer/control application. By using hwdep
      interface, the application can get information about firewire node, can
      lock/unlock kernel streaming and can get notification at starting/stopping
      kernel streaming.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      618eabea
    • T
      ALSA: bebob: Add PCM interface · fbbebd2c
      Takashi Sakamoto 提交于
      This commit adds a functionality to capture/playback PCM samples.
      
      When AMDTP stream is already running for PCM or the source of clock is not
      internal, available sampling rate is limited at current one.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      fbbebd2c
    • T
      ALSA: bebob: Add MIDI interface · 248b7802
      Takashi Sakamoto 提交于
      This commit adds a functionality to capture/playback MIDI messages.
      
      When no AMDTP streams are running, this module starts AMDTP stream at current
      sampling rate for MIDI substream.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      248b7802
    • T
      ALSA: bebob: Add proc interface for debugging purpose · ad9697ba
      Takashi Sakamoto 提交于
      This commit adds proc interface to get these information for debugging:
       - firmware information
       - stream formation
       - current clock source and sampling rate
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ad9697ba
    • T
      ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset · b6bc8123
      Takashi Sakamoto 提交于
      Normal BeBoB firmware has a quirk. When receiving bus reset, it transmits
      packets with discontinuous value in dbc field.
      
      This causes two situation, one is to abort streaming by firewire-lib as a
      result of detecting the discontinuity. Another is to call driver's .update()
      because of bus reset. These two is generated independently. (The former
      depends on isochronous stream and the latter depends on IEEE1394 bus driver.)
      
      When BeBoB driver works with XRUN-recoverable applications, this situation
      looks like stream_start_duplex() call followed by stream_update_duplex() call
      because applications will call snd_pcm_prepare() immediately at XRUN.
      
      To update connections and streams at first, this commit use completion. When
      queueing error occurs, stream_start_duplex() is forced to wait maximum
      1000msec. During this, when .update() is called, the completion is waken and
      stream_start_duplex() is processed without breaking connections.
      
      At bus reset, stream_start_duplex() shouldn't break/establish connections and
      stream_update_duplex() should update connections because a caller of
      fw_iso_resources_allocate() is responsible for calling
      fw_iso_resources_update() on bus reset.
      
      This commit also adds a flag, which has an effect to skip checking continuity
      for first packet. This flag is useful for BeBoB quirk to start handling packets
      during streaming.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b6bc8123
    • T
      ALSA: bebob: Add commands and connections/streams management · eb7b3a05
      Takashi Sakamoto 提交于
      This commit adds management functionality for connections and streams.
      BeBoB uses CMP to manage connections and uses AMDTP for streams.
      
      This commit also adds some BridgeCo's AV/C extension commands. There are some
      BridgeCo's AV/C extension commands but this commit just uses below commands
      to get device's capability and status:
      
       1.Extended Plug Info commands
        - Plug Channel Position Specific Data
        - Plug Type Specific Data
        - Cluster(Section) Info Specific Data
        - Plug Input Specific Data
       2.Extended Stream Format Information commands
        - Extended Stream Format Information Command - List Request
      
      For Extended Plug Info commands for Cluster Info Specific Data, I pick up
      'section' instead of 'cluster' from document to prevent from misunderstanding
      because 'cluster' is also used in IEC 61883-6.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      eb7b3a05
    • T
      ALSA: bebob: Add skelton for BeBoB based devices · fd6f4b0d
      Takashi Sakamoto 提交于
      This commit adds a new driver for BeBoB based devices with no specific
      operations. Currently this driver just create/remove card instance according
      to callbacks.
      
      BeBoB is 'BridgeCo enhanced Breakout Box'. This is installed to firewire
      devices with DM1000/DM1100/DM1500 chipset. It gives common way for host
      system to handle BeBoB based devices.
      
      Current supported devices:
       - Edirol FA-66/FA-101
       - PreSonus FIREBOX/FIREPOD/FP10/Inspire1394
       - BridgeCo RDAudio1/Audio5
       - Mackie Onyx 1220/1620/1640 (Firewire I/O Card)
       - Mackie d.2 (Firewire Option)
       - Stanton FinalScratch 2 (ScratchAmp)
       - Tascam IF-FW DM
       - Behringer XENIX UFX 1204/1604
       - Behringer Digital Mixer X32 series (X-UF Card)
       - Apogee Rosetta 200/Rosetta 400 (X-FireWire card)
       - Apogee DA-16X/AD-16X/DD-16X (X-FireWire card)
       - Apogee Ensemble
       - ESI Quotafire610
       - AcousticReality eARMasterOne
       - CME MatrixKFW
       - Phonix Helix Board 12 MkII/18 MkII/24 MkII
       - Phonic Helix Board 12 Universal/18 Universal/24 Universal
       - Lynx Aurora 8/16 (LT-FW)
       - ICON FireXon
       - PrismSound Orpheus/ADA-8XR
      
      Devices possible to be supported if identifying IDs:
       - Apogee Mini-Me Firewire/Mini-DAC Firewire
       - Behringer F-Control Audio 610/1616
       - Cakewalk Sonar Power Studio 66
       - CME UF400e
       - ESI Quotafire XL
       - Infrasonic DewX/Windy6
       - Mackie Digital X Bus x.200/400
       - Phonic Helix Board 12/18/24
       - Phonic FireFly 202/302
       - Rolf Spuler Firewire Guitar
      Tested-by: NDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      fd6f4b0d