21 May, 2019

1 commit


07 Feb, 2019

1 commit


28 Mar, 2018

1 commit


17 Feb, 2018

1 commit


12 Feb, 2018

1 commit


09 Oct, 2017

1 commit


15 Aug, 2017

1 commit


17 Jul, 2017

1 commit


29 Jun, 2017

1 commit


30 Apr, 2017

1 commit

  • Designware PCM is an extension to Designware I2S and they are dependent
    on each other. For this reason, make Designware PCM a boolean which will
    compile with Desigwnare I2S module. The name of the module is not changed
    but the name of the files need to be changed.

    Also, without this commit we get errors when probbing designware_i2s module
    because of unspecified license:

    designware_pcm: module license 'unspecified' taints kernel.
    Disabling lock debugging due to kernel taint
    designware_pcm: Unknown symbol __rcu_read_lock (err 0)
    designware_pcm: Unknown symbol devm_snd_soc_register_platform (err 0)
    designware_pcm: Unknown symbol synchronize_rcu (err 0)
    designware_pcm: Unknown symbol __rcu_read_unlock (err 0)
    designware_pcm: Unknown symbol snd_soc_set_runtime_hwparams (err 0)

    So, this is really needed as a fix.

    Fixes: 79361b2b98b7 ("ASoC: dwc: Add PIO PCM extension")
    Signed-off-by: Lubomir Rintel
    Signed-off-by: Jose Abreu
    Signed-off-by: Mark Brown

    Jose Abreu
     

09 Jan, 2017

2 commits

  • Sample size of 24 bits use in reality 32 bits for storage. We
    can safelly enable this sample size and treat the data as
    32 bits.

    Tested in a x86_64 platform and in ARC AXS101 SDP platform.

    Signed-off-by: Jose Abreu
    Signed-off-by: Mark Brown

    Jose Abreu
     
  • Up until now PIO mode offered only playback support. With
    this patch we add support for record mode. The PCM was
    refactored so that we could reuse the existing infrastructure
    without many changes.

    We have support for 16 and 32 bits of sample size using
    only 2 channels.

    Tested in a x86_64 platform and in ARC AXS101 SDP platform.

    Signed-off-by: Jose Abreu
    Signed-off-by: Mark Brown

    Jose Abreu
     

14 Dec, 2016

1 commit

  • We can no longer rely on the return value of
    devm_snd_dmaengine_pcm_register(...) to check if the DMA
    handle is declared in the DT.

    Previously this check activated PIO mode but currently
    dma_request_chan returns either a valid channel or -EPROBE_DEFER.

    In order to activate PIO mode check instead if the interrupt
    line is declared. This reflects better what is documented in
    the DT bindings (see Documentation/devicetree/bindings/sound/
    designware-i2s.txt).

    Also, initialize use_pio variable which was never being set
    causing PIO mode to never work.

    Signed-off-by: Jose Abreu
    Signed-off-by: Mark Brown

    Jose Abreu
     

08 Aug, 2016

1 commit

  • The dw_configure_dai_by_dt() function and further dev->{play,capture}
    _dma_data.dt data structures seem to be used in this driver only in case
    of a system using devicetree, thus chan_name assignments have no effect
    since they will be ignored in dmaengine_pcm_request_chan_of() call and
    will be substituted with values taken form dmaengine_pcm_dma_channel_names[]
    table ("tx", "rx").

    Also there is no any "TX", "RX" dma-names entries in arch/arm/boot/dts,
    only lower case "tx", "rx" seem to be used.

    Lastly, this driver doesn't set SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME
    flag when registering a dmaengine PCM to indicate the chan_name should be
    used.

    My intention is to eventually remove the struct snd_dmaengine_dai_dma_data
    chan_name field as there is also a chan_names[] field in struct
    snd_dmaengine_pcm_config which can be used for same purpose.

    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mark Brown

    Sylwester Nawrocki
     

26 Jun, 2016

1 commit


22 Jun, 2016

