1. 22 Sep, 2021 17 commits
  2. 21 Sep, 2021 4 commits
  3. 20 Sep, 2021 19 commits
    • Mark Brown's avatar
      ASoC: Drop mistakenly applied SPI patch · 8e8f2ac0
      Mark Brown authored
      Revert 6e8cc4dd ("spi: tegra20-slink: Declare runtime suspend and
      resume functions conditionally") which was mistakenly applied to the
      ASoC tree not the SPI tree (where it was also applied.
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      8e8f2ac0
    • Mark Brown's avatar
      Merge series "ASoC: compress: Support module_get on stream open" from Peter... · cca46db7
      Mark Brown authored
      Merge series "ASoC: compress: Support module_get on stream open" from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
      
      Hi,
      
      SOF is marking all componet drivers with module_get_upon_open = 1 which works
      fine with normal PCM streams, however on compressed side the module get upon
      open is not supported. The module_get works when module_get_upon_open is not set
      becasue the snd_soc_component_module_get_when_probe() will pass NULL for the
      substream parameter of snd_soc_component_module_get().
      
      In order to re-use the existing infrastructure for module_get, the proposal is
      to convert the mark_module to void pointer (like the pm mark) and implement
      matching code for the compressed open/free to pcm open/close.
      
      Regards,
      Peter
      ---
      Peter Ujfalusi (2):
        ASoC: soc-component: Convert the mark_module to void*
        ASoC: compress/component: Use module_get_when_open/put_when_close for
          cstream
      
       include/sound/soc-component.h | 14 ++++----
       sound/soc/soc-component.c     | 61 +++++++++++++++--------------------
       sound/soc/soc-compress.c      | 43 +++++++++++++++++++++---
       3 files changed, 71 insertions(+), 47 deletions(-)
      
      --
      2.33.0
      cca46db7
    • Mark Brown's avatar
      Merge series "Extend AHUB audio support for Tegra210 and later" from Sameer... · 2a07ef63
      Mark Brown authored
      Merge series "Extend AHUB audio support for Tegra210 and later" from Sameer Pujar <spujar@nvidia.com>:
      
      Earlier as part of series [0], support for ADMAIF and I/O modules (such
      as I2S, DMIC and DSPK) was added. This series aims at exposing some of
      the AHUB internal modules (listed below), which can be used for audio
      pre or post processing.
      
        * SFC (Sampling Frequency Converter)
        * MVC (Master Volume Control)
        * AMX (Audio Multiplexer)
        * ADX (Audio Demultiplexer)
        * Mixer
      
      These modules can be plugged into audio paths and relevant processing
      can be done. The MUX routes are extended to allow add or remove above
      modules in the path via mixer controls. This is similar to how specific
      ADMAIF channels are connected to relevant I/O module instances at the
      moment.
      
      Some of these modules can alter PCM parameters. Consider example of
      resampler (44.1 -> 48 kHz) in the path.
      
        aplay(44.1 kHz) -> ADMAIF -> SFC -> (48 kHz) I2S -> (48kHz) Codec
      
      The modules following SFC should be using converted sample rate and DAIs
      need to be configured accordingly. The audio-graph driver provides a
      mechanism to fixup the new parameters which can be specified in DT for a
      given DAI. Then core uses these new values via fixup callback and then
      pass it to respective DAIs hw_param() callback. The "convert-rate",
      described in [1], property can be used when there is rate conversion in
      the audio path. Similarly "convert-channels" can be used when there is
      channel conversion in the path. There is no "convert-xxx" property for
      sample size conversions. It can be added if necessary.
      
      [0] https://www.lkml.org/lkml/2020/7/21/1357
      [1] Documentation/devicetree/bindings/sound/audio-graph-port.yaml
      
      Changelog
      =========
      
      v1 -> v2
      --------
       * Put comments for soft reset application in the drivers.
       * Split out mute/volume control logic in put() calls of MVC driver and
         use separate callbacks for the respective kcontrols.
       * Update kcontrol put() callback in MVC driver to return 1 whenever
         there is change. Similar change is done in other drivers too.
       * Use name-prefix.yaml reference for the driver documentation now.
       * Add sound-name-prefix pattern for MIXER driver and use prefix
         accordingly in DT.
      
      Sameer Pujar (13):
        ASoC: soc-pcm: Don't reconnect an already active BE
        ASoC: simple-card-utils: Increase maximum DAI links limit to 512
        ASoC: audio-graph: Fixup CPU endpoint hw_params in a BE<->BE link
        ASoC: dt-bindings: tegra: Few more Tegra210 AHUB modules
        ASoC: tegra: Add routes for few AHUB modules
        ASoC: tegra: Add Tegra210 based MVC driver
        ASoC: tegra: Add Tegra210 based SFC driver
        ASoC: tegra: Add Tegra210 based AMX driver
        ASoC: tegra: Add Tegra210 based ADX driver
        ASoC: tegra: Add Tegra210 based Mixer driver
        arm64: defconfig: Enable few Tegra210 based AHUB drivers
        arm64: tegra: Add few AHUB devices for Tegra210 and later
        arm64: tegra: Extend APE audio support on Jetson platforms
      
       .../bindings/sound/nvidia,tegra210-adx.yaml        |   76 +
       .../bindings/sound/nvidia,tegra210-ahub.yaml       |   20 +
       .../bindings/sound/nvidia,tegra210-amx.yaml        |   76 +
       .../bindings/sound/nvidia,tegra210-mixer.yaml      |   74 +
       .../bindings/sound/nvidia,tegra210-mvc.yaml        |   76 +
       .../bindings/sound/nvidia,tegra210-sfc.yaml        |   73 +
       arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts | 1554 ++++++++-
       arch/arm64/boot/dts/nvidia/tegra186.dtsi           |  120 +
       arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts | 1493 +++++++-
       .../arm64/boot/dts/nvidia/tegra194-p3509-0000.dtsi | 1520 ++++++++-
       arch/arm64/boot/dts/nvidia/tegra194.dtsi           |  116 +
       arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts |  876 +++++
       arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts |  876 +++++
       arch/arm64/boot/dts/nvidia/tegra210.dtsi           |   77 +
       arch/arm64/configs/defconfig                       |    5 +
       include/sound/simple_card_utils.h                  |    2 +-
       sound/soc/generic/audio-graph-card.c               |    4 +-
       sound/soc/soc-pcm.c                                |    4 +
       sound/soc/tegra/Kconfig                            |   48 +
       sound/soc/tegra/Makefile                           |   10 +
       sound/soc/tegra/tegra210_adx.c                     |  531 +++
       sound/soc/tegra/tegra210_adx.h                     |   72 +
       sound/soc/tegra/tegra210_ahub.c                    |  511 ++-
       sound/soc/tegra/tegra210_amx.c                     |  600 ++++
       sound/soc/tegra/tegra210_amx.h                     |   93 +
       sound/soc/tegra/tegra210_mixer.c                   |  674 ++++
       sound/soc/tegra/tegra210_mixer.h                   |  100 +
       sound/soc/tegra/tegra210_mvc.c                     |  645 ++++
       sound/soc/tegra/tegra210_mvc.h                     |  117 +
       sound/soc/tegra/tegra210_sfc.c                     | 3549 ++++++++++++++++++++
       sound/soc/tegra/tegra210_sfc.h                     |   78 +
       31 files changed, 13647 insertions(+), 423 deletions(-)
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-adx.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-amx.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-mixer.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-mvc.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-sfc.yaml
       create mode 100644 sound/soc/tegra/tegra210_adx.c
       create mode 100644 sound/soc/tegra/tegra210_adx.h
       create mode 100644 sound/soc/tegra/tegra210_amx.c
       create mode 100644 sound/soc/tegra/tegra210_amx.h
       create mode 100644 sound/soc/tegra/tegra210_mixer.c
       create mode 100644 sound/soc/tegra/tegra210_mixer.h
       create mode 100644 sound/soc/tegra/tegra210_mvc.c
       create mode 100644 sound/soc/tegra/tegra210_mvc.h
       create mode 100644 sound/soc/tegra/tegra210_sfc.c
       create mode 100644 sound/soc/tegra/tegra210_sfc.h
      
      --
      2.7.4
      2a07ef63
    • Wolfram Sang's avatar
      ASoC: codecs: max98390: simplify getting the adapter of a client · 0f9a84b2
      Wolfram Sang authored
      We have a dedicated pointer for that, so use it. Much easier to read and
      less computation involved.
      Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
      Link: https://lore.kernel.org/r/20210918213553.14514-2-wsa+renesas@sang-engineering.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      0f9a84b2
    • Peter Ujfalusi's avatar
      ASoC: Intel: boards: Update to modern clocking terminology · 5374b921
      Peter Ujfalusi authored
      As part of the effort to remove our old APIs based on outdated terminology
      update the Intel board drivers to use modern terminology.
      Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
      Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com
      Link: https://lore.kernel.org/r/20210920065508.7854-1-peter.ujfalusi@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      5374b921
    • Krzysztof Kozlowski's avatar
      ASoC: dt-bindings: rt5682s: correct several errors · a7a18abb
      Krzysztof Kozlowski authored
      Correct several errors in rt5682s dtschema:
      1. The examples should be under "examples":
          'example' is not one of ['$id', '$schema', 'title', 'description', 'examples', ...
      
      2. Missing type for vendor properties
      
      3. clock-names should be an array:
          properties:clock-names:items: {'const': 'mclk'} is not of type 'array'
      
      4. Example DTS should include headers:
          [scripts/Makefile.lib:386: Documentation/devicetree/bindings/sound/realtek,rt5682s.example.dt.yaml] Error 1
      
      5. Node name in example DTS misses unit address and does not match DT
         convention (generic name):
          Warning (reg_format): /example-0/rt5682s:reg: property has invalid length (4 bytes) (#address-cells == 1, #size-cells == 1)
      
      6. Node address should be in size-cells:0 block in example DTS:
          Warning (reg_format): /example-0/codec@1a:reg: property has invalid length (4 bytes) (#address-cells == 1, #size-cells == 1)
      
      Fixes: 50159fdb ("ASoC: dt-bindings: rt5682s: add bindings for rt5682s")
      Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
      Link: https://lore.kernel.org/r/20210920112106.140918-1-krzysztof.kozlowski@canonical.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      a7a18abb
    • Mark Brown's avatar
      ASoC: ab8500: Update to modern clocking terminology · ef92ed26
      Mark Brown authored
      As part of moving to remove the old style defines for the bus clocks update
      the ab8500 driver to use more modern terminology for clocking.
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Link: https://lore.kernel.org/r/20210916141335.43818-1-broonie@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      ef92ed26
    • Peter Ujfalusi's avatar
    • Jiapeng Chong's avatar
      ASoC: rt5682s: make rt5682s_aif2_dai_ops and rt5682s_soc_component_dev · cf21e114
      Jiapeng Chong authored
      This symbol is not used outside of rt5682s.c, so marks it static.
      
      Fix the following sparse warning:
      
      sound/soc/codecs/rt5682s.c:2848:39: warning: symbol
      'rt5682s_soc_component_dev' was not declared. Should it be static?
      
      sound/soc/codecs/rt5682s.c:2842:30: warning: symbol
      'rt5682s_aif2_dai_ops' was not declared. Should it be static?
      Reported-by: default avatarAbaci Robot <abaci@linux.alibaba.com>
      Signed-off-by: default avatarJiapeng Chong <jiapeng.chong@linux.alibaba.com>
      Link: https://lore.kernel.org/r/1631955726-77693-1-git-send-email-jiapeng.chong@linux.alibaba.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      cf21e114
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based Mixer driver · 05bb3d5e
      Sameer Pujar authored
      The Mixer supports mixing of up to ten 7.1 audio input streams and
      generate five outputs (each of which can be any combination of the
      ten input streams)
      
      This patch registers Mixer driver with ASoC framework. The component
      driver exposes DAPM widgets, routes and kcontrols for the device.
      The DAI driver exposes Mixer interfaces, which can be used to connect
      different components in the ASoC layer. Makefile and Kconfig support
      is added to allow build the driver. It can be enabled in the DT via
      "nvidia,tegra210-amixer" compatible binding.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1631551342-25469-11-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      05bb3d5e
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based ADX driver · a99ab6f3
      Sameer Pujar authored
      The Audio Demultiplexer (ADX) block takes an input stream with up to
      16 channels and demultiplexes it into four output streams of up to 16
      channels each. A byte RAM helps to form output frames by any combination
      of bytes from the input frame. Its design is identical to that of byte
      RAM in the AMX except that the data flow direction is reversed.
      
      This patch registers ADX driver with ASoC framework. The component driver
      exposes DAPM widgets, routes and kcontrols for the device. The DAI driver
      exposes ADX interfaces, which can be used to connect different components
      in the ASoC layer. Makefile and Kconfig support is added to allow build
      the driver. It can be enabled in the DT via "nvidia,tegra210-adx"
      compatible binding.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1631551342-25469-10-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      a99ab6f3
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based AMX driver · 77f7df34
      Sameer Pujar authored
      The Audio Multiplexer (AMX) block can multiplex up to four input streams
      each of which can have maximum 16 channels and generate an output stream
      with maximum 16 channels. A byte RAM helps to form an output frame by
      any combination of bytes from the input frames.
      
      This patch registers AMX driver with ASoC framework. The component driver
      exposes DAPM widgets, routes and kcontrols for the device. The DAI driver
      exposes AMX interfaces, which can be used to connect different components
      in the ASoC layer. Makefile and Kconfig support is added to allow build
      the driver. It can be enabled in the DT via "nvidia,tegra210-amx" for
      Tegra210 and Tegra186. For Tegra194 and later, "nvidia,tegra194-amx" can
      be used.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1631551342-25469-9-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      77f7df34
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based SFC driver · b2f74ec5
      Sameer Pujar authored
      The Sampling Frequency Converter (SFC) converts the sampling frequency
      of the input signal from one frequency to another. It supports sampling
      frequency conversions of streams of up to two channels (stereo).
      
      This patch registers SFC driver with ASoC framework. The component driver
      exposes DAPM widgets, routes and kcontrols for the device. The DAI driver
      exposes SFC interfaces, which can be used to connect different components
      in the ASoC layer. Makefile and Kconfig support is added to allow build
      the driver. It can be enabled in the DT via "nvidia,tegra210-sfc"
      compatible binding.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1631551342-25469-8-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      b2f74ec5
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based MVC driver · e539891f
      Sameer Pujar authored
      The Master Volume Control (MVC) provides gain or attenuation to a digital
      signal path. It can be used in input or output signal path for per-stream
      volume control or it can be used as master volume control. The MVC block
      has one input and one output. The input digital stream can be mono or
      multi-channel (up to 7.1 channels) stream. An independent mute control is
      also included in the MVC block.
      
      This patch registers MVC driver with ASoC framework. The component driver
      exposes DAPM widgets, routes and kcontrols for the device. The DAI driver
      exposes MVC interfaces, which can be used to connect different components
      in the ASoC layer. Makefile and Kconfig support is added to allow build
      the driver. It can be enabled in the DT via "nvidia,tegra210-mvc"
      compatible binding.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1631551342-25469-7-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      e539891f
    • Sameer Pujar's avatar
      ASoC: tegra: Add routes for few AHUB modules · 94d486c2
      Sameer Pujar authored
      Add routing support for following modules of AHUB:
       * SFC (Sampling Frequency Converter)
       * MVC (Master Volume Control)
       * AMX (Audio Multiplexer)
       * ADX (Audio Demultiplexer)
       * Mixer
      
      These modules can be plugged into audio path as per the need using
      routing controls similar to the already existing routes to I/O modules
      such as I2S, DMIC and DSPK.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1631551342-25469-6-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      94d486c2
    • Sameer Pujar's avatar
      ASoC: dt-bindings: tegra: Few more Tegra210 AHUB modules · aa56a9de
      Sameer Pujar authored
      This patch adds YAML schema for DT bindings of few AHUB modules.
      These devices will be registered as ASoC components and bindings
      will be used on Tegra210 and later chips. The bindings for below
      mentioned modules are added:
      
       * SFC (Sampling Frequency Converter)
       * MVC (Master Volume Control)
       * AMX (Audio Multiplexer)
       * ADX (Audio Demultiplexer)
       * Mixer
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Link: https://lore.kernel.org/r/1631551342-25469-5-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      aa56a9de
    • Sameer Pujar's avatar
      ASoC: audio-graph: Fixup CPU endpoint hw_params in a BE<->BE link · 30b428d0
      Sameer Pujar authored
      When multiple components are connected back to back in an audio path,
      hw_param fixup may be required for CPU or Codec endpoint of BE<->BE
      DAI links. Currently fixup support is available for Codec and this
      commit adds similar feature for CPU endpoint of a BE<->BE link.
      
      For example a resampler component can be plugged into an audio path.
        [ FE -> BE1 -> ... -> resampler -> ... BEn ]
      
      The resampler DAI links can be:
        BEx (CPU)              -> resampler input (Codec)
        resampler output (CPU) -> BEy (Codec)
      
      Thus input and output sample rate parameters for resampler can be
      fixed up as per the resample requirement.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/1631551342-25469-4-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      30b428d0
    • Sameer Pujar's avatar
      ASoC: simple-card-utils: Increase maximum DAI links limit to 512 · 7a226f2e
      Sameer Pujar authored
      The current limit of 128 is not sufficient when more components are
      added to the audio map on Tegra210 and later platforms. Thus it is
      resulting in probe failure.
      
      The requirement is of nearly ~200 DAI links. To give sufficient room
      for future additions the maximum limit is increased to 512 DAI links.
      This is a preparatory patch to add more components like resampler,
      mixer, multiplexers, demultiplexers and volume controllers to Tegra210
      and later platforms.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/1631551342-25469-3-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      7a226f2e
    • Sameer Pujar's avatar
      ASoC: soc-pcm: Don't reconnect an already active BE · 0c25db3f
      Sameer Pujar authored
      In some cases, multiple FE components have the same BE component in their
      respective DPCM paths. One such example would be a mixer component, which
      can receive two or more inputs and sends a mixed output. In such cases,
      to avoid reconfiguration of already active DAI (mixer output DAI in this
      case), check the BE stream state to filter out the redundancy.
      
      In summary, allow connection of BE if the respective current stream state
      is either NEW or CLOSED.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1631551342-25469-2-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      0c25db3f