Skip to content
  • Takashi Sakamoto's avatar
    ALSA: fireface: add support for PCM functionality · 4b316436
    Takashi Sakamoto authored
    
    
    This commit adds PCM functionality to transmit/receive PCM frames on
    isochronous packet streaming. This commit enables userspace applications
    to start/stop packet streaming via ALSA PCM interface.
    
    Sampling rate requested by applications is used as sampling transmission
    frequency of IEC 61883-1/6packet streaming. As I described in followed
    commits, units in this series manages sampling clock frequency
    independently of sampling transmission frequency, and they supports
    resampling between their packet streaming/data block processing layer and
    sampling data processing layer. This commit take this driver to utilize
    these features for usability.
    
    When internal clock is selected as source signal of sampling clock, this
    driver allows user space applications to start PCM substreams at any rate
    which packet streaming engine supports as sampling transmission frequency.
    In this case, this driver expects units to perform resampling PCM frames
    for rx/tx packets when sampling clock frequency and sampling transmission
    frequency are mismatched. This is for daily use cases.
    
    When any external clock is selected as the source signal, this driver
    gets configured sampling rate from units, then restricts available
    sampling rate to the rate for PCM applications. This is for studio use
    cases.
    
    Models in this series supports 64.0/128.0 kHz of sampling rate, however
    these frequencies are not supported by IEC 61883-6 as sampling transmission
    frequency. Therefore, packet streaming engine of ALSA firewire stack can't
    handle them. When units are configured to use any external clock as source
    signal of sampling clock and one of these unsupported rate is configured
    as rate of the sampling clock, this driver returns EIO to user space
    applications.
    
    Anyway, this driver doesn't voluntarily configure parameters of sampling
    clock. It's better for users to work with appropriate user space
    implementations to configure the parameters in advance of usage.
    
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    4b316436