1. 31 Mar, 2016 1 commit
  2. 28 Mar, 2016 1 commit
  3. 20 Feb, 2016 2 commits
    • Takashi Sakamoto's avatar
      ALSA: bebob: give up updating streams at bus reset handler · 3800e6f9
      Takashi Sakamoto authored
      DM1000/DM1100/DM1500 chipsets transfer packets with discontinue value in
      'dbc' field of CIP header. For ALSA bebob driver, this makes its bus-reset
      handler meaningless, because the discontinuity is detected quite earlier
      than executing the handler.
      
      This commit gives up updating streams at the bus reset handler.
      Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      3800e6f9
    • Takashi Sakamoto's avatar
      ALSA: bebob: simplify bus-reset handling · 14a37ac1
      Takashi Sakamoto authored
      At bus-reset, DM1000/DM1100/DM1500 chipsets transfer packets with
      discontinuous value in 'dbc' field of CIP header. In this case, packet
      streaming layer in firewire-lib module stops streaming and set XRUN to PCM
      substream.
      
      In ALSA, PCM applications are notified the XRUN status by the return value
      of ALSA PCM interface. They can recover this state by executing
      snd_pcm_prepare(), then PCM drivers' prepare handler is called, and start
      new PCM substream. For ALSA BeBoB driver, the handler establishes new
      connections and start new AMDTP streaming.
      
      Unfortunately, neither the PCM applications nor the driver know the reason
      of XRUN. The driver gets to know the reason when update handler is called
      by IEEE 1394 bus driver. As long as I tested, the order of below events are
      not fixed:
       * Detecting packet discontinuity in tasklet context of OHCI 1394 driver
       * Calling prepare handler in process context of ALSA PCM application
       * Calling update handler in kthread context of IEEE 1394 bus driver
      
      The unpredictable order is disadvantage for the driver to be compliant to
      CMP. In IEC 61883-1, new CMP establish operations should be done 1 sec
      (isoc_resource_delay) after bus-reset. Within 1 sec, CMP restore
      operations are allowed. For this reason, in former commit ('b6bc8123:
      ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset'),
      the process context is forced to wait for executing update handler. The
      process context wait for bus-reset up to 1 sec. This commit solves the
      issue, while causes more disadvantages. For PCM applications, calling
      snd_pcm_prepare() for recovering XRUN state takes more time and the driver
      got a bit complicated code, while the recovery is not always successful.
      
      As long as I tested, DM1000/DM1100/DM1500 and BeBoB firmware can allow
      drivers to establish new connections just after bus reset. Furthermore,
      any FCP transactions are handled correctly. Therefore, the driver don't
      need to wait for bus reset handler for starting new streaming.
      
      This commit removes the codes to reduce maintenance cost.
      Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      14a37ac1
  4. 11 Oct, 2015 1 commit
  5. 04 Oct, 2015 1 commit
    • Takashi Sakamoto's avatar
      ALSA: bebob: support Firewire I/O card of Mackie Onyx 1220/1620/1640 · 425a570e
      Takashi Sakamoto authored
      Current ALSA BeBoB drivers has an entry for this model, while the value of
      vendor ID seems to be wrong according to an user's report.
      
      The vendor had released no updated firmware, thus we can judge that this
      model had not changed the content of its config ROM. It's reasonable to fix
      the ID according to the report.
      
      $ ./linux-firewire-utils/src/crpp < /sys/bus/firewire/devices/fw1/config_rom
      
                     ROM header and bus information block
                     -----------------------------------------------------------------
      400  0425720f  bus_info_length 4, crc_length 37, crc 29199
      404  31333934  bus_name "1394"
      408  f0646122  irmc 1, cmc 1, isc 1, bmc 1, pmc 0, cyc_clk_acc 100,
                     max_rec 6 (128), max_rom 1, gen 2, spd 2 (S400)
      40c  00000ff2  company_id 00000f     |
      410  00004697  device_id f200004697  | EUI-64 00000ff200004697
      
                     root directory
                     -----------------------------------------------------------------
      414  000859be  directory_length 8, crc 22974
      418  04000082  hardware version
      41c  0c0083c0  node capabilities per IEEE 1394
      420  03000ff2  vendor
      424  8100000a  --> descriptor leaf at 44c
      428  17010065  model
      42c  8100000d  --> descriptor leaf at 460
      430  13000910  version
      434  d1000001  --> unit directory at 438
      
                     unit directory at 438
                     -----------------------------------------------------------------
      438  0004ccec  directory_length 4, crc 52460
      43c  1200a02d  specifier id: 1394 TA
      440  13010001  version: AV/C
      444  17010065  model
      448  8100000d  --> descriptor leaf at 47c
      
                     descriptor leaf at 44c
                     -----------------------------------------------------------------
      44c  0004152a  leaf_length 4, crc 5418
      450  00000000  textual descriptor
      454  00000000  minimal ASCII
      458  4d61636b  "Mack"
      45c  69650000  "ie"
      
                     descriptor leaf at 460
                     -----------------------------------------------------------------
      460  000612b5  leaf_length 6, crc 4789
      464  00000000  textual descriptor
      468  00000000  minimal ASCII
      46c  4f6e7978  "Onyx"
      470  20466972  " Fir"
      474  65776972  "ewir"
      478  65000000  "e"
      
                     descriptor leaf at 47c
                     -----------------------------------------------------------------
      47c  000612b5  leaf_length 6, crc 4789
      480  00000000  textual descriptor
      484  00000000  minimal ASCII
      488  4f6e7978  "Onyx"
      48c  20466972  " Fir"
      490  65776972  "ewir"
      494  65000000  "e"
      
      $ cat /proc/asound/card3/firewire/firmware
      Manufacturer:   bridgeCo
      Protocol Ver:   1
      Build Ver:      0
      GUID:           0x00000FF200004697
      Model ID:       0x82
      Model Rev:      1
      Firmware Date:  20040430
      Firmware Time:  131527
      Firmware ID:    0x10065
      Firmware Ver:   2320
      Base Addr:      0x20080000
      Max Size:       1572864
      Loader Date:    20040430
      Loader Time:    112036
      Reported-by: default avatarAndrzej Gansiniec <andrzej@gansiniec.pl>
      Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      425a570e
  6. 15 Jun, 2015 2 commits
  7. 24 May, 2015 1 commit
    • Takashi Sakamoto's avatar
      ALSA: bebob: add Digidesign Mbox 2 Pro support · 146a5e3c
      Takashi Sakamoto authored
      This device is based on DM1000E, and BeBoB version 1 firmware is
      installed.
      
      $ cat /proc/asound/cards
       0 [Pro            ]: BeBoB - Mbox 2 Pro
                            DIGIDESIGN Mbox 2 Pro (id:1, rev:1),
      		      GUID 00a07e0100a90000 at fw1.0, S400
      
      $ cat /proc/asound/Pro/firewire/firmware
      Manufacturer:	bridgeCo
      Protocol Ver:	1
      Build Ver:		0
      GUID:		0x00A07E0100A90000
      Model ID:		0x01
      Model Rev:		1
      Firmware Date:	20071031
      Firmware Time:	034402
      Firmware ID:	0xA9
      Firmware Ver:	16777215
      Base Addr:		0x20080000
      Max Size:		1572864
      Loader Date:	20051207
      Loader Time:	205554
      
      With this patch, ALSA BeBoB driver can start packet streaming to/from
      this model, while as a default, internal multiplexer of this model is
      not initialized and generates no sound even if the driver transfers
      any packets with PCM samples. To hear any sounds from this model,
      userspace applications should be developed to set parameters to the
      internal multiplexer. You can see raw information in FFADO website:
      http://subversion.ffado.org/wiki/AvcModels/DigiDesignMboxPro2Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      146a5e3c
  8. 23 Feb, 2015 2 commits
  9. 27 May, 2014 3 commits
  10. 26 May, 2014 14 commits
    • Takashi Sakamoto's avatar
      ALSA: firewire/bebob: Add a workaround for M-Audio special Firewire series · 9b1ee0b2
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      9b1ee0b2
    • Takashi Sakamoto's avatar
      ALSA: bebob: Send a cue to load firmware for M-Audio Firewire series · a2b2a779
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      a2b2a779
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add support for M-Audio special Firewire series · 3149ac48
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      3149ac48
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add support for M-Audio usual Firewire series · 9076c22d
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      9076c22d
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add support for Focusrite Saffire/SaffirePro series · 25784ec2
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      25784ec2
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add support for Yamaha GO series · 8ac98a35
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      8ac98a35
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add support for Terratec PHASE, EWS series and Aureon · 326b9cac
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      326b9cac
    • Takashi Sakamoto's avatar
      ALSA: bebob: Prepare for device specific operations · 1fc9522a
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      1fc9522a
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add hwdep interface · 618eabea
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      618eabea
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add PCM interface · fbbebd2c
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      fbbebd2c
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add MIDI interface · 248b7802
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      248b7802
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add proc interface for debugging purpose · ad9697ba
      Takashi Sakamoto authored
      This commit adds proc interface to get these information for debugging:
       - firmware information
       - stream formation
       - current clock source and sampling rate
      Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      ad9697ba
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add commands and connections/streams management · eb7b3a05
      Takashi Sakamoto authored
      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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      eb7b3a05
    • Takashi Sakamoto's avatar
      ALSA: bebob: Add skelton for BeBoB based devices · fd6f4b0d
      Takashi Sakamoto authored
      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: default avatarDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      fd6f4b0d