1 commit

  • The new PIO mode for the dwc audio driver causes a link failure
    when it is built as a loadable module but the audio driver is built-in:

    sound/built-in.o: In function `i2s_irq_handler':
    :(.text+0x58c64): undefined reference to `dw_pcm_push_tx'
    sound/built-in.o: In function `dw_i2s_probe':
    :(.text+0x593dc): undefined reference to `dw_pcm_register'

    We could link both into a single module, but apparently the
    author intended them to be separate, so this instead changes
    the Makefile to force the pcm module to be built-in if the
    base module is. This is a bit hacky but not as bad as trying
    to work around it in Kconfig language.

    Signed-off-by: Arnd Bergmann
    Fixes: 79361b2b98b7 ("ASoC: dwc: Add PIO PCM extension")
    Signed-off-by: Mark Brown

    Arnd Bergmann
     

14 Jun, 2016

1 commit

  • A PCM extension was added to I2S driver so that audio
    samples are transferred using PIO mode.

    The PCM supports two channels @ 16 or 32 bits with rates
    32k, 44.1k and 48k.

    Although the mainline I2S driver uses ALSA DMA engine the
    I2S controller can be built without DMA support, therefore
    this is the reason why this extension was added.

    Signed-off-by: Jose Abreu
    Cc: Carlos Palminha
    Cc: Mark Brown
    Cc: Liam Girdwood
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: Rob Herring
    Cc: Alexey Brodkin
    Cc: linux-snps-arc@lists.infradead.org
    Cc: alsa-devel@alsa-project.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Mark Brown

    Jose Abreu
     

30 May, 2016

1 commit

  • Helper functions to disable and enable the I2S interrupts were
    added. Only the interrupts of the used channels are enabled.

    Also, there is no need to enable irqs at dw_i2s_config(), they
    are already enabled at startup.

    Signed-off-by: Jose Abreu
    Cc: Carlos Palminha
    Cc: Mark Brown
    Cc: Liam Girdwood
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: Rob Herring
    Cc: Alexey Brodkin
    Cc: linux-snps-arc@lists.infradead.org
    Cc: alsa-devel@alsa-project.org
    Cc: devicetree@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Mark Brown

    Jose Abreu
     

08 Apr, 2016

1 commit


06 Apr, 2016

1 commit


03 Feb, 2016

1 commit

  • In the case that the driver is configured from device-tree
    i2s_reg_comp1 and i2s_reg_comp2 aren't initialised, breaking the driver.
    Fix this by unconditionally setting these values before checking for quirks.

    Fixes: a242cac1d3aa ("ASoC: dwc: add quirk to override COMP_PARAM_1 register")
    Signed-off-by: Jon Medhurst
    Signed-off-by: Mark Brown

    Jon Medhurst (Tixy)
     

10 Jan, 2016

1 commit


08 Dec, 2015

3 commits


26 Oct, 2015

1 commit


24 Oct, 2015

1 commit

  • DW i2s controller's master/slave config can be read from a
    read-only register. Machine driver can try to set a master/slave
    format on cpu-dai using 'set_fmt' of dai ops. A check is added to
    verify codec is master when dwc is slave and vice-versa.

    Signed-off-by: Maruthi Bayyavarapu
    Signed-off-by: Alex Deucher
    Signed-off-by: Mark Brown

    Maruthi Srinivas Bayyavarapu
     

05 Oct, 2015

1 commit


03 Oct, 2015

1 commit

  • Designware I2S uses tx empty and rx available signals as the DMA
    handshaking signals. during music playing, if XRUN occurs,
    i2s_stop() function will be executed and both tx and rx irq are
    masked, when music continues to be played, i2s_start() is executed
    but both tx and rx irq are not unmasked which cause I2S stop
    sending DMA handshaking signal to DMA controller, and it finally
    causes music playing will be stopped once XRUN occurs for the first
    time.

    [On list discussion suggests this may be partly a race condition on slow
    systems -- broonie]

    Signed-off-by: Yitian Bu
    Signed-off-by: Mark Brown

    yitian
     

02 Oct, 2015

1 commit


05 Feb, 2015

1 commit


29 Jan, 2015

1 commit


31 Dec, 2014

5 commits


22 Dec, 2014

3 commits