1. 13 Nov, 2020 1 commit
  2. 12 Nov, 2020 23 commits
  3. 11 Nov, 2020 6 commits
  4. 10 Nov, 2020 10 commits
    • Mark Brown's avatar
      Merge series "Audio Graph Updates" from Sameer Pujar <spujar@nvidia.com>: · 0a142f53
      Mark Brown authored
      This series is a prepraration for using generic graph driver for Tegra210
      audio. Tegra audio graph series will be sent in a separate series because
      it has some dependency over other series for documentation work. This
      series can focus on the generic ASoC driver updates. Below are the summary
      of changes done.
      
       * Support multiple instances of a component. For example there can be
         multiple I2S devices which can use the same component driver.
      
       * Support open platforms with empty Codec endpoint. Customers can plug
         their own HW and can populate codec endpoint.
      
       * In a component model there can be many components which can be
         connected together. In such cases Identify no-pcm DPCM DAI links which
         can be used in BE<->BE connections.
      
       * Expose structures or helpers to be re-used by other similar graph
         drivers.
      
      The series is based on following references where DPCM usgae for Tegra
      Audio and simple-card driver proposal were discussed.
      
       * https://lkml.org/lkml/2020/4/30/519 (DPCM for Tegra)
       * https://lkml.org/lkml/2020/6/27/4 (simple-card driver)
      
      Changelog
      =========
      
      v4 -> v5
      --------
       * No changes in the core/audio-graph driver patches which are
         part of the current series.
       * Dropped Tegra audio patches and doc patches. This will be
         sent separately once the doc depdendencies are resolved.
      
      v3 -> v4
      --------
       * Added new patches to convert graph.txt and audio-graph-card.txt
         to corresponding json-schema files. Later these references
         are used in Tegra audio graph schema.
      
       * AHUB component binding docs are updated to reflect the usage
         of ports/port/endpoint
      
       * More common stuff is moved into graph_parse_of() and this is
         used by both generic and Tegra audio graph.
      
       * DT binding for Tegra audio graph is updated to included "ports { }"
      
       * As per the suggestion 'void *data' member is dropped from
         'asoc_simple_priv' and instead container method is used to
         maintain required custom data internal to Tegra audio graph.
      
      v2 -> v3
      --------
       * Dropped new compatible addition in generic graph driver
         after reviewing it with Morimoto-san. Instead added Tegra
         audio graph driver and new compatibles are added in the same.
       * Added new patches to expose new members for customization
         in audio graph driver.
       * Added new patch for Tegra audio graph driver and related
         documentation.
       * Minor change in below commit where mutex version of helper is used
         "ASoC: audio-graph: Identify 'no_pcm' DAI links for DPCM"
       * DT binding is updated to use the newly exposed compatibles
       * No changes in other patches
      
      v1 -> v2
      --------
       * Re-organized ports/endpoints description for ADMAIF and XBAR.
         Updated DT patches accordingly.
       * After above change, multiple Codec endpoint support is not
         required and hence dropped for now. This will be considered
         separately if at all required in future.
       * Re-ordered patches in the series.
      
      Sameer Pujar (7):
        ASoC: soc-core: Fix component name_prefix parsing
        ASoC: soc-pcm: Get all BEs along DAPM path
        ASoC: audio-graph: Use of_node and DAI for DPCM DAI link names
        ASoC: audio-graph: Identify 'no_pcm' DAI links for DPCM
        ASoC: audio-graph: Support empty Codec endpoint
        ASoC: audio-graph: Expose new members for asoc_simple_priv
        ASoC: audio-graph: Expose helpers from audio graph
      
       include/sound/graph_card.h           |  16 ++++
       include/sound/simple_card_utils.h    |   3 +
       include/sound/soc.h                  |   1 +
       sound/soc/generic/audio-graph-card.c | 175 ++++++++++++++++++++++++-----------
       sound/soc/soc-core.c                 |   3 +-
       sound/soc/soc-pcm.c                  |   3 +-
       6 files changed, 143 insertions(+), 58 deletions(-)
       create mode 100644 include/sound/graph_card.h
      
      --
      2.7.4
      0a142f53
    • Dan Carpenter's avatar
      ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of() · 4e59dd24
      Dan Carpenter authored
      There are two issues in this function.
      
      1) We can't drop the refrences on "cpu", "codec" and "platform" before
         we take the reference.  This doesn't cause a problem on the first
         iteration because those pointers start as NULL so the of_node_put()
         is a no-op.  But on the subsequent iterations, it will lead to a use
         after free.
      
      2) If the devm_kzalloc() allocation failed then the code returned
         directly instead of cleaning up.
      
      Fixes: c1e6414c ("ASoC: qcom: common: Fix refcount imbalance on error")
      Fixes: 1e36ea36 ("ASoC: qcom: common: use modern dai_link style")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Link: https://lore.kernel.org/r/20201105125154.GA176426@mwandaSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      4e59dd24
    • Viorel Suman's avatar
      ASoC: fsl_xcvr: fix break condition · 048751de
      Viorel Suman authored
      The break condition copied by mistake as same
      as loop condition in the previous version, but must
      be the opposite. So fix it.
      Signed-off-by: default avatarViorel Suman <viorel.suman@nxp.com>
      Link: https://lore.kernel.org/r/20201102161810.902464-1-viorel.suman@oss.nxp.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      048751de
    • Sameer Pujar's avatar
      ASoC: audio-graph: Expose helpers from audio graph · e32b100b
      Sameer Pujar authored
      This commit exposes following functions which can be used by a sound
      card driver based on generic audio graph driver. Idea is vendors can
      have a thin driver and re-use common stuff from audio graph driver.
      
       - graph_card_probe()
       - graph_parse_of()
      
      In doing so a new header file is added for above. The graph_probe()
      function is simplified by moving more common stuff to graph_parse_of().
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/1604329814-24779-8-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      e32b100b
    • Sameer Pujar's avatar
      ASoC: audio-graph: Expose new members for asoc_simple_priv · d09c774f
      Sameer Pujar authored
      Add new members in struct 'asoc_simple_priv'. Idea is to leverage
      simple or graph card driver as much as possible and vendor can
      maintain a thin driver to control the behavior by populating these
      newly exposed members.
      
      Following are the members added in 'asoc_simple_priv':
      
        - 'ops' struct: In some cases SoC vendor drivers may want to
          implement 'snd_soc_ops' callbacks differently. In such cases
          custom callbacks would be used.
      
        - 'force_dpcm' flag: Right now simple or graph card drivers
          detect DAI links as DPCM links if:
      
            * The dpcm_selectable is set AND
            * Codec is connected to multiple CPU endpoints or aconvert
              property is used for rate/channels.
      
          So there is no way to directly specify usage of DPCM alone. So a
          flag is exposed to mark all links as DPCM. Vendor driver can
          set this if required.
      
        - 'dpcm_selectable': Currently simple or audio graph drivers
          provide a way to enable this for specific compatibles. However
          vendor driver may want to define some additional info. Thus
          expose this variable where vendor drivers can set this if
          required.
      
      Audio graph driver is updated to consider above flags or callbacks.
      Subsequent patches in the series illustrate usage for above.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/1604329814-24779-7-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      d09c774f
    • Sameer Pujar's avatar
      ASoC: audio-graph: Support empty Codec endpoint · 930dd47d
      Sameer Pujar authored
      For open platforms, which can support pluggable audio cards, Codec
      endpoint is not fixed always. It actually depends on the compatible
      HW module that is going to be connected. From SoC side the given I/O
      interface is always available. Hence such links have fixed CPU endpoint
      but no Codec endpoint. This patch helps to support such links where
      user can populate Codec endpoint only and its fields in Platform DT
      depending on the plugged HW.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/1604329814-24779-6-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      930dd47d
    • Sameer Pujar's avatar
      ASoC: audio-graph: Identify 'no_pcm' DAI links for DPCM · c21cbb52
      Sameer Pujar authored
      PCM devices are created for FE dai links with 'no-pcm' flag as '0'.
      Such DAI links have CPU component which implement either pcm_construct()
      or pcm_new() at component or dai level respectively. Based on this,
      current patch exposes a helper function to identify such components
      and populate 'no_pcm' flag for DPCM DAI link.
      
      This helps to have BE<->BE component links where PCM devices need
      not be created for CPU component involved in such links.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/1604329814-24779-5-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      c21cbb52
    • Sameer Pujar's avatar
      ASoC: audio-graph: Use of_node and DAI for DPCM DAI link names · e6aeb375
      Sameer Pujar authored
      For multiple instances of components, using DAI name alone for DAI links
      is causing conflicts. Components can define multiple DAIs and hence using
      just a device name won't help either. Thus DT device node reference and
      DAI names are used to uniquely represent DAI link names.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Acked-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/1604329814-24779-4-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      e6aeb375
    • Sameer Pujar's avatar
      ASoC: soc-pcm: Get all BEs along DAPM path · aa293777
      Sameer Pujar authored
      dpcm_end_walk_at_be() stops the graph walk when first BE is found for
      the given FE component. In a component model we may want to connect
      multiple DAIs from different components. A new flag is introduced in
      'snd_soc_card', which when set allows DAI/component chaining. Later
      PCM operations can be called for all these listed components for a
      valid DAPM path.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1604329814-24779-3-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      aa293777
    • Sameer Pujar's avatar
      ASoC: soc-core: Fix component name_prefix parsing · 3256ef98
      Sameer Pujar authored
      The "prefix" can be defined in DAI link node or it can be specified as
      part of the component node itself. Currently "sound-name-prefix" defined
      in a component is not taking effect. Actually the property is not getting
      parsed. It can be fixed by parsing "sound-name-prefix" property whenever
      "prefix" is missing in DAI link Codec node.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1604329814-24779-2-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      3256ef98