1. 22 Jul, 2020 16 commits
  2. 21 Jul, 2020 5 commits
    • Mark Brown's avatar
      Merge series "Add ASoC AHUB components for Tegra210 and later" from Sameer... · 43a10bf4
      Mark Brown authored
      Merge series "Add ASoC AHUB components for Tegra210 and later" from Sameer Pujar <spujar@nvidia.com>:
      
      Overview
      ========
      Audio Processing Engine (APE) comprises of Audio DMA (ADMA) and Audio
      Hub (AHUB) unit. AHUB is a collection of hardware accelerators for audio
      pre-processing and post-processing. It also includes a programmable full
      crossbar for routing audio data across these accelerators.
      
      This series exposes some of these below mentioned HW devices as ASoC
      components for Tegra platforms from Tegra210 onwards.
       * ADMAIF : The interface between ADMA and AHUB
       * XBAR   : Crossbar for routing audio samples across various modules
       * I2S    : Inter-IC Sound Controller
       * DMIC   : Digital Microphone
       * DSPK   : Digital Speaker
      
      Following is the summary of current series.
       * Add YAML DT binding documentation for above mentioned modules.
       * Helper function for ACIF programming is exposed for Tegra210 and later.
       * Add ASoC driver components for each of the above modules.
       * Build ACONNECT and ADMA drivers which are essential to realize audio
         use case.
       * Add DT entries for above components for Tegra210, Tegra186 and
         Tegra194.
      
      As per the suggestion in [0] audio graph based sound card support
      is pushed in a separate series.
      
      [0] https://lkml.org/lkml/2020/6/27/4
      
      Changelog
      =========
      
      v4 -> v5
      --------
       * Common changes
         - simple-card driver changes are dropped. Changes are migrated to audio
           graph card and are moved to a separate series as suggested.
      
         - '#sound-dai-cells' property is not needed for planned audio graph card
           Hence dropped from documentation and related DT binding of component
           drivers.
      
         - CIF and DAP DAIs are added for I/O drivers (DMIC, DSPK, I2S) to
           represent DAI links using audio graph card. Similary DAIs are added in
           AHUB driver to describe endpoints in audio crossbar. Routing is updated
           to reflect the same in drivers.
      
      v3 -> v4
      --------
       * [1/23] "ASoC: dt-bindings: tegra: Add DT bindings for Tegra210"
         - Removed multiple examples and retained one example per doc
         - Fixed as per inputs on the previous series
         - Tested bindings with 'make dt_binding_check/dtbs_check'
      
       * [2/23] "ASoC: tegra: Add support for CIF programming"
         - No change
      
       * Common changes (for patch [3/10] to [7/10])
         - Mixer control overrides, for PCM parameters (rate, channel, bits),
           in each driver are dropped.
         - Updated routing as per DPCM usage
         - Minor changes related to formatting
      
       * New changes (patch [8/23] to [18/23] and patch [23/23])
         - Based on discussions in following threads DPCM is used for Tegra Audio.
           https://lkml.org/lkml/2020/2/20/91
           https://lkml.org/lkml/2020/4/30/519
         - The simple-card driver is used for Tegra Audio and accordingly
           some enhancements are made in simple-card and core drivers.
         - Patch [8/23] to [18/23] are related to simple-card and core changes.
         - Patch [23/23] adds sound card support to realize complete audio path.
           This is based on simple-card driver with proposed enhancements.
         - Re-ordered patches depending on above
      
      v2 -> v3
      --------
       * [1/10]  "dt-bindings: sound: tegra: add DT binding for AHUB
         - Updated licence
         - Removed redundancy w.r.t items/const/enum
         - Added constraints wherever needed with "pattern" property
      
       * [2/10]  "ASoC: tegra: add support for CIF programming"
         - Removed tegra_cif.c
         - Instead added inline helper function in tegra_cif.h
      
       * common changes (for patch [3/10] to [7/10])
         - Replace LATE system calls with Normal sleep
         - Remove explicit RPM suspend in driver remove() call
         - Use devm_kzalloc() instead of devm_kcalloc() for single element
         - Replace 'ret' with 'err' for better reading
         - Consistent error printing style across drivers
         - Minor formating fixes
      
       * [8/10]  "arm64: tegra: add AHUB components for few Tegra chips"
         - no change
      
       * [9/10]  "arm64: tegra: enable AHUB modules for few Tegra chips"
         - no change
      
       * [10/10] "arm64: defconfig: enable AHUB components for Tegra210 and later"
         (New patch)
         - Enables ACONNECT and AHUB components. With this AHUB and components are
           registered with ASoC core.
      
      v1 -> v2
      --------
       * [1/9] "dt-bindings: sound: tegra: add DT binding for AHUB"
         - no changes
      
       * [2/9] "ASoC: tegra: add support for CIF programming"
         - removed CIF programming changes for legacy chips.
         - this patch now exposes helper function for CIF programming,
           which can be used on Tegra210 later.
         - later tegra_cif.c can be extended for legacy chips as well.
         - updated commit message accordingly
      
       * [3/9] "ASoC: tegra: add Tegra210 based DMIC driver"
         - removed unnecessary initialization of 'ret' in probe()
      
       * [4/9] "ASoC: tegra: add Tegra210 based I2S driver"
         - removed unnecessary initialization of 'ret' in probe()
         - fixed indentation
         - added consistent bracing for if-else clauses
         - updated 'rx_fifo_th' type to 'unsigned int'
         - used BIT() macro for defines like '1 << {x}' in tegra210_i2s.h
      
       * [5/9] "ASoC: tegra: add Tegra210 based AHUB driver"
         - used of_device_get_match_data() to get 'soc_data' and removed
          explicit of_match_device()
         - used devm_platform_ioremap_resource() and removed explicit
          platform_get_resource()
         - fixed indentation for devm_snd_soc_register_component()
         - updated commit message
         - updated commit message to reflect compatible binding for Tegra186 and
           Tegra194.
      
       * [6/9] "ASoC: tegra: add Tegra186 based DSPK driver"
         - removed unnecessary initialization of 'ret' in probe()
         - updated 'max_th' to 'unsigned int'
         - shortened lengthy macro names to avoid wrapping in
           tegra186_dspk_wr_reg() and to be consistent
      
       * [7/9] "ASoC: tegra: add Tegra210 based ADMAIF driver"
         - used of_device_get_match_data() and removed explicit of_match_device()
         - used BIT() macro for defines like '1 << {x}' in tegra210_admaif.h
         - updated commit message to reflect compatible binding for Tegra186 and
           Tegra194.
      
       * [8/9] "arm64: tegra: add AHUB components for few Tegra chips"
         - no change
      
       * [9/9] "arm64: tegra: enable AHUB modules for few Tegra chips"
         - no change
      
       * common changes for patch [3/9] to [7/9]
         - sorted headers in alphabetical order
         - moved MODULE_DEVICE_TABLE() right below *_of_match table
         - removed macro DRV_NAME
         - removed explicit 'owner' field from platform_driver structure
         - added 'const' to snd_soc_dai_ops structure
      
      Sameer Pujar (11):
        ASoC: dt-bindings: tegra: Add DT bindings for Tegra210
        ASoC: tegra: Add support for CIF programming
        ASoC: tegra: Add Tegra210 based DMIC driver
        ASoC: tegra: Add Tegra210 based I2S driver
        ASoC: tegra: Add Tegra210 based AHUB driver
        ASoC: tegra: Add Tegra186 based DSPK driver
        ASoC: tegra: Add Tegra210 based ADMAIF driver
        arm64: defconfig: Build AHUB component drivers
        arm64: defconfig: Build ADMA and ACONNECT driver
        arm64: tegra: Enable ACONNECT, ADMA and AGIC on Jetson Nano
        arm64: tegra: Add DT binding for AHUB components
      
       .../bindings/sound/nvidia,tegra186-dspk.yaml       |  83 +++
       .../bindings/sound/nvidia,tegra210-admaif.yaml     | 111 +++
       .../bindings/sound/nvidia,tegra210-ahub.yaml       | 136 ++++
       .../bindings/sound/nvidia,tegra210-dmic.yaml       |  83 +++
       .../bindings/sound/nvidia,tegra210-i2s.yaml        | 101 +++
       arch/arm64/boot/dts/nvidia/tegra186.dtsi           | 217 +++++-
       arch/arm64/boot/dts/nvidia/tegra194.dtsi           | 225 +++++-
       arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts |  12 +
       arch/arm64/boot/dts/nvidia/tegra210.dtsi           | 140 ++++
       arch/arm64/configs/defconfig                       |   8 +
       sound/soc/tegra/Kconfig                            |  56 ++
       sound/soc/tegra/Makefile                           |  10 +
       sound/soc/tegra/tegra186_dspk.c                    | 442 +++++++++++
       sound/soc/tegra/tegra186_dspk.h                    |  70 ++
       sound/soc/tegra/tegra210_admaif.c                  | 800 ++++++++++++++++++++
       sound/soc/tegra/tegra210_admaif.h                  | 162 ++++
       sound/soc/tegra/tegra210_ahub.c                    | 676 +++++++++++++++++
       sound/soc/tegra/tegra210_ahub.h                    | 127 ++++
       sound/soc/tegra/tegra210_dmic.c                    | 455 ++++++++++++
       sound/soc/tegra/tegra210_dmic.h                    |  82 +++
       sound/soc/tegra/tegra210_i2s.c                     | 812 +++++++++++++++++++++
       sound/soc/tegra/tegra210_i2s.h                     | 126 ++++
       sound/soc/tegra/tegra_cif.h                        |  65 ++
       sound/soc/tegra/tegra_pcm.c                        | 235 +++++-
       sound/soc/tegra/tegra_pcm.h                        |  21 +-
       25 files changed, 5251 insertions(+), 4 deletions(-)
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra186-dspk.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-admaif.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-dmic.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-i2s.yaml
       create mode 100644 sound/soc/tegra/tegra186_dspk.c
       create mode 100644 sound/soc/tegra/tegra186_dspk.h
       create mode 100644 sound/soc/tegra/tegra210_admaif.c
       create mode 100644 sound/soc/tegra/tegra210_admaif.h
       create mode 100644 sound/soc/tegra/tegra210_ahub.c
       create mode 100644 sound/soc/tegra/tegra210_ahub.h
       create mode 100644 sound/soc/tegra/tegra210_dmic.c
       create mode 100644 sound/soc/tegra/tegra210_dmic.h
       create mode 100644 sound/soc/tegra/tegra210_i2s.c
       create mode 100644 sound/soc/tegra/tegra210_i2s.h
       create mode 100644 sound/soc/tegra/tegra_cif.h
      
      --
      2.7.4
      43a10bf4
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based ADMAIF driver · f74028e1
      Sameer Pujar authored
      ADMAIF is the interface between ADMA and AHUB. Each ADMA channel that
      sends/receives data to/from AHUB must intreface through an ADMAIF channel.
      ADMA channel sending data to AHUB pairs with an ADMAIF Tx channel and
      similarly ADMA channel receiving data from AHUB pairs with an ADMAIF Rx
      channel. Buffer size is configurable for each ADMAIF channel, but currently
      SW uses default values.
      
      This patch registers ADMAIF driver with ASoC framework. The component
      driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
      driver exposes ADMAIF interfaces, which can be used to connect different
      components in the ASoC layer. Makefile and Kconfig support is added to
      allow to build the driver. The ADMAIF device can be enabled in the DT via
      "nvidia,tegra210-admaif" compatible binding.
      
      Tegra PCM driver is updated to expose required PCM interfaces and
      snd_pcm_ops callbacks.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1595134890-16470-8-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      f74028e1
    • Dan Murphy's avatar
      ASoC: tas2770: Convert tas2770 binding to yaml · ad0ddbb9
      Dan Murphy authored
      Convert the tas2770 binding to yaml format.
      Add in the reset-gpio to the binding as it is in the code but not
      documented in the binding.
      Signed-off-by: default avatarDan Murphy <dmurphy@ti.com>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Link: https://lore.kernel.org/r/20200720181202.31000-1-dmurphy@ti.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      ad0ddbb9
    • Dan Murphy's avatar
      ASoC: tas2770: Fix reset gpio property name · 58b868f5
      Dan Murphy authored
      Fix the reset property name when allocating the GPIO descriptor.
      The gpiod_get_optional appends either the -gpio or -gpios suffix to the
      name.
      
      Fixes: 1a476abc ("tas2770: add tas2770 smart PA kernel driver")
      Signed-off-by: default avatarDan Murphy <dmurphy@ti.com>
      Link: https://lore.kernel.org/r/20200720181202.31000-2-dmurphy@ti.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      58b868f5
    • Thierry Reding's avatar
      ASoC: sgtl5000: Convert to json-schema · c3061bc7
      Thierry Reding authored
      Convert the Freescale SGTL5000 device tree bindings from free-form text
      format to json-schema.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Link: https://lore.kernel.org/r/20200608174658.1315325-1-thierry.reding@gmail.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      c3061bc7
  3. 20 Jul, 2020 19 commits
    • Mark Brown's avatar
      Merge series "ASoC: Intel: machine driver updates for 5.9" from Pierre-Louis... · b5182020
      Mark Brown authored
      Merge series "ASoC: Intel: machine driver updates for 5.9" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
      
      Small patchset to harden the SoundWire machine driver, change bad
      HIDs, update PLL settings and avoid memory leaks. Given that the
      SoundWire core parts are not upstream it's probably not necessary to
      provide the patches to stable branches.
      
      Bard Liao (1):
        ASoC: Intel: sof_sdw_rt711: remove hard-coded codec name
      
      Kai Vehmanen (2):
        ASoC: Intel: sof_sdw: add support for systems without i915 audio
        ASoC: Intel: sof_sdw: avoid crash if invalid DSP topology loaded
      
      Libin Yang (1):
        ASoC: Intel: common: change match table ehl-rt5660
      
      Pierre-Louis Bossart (1):
        ASoC: Intel: sof_sdw_rt711: remove properties in card remove
      
      Yong Zhi (1):
        ASoC: intel: board: sof_rt5682: Update rt1015 pll input clk freq
      
       sound/soc/intel/boards/sof_rt5682.c           |  9 +++++-
       sound/soc/intel/boards/sof_sdw.c              | 31 +++++++++++++------
       sound/soc/intel/boards/sof_sdw_common.h       |  2 ++
       sound/soc/intel/boards/sof_sdw_hdmi.c         |  6 ++++
       sound/soc/intel/boards/sof_sdw_rt711.c        | 17 +++++++++-
       .../intel/common/soc-acpi-intel-ehl-match.c   |  2 +-
       6 files changed, 54 insertions(+), 13 deletions(-)
      
      base-commit: 22e9b543
      --
      2.25.1
      b5182020
    • Yong Zhi's avatar
      ASoC: intel: board: sof_rt5682: Update rt1015 pll input clk freq · 0d95d06a
      Yong Zhi authored
      In commit d696a614 ("ASoC: rt1015: Add condition to prevent SoC
      providing bclk in ratio of 50 times of sample rate."), PLL input at 50fs
      is no longer supported, the new recommended settings at 48Khz rate are:
      
      PLL input       SSP bclk
      ------------------------
      64fs            3.073Mhz
      100fs           4.8Mhz
      
      (bclk update is reflected in topoplogy.)
      Signed-off-by: default avatarYong Zhi <yong.zhi@intel.com>
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
      Link: https://lore.kernel.org/r/20200717211337.31956-6-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      0d95d06a
    • Kai Vehmanen's avatar
      ASoC: Intel: sof_sdw: avoid crash if invalid DSP topology loaded · 6b540ac7
      Kai Vehmanen authored
      The mc_private->hdmi_pcm_list is populated by elements loaded during
      DSP topology load. Valid topologies for this machine driver will always
      have PCM nodes for HDMI, but driver should fail gracefully even in the case
      this is not true. Add a sanity check to sof_sdw_hdmi_card_late_probe()
      for this case. Without the fix, a null pcm handle gets dereferenced.
      Signed-off-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Reviewed-by: default avatarGuennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
      Reviewed-by: default avatarRander Wang <rander.wang@linux.intel.com>
      Link: https://lore.kernel.org/r/20200717211337.31956-5-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      6b540ac7
    • Kai Vehmanen's avatar
      ASoC: Intel: sof_sdw: add support for systems without i915 audio · 15ef2ea0
      Kai Vehmanen authored
      Extend the generic SOF Soundwire machine driver to support systems where
      iDisp HDMI/DP audio codec is disabled for some reason (i915 driver
      disabled, HDMI/DP implemented with a discrete GPU, etc). Switch codecs
      to SoC dummy in the affected DAI links. This allows to reuse existing
      topologies for this case.
      Signed-off-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Reviewed-by: default avatarGuennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
      Reviewed-by: default avatarRander Wang <rander.wang@linux.intel.com>
      Link: https://lore.kernel.org/r/20200717211337.31956-4-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      15ef2ea0
    • Pierre-Louis Bossart's avatar
      ASoC: Intel: sof_sdw_rt711: remove properties in card remove · cf0418cd
      Pierre-Louis Bossart authored
      The rt711 jack detection properties are set from the machine drivers
      during the card probe, as done in other ASoC examples.
      
      KASAN reports a use-after-free error when unbinding drivers due to a
      confusing sequence between the ACPI core, the device core and the
      SoundWire device cleanups.
      
      Rather than fixing this sequence, follow the recommendation to have
      the same caller add and remove properties, add an explicit
      device_remove_properties() in the card .remove() callback.
      
      In future patches the use of device_add/remove_properties will be
      replaced by a direct handling of a swnode, but the sequence will
      remain the same.
      Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
      Link: https://lore.kernel.org/r/20200717211337.31956-3-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      cf0418cd
    • Bard Liao's avatar
    • Mark Brown's avatar
      Merge series "Add ASoC AHUB components for Tegra210 and later" from Sameer... · 6b174a49
      Mark Brown authored
      Merge series "Add ASoC AHUB components for Tegra210 and later" from Sameer Pujar <spujar@nvidia.com>:
      
      Overview
      ========
      Audio Processing Engine (APE) comprises of Audio DMA (ADMA) and Audio
      Hub (AHUB) unit. AHUB is a collection of hardware accelerators for audio
      pre-processing and post-processing. It also includes a programmable full
      crossbar for routing audio data across these accelerators.
      
      This series exposes some of these below mentioned HW devices as ASoC
      components for Tegra platforms from Tegra210 onwards.
       * ADMAIF : The interface between ADMA and AHUB
       * XBAR   : Crossbar for routing audio samples across various modules
       * I2S    : Inter-IC Sound Controller
       * DMIC   : Digital Microphone
       * DSPK   : Digital Speaker
      
      Following is the summary of current series.
       * Add YAML DT binding documentation for above mentioned modules.
       * Helper function for ACIF programming is exposed for Tegra210 and later.
       * Add ASoC driver components for each of the above modules.
       * Build ACONNECT and ADMA drivers which are essential to realize audio
         use case.
       * Add DT entries for above components for Tegra210, Tegra186 and
         Tegra194.
      
      As per the suggestion in [0] audio graph based sound card support
      is pushed in a separate series.
      
      [0] https://lkml.org/lkml/2020/6/27/4
      
      Changelog
      =========
      
      v4 -> v5
      --------
       * Common changes
         - simple-card driver changes are dropped. Changes are migrated to audio
           graph card and are moved to a separate series as suggested.
      
         - '#sound-dai-cells' property is not needed for planned audio graph card
           Hence dropped from documentation and related DT binding of component
           drivers.
      
         - CIF and DAP DAIs are added for I/O drivers (DMIC, DSPK, I2S) to
           represent DAI links using audio graph card. Similary DAIs are added in
           AHUB driver to describe endpoints in audio crossbar. Routing is updated
           to reflect the same in drivers.
      
      v3 -> v4
      --------
       * [1/23] "ASoC: dt-bindings: tegra: Add DT bindings for Tegra210"
         - Removed multiple examples and retained one example per doc
         - Fixed as per inputs on the previous series
         - Tested bindings with 'make dt_binding_check/dtbs_check'
      
       * [2/23] "ASoC: tegra: Add support for CIF programming"
         - No change
      
       * Common changes (for patch [3/10] to [7/10])
         - Mixer control overrides, for PCM parameters (rate, channel, bits),
           in each driver are dropped.
         - Updated routing as per DPCM usage
         - Minor changes related to formatting
      
       * New changes (patch [8/23] to [18/23] and patch [23/23])
         - Based on discussions in following threads DPCM is used for Tegra Audio.
           https://lkml.org/lkml/2020/2/20/91
           https://lkml.org/lkml/2020/4/30/519
         - The simple-card driver is used for Tegra Audio and accordingly
           some enhancements are made in simple-card and core drivers.
         - Patch [8/23] to [18/23] are related to simple-card and core changes.
         - Patch [23/23] adds sound card support to realize complete audio path.
           This is based on simple-card driver with proposed enhancements.
         - Re-ordered patches depending on above
      
      v2 -> v3
      --------
       * [1/10]  "dt-bindings: sound: tegra: add DT binding for AHUB
         - Updated licence
         - Removed redundancy w.r.t items/const/enum
         - Added constraints wherever needed with "pattern" property
      
       * [2/10]  "ASoC: tegra: add support for CIF programming"
         - Removed tegra_cif.c
         - Instead added inline helper function in tegra_cif.h
      
       * common changes (for patch [3/10] to [7/10])
         - Replace LATE system calls with Normal sleep
         - Remove explicit RPM suspend in driver remove() call
         - Use devm_kzalloc() instead of devm_kcalloc() for single element
         - Replace 'ret' with 'err' for better reading
         - Consistent error printing style across drivers
         - Minor formating fixes
      
       * [8/10]  "arm64: tegra: add AHUB components for few Tegra chips"
         - no change
      
       * [9/10]  "arm64: tegra: enable AHUB modules for few Tegra chips"
         - no change
      
       * [10/10] "arm64: defconfig: enable AHUB components for Tegra210 and later"
         (New patch)
         - Enables ACONNECT and AHUB components. With this AHUB and components are
           registered with ASoC core.
      
      v1 -> v2
      --------
       * [1/9] "dt-bindings: sound: tegra: add DT binding for AHUB"
         - no changes
      
       * [2/9] "ASoC: tegra: add support for CIF programming"
         - removed CIF programming changes for legacy chips.
         - this patch now exposes helper function for CIF programming,
           which can be used on Tegra210 later.
         - later tegra_cif.c can be extended for legacy chips as well.
         - updated commit message accordingly
      
       * [3/9] "ASoC: tegra: add Tegra210 based DMIC driver"
         - removed unnecessary initialization of 'ret' in probe()
      
       * [4/9] "ASoC: tegra: add Tegra210 based I2S driver"
         - removed unnecessary initialization of 'ret' in probe()
         - fixed indentation
         - added consistent bracing for if-else clauses
         - updated 'rx_fifo_th' type to 'unsigned int'
         - used BIT() macro for defines like '1 << {x}' in tegra210_i2s.h
      
       * [5/9] "ASoC: tegra: add Tegra210 based AHUB driver"
         - used of_device_get_match_data() to get 'soc_data' and removed
          explicit of_match_device()
         - used devm_platform_ioremap_resource() and removed explicit
          platform_get_resource()
         - fixed indentation for devm_snd_soc_register_component()
         - updated commit message
         - updated commit message to reflect compatible binding for Tegra186 and
           Tegra194.
      
       * [6/9] "ASoC: tegra: add Tegra186 based DSPK driver"
         - removed unnecessary initialization of 'ret' in probe()
         - updated 'max_th' to 'unsigned int'
         - shortened lengthy macro names to avoid wrapping in
           tegra186_dspk_wr_reg() and to be consistent
      
       * [7/9] "ASoC: tegra: add Tegra210 based ADMAIF driver"
         - used of_device_get_match_data() and removed explicit of_match_device()
         - used BIT() macro for defines like '1 << {x}' in tegra210_admaif.h
         - updated commit message to reflect compatible binding for Tegra186 and
           Tegra194.
      
       * [8/9] "arm64: tegra: add AHUB components for few Tegra chips"
         - no change
      
       * [9/9] "arm64: tegra: enable AHUB modules for few Tegra chips"
         - no change
      
       * common changes for patch [3/9] to [7/9]
         - sorted headers in alphabetical order
         - moved MODULE_DEVICE_TABLE() right below *_of_match table
         - removed macro DRV_NAME
         - removed explicit 'owner' field from platform_driver structure
         - added 'const' to snd_soc_dai_ops structure
      
      Sameer Pujar (11):
        ASoC: dt-bindings: tegra: Add DT bindings for Tegra210
        ASoC: tegra: Add support for CIF programming
        ASoC: tegra: Add Tegra210 based DMIC driver
        ASoC: tegra: Add Tegra210 based I2S driver
        ASoC: tegra: Add Tegra210 based AHUB driver
        ASoC: tegra: Add Tegra186 based DSPK driver
        ASoC: tegra: Add Tegra210 based ADMAIF driver
        arm64: defconfig: Build AHUB component drivers
        arm64: defconfig: Build ADMA and ACONNECT driver
        arm64: tegra: Enable ACONNECT, ADMA and AGIC on Jetson Nano
        arm64: tegra: Add DT binding for AHUB components
      
       .../bindings/sound/nvidia,tegra186-dspk.yaml       |  83 +++
       .../bindings/sound/nvidia,tegra210-admaif.yaml     | 111 +++
       .../bindings/sound/nvidia,tegra210-ahub.yaml       | 136 ++++
       .../bindings/sound/nvidia,tegra210-dmic.yaml       |  83 +++
       .../bindings/sound/nvidia,tegra210-i2s.yaml        | 101 +++
       arch/arm64/boot/dts/nvidia/tegra186.dtsi           | 217 +++++-
       arch/arm64/boot/dts/nvidia/tegra194.dtsi           | 225 +++++-
       arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts |  12 +
       arch/arm64/boot/dts/nvidia/tegra210.dtsi           | 140 ++++
       arch/arm64/configs/defconfig                       |   8 +
       sound/soc/tegra/Kconfig                            |  56 ++
       sound/soc/tegra/Makefile                           |  10 +
       sound/soc/tegra/tegra186_dspk.c                    | 442 +++++++++++
       sound/soc/tegra/tegra186_dspk.h                    |  70 ++
       sound/soc/tegra/tegra210_admaif.c                  | 800 ++++++++++++++++++++
       sound/soc/tegra/tegra210_admaif.h                  | 162 ++++
       sound/soc/tegra/tegra210_ahub.c                    | 676 +++++++++++++++++
       sound/soc/tegra/tegra210_ahub.h                    | 127 ++++
       sound/soc/tegra/tegra210_dmic.c                    | 455 ++++++++++++
       sound/soc/tegra/tegra210_dmic.h                    |  82 +++
       sound/soc/tegra/tegra210_i2s.c                     | 812 +++++++++++++++++++++
       sound/soc/tegra/tegra210_i2s.h                     | 126 ++++
       sound/soc/tegra/tegra_cif.h                        |  65 ++
       sound/soc/tegra/tegra_pcm.c                        | 235 +++++-
       sound/soc/tegra/tegra_pcm.h                        |  21 +-
       25 files changed, 5251 insertions(+), 4 deletions(-)
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra186-dspk.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-admaif.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-dmic.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-i2s.yaml
       create mode 100644 sound/soc/tegra/tegra186_dspk.c
       create mode 100644 sound/soc/tegra/tegra186_dspk.h
       create mode 100644 sound/soc/tegra/tegra210_admaif.c
       create mode 100644 sound/soc/tegra/tegra210_admaif.h
       create mode 100644 sound/soc/tegra/tegra210_ahub.c
       create mode 100644 sound/soc/tegra/tegra210_ahub.h
       create mode 100644 sound/soc/tegra/tegra210_dmic.c
       create mode 100644 sound/soc/tegra/tegra210_dmic.h
       create mode 100644 sound/soc/tegra/tegra210_i2s.c
       create mode 100644 sound/soc/tegra/tegra210_i2s.h
       create mode 100644 sound/soc/tegra/tegra_cif.h
      
      --
      2.7.4
      6b174a49
    • Mark Brown's avatar
      Merge series "ASoC: Intel: machine driver updates for 5.9" from Pierre-Louis... · 4d9e07cc
      Mark Brown authored
      Merge series "ASoC: Intel: machine driver updates for 5.9" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
      
      Small patchset to harden the SoundWire machine driver, change bad
      HIDs, update PLL settings and avoid memory leaks. Given that the
      SoundWire core parts are not upstream it's probably not necessary to
      provide the patches to stable branches.
      
      Bard Liao (1):
        ASoC: Intel: sof_sdw_rt711: remove hard-coded codec name
      
      Kai Vehmanen (2):
        ASoC: Intel: sof_sdw: add support for systems without i915 audio
        ASoC: Intel: sof_sdw: avoid crash if invalid DSP topology loaded
      
      Libin Yang (1):
        ASoC: Intel: common: change match table ehl-rt5660
      
      Pierre-Louis Bossart (1):
        ASoC: Intel: sof_sdw_rt711: remove properties in card remove
      
      Yong Zhi (1):
        ASoC: intel: board: sof_rt5682: Update rt1015 pll input clk freq
      
       sound/soc/intel/boards/sof_rt5682.c           |  9 +++++-
       sound/soc/intel/boards/sof_sdw.c              | 31 +++++++++++++------
       sound/soc/intel/boards/sof_sdw_common.h       |  2 ++
       sound/soc/intel/boards/sof_sdw_hdmi.c         |  6 ++++
       sound/soc/intel/boards/sof_sdw_rt711.c        | 17 +++++++++-
       .../intel/common/soc-acpi-intel-ehl-match.c   |  2 +-
       6 files changed, 54 insertions(+), 13 deletions(-)
      
      base-commit: 22e9b543
      --
      2.25.1
      4d9e07cc
    • Randy Dunlap's avatar
      ASoC: soc-dai.h: drop a duplicated word · fc926a7c
      Randy Dunlap authored
      Drop the repeated word "be" in a comment.
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Liam Girdwood <lgirdwood@gmail.com>
      Cc: Mark Brown <broonie@kernel.org>
      Cc: alsa-devel@alsa-project.org
      Link: https://lore.kernel.org/r/20200719003307.21403-1-rdunlap@infradead.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      fc926a7c
    • Randy Dunlap's avatar
      ASoC: wcd9335.h: fix duplicated word · 09e52090
      Randy Dunlap authored
      Fix the doubled word "in" in a comment by adding punctuation
      in 3 places and capitalization.
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Mark Brown <broonie@kernel.org>
      Cc: alsa-devel@alsa-project.org
      Link: https://lore.kernel.org/r/20200719180901.30720-1-rdunlap@infradead.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      09e52090
    • Randy Dunlap's avatar
      ASoC: tegra20_das.h: delete duplicated words · e1b4a53d
      Randy Dunlap authored
      Delete the doubled word "to" in two comments.
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Stephen Warren <swarren@nvidia.com>
      Cc: Mark Brown <broonie@kernel.org>
      Cc: alsa-devel@alsa-project.org
      Link: https://lore.kernel.org/r/20200719180912.30770-1-rdunlap@infradead.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      e1b4a53d
    • Gustavo A. R. Silva's avatar
      23f8d964
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra186 based DSPK driver · 327ef647
      Sameer Pujar authored
      The Digital Speaker Controller (DSPK) converts the multi-bit Pulse Code
      Modulation (PCM) audio input to oversampled 1-bit Pulse Density Modulation
      (PDM) output. From the signal flow perpsective, the DSPK can be viewed as
      a PDM transmitter that up-samples the input to the desired sampling rate
      by interpolation then converts the oversampled PCM input to the desired
      1-bit output via Delta Sigma Modulation (DSM).
      
      This patch registers DSPK component with ASoC framework. The component
      driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
      driver exposes DSPK interfaces, which can be used to connect different
      components in the ASoC layer. Makefile and Kconfig support is added to
      allow to build the driver. The DSPK devices can be enabled in the DT via
      "nvidia,tegra186-dspk" compatible binding. This driver can be used
      on Tegra194 chip as well.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1595134890-16470-7-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      327ef647
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based AHUB driver · 16e1bcc2
      Sameer Pujar authored
      The Audio Hub (AHUB) comprises a collection of hardware accelerators for
      audio pre/post-processing and a programmable full crossbar (XBAR) for
      routing audio data across these accelerators in time and in parallel.
      AHUB supports multiple interfaces to I2S, DSPK, DMIC etc., XBAR is a
      switch used to configure or modify audio routing between HW accelerators
      present inside AHUB.
      
      This patch registers AHUB component with ASoC framework. The component
      driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
      driver exposes AHUB interfaces, which can be used to connect different
      components in the ASoC layer. Currently the driver takes care of XBAR
      programming to allow audio data flow through various clients of the AHUB.
      Makefile and Kconfig support is added to allow to build the driver. The
      AHUB component can be enabled in the DT via below compatible bindings.
        - "nvidia,tegra210-ahub" for Tegra210
        - "nvidia,tegra186-ahub" for Tegra186 and Tegra194
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1595134890-16470-6-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      16e1bcc2
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based I2S driver · c0bfa983
      Sameer Pujar authored
      The Inter-IC Sound (I2S) controller implements full-duplex, bi-directional
      and single direction point to point serial interface. It can interface
      with I2S compatible devices. Tegra I2S controller can operate as both
      master and slave.
      
      This patch registers I2S controller with ASoC framework. The component
      driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
      driver exposes I2S interfaces, which can be used to connect different
      components in the ASoC layer. Makefile and Kconfig support is added to
      allow to build the driver. The I2S devices can be enabled in the DT via
      "nvidia,tegra210-i2s" compatible binding.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1595134890-16470-5-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      c0bfa983
    • Sameer Pujar's avatar
      ASoC: tegra: Add Tegra210 based DMIC driver · 8c8ff982
      Sameer Pujar authored
      The Digital MIC (DMIC) Controller is used to interface with Pulse Density
      Modulation (PDM) input devices. The DMIC controller implements a converter
      to convert PDM signals to Pulse Code Modulation (PCM) signals. From signal
      flow perspective, the DMIC can be viewed as a PDM receiver.
      
      This patch registers DMIC component with ASoC framework. The component
      driver exposes DAPM widgets, routes and kcontrols for the device. The DAI
      driver exposes DMIC interfaces, which can be used to connect different
      components in the ASoC layer. Makefile and Kconfig support is added to
      allow to build the driver. The DMIC devices can be enabled in the DT via
      "nvidia,tegra210-dmic" compatible string. This driver can be used for
      Tegra186 and Tegra194 chips as well.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1595134890-16470-4-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      8c8ff982
    • Sameer Pujar's avatar
      ASoC: tegra: Add support for CIF programming · 1c3b89fb
      Sameer Pujar authored
      Audio Client Interface (CIF) is a proprietary interface employed to route
      audio samples through Audio Hub (AHUB) components by inter connecting the
      various modules.
      
      This patch exports an inline function tegra_set_cif() which can be used,
      for now, to program CIF on Tegra210 and later Tegra generations. Later it
      can be extended to include helpers for legacy chips as well.
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Reviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Reviewed-by: default avatarDmitry Osipenko <digetx@gmail.com>
      Link: https://lore.kernel.org/r/1595134890-16470-3-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      1c3b89fb
    • Sameer Pujar's avatar
      ASoC: dt-bindings: tegra: Add DT bindings for Tegra210 · 665308c0
      Sameer Pujar authored
      This patch adds YAML schema for DT binding of AHUB and few of its
      following components. These devices will be registered as ASoC
      components and binding will be used on Tegra210 and later chips.
       * ADMAIF
       * I2S
       * DMIC
       * DSPK
      DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1;
      	t=1595134894; bh=DX96zRQRNplPikN828HbAfbjGumAn9IgtktrsenKjgk=;
      	h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer:
      	 In-Reply-To:References:X-NVConfidentiality:MIME-Version:
      	 Content-Type;
      	b=IhfGFjMxsnRHso1Ku2GEGC+mtLCy3AbRKPfgTS56XGqEWquUr/1s8n9tFpriqF7a+
      	 tJGrTN9mKhRQGrwdey/AHsMY4Tbm4fKEWxIASgAV/lFPCfgP3BnVjEdHclc7FdBaB0
      	 Qvd3zs8HFsgoIzksLrtHNMrUepkeZajn0/XnC7nghGDRim4+6Hauupr5kj/KVlihsS
      	 KS1YQ2Zz9TZzLaC5QXALiHj3ATLvBFrmIf6Vj19q7hePt0menTZVzQNy+y3h4xZfLH
      	 +OvBCsLgHGGhq+iM9rm64D+S5Op2vCslwq3Q/42TnYZ0vDbD7aA9nTAQzfYeI6HK6b
      	 vi7eYbryzCTSg==
      Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
      Link: https://lore.kernel.org/r/1595134890-16470-2-git-send-email-spujar@nvidia.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      665308c0
    • Libin Yang's avatar
      ASoC: Intel: common: change match table ehl-rt5660 · 58ef6002
      Libin Yang authored
      This configuration is for EHL with the RT5660 codec. RT5660
      should use "10EC5660" ID instead of "INTC1027".
      Signed-off-by: default avatarLibin Yang <libin.yang@intel.com>
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Reviewed-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
      Link: https://lore.kernel.org/r/20200717211337.31956-7-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      58ef6002