1. 03 Apr, 2020 4 commits
  2. 02 Apr, 2020 2 commits
  3. 31 Mar, 2020 5 commits
    • Andreas Steinmetz's avatar
      ALSA: usb-audio: Fix case when USB MIDI interface has more than one extra endpoint descriptor · 5c6cd702
      Andreas Steinmetz authored
      The Miditech MIDIFACE 16x16 (USB ID 1290:1749) has more than one extra
      endpoint descriptor.
      
      The first extra descriptor is: 0x06 0x30 0x00 0x00 0x00 0x00
      
      As the code in snd_usbmidi_get_ms_info() looks only at the
      first extra descriptor to find USB_DT_CS_ENDPOINT the device
      as such is recognized but there is neither input nor output
      configured.
      
      The patch iterates through the extra descriptors to find the
      proper one. With this patch the device is correctly configured.
      Signed-off-by: default avatarAndreas Steinmetz <ast@domdv.de>
      Link: https://lore.kernel.org/r/1c3b431a86f69e1d60745b6110cdb93c299f120b.camel@domdv.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      5c6cd702
    • Takashi Iwai's avatar
      Revert "ALSA: uapi: Drop asound.h inclusion from asoc.h" · b6f69c79
      Takashi Iwai authored
      This reverts commit 645c08f1
      which was reported to break the build a program using this header.
      
      The original issue was addressed in the alsa-lib side recently, so we
      can make the header more self-contained again.
      Reported-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Fixes: 645c08f1 ("ALSA: uapi: Drop asound.h inclusion from asoc.h")
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20200331090023.8112-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      b6f69c79
    • Thomas Hebb's avatar
      ALSA: hda/realtek - Remove now-unnecessary XPS 13 headphone noise fixups · f36938aa
      Thomas Hebb authored
      patch_realtek.c has historically failed to properly configure the PC
      Beep Hidden Register for the ALC256 codec (among others). Depending on
      your kernel version, symptoms of this misconfiguration can range from
      chassis noise, picked up by a poorly-shielded PCBEEP trace, getting
      amplified and played on your internal speaker and/or headphones to loud
      feedback, which responds to the "Headphone Mic Boost" ALSA control,
      getting played through your headphones. For details of the problem, see
      the patch in this series titled "ALSA: hda/realtek - Set principled PC
      Beep configuration for ALC256", which fixes the configuration.
      
      These symptoms have been most noticed on the Dell XPS 13 9350 and 9360,
      popular laptops that use the ALC256. As a result, several model-specific
      fixups have been introduced to try and fix the problem, the most
      egregious of which locks the "Headphone Mic Boost" control as a hack to
      minimize noise from a feedback loop that shouldn't have been there in
      the first place.
      
      Now that the underlying issue has been fixed, remove all these fixups.
      Remaining fixups needed by the XPS 13 are all picked up by existing pin
      quirks.
      
      This change should, for the XPS 13 9350/9360
      
       - Significantly increase volume and audio quality on headphones
       - Eliminate headphone popping on suspend/resume
       - Allow "Headphone Mic Boost" to be set again, making the headphone
         jack fully usable as a microphone jack too.
      
      Fixes: 8c69729b ("ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3")
      Fixes: 423cd785 ("ALSA: hda - Fix headphone noise on Dell XPS 13 9360")
      Fixes: e4c9fd10 ("ALSA: hda - Apply headphone noise quirk for another Dell XPS 13 variant")
      Fixes: 1099f484 ("ALSA: hda/realtek: Reduce the Headphone static noise on XPS 9350/9360")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarThomas Hebb <tommyhebb@gmail.com>
      Link: https://lore.kernel.org/r/b649a00edfde150cf6eebbb4390e15e0c2deb39a.1585584498.git.tommyhebb@gmail.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      f36938aa
    • Thomas Hebb's avatar
      ALSA: hda/realtek - Set principled PC Beep configuration for ALC256 · c4473744
      Thomas Hebb authored
      The Realtek PC Beep Hidden Register[1] is currently set by
      patch_realtek.c in two different places:
      
      In alc_fill_eapd_coef(), it's set to the value 0x5757, corresponding to
      non-beep input on 1Ah and no 1Ah loopback to either headphones or
      speakers. (Although, curiously, the loopback amp is still enabled.) This
      write was added fairly recently by commit e3743f431143 ("ALSA:
      hda/realtek - Dell headphone has noise on unmute for ALC236") and is a
      safe default. However, it happens in the wrong place:
      alc_fill_eapd_coef() runs on module load and cold boot but not on S3
      resume, meaning the register loses its value after suspend.
      
      Conversely, in alc256_init(), the register is updated to unset bit 13
      (disable speaker loopback) and set bit 5 (set non-beep input on 1Ah).
      Although this write does run on S3 resume, it's not quite enough to fix
      up the register's default value of 0x3717. What's missing is a set of
      bit 14 to disable headphone loopback. Without that, we end up with a
      feedback loop where the headphone jack is being driven by amplified
      samples of itself[2].
      
      This change eliminates the update in alc256_init() and replaces it with
      the 0x5757 write from alc_fill_eapd_coef(). Kailang says that 0x5757 is
      supposed to be the codec's default value, so using it will make
      debugging easier for Realtek.
      
      Affects the ALC255, ALC256, ALC257, ALC235, and ALC236 codecs.
      
      [1] Newly documented in Documentation/sound/hd-audio/realtek-pc-beep.rst
      
      [2] Setting the "Headphone Mic Boost" control from userspace changes
      this feedback loop and has been a widely-shared workaround for headphone
      noise on laptops like the Dell XPS 13 9350. This commit eliminates the
      feedback loop and makes the workaround unnecessary.
      
      Fixes: e1e8c1fd ("ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarThomas Hebb <tommyhebb@gmail.com>
      Link: https://lore.kernel.org/r/bf22b417d1f2474b12011c2a39ed6cf8b06d3bf5.1585584498.git.tommyhebb@gmail.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      c4473744
    • Thomas Hebb's avatar
      ALSA: doc: Document PC Beep Hidden Register on Realtek ALC256 · f1280904
      Thomas Hebb authored
      This codec (among others) has a hidden set of audio routes, apparently
      designed to allow PC Beep output without a mixer widget on the output
      path, which are controlled by an undocumented Realtek vendor register.
      The default configuration of these routes means that certain inputs
      aren't accessible, necessitating driver control of the register.
      However, Realtek has provided no documentation of the register, instead
      opting to fix issues by providing magic numbers, most of which have been
      at least somewhat erroneous. These magic numbers then get copied by
      others into model-specific fixups, leading to a fragmented and buggy set
      of configurations.
      
      To get out of this situation, I've reverse engineered the register by
      flipping bits and observing how the codec's behavior changes. This
      commit documents my findings. It does not change any code.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarThomas Hebb <tommyhebb@gmail.com>
      Link: https://lore.kernel.org/r/bd69dfdeaf40ff31c4b7b797c829bb320031739c.1585584498.git.tommyhebb@gmail.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      f1280904
  4. 30 Mar, 2020 2 commits
    • Takashi Iwai's avatar
      Merge tag 'asoc-v5.7' of... · 3c22baea
      Takashi Iwai authored
      Merge tag 'asoc-v5.7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      ASoC: Updates for v5.7
      
      This is a very big update for the core since Morimoto-san has been
      rather busy continuing his refactorings to clean up a lot of the cruft
      that we have accumilated over the years.  We've also gained several new
      drivers, including initial (but still not complete) parts of the Intel
      SoundWire support.
      
       - Lots of refactorings to modernize the code from Morimoto-san.
       - Conversion of SND_SOC_ALL_CODECS to use imply from Geert Uytterhoeven.
       - Continued refactoring and fixing of the Intel support.
       - Soundwire and more advanced clocking support for Realtek RT5682.
       - Support for amlogic GX, Meson 8, Meson 8B and T9015 DAC, Broadcom
         DSL/PON, Ingenic JZ4760 and JZ4770, Realtek RL6231, and TI TAS2563 and
         TLV320ADCX140.
      3c22baea
    • Takashi Iwai's avatar
      Merge branch 'for-next' into for-linus · aa21c3d4
      Takashi Iwai authored
      aa21c3d4
  5. 29 Mar, 2020 2 commits
  6. 27 Mar, 2020 25 commits
    • Mark Brown's avatar
      Merge branch 'asoc-5.7' into asoc-next · 1c521d7e
      Mark Brown authored
      1c521d7e
    • Mark Brown's avatar
      Merge branch 'asoc-5.6' into asoc-linus · 8e3bb8ec
      Mark Brown authored
      8e3bb8ec
    • Mark Brown's avatar
      Merge series "ASoC: Intel: add SoundWire machine driver" from Pierre-Louis... · 3d2cdb85
      Mark Brown authored
      Merge series "ASoC: Intel: add SoundWire machine driver" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
      
      To handle multiple hardware combinations, this patchset suggests a
      single machine driver which will create and initialize dailinks
      dynamically. This allows us to support new configurations easily, as
      shown with the TigerLake rt5682 example.
      
      Each configuration updates the card component string, and UCM can test
      for the presence of components to configure them as needed.
      
      Since we use a single the machine driver name, all previous ACPI
      tables need to be updated. That should have no impact since the
      machine drivers listed at the time were not upstreamed and are no
      longer maintained.
      
      Naveen Manohar (2):
        ASoC: Intel: common: add match table for TGL RT5682 SoundWire driver
        ASoC: Intel: sof_sdw: Add Volteer support with RT5682 SNDW helper
          function
      
      Pierre-Louis Bossart (1):
        ASoC: Intel: boards: add sof_sdw machine driver
      
      Rander Wang (1):
        ASoC: Intel: soc-acpi: update topology and driver name for SoundWire
          platforms
      
       sound/soc/intel/boards/Kconfig                |  24 +
       sound/soc/intel/boards/Makefile               |   8 +-
       sound/soc/intel/boards/sof_sdw.c              | 962 ++++++++++++++++++
       sound/soc/intel/boards/sof_sdw_common.h       | 114 +++
       sound/soc/intel/boards/sof_sdw_dmic.c         |  42 +
       sound/soc/intel/boards/sof_sdw_hdmi.c         |  97 ++
       sound/soc/intel/boards/sof_sdw_rt1308.c       | 151 +++
       sound/soc/intel/boards/sof_sdw_rt5682.c       | 126 +++
       sound/soc/intel/boards/sof_sdw_rt700.c        | 125 +++
       sound/soc/intel/boards/sof_sdw_rt711.c        | 156 +++
       sound/soc/intel/boards/sof_sdw_rt715.c        |  42 +
       .../intel/common/soc-acpi-intel-cml-match.c   |  24 +-
       .../intel/common/soc-acpi-intel-icl-match.c   |   6 +-
       .../intel/common/soc-acpi-intel-tgl-match.c   |  30 +-
       14 files changed, 1896 insertions(+), 11 deletions(-)
       create mode 100644 sound/soc/intel/boards/sof_sdw.c
       create mode 100644 sound/soc/intel/boards/sof_sdw_common.h
       create mode 100644 sound/soc/intel/boards/sof_sdw_dmic.c
       create mode 100644 sound/soc/intel/boards/sof_sdw_hdmi.c
       create mode 100644 sound/soc/intel/boards/sof_sdw_rt1308.c
       create mode 100644 sound/soc/intel/boards/sof_sdw_rt5682.c
       create mode 100644 sound/soc/intel/boards/sof_sdw_rt700.c
       create mode 100644 sound/soc/intel/boards/sof_sdw_rt711.c
       create mode 100644 sound/soc/intel/boards/sof_sdw_rt715.c
      
      --
      2.20.1
      3d2cdb85
    • Colin Ian King's avatar
      ASoC: amd: acp3x-pcm-dma: clean up two indentation issues · acd4946f
      Colin Ian King authored
      There are a couple of statements that are not indented correctly,
      add in the missing tab and break the lines to address a checkpatch
      warning.
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Link: https://lore.kernel.org/r/20200327141429.269191-1-colin.king@canonical.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      acd4946f
    • Dan Murphy's avatar
      ASoC: tlv320adcx140: Remove undocumented property · d4061518
      Dan Murphy authored
      Remove undocumented and unneeded ti,use-internal-reg from the example as
      it was an artifact from initial development.  The code does not query
      for this property and as the document indicates if areg-supply is
      undefined then the internal regulator is used.
      
      Fixes: 302c0b7490cd ("dt-bindings: sound: Add TLV320ADCx140 dt
      bindings")
      Signed-off-by: default avatarDan Murphy <dmurphy@ti.com>
      CC: Rob Herring <robh@kernel.org>
      Link: https://lore.kernel.org/r/20200327162432.17067-1-dmurphy@ti.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      d4061518
    • Naveen Manohar's avatar
      ASoC: Intel: sof_sdw: Add Volteer support with RT5682 SNDW helper function · 798313f2
      Naveen Manohar authored
      Add support for Google Volteer device. As per new unified soundwire machine
      driver, add rt5682-sdw helper function, which configures codec to Link0.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarNaveen Manohar <naveen.m@intel.com>
      Link: https://lore.kernel.org/r/20200325220746.29601-5-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      798313f2
    • Naveen Manohar's avatar
    • Pierre-Louis Bossart's avatar
      ASoC: Intel: boards: add sof_sdw machine driver · 52db12d1
      Pierre-Louis Bossart authored
      This machine driver provides support for different configurations:
      
      RT700, RT711, RT1308 (1x and 2x, I2S or SoundWire mode), and RT715
      CometLake, Icelake, TigerLake.
      PDM digital microphones
      HDMI
      
      To avoid introducing one driver per configuration, this common machine
      driver relies on platform-specific information, tables and quirks to
      dynamically create the relevant dailinks.
      
      Unlike a lot of machine drivers, we use different DAI links for
      SoundWire capture and playback since the Cadence PDIs can do capture
      OR playback, not both simultaneously.
      
      For each configuration, the card component string is updated so that UCM
      can select the relevant parts.
      Signed-off-by: default avatarRander Wang <rander.wang@linux.intel.com>
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
      Link: https://lore.kernel.org/r/20200325220746.29601-3-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      52db12d1
    • Rander Wang's avatar
    • Mark Brown's avatar
      Merge branch 'for-5.6' of... · 8c0b6e15
      Mark Brown authored
      Merge branch 'for-5.6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.7
      8c0b6e15
    • Mark Brown's avatar
      Merge series "ASoC: remove rtd->cpu/codec_dai{s}" from Kuninori Morimoto... · a23d7f4a
      Mark Brown authored
      Merge series "ASoC: remove rtd->cpu/codec_dai{s}" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
      
      Hi Mark
      
      Now, CPU/Codec DAI(s) were replaced by rtd->dais.
      Thus, We don't need rtd->cpu/codec_dai{s} anymore.
      This pathset replaces it by new macro.
      
      Kuninori Morimoto (36):
        ASoC: soc-core: add asoc_rtd_to_cpu/codec() macro
        ASoC: amd: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: atmel: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: au1x: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: bcm: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: cirrus: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: dwc: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: fsl: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: generic: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: img: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: intel: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: kirkwood: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: mediatek: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: meson: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: mxs: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: pxa: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: qcom: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: rockchip: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: samsung: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: sh: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: sof: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: sprd: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: stm: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: sunxi: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: tegra: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: ti: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: txx9: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: uniphier: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: ux500: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: xtensa: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: arm: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: codecs: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: soc: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer
        ASoC: soc-core: set rtd->num_cpu/codec at soc_new_pcm_runtime()
        ASoC: soc-core: tidyup soc_new_pcm_runtime() rtd setups
        ASoC: soc-core: remove cpu_dai/codec_dai/cpu_dais/codec_dais
      
       include/sound/soc.h                           | 30 +++++++------
       sound/arm/pxa2xx-pcm-lib.c                    |  8 ++--
       sound/soc/amd/acp-da7219-max98357a.c          |  2 +-
       sound/soc/amd/acp-rt5645.c                    |  4 +-
       sound/soc/amd/acp3x-rt5682-max9836.c          |  6 +--
       sound/soc/atmel/atmel-pcm-dma.c               |  4 +-
       sound/soc/atmel/atmel-pcm-pdc.c               |  2 +-
       sound/soc/atmel/atmel_wm8904.c                |  2 +-
       sound/soc/atmel/mikroe-proto.c                |  2 +-
       sound/soc/atmel/sam9g20_wm8731.c              |  2 +-
       sound/soc/atmel/sam9x5_wm8731.c               |  2 +-
       sound/soc/au1x/db1200.c                       |  2 +-
       sound/soc/au1x/dbdma2.c                       |  2 +-
       sound/soc/au1x/dma.c                          |  2 +-
       sound/soc/au1x/psc-ac97.c                     |  2 +-
       sound/soc/bcm/bcm63xx-pcm-whistler.c          | 16 +++----
       sound/soc/bcm/cygnus-pcm.c                    | 22 +++++-----
       sound/soc/cirrus/edb93xx.c                    |  4 +-
       sound/soc/cirrus/snappercl15.c                |  4 +-
       sound/soc/codecs/cs47l15.c                    |  4 +-
       sound/soc/codecs/cs47l24.c                    |  6 +--
       sound/soc/codecs/cs47l35.c                    |  6 +--
       sound/soc/codecs/cs47l85.c                    |  6 +--
       sound/soc/codecs/cs47l90.c                    |  6 +--
       sound/soc/codecs/cs47l92.c                    |  4 +-
       sound/soc/codecs/wm5110.c                     |  6 +--
       sound/soc/codecs/wm_adsp.c                    | 10 ++---
       sound/soc/dwc/dwc-pcm.c                       |  2 +-
       sound/soc/fsl/eukrea-tlv320.c                 |  4 +-
       sound/soc/fsl/fsl-asoc-card.c                 | 10 ++---
       sound/soc/fsl/fsl_asrc_dma.c                  |  6 +--
       sound/soc/fsl/fsl_spdif.c                     | 10 ++---
       sound/soc/fsl/fsl_ssi.c                       |  8 ++--
       sound/soc/fsl/imx-audmix.c                    |  8 ++--
       sound/soc/fsl/imx-mc13783.c                   |  4 +-
       sound/soc/fsl/imx-sgtl5000.c                  |  2 +-
       sound/soc/fsl/mpc5200_dma.c                   | 10 ++---
       sound/soc/fsl/mpc5200_psc_i2s.c               |  2 +-
       sound/soc/fsl/mpc8610_hpcd.c                  |  4 +-
       sound/soc/fsl/mx27vis-aic32x4.c               |  4 +-
       sound/soc/fsl/p1022_ds.c                      |  4 +-
       sound/soc/fsl/p1022_rdk.c                     |  4 +-
       sound/soc/fsl/wm1133-ev1.c                    |  6 +--
       sound/soc/generic/simple-card-utils.c         | 12 +++---
       sound/soc/img/img-i2s-in.c                    |  2 +-
       sound/soc/img/img-i2s-out.c                   |  2 +-
       sound/soc/intel/atom/sst-mfld-platform-pcm.c  |  6 +--
       sound/soc/intel/boards/bdw-rt5650.c           |  6 +--
       sound/soc/intel/boards/bdw-rt5677.c           |  6 +--
       sound/soc/intel/boards/broadwell.c            |  4 +-
       sound/soc/intel/boards/bxt_da7219_max98357a.c |  8 ++--
       sound/soc/intel/boards/bxt_rt298.c            |  8 ++--
       sound/soc/intel/boards/byt-max98090.c         |  2 +-
       sound/soc/intel/boards/byt-rt5640.c           |  4 +-
       sound/soc/intel/boards/bytcht_cx2072x.c       | 10 ++---
       sound/soc/intel/boards/bytcht_da7213.c        |  8 ++--
       sound/soc/intel/boards/bytcht_es8316.c        |  8 ++--
       sound/soc/intel/boards/bytcht_nocodec.c       |  4 +-
       sound/soc/intel/boards/bytcr_rt5640.c         |  8 ++--
       sound/soc/intel/boards/bytcr_rt5651.c         |  8 ++--
       sound/soc/intel/boards/cht_bsw_max98090_ti.c  |  6 +--
       sound/soc/intel/boards/cht_bsw_nau8824.c      |  4 +-
       sound/soc/intel/boards/cht_bsw_rt5645.c       | 14 +++----
       sound/soc/intel/boards/cht_bsw_rt5672.c       |  8 ++--
       sound/soc/intel/boards/cml_rt1011_rt5682.c    |  6 +--
       sound/soc/intel/boards/glk_rt5682_max98357a.c | 10 ++---
       sound/soc/intel/boards/haswell.c              |  2 +-
       sound/soc/intel/boards/kbl_da7219_max98357a.c |  8 ++--
       sound/soc/intel/boards/kbl_da7219_max98927.c  |  6 +--
       sound/soc/intel/boards/kbl_rt5660.c           |  6 +--
       sound/soc/intel/boards/kbl_rt5663_max98927.c  |  8 ++--
       .../intel/boards/kbl_rt5663_rt5514_max98927.c |  8 ++--
       .../soc/intel/boards/skl_nau88l25_max98357a.c | 12 +++---
       sound/soc/intel/boards/skl_nau88l25_ssm4567.c | 16 +++----
       sound/soc/intel/boards/skl_rt286.c            |  8 ++--
       sound/soc/intel/boards/sof_da7219_max98373.c  |  8 ++--
       sound/soc/intel/boards/sof_pcm512x.c          |  8 ++--
       sound/soc/intel/boards/sof_rt5682.c           |  6 +--
       sound/soc/intel/haswell/sst-haswell-pcm.c     | 26 ++++++------
       sound/soc/intel/skylake/skl-pcm.c             | 10 ++---
       sound/soc/kirkwood/armada-370-db.c            |  2 +-
       sound/soc/kirkwood/kirkwood-dma.c             |  2 +-
       sound/soc/mediatek/common/mtk-afe-fe-dai.c    | 10 ++---
       .../mediatek/common/mtk-afe-platform-driver.c |  2 +-
       sound/soc/mediatek/mt2701/mt2701-afe-pcm.c    |  2 +-
       sound/soc/mediatek/mt2701/mt2701-cs42448.c    |  4 +-
       sound/soc/mediatek/mt2701/mt2701-wm8960.c     |  4 +-
       sound/soc/mediatek/mt6797/mt6797-afe-pcm.c    |  2 +-
       sound/soc/mediatek/mt8173/mt8173-afe-pcm.c    |  2 +-
       sound/soc/mediatek/mt8173/mt8173-max98090.c   |  4 +-
       .../mediatek/mt8173/mt8173-rt5650-rt5514.c    |  2 +-
       .../mediatek/mt8173/mt8173-rt5650-rt5676.c    |  4 +-
       sound/soc/mediatek/mt8173/mt8173-rt5650.c     |  6 +--
       sound/soc/mediatek/mt8183/mt8183-afe-pcm.c    |  2 +-
       .../mediatek/mt8183/mt8183-da7219-max98357.c  |  4 +-
       .../mt8183/mt8183-mt6358-ts3a227-max98357.c   |  2 +-
       sound/soc/meson/aiu-fifo.c                    |  2 +-
       sound/soc/meson/axg-card.c                    |  8 ++--
       sound/soc/meson/axg-fifo.c                    |  2 +-
       sound/soc/meson/meson-card-utils.c            |  2 +-
       sound/soc/mxs/mxs-sgtl5000.c                  |  4 +-
       sound/soc/pxa/brownstone.c                    |  4 +-
       sound/soc/pxa/corgi.c                         |  4 +-
       sound/soc/pxa/hx4700.c                        |  4 +-
       sound/soc/pxa/imote2.c                        |  4 +-
       sound/soc/pxa/magician.c                      |  8 ++--
       sound/soc/pxa/mioa701_wm9713.c                |  4 +-
       sound/soc/pxa/mmp-pcm.c                       |  2 +-
       sound/soc/pxa/mmp-sspa.c                      |  2 +-
       sound/soc/pxa/poodle.c                        |  4 +-
       sound/soc/pxa/pxa2xx-i2s.c                    |  2 +-
       sound/soc/pxa/spitz.c                         |  4 +-
       sound/soc/pxa/ttc-dkb.c                       |  2 +-
       sound/soc/pxa/z2.c                            |  4 +-
       sound/soc/pxa/zylonite.c                      |  6 +--
       sound/soc/qcom/apq8016_sbc.c                  |  2 +-
       sound/soc/qcom/apq8096.c                      |  6 +--
       sound/soc/qcom/lpass-platform.c               |  2 +-
       sound/soc/qcom/qdsp6/q6asm-dai.c              |  4 +-
       sound/soc/qcom/qdsp6/q6routing.c              |  2 +-
       sound/soc/qcom/sdm845.c                       | 22 +++++-----
       sound/soc/qcom/storm.c                        |  2 +-
       sound/soc/rockchip/rk3288_hdmi_analog.c       |  4 +-
       sound/soc/rockchip/rk3399_gru_sound.c         | 16 +++----
       sound/soc/rockchip/rockchip_max98090.c        |  6 +--
       sound/soc/rockchip/rockchip_rt5645.c          |  6 +--
       sound/soc/samsung/arndale.c                   |  6 +--
       sound/soc/samsung/bells.c                     | 16 +++----
       sound/soc/samsung/h1940_uda1380.c             |  2 +-
       sound/soc/samsung/i2s.c                       |  2 +-
       sound/soc/samsung/jive_wm8750.c               |  4 +-
       sound/soc/samsung/littlemill.c                | 14 +++----
       sound/soc/samsung/lowland.c                   |  4 +-
       sound/soc/samsung/neo1973_wm8753.c            | 10 ++---
       sound/soc/samsung/odroid.c                    |  2 +-
       sound/soc/samsung/pcm.c                       |  4 +-
       sound/soc/samsung/rx1950_uda1380.c            |  2 +-
       sound/soc/samsung/s3c-i2s-v2.c                |  2 +-
       sound/soc/samsung/s3c24xx_simtec.c            |  4 +-
       sound/soc/samsung/s3c24xx_uda134x.c           |  6 +--
       sound/soc/samsung/smartq_wm8987.c             |  4 +-
       sound/soc/samsung/smdk_spdif.c                |  2 +-
       sound/soc/samsung/smdk_wm8580.c               |  2 +-
       sound/soc/samsung/smdk_wm8994.c               |  2 +-
       sound/soc/samsung/smdk_wm8994pcm.c            |  4 +-
       sound/soc/samsung/snow.c                      |  4 +-
       sound/soc/samsung/spdif.c                     |  8 ++--
       sound/soc/samsung/speyside.c                  |  8 ++--
       sound/soc/samsung/tm2_wm5110.c                | 16 +++----
       sound/soc/samsung/tobermory.c                 |  8 ++--
       sound/soc/sh/dma-sh7760.c                     | 16 +++----
       sound/soc/sh/fsi.c                            |  2 +-
       sound/soc/sh/migor.c                          |  6 +--
       sound/soc/sh/rcar/core.c                      |  2 +-
       sound/soc/soc-compress.c                      | 36 ++++++++--------
       sound/soc/soc-core.c                          | 42 +++++++------------
       sound/soc/soc-dapm.c                          |  4 +-
       sound/soc/soc-generic-dmaengine-pcm.c         |  6 +--
       sound/soc/soc-pcm.c                           | 30 ++++++-------
       sound/soc/sof/intel/hda-dai.c                 |  6 +--
       sound/soc/sof/intel/hda-dsp.c                 |  2 +-
       sound/soc/sprd/sprd-pcm-compress.c            |  4 +-
       sound/soc/sprd/sprd-pcm-dma.c                 |  2 +-
       sound/soc/stm/stm32_adfsdm.c                  | 12 +++---
       sound/soc/stm/stm32_sai_sub.c                 |  2 +-
       sound/soc/sunxi/sun4i-spdif.c                 |  2 +-
       sound/soc/tegra/tegra_alc5632.c               |  2 +-
       sound/soc/tegra/tegra_max98090.c              |  2 +-
       sound/soc/tegra/tegra_rt5640.c                |  2 +-
       sound/soc/tegra/tegra_rt5677.c                |  2 +-
       sound/soc/tegra/tegra_sgtl5000.c              |  2 +-
       sound/soc/tegra/tegra_wm8753.c                |  2 +-
       sound/soc/tegra/tegra_wm8903.c                |  6 +--
       sound/soc/tegra/trimslice.c                   |  2 +-
       sound/soc/ti/ams-delta.c                      |  4 +-
       sound/soc/ti/davinci-evm.c                    |  4 +-
       sound/soc/ti/davinci-vcif.c                   |  4 +-
       sound/soc/ti/n810.c                           |  2 +-
       sound/soc/ti/omap-abe-twl6040.c               |  6 +--
       sound/soc/ti/omap-mcbsp-st.c                  |  2 +-
       sound/soc/ti/omap-mcbsp.c                     |  4 +-
       sound/soc/ti/omap-mcpdm.c                     |  2 +-
       sound/soc/ti/omap3pandora.c                   |  4 +-
       sound/soc/ti/osk5912.c                        |  2 +-
       sound/soc/ti/rx51.c                           |  2 +-
       sound/soc/txx9/txx9aclc.c                     |  2 +-
       sound/soc/uniphier/aio-compress.c             | 22 +++++-----
       sound/soc/uniphier/aio-dma.c                  |  6 +--
       sound/soc/ux500/mop500_ab8500.c               |  6 +--
       sound/soc/ux500/ux500_pcm.c                   |  8 ++--
       sound/soc/xtensa/xtfpga-i2s.c                 |  2 +-
       191 files changed, 573 insertions(+), 577 deletions(-)
      
      --
      2.17.1
      a23d7f4a
    • Mark Brown's avatar
      Merge series "ASoC: SOF: Intel: add SoundWire support" from Pierre-Louis... · ef11a6ff
      Mark Brown authored
      Merge series "ASoC: SOF: Intel: add SoundWire support" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
      
      This patchset provides the support for SoundWire support on Intel
      CometLake, IcelLake and TigerLake RVP platforms and form-factor
      devices to be released 'soon'.
      
      The bulk of the code is about detecting a valid SoundWire
      configuration from ACPI, and implementing the interfaces suggested in
      '[PATCH 0/8] soundwire: remove platform devices, add SOF interfaces'
      for interrupts, PCI wakes and clock-stop configurations.
      
      Since that SoundWire series will not be in 5.7, the build support for
      SOF w/ SoundWire is not provided for now, and fall-back functions will
      be used. This code is tested on a daily basis in the SOF tree and is
      not expected to change in significant ways.
      
      Changes since v2:
      Corrected error in ACPI table (thanks Amadeusz)
      Added patch 11 to add reset cycle required on some SoundWire platforms
      
      Bard Liao (1):
        ASoC: SOF: Intel: hda: merge IPC, stream and SoundWire interrupt
          handlers
      
      Pierre-Louis Bossart (8):
        ASoC: soc-acpi: expand description of _ADR-based devices
        ASoC: SOF: Intel: add SoundWire configuration interface
        ASoC: SOF: IPC: dai-intel: move ALH declarations in header file
        ASoC: SOF: Intel: hda: add SoundWire stream config/free callbacks
        ASoC: SOF: Intel: hda: initial SoundWire machine driver autodetect
        ASoC: SOF: Intel: hda: disable SoundWire interrupts on suspend
        ASoC: SOF: Intel: hda: add parameter to control SoundWire clock stop
          quirks
        ASoC: SOF: Intel: hda-ctrl: add reset cycle before parsing
          capabilities
      
      Rander Wang (2):
        ASoC: SOF: Intel: hda: add WAKEEN interrupt support for SoundWire
        Asoc: SOF: Intel: hda: check SoundWire wakeen interrupt in irq thread
      
       include/sound/soc-acpi.h                      |  39 +-
       include/sound/sof/dai-intel.h                 |  18 +-
       .../intel/common/soc-acpi-intel-cml-match.c   |  87 +++-
       .../intel/common/soc-acpi-intel-icl-match.c   |  97 ++++-
       .../intel/common/soc-acpi-intel-tgl-match.c   |  49 ++-
       sound/soc/sof/intel/hda-ctrl.c                |  25 +-
       sound/soc/sof/intel/hda-dsp.c                 |   2 +
       sound/soc/sof/intel/hda-loader.c              |  31 ++
       sound/soc/sof/intel/hda.c                     | 400 ++++++++++++++++++
       sound/soc/sof/intel/hda.h                     |  66 +++
       10 files changed, 750 insertions(+), 64 deletions(-)
      
      --
      2.20.1
      ef11a6ff
    • Shuming Fan's avatar
      ASoC: rt5682: move DAI clock registry to I2S mode · 914f674b
      Shuming Fan authored
      The SoundWire mode doesn't need the DAI clocks.
      Therefore, the DAI clock registry moves to I2S mode case.
      Signed-off-by: default avatarShuming Fan <shumingf@realtek.com>
      Link: https://lore.kernel.org/r/20200327073849.18291-1-shumingf@realtek.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      914f674b
    • Wolfram Sang's avatar
      ASoC: pxa: magician: convert to use i2c_new_client_device() · 17fb5433
      Wolfram Sang authored
      Move away from the deprecated API and return the shiny new ERRPTR where
      useful.
      Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
      Link: https://lore.kernel.org/r/20200326211010.13471-2-wsa+renesas@sang-engineering.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      17fb5433
    • Pierre-Louis Bossart's avatar
    • Rander Wang's avatar
      Asoc: SOF: Intel: hda: check SoundWire wakeen interrupt in irq thread · 90de3281
      Rander Wang authored
      If pci device is in D0, wakeen interrupt will be
      aggregated at cAVS level as interrupt. This commit
      check the wakeen status and process it in irq thread
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarRander Wang <rander.wang@intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-11-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      90de3281
    • Rander Wang's avatar
      ASoC: SOF: Intel: hda: add WAKEEN interrupt support for SoundWire · bbd19cdc
      Rander Wang authored
      When a SoundWire link is in clock stop state, a Slave device may wake
      up the Master for some events such as jack detection. The WAKEEN
      interrupt will be triggered and processed by the audio pci device.
      
      If audio device is in D3, the interrupt will be routed to PME, or
      aggregated at cAVS level as interrupt when audio device is in D0. This
      patch only supports D3 case, where the audio pci device will be
      resumed by a PME event and the WAKEEN interrupt will be processed
      after audio pci device is powered up and ROM is initialized
      successfully.
      
      The WAKEEN handling is only enabled after the first boot due to
      dependencies on a shim_lock mutex being initialized.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarRander Wang <rander.wang@intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-10-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      bbd19cdc
    • Pierre-Louis Bossart's avatar
    • Bard Liao's avatar
      ASoC: SOF: Intel: hda: merge IPC, stream and SoundWire interrupt handlers · 722ba5f1
      Bard Liao authored
      We have a single irq handler for SOF interrupts. We can further merge
      SoundWire ones to completely remove MSI interrupts handling issues
      leading to timeouts.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-8-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      722ba5f1
    • Pierre-Louis Bossart's avatar
      ASoC: SOF: Intel: hda: disable SoundWire interrupts on suspend · 3eadff56
      Pierre-Louis Bossart authored
      Doing this avoid conflicts and errors reported on the bus.
      
      The interrupts are only re-enabled on resume after the firmware is
      downloaded, so the behavior is not fully symmetric
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-7-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      3eadff56
    • Pierre-Louis Bossart's avatar
      ASoC: SOF: Intel: hda: initial SoundWire machine driver autodetect · b9ddd81b
      Pierre-Louis Bossart authored
      For now we have a limited number of machine driver configurations, and
      we can detect them based on the link configuration returned after
      checking hardware and firmware (BIOS) configurations.
      
      The link configuration is checked with a link_mask as well as a list
      of _ADR descriptors for each link.
      
      There is a chance that in extreme cases where the BIOS contains too
      much information we would need to detect which Slave devices actually
      report as 'attached'. This would be more accurate than static
      table-based solutions, but it also introduces timing dependencies
      since we don't know when those devices might become attached, so will
      only be only be looked at if we see limitations with static methods
      and the usual quirks based e.g. on DMI information.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
      Signed-off-by: default avatarRander Wang <rander.wang@intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-6-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      b9ddd81b
    • Pierre-Louis Bossart's avatar
      ASoC: SOF: Intel: hda: add SoundWire stream config/free callbacks · d2c383aa
      Pierre-Louis Bossart authored
      These callbacks are invoked when a matching hw_params/hw_free() DAI
      operation takes place, and will result in IPC operations with the SOF
      firmware.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-5-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      d2c383aa
    • Pierre-Louis Bossart's avatar
      ASoC: SOF: IPC: dai-intel: move ALH declarations in header file · f8e25018
      Pierre-Louis Bossart authored
      ALH was inserted in the wrong place during integration, add after DMIC
      to mirror the file used by SOF firmware.
      
      No functional change, just text move in the same file to better track
      changes, if any.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-4-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      f8e25018
    • Pierre-Louis Bossart's avatar
      ASoC: SOF: Intel: add SoundWire configuration interface · 51dfed1e
      Pierre-Louis Bossart authored
      Now that the SoundWire core supports the multi-step initialization,
      call the relevant APIs.
      
      The actual hardware enablement can be done in two places, ideally we'd
      want to startup the SoundWire IP as soon as possible (while still
      taking power rail dependencies into account)
      
      However when suspend/resume is implemented, the DSP device will be
      resumed first, and only when the DSP firmware is downloaded/booted
      would the SoundWire child devices be resumed, so there are only
      marginal benefits in starting the IP earlier for the first probe.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-3-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      51dfed1e
    • Pierre-Louis Bossart's avatar
      ASoC: soc-acpi: expand description of _ADR-based devices · 004bd416
      Pierre-Louis Bossart authored
      For SoundWire, we need to know if endpoints needs to be 'aggregated'
      (MIPI parlance, meaning logically grouped), e.g. when two speaker
      amplifiers need to be handled as a single logical output.
      
      We don't necessarily have the information at the firmware (BIOS)
      level, so add a notion of endpoints and specify if a device/endpoint
      is part of a group, with a position.
      
      This may be expanded in future solutions, for now only provide a group
      and position information.
      
      Since we modify the header file, change all existing upstream tables
      as well to avoid breaking compilation/bisect.
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Link: https://lore.kernel.org/r/20200325215027.28716-2-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      004bd416