1. 28 3月, 2017 7 次提交
    • T
      ALSA: firewire-motu: add proc node to show current statuc of clock and packet formats · 4638ec6e
      Takashi Sakamoto 提交于
      This commit adds a proc node for debugging purpose.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      4638ec6e
    • T
      ALSA: firewire-motu: add stream management functionality · 9b2bb4f2
      Takashi Sakamoto 提交于
      This commit adds a functionality to manage packet streaming for MOTU
      FireWire series.
      
      The streaming is not controlled by CMP, thus against IEC 61883-1. Write
      transaction to certain addresses start/stop packet streaming.
      
      Transactions to 0x'ffff'f000'0b00 results in isochronous channel number for
      both directions and starting/stopping transmission of packets. The
      isochronous channel number is represented in 6 bit field, thus units can
      identify the channels up to 64, as IEEE 1394 bus specification described.
      
      Transactions to 0x'ffff'f000'0b10 results in packet format for both
      directions and transmission speed. When each of data block includes fixed
      part of data chunks only, corresponding flags stand.
      
      When bus reset occurs, the units continue to transmit packets with
      non-contiguous data block counter. This causes discontinuity detection in
      packet streaming engine and ALSA PCM applications receives EPIPE from any
      I/O operation. In this case, typical applications manage to recover
      corresponding PCM substream. This behaviour is kicked much earlier than
      callback of bus reset handler by Linux FireWire subsystem, therefore
      status of packet streaming is not changed in the handler.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      9b2bb4f2
    • T
      ALSA: firewire-motu: handle transactions specific for MOTU FireWire models · 2e76701b
      Takashi Sakamoto 提交于
      All models of MOTU FireWire series can be controlled by write transaction
      to addresses in a range from 0x'ffff'f0000'0b00 to 0x'ffff'f000'0cff.
      
      The models support asynchronous notification. This notification has 32 bit
      field data, and is transferred when status of clock changes. Meaning of
      the value is not enough clear yet.
      
      Drivers can register its address to receive the notification. Write
      transaction to 0x'ffff'f000'0b04 registers higher 16 bits of the address.
      Write transaction to 0x'ffff'f0000'0b08 registers the rest of bits. The
      address includes node ID, thus it should be registered every time of bus
      reset.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      2e76701b
    • T
      ALSA: firewire-motu: add an abstraction layer for three types of protocols · 59f6482c
      Takashi Sakamoto 提交于
      In an aspect of used protocols to communicate, models of MOTU FireWire
      units are categorized to three generations.
      
      This commit adds an abstraction layer of the protocols for features
      related to packet streaming functionality. This layer includes 5
      operations.
      
      When configuring packet streaming functionality with sampling rate and
      sampling transmission frequency, .get_clock_rate and .set_clock_rate are
      called with proper arguments. MOTU FireWire series supports up to 192.0kHz.
      
      When checking current source of sampling clock (not clock for packetization
      layer), .get_clock_source is used. Enumeration is added to represent the
      sources supported by this series. This operation can be used to expose
      available sampling rate to user space applications when the unit is
      configured to use any input signal as source of clock instead of crystal
      clock.
      
      In the protocols, the path between packet processing layer and digital
      signal processing layer can be controlled. This looks a functionality to
      'mute' the unit. For this feature, .switch_fetching_mode is added. This
      can be used to suppress noises every time packet streaming starts/stops.
      
      In a point of the size of data blocks at a certain sampling transmission
      frequency, the most units accept several modes. This is due to usage of
      optical interfaces. The size differs depending on which modes are
      configured to the interfaces; None, S/PDIF and ADAT. Additionally, format
      of packet is different depending on protocols. To cache current size of
      data blocks and its format, .cache_packet_formats is added. This is used
      by PCM functionality, packet streaming functionality and data block
      processing layer.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      59f6482c
    • T
      ALSA: firewire-motu: add a structure for model-dependent parameters. · 5e03c33e
      Takashi Sakamoto 提交于
      MOTU FireWire series doesn't tell drivers their capabilities, thus
      the drivers should have and apply model-dependent parameters to detected
      models.
      
      This commit adds a structure to represent such parameters. Capabilities
      are represented by enumeration except for the number of analog line
      in/out. Identification name also be in the structure because the units has
      no registers for this purpose.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      5e03c33e
    • T
      ALSA: firewire-motu: postpone sound card registration · 8865a31e
      Takashi Sakamoto 提交于
      Just after appearing on IEEE 1394 bus, this unit generates several bus
      resets. This is due to loading firmware from on-board flash memory and
      initialize hardware. It's better to postpone sound card registration.
      
      This commit applies this idea.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      8865a31e
    • T
      ALSA: firewire-motu: add skeleton for Mark of the unicorn (MOTU) FireWire series · 6c3cef48
      Takashi Sakamoto 提交于
      This commit adds an new driver for MOTU FireWire series. In this commit,
      this driver just creates/removes card instance according to bus event.
      More functionalities will be added in following commits.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6c3cef48