summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | ASoC: tas2562: Add the TAS2564 compatibleDan Murphy2020-09-211-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the TAS2564 as a supported amplifier. This amplifier is register, bitmap and feature compatible to the TAS2562. Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200918150130.21015-2-dmurphy@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | ASoC: cs42l51: add additional ADC volume controlsGuillermo Rodríguez2020-09-211-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add volume controls for: - Analog programmable gain amplifier (PGA) (-3 .. +12 dB) - ADC attenuator (0 .. -96 dB) Signed-off-by: Guillermo Rodríguez <guille.rodriguez@gmail.com> Acked-by: David Rhodes <David.rhodes@cirrus.com> Link: https://lore.kernel.org/r/20200918134317.22574-1-guille.rodriguez@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | ASoC: tlv320adcx140: Add support for configuring GPIO pinCamel Guo2020-09-182-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support to configure the GPIO pin to the specific configuration. The GPIO pin can be configured as GPO, IRQ, SDOUT2, PDMCLK, MICBASE_EN, GPI, MCLK, SDIN, PDMDIN1, PDMDIN2, PDMDIN3 or PDMDIN4 and the output drive can be configured with various configuration. Signed-off-by: Camel Guo <camelg@axis.com> Link: https://lore.kernel.org/r/20200918114025.18205-2-camel.guo@axis.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | ASoC: ak4458: Add DSD support for ak4458 and ak4497Shengjiu Wang2020-09-172-8/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ak4458 can't support DSD512 format, but ak4497 can, so add a new enum variable (enum ak4458_type) in ak4458_drvdata to distinguish these two platforms. Ak4497 has two kinds of DSD input pin, it can be selected by the dsd-path property from DT. In hw_params(), bit clock is calculated according to different DSD format (DSD64, DSD128, DSD256, DSD512), then registers are configured. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Link: https://lore.kernel.org/r/1600178220-28973-2-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | ASoC: tlv320adcx140: Add the config to configure Tx ASI outputDan Murphy2020-09-172-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add code to allow the ASI Tx output to be placed into High-z mode during unused ASI cycles. This allows for other devices that may be on the bus to drive the ASI out. By default the 320adcx140 sends 0's for unused cycles. Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200915190606.1744-4-dmurphy@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | ASoC: codec: tlv320aic32x4: do software reset before clock registrationMatthias Schiffer2020-09-171-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To avoid the actual PLL settings to differ from the state expected by the clock driver, the codec should only be fully reset before the clocks are registered. But we also need to ensure that the software reset happens at all before clock registration, as not all boards have a reset GPIO. Move the software reset from aic32x4_component_probe() to aic32x4_probe() and reorder the reset and registration sequence: 1. Reset via GPIO (if available) 2. Reset via software 3. Register component 4. Register clocks Note that aic32x4_component_probe() is only called after aic32x4_probe() has finished, so the reset in aic32x4_component_probe() was happening too late. Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> Link: https://lore.kernel.org/r/20200902133043.19504-2-matthias.schiffer@ew.tq-group.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | ASoC: codec: tlv320aic32x4: fix missing aic32x4_disable_regulators() in ↵Matthias Schiffer2020-09-171-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | error path The regulators need to be disabled in the aic32x4_register_clocks() failure case as well. Fixes: 9d4befff5a95 ("ASoC: codec: tlv3204: Moving GPIO reset and add ADC reset") Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> Link: https://lore.kernel.org/r/20200902133043.19504-1-matthias.schiffer@ew.tq-group.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | Merge branch 'asoc-5.9' into asoc-5.10Mark Brown2020-09-1713-77/+202
|\| | | |
| * | | | ASoC: tlv320adcx140: Fix BCLK inversion for DSP modesDan Murphy2020-09-171-21/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the BCLK inversion for DSP modes This is how it is defined by ASoC: * BCLK: * - "normal" polarity means signal is available at rising edge of BCLK * - "inverted" polarity means signal is available at falling edge of BCLK The adcx140 defines the BCLK edge based on coding type. The PCM (DSP_A/B) should drive on rising and sample on falling edge, so from ASoC pov, it is IB_NF. But from the codec pov if it is configured in DSP mode, then the BCLK should not be inverted, defaults to the coding standard. For i2s, it is NB_NF from ASoC pov (drive on falling, sample on rising). >From the codec's pov BCLK should not invert either, as this is the default for the coding. So, inversion must take the format into account: IB_NF + DSP_A/B == the codec bclk inversion should be disabled NB_NF + DSP_A/B == the codec bclk inversion should be enabled NB_NF + I2S == the codec bclk inversion should be disabled Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200915190606.1744-2-dmurphy@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: tlv320adcx140: Idle the device while writing registersDan Murphy2020-09-172-11/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was observed that if the device was active and register writes were performed there were some unwanted behaviors particularly when writing the word length and some filter options. So when writing to the device the device should be placed in sleep mode and then exit sleep mode once the register update is complete. Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200915190606.1744-1-dmurphy@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: tlv320adcx140: Fix digital gain rangeCamel Guo2020-09-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to its datasheet, the digital gain should be -100 dB when CHx_DVOL is 1 and 27 dB when CHx_DVOL is 255. But with the current dig_vol_tlv, "Digital CHx Out Volume" shows 27.5 dB if CHx_DVOL is 255 and -95.5 dB if CHx_DVOL is 1. This commit fixes this bug. Fixes: 689c7655b50c ("ASoC: tlv320adcx140: Add the tlv320adcx140 codec driver family") Signed-off-by: Camel Guo <camelg@axis.com> Link: https://lore.kernel.org/r/20200908090417.16695-1-camel.guo@axis.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: rt1015: Fix the failure to flush DAC data before playbackderek.fang2020-09-142-7/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the failure to flush DAC data before playback. Signed-off-by: derek.fang <derek.fang@realtek.com> Link: https://lore.kernel.org/r/1600073839-6762-2-git-send-email-derek.fang@realtek.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: rt1015: Fix DC calibration on bypass boost modederek.fang2020-09-142-14/+35
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the DC calibration unsuccessful issue on rt1015 bypass boost mode. Signed-off-by: derek.fang <derek.fang@realtek.com> Link: https://lore.kernel.org/r/1600073839-6762-1-git-send-email-derek.fang@realtek.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: tlv320adcx140: Wake up codec before accessing registerCamel Guo2020-09-081-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to its datasheet, after reset this codec goes into sleep mode. In this mode, any register accessing should be avoided except for exiting sleep mode. Hence this commit moves SLEEP_CFG access before any register accessing. Signed-off-by: Camel Guo <camelg@axis.com> Acked-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200908083521.14105-2-camel.guo@axis.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: tlv320adcx140: Fix accessing uninitialized adcx140->devCamel Guo2020-09-011-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In adcx140_i2c_probe, adcx140->dev is accessed before its initialization. This commit fixes this bug. Fixes: 689c7655b50c ("ASoC: tlv320adcx140: Add the tlv320adcx140 codec driver family") Acked-by: Dan Murphy <dmurphy@ti.com> Signed-off-by: Camel Guo <camel.guo@axis.com> Link: https://lore.kernel.org/r/20200901135736.32036-1-camel.guo@axis.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: wm8994: Ensure the device is resumed in wm89xx_mic_detect functionsSylwester Nawrocki2020-09-011-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the wm8958_mic_detect, wm8994_mic_detect functions get called from the machine driver, e.g. from the card's late_probe() callback, the CODEC device may be PM runtime suspended and any regmap writes have no effect. Add PM runtime calls to these functions to ensure the device registers are updated as expected. This suppresses an error during boot "wm8994-codec: ASoC: error at snd_soc_component_update_bits on wm8994-codec" caused by the regmap access error due to the cache_only flag being set. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Acked-by: Krzysztof Kozlowski <krzk@kernel.org> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20200827173357.31891-2-s.nawrocki@samsung.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: wm8994: Skip setting of the WM8994_MICBIAS register for WM1811Sylwester Nawrocki2020-09-013-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The WM8994_MICBIAS register is not available in the WM1811 CODEC so skip initialization of that register for that device. This suppresses an error during boot: "wm8994-codec: ASoC: error at snd_soc_component_update_bits on wm8994-codec" Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Acked-by: Krzysztof Kozlowski <krzk@kernel.org> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20200827173357.31891-1-s.nawrocki@samsung.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: rt700: Fix return check for devm_regmap_init_sdw()Vinod Koul2020-08-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | devm_regmap_init_sdw() returns a valid pointer on success or ERR_PTR on failure which should be checked with IS_ERR. Also use PTR_ERR for returning error codes. Reported-by: Takashi Iwai <tiwai@suse.de> Fixes: 7d2a5f9ae41e ("ASoC: rt700: add rt700 codec driver") Signed-off-by: Vinod Koul <vkoul@kernel.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200826163340.3249608-6-vkoul@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: rt715: Fix return check for devm_regmap_init_sdw()Vinod Koul2020-08-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | devm_regmap_init_sdw() returns a valid pointer on success or ERR_PTR on failure which should be checked with IS_ERR. Also use PTR_ERR for returning error codes. Reported-by: Takashi Iwai <tiwai@suse.de> Fixes: d1ede0641b05 ("ASoC: rt715: add RT715 codec driver") Signed-off-by: Vinod Koul <vkoul@kernel.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200826163340.3249608-5-vkoul@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: rt711: Fix return check for devm_regmap_init_sdw()Vinod Koul2020-08-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | devm_regmap_init_sdw() returns a valid pointer on success or ERR_PTR on failure which should be checked with IS_ERR. Also use PTR_ERR for returning error codes. Reported-by: Takashi Iwai <tiwai@suse.de> Fixes: 320b8b0d13b8 ("ASoC: rt711: add rt711 codec driver") Signed-off-by: Vinod Koul <vkoul@kernel.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200826163340.3249608-4-vkoul@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: rt1308-sdw: Fix return check for devm_regmap_init_sdw()Vinod Koul2020-08-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | devm_regmap_init_sdw() returns a valid pointer on success or ERR_PTR on failure which should be checked with IS_ERR. Also use PTR_ERR for returning error codes. Reported-by: Takashi Iwai <tiwai@suse.de> Fixes: a87a6653a28c ("ASoC: rt1308-sdw: add rt1308 SdW amplifier driver") Signed-off-by: Vinod Koul <vkoul@kernel.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200826163340.3249608-3-vkoul@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: max98373: Fix return check for devm_regmap_init_sdw()Vinod Koul2020-08-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | devm_regmap_init_sdw() returns a valid pointer on success or ERR_PTR on failure which should be checked with IS_ERR. Also use PTR_ERR for returning error codes. Reported-by: Takashi Iwai <tiwai@suse.de> Fixes: 56a5b7910e96 ("ASoC: codecs: max98373: add SoundWire support") Signed-off-by: Vinod Koul <vkoul@kernel.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200826163340.3249608-2-vkoul@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: pcm3168a: ignore 0 Hz settingsKuninori Morimoto2020-08-251-0/+7
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | Some sound card try to set 0 Hz as reset, but it is impossible. This patch ignores it to avoid error return. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/87a6yjy5sy.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | Merge tag 'sound-5.9-rc2' of ↵Linus Torvalds2020-08-214-19/+51
| |\ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "A collection of small fixes over several drivers, but all are driver- specific and nothing looks scary. Slightly large changes are seen in ASoC qcom driver for the bugs that were revealed by the recent ASoC core change to report the invalid register access errors. Also ASoC fsl got a slight intensive change for the distortion fix. Others are only trivial fixes or device-specific quirks" * tag 'sound-5.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (25 commits) ALSA: hda: avoid reset of sdo_limit ALSA: hda/realtek: Add quirk for Samsung Galaxy Book Ion ALSA: usb-audio: ignore broken processing/extension unit ASoC: intel: Fix memleak in sst_media_open ASoC: wm8994: Avoid attempts to read unreadable registers ASoC: msm8916-wcd-analog: fix register Interrupt offset ASoC: wm8994: Prevent access to invalid VU register bits on WM1811 ALSA: hda/realtek: Add model alc298-samsung-headphone ALSA: usb-audio: Update documentation comment for MS2109 quirk ALSA: isa: fix spelling mistakes in the comments ALSA: usb-audio: Add capture support for Saffire 6 (USB 1.1) ALSA: hda/realtek: Add quirk for Samsung Galaxy Flex Book ASoC: q6routing: add dummy register read/write function ASoC: q6afe-dai: mark all widgets registers as SND_SOC_NOPM ASoC: Make soc_component_read() returning an error code again ASoC: amd: Replacing component->name with codec_dai->name. ASoC: fsl: Fix unused variable warning ASoC: tegra: tegra210_i2s: Fix compile warning with CONFIG_PM=n ASoC: tegra: tegra210_dmic: Fix compile warning with CONFIG_PM=n ASoC: tegra: tegra210_ahub: Fix compile warning with CONFIG_PM=n ...
* | | ASoC: rt1015p: add codec driverTzung-Bi Shih2020-09-103-0/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds rt1015p codec driver. Rt1015p is a rt1015 variant. - It doesn't support I2C. - It only supports S24, 48kHz, 64FS. Signed-off-by: Tzung-Bi Shih <tzungbi@google.com> Link: https://lore.kernel.org/r/20200910042949.3795682-2-tzungbi@google.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: mt6359: fix failed to parse DT propertiesTzung-Bi Shih2020-09-081-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mt6359 platform device is instantiated by mfd_add_devices(). In the case, dev->of_node is NULL so that mt6359_parse_dt() always fails to parse the desired DT properties. Gets the DT properties via dev->parent->of_node. Fixes: 8061734ab654 ("ASoC: mediatek: mt6359: add codec driver") Signed-off-by: Tzung-Bi Shih <tzungbi@google.com> Link: https://lore.kernel.org/r/20200908070044.1142644-1-tzungbi@google.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: rt5682: Prefer async probeDouglas Anderson2020-09-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The probe of rt5682 is pretty slow. A quick measurement shows that it takes ~650 ms on at least one board. There's no reason to block all other drivers waiting for this probe to finish. Set the flag to allow other drivers to probe while we're probing. Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/r/20200828162005.1.I4f67f494c4f759b0e5c7f487e040dfdcf16e0876@changeid Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: tlv320adcx140: Add digital mic channel enable routingDan Murphy2020-08-281-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add the audio routing map to enable the digital mic paths when the analog mic paths are not enabled. Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200828112855.10112-1-dmurphy@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: max9867: shutdown codec when changing filter typePavel Dobias2020-08-272-15/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | Changing filter type without disabling codec results in filter malfunction. Disable codec when changing filter type. Signed-off-by: Pavel Dobias <dobias@2n.cz> Link: https://lore.kernel.org/r/20200827102528.29677-1-dobias@2n.cz Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: hdac_hdmi: tidy up a memset()Dan Carpenter2020-08-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ARRAY_SIZE() is the number of the elements but we want to use the number of bytes. Fortunately, in this case the value is the same so it doesn't affect runtime. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Link: https://lore.kernel.org/r/20200825104623.GA278587@mwanda Signed-off-by: Mark Brown <broonie@kernel.org>
* | | Merge series "ASoC: Intel: machine driver updates for 5.10" from ↵Mark Brown2020-08-241-0/+3
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>: This series updates the tables used to select SoundWire configurations for CometLake and TigerLake, and adds support for SDCA (SoundWire Device Class for Audio) codecs in the common machine driver. These codec drivers are still being tested on early silicon/boards and will be contributed at a later time. For TigerLake Chromebooks a new DMI quirk is added, as well as a means to override the topology names. A pm_runtime fix is also provided to deal with playback/capture dependencies with an amplifier w/ feedback. I also included a minor codec correction for the TGL amplifier. Bard Liao (5): ASoC: Intel: modify SoundWire version id in acpi match table ASoC: Intel: sof_sdw: check SoundWire version when matching codec ASoC: Intel: sof_sdw: rename id as part_id ASoC: Intel: sof_sdw: add rt711 rt1316 rt714 SDCA codec support. ASoC: Intel: sof_sdw: clean-up inclusion of header files Pierre-Louis Bossart (5): ASoC: Intel: soc-acpi: cnl: add support for rt5682 on SoundWire link2 ASoC: Intel: sof-soundwire: add support for rt5682 on link2 ASoC: Intel: soc-acpi: mirror CML and TGL configurations ASoC: Intel: soc-acpi: add support for SDCA boards ASoC: codecs: max98373-sdw: add missing test on resume Rander Wang (2): ASoC: Intel: tgl_max98373: fix a runtime pm issue in multi-thread case ASoC: Intel: sof_sdw: Add support for product Ripto Sathyanarayana Nujella (2): ASoC: Intel: sof_rt5682: override quirk data for tgl_max98373_rt5682 ASoC: SOF: Add topology filename override based on dmi data match sound/soc/codecs/max98373-sdw.c | 3 + sound/soc/intel/boards/Kconfig | 3 + sound/soc/intel/boards/Makefile | 7 +- sound/soc/intel/boards/sof_maxim_common.c | 7 +- sound/soc/intel/boards/sof_rt5682.c | 13 ++ sound/soc/intel/boards/sof_sdw.c | 98 +++++++--- sound/soc/intel/boards/sof_sdw_common.h | 22 ++- sound/soc/intel/boards/sof_sdw_dmic.c | 1 + sound/soc/intel/boards/sof_sdw_max98373.c | 2 + sound/soc/intel/boards/sof_sdw_rt1308.c | 2 + sound/soc/intel/boards/sof_sdw_rt1316.c | 113 ++++++++++++ sound/soc/intel/boards/sof_sdw_rt5682.c | 2 + sound/soc/intel/boards/sof_sdw_rt700.c | 2 + sound/soc/intel/boards/sof_sdw_rt711.c | 2 + sound/soc/intel/boards/sof_sdw_rt711_sdca.c | 174 ++++++++++++++++++ sound/soc/intel/boards/sof_sdw_rt715_sdca.c | 42 +++++ .../intel/common/soc-acpi-intel-cml-match.c | 79 +++++++- .../intel/common/soc-acpi-intel-cnl-match.c | 33 +++- .../intel/common/soc-acpi-intel-icl-match.c | 10 +- .../intel/common/soc-acpi-intel-tgl-match.c | 165 ++++++++++++++++- sound/soc/sof/intel/hda.c | 8 +- sound/soc/sof/sof-pci-dev.c | 24 +++ 22 files changed, 764 insertions(+), 48 deletions(-) create mode 100644 sound/soc/intel/boards/sof_sdw_rt1316.c create mode 100644 sound/soc/intel/boards/sof_sdw_rt711_sdca.c create mode 100644 sound/soc/intel/boards/sof_sdw_rt715_sdca.c base-commit: fcea8b023a5f06ea0180ae65b01520b0414ee325 -- 2.25.1
| * | | ASoC: codecs: max98373-sdw: add missing test on resumePierre-Louis Bossart2020-08-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All existing SoundWire codecs follow the same pattern on resume, except for this codec which doesn't test if the hardware is initialized. Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200821195603.215535-8-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | ASoC: ak5558: Add regulator supportShengjiu Wang2020-08-241-0/+30
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "AVDD" is for analog power supply, "DVDD" is for digital power supply, they can improve the power management. As the regulator is enabled in pm runtime resume, which is behind the component driver probe, so accessing registers in component driver probe will fail. Fix this issue by enabling regcache_cache_only after pm_runtime_enable. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Link: https://lore.kernel.org/r/1598190877-9213-2-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: da7219: Fix I/O voltage range configuration during probeAdam Thomson2020-08-211-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previous improvements around handling device and codec level probe functionality added the possibility of the voltage level being undefined for the scenario where the IO voltage retrieved from the regulator supply was below 1.2V, whereas previously the code defaulted to the 2.5V to 3.6V range in that case. This commit restores the default value to avoid this happening. Fixes: aa5b18d1c290 ("ASoC: da7219: Move soft reset handling to codec level probe") Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/20200821142259.C2ECE3FB96@swsrvapps-01.diasemi.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: mediatek: mt6359: add codec driverJiaxin Yu2020-08-204-0/+5403
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add the mt6359 codec driver. Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com> Reviewed-by: Tzung-Bi Shih <tzungbi@google.com> Link: https://lore.kernel.org/r/1597913493-10747-2-git-send-email-jiaxin.yu@mediatek.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: codecs: rt*-sdw: use SDW_SLAVE_ENTRY_EXTPierre-Louis Bossart2020-08-195-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add version and class information explicitly to prepare for support for new devices. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20200818141435.29205-1-yung-chuan.liao@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | ASoC: wm_adsp: Update naming in error handlingCharles Keepax2020-08-181-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It seems the datasheet has never used the word slave for this error status bit and has always used the term address error. So update the driver to match the datasheets and also in the process align a bit better with avoiding the use of such words where possible. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20200818160126.4852-1-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | Merge series "ASoC: da7219: Reorganise device/codec level probe/remove" from ↵Mark Brown2020-08-184-254/+328
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adam Thomson <Adam.Thomson.Opensource@diasemi.com>: This patch set reorganises and fixes device and codec level probe/remove handling within the driver, to allow clean probe and remove at the codec level. This set relates to an issue raised by Yong Zhi where a codec level re-probe would fail due to clks still being registered from the previous instantiation. In addition some improvements around regulator handling and soft reset have also been included. Adam Thomson (3): ASoC: da7219: Move required devm_* allocations to device level code ASoC: da7219: Move soft reset handling to codec level probe ASoC: da7219: Fix clock handling around codec level probe sound/soc/codecs/da7219-aad.c | 85 +++++--- sound/soc/codecs/da7219-aad.h | 3 + sound/soc/codecs/da7219.c | 493 +++++++++++++++++++++++------------------- sound/soc/codecs/da7219.h | 1 + 4 files changed, 328 insertions(+), 254 deletions(-) -- 1.9.1
| * | | ASoC: da7219: Fix clock handling around codec level probeAdam Thomson2020-08-172-25/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the driver would use devm_* related functions at the codec level probe() to allocate clock resources for MCLK and the DAI clocks exposed by the device. This caused issues when registering clocks on a re-probe (no device level remove/prove involved) as the devm_* resources were never freed up so the clocks were still registered from the previous codec level probe(). This commit updates the clock handling for MCLK usage and DAI clock provision to fix this discrepancy and allow the codec level probe/remove functionality to operate as intended. Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/b92c461baeed27a6cd92e59e36a55c2547218683.1597164865.git.Adam.Thomson.Opensource@diasemi.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: da7219: Move soft reset handling to codec level probeAdam Thomson2020-08-171-183/+188
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of the reorganisation of the device level and codec level probe functionlity, the soft reset handling should really reside at the codec level and after the instantiation of supplies. This commit makes the relevant changes to support this change of scope including the remove of devm_* functions being called for regulator instantiation at the codec level. Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/f7603a4855647429b754ce76f887ec441622015c.1597164865.git.Adam.Thomson.Opensource@diasemi.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | ASoC: da7219: Move required devm_* allocations to device level codeAdam Thomson2020-08-173-48/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In preparation for cleanup of device level and codec level probe funcitonality, all necessary devm_* allocations and fw retrieval functions are moved to the I2C probe level code. Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/7a9a2ead6e37820a6025c0a62dc45952d5032ab7.1597164865.git.Adam.Thomson.Opensource@diasemi.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | Merge series "Codec workaround" from Michael Sit Wei Hong ↵Mark Brown2020-08-181-16/+44
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | <michael.wei.hong.sit@intel.com>: This patch series enables some features on the tlv3204 codec and also fixes some issues faced while testing v2: Fixed the build error from snd_soc_component_read32 v1: initial ASoC: codec: tlv3204: Codec workaround series Michael Sit Wei Hong (3): ASoC: codec: tlv3204: Enable 24 bit audio support ASoC: codec: tlv3204: Increased maximum supported channels ASoC: codec: tlv3204: Moving GPIO reset and add ADC reset sound/soc/codecs/tlv320aic32x4.c | 60 +++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 16 deletions(-) -- 2.17.1
| * | | | ASoC: codec: tlv3204: Moving GPIO reset and add ADC resetMichael Sit Wei Hong2020-08-171-12/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moving GPIO reset to a later stage and before clock registration to ensure that the host system and codec clocks are in sync. If the host register clock values prior to gpio reset, the last configured codec clock is registered to the host. The codec then gets gpio resetted setting the codec clocks to their default value, causing a mismatch. Host system will skip clock setting thinking the codec clocks are already at the requested rate. ADC reset is added to ensure the next audio capture does not have undesired artifacts. It is probably related to the original code where the probe function resets the ADC prior to 1st record. Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> Reviewed-by: Sia Jee Heng <jee.heng.sia@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200812094631.4698-4-michael.wei.hong.sit@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: codec: tlv3204: Increased maximum supported channelsMichael Sit Wei Hong2020-08-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Increased maximum supported channel to 8 channels for audio capture running in TDM mode. Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> Reviewed-by: Sia Jee Heng <jee.heng.sia@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200812094631.4698-3-michael.wei.hong.sit@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: codec: tlv3204: Enable 24 bit audio supportMichael Sit Wei Hong2020-08-171-5/+10
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enable 24 bit in 32 bit container audio support. Using the params_physical_width to differentiate 24 bit in 32 bit container and 24 bit in 24 bit container modes. Use the sample rate, bit depth and channel parameters to calculate the bit clock needed. Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> Reviewed-by: Sia Jee Heng <jee.heng.sia@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200812094631.4698-2-michael.wei.hong.sit@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | Merge series "ASoC: rt5682: Use clk APIs better" from Stephen Boyd ↵Mark Brown2020-08-182-52/+23
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | <swboyd@chromium.org>: This patch series drops a printk message down to dev_dbg() because it was noisy and then migrates this driver to use clk_hw based APIs instead of clk based APIs because this device is a clk provider, not a clk consumer. I've only lightly tested the last two patches but I don't have all combinations of clks for this device. Cc: Cheng-Yi Chiang <cychiang@chromium.org> Cc: Shuming Fan <shumingf@realtek.com> Stephen Boyd (3): ASoC: rt5682: Use dev_dbg() in rt5682_clk_check() ASoC: rt5682: Drop usage of __clk_get_name() ASoC: rt5682: Use clk_hw based APIs for registration sound/soc/codecs/rt5682.c | 73 ++++++++++++--------------------------- sound/soc/codecs/rt5682.h | 2 -- 2 files changed, 23 insertions(+), 52 deletions(-) Based on the last patch to this driver in linux-next. base-commit: 6301adf942a31bed65e026a554e5bd55d9e731e1 -- Sent by a computer, using git, on the internet
| * | | | ASoC: rt5682: Use clk_hw based APIs for registrationStephen Boyd2020-08-172-38/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The (new?) style of clk registration uses clk_hw based APIs so that we can more easily see the difference between clk providers and clk consumers. Use the clk_hw based APIs to do this and migrate to devm for the clkdev creation so that we can reduce the amount of code. Signed-off-by: Stephen Boyd <swboyd@chromium.org> Cc: Cheng-Yi Chiang <cychiang@chromium.org> Cc: Shuming Fan <shumingf@realtek.com> Link: https://lore.kernel.org/r/20200804000531.920688-4-swboyd@chromium.org Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: rt5682: Drop usage of __clk_get_name()Stephen Boyd2020-08-171-13/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The __clk_get_name() API is deprecated. Use clk_hw_get_name() or proper registration techniques to avoid it. Signed-off-by: Stephen Boyd <swboyd@chromium.org> Cc: Cheng-Yi Chiang <cychiang@chromium.org> Cc: Shuming Fan <shumingf@realtek.com> Link: https://lore.kernel.org/r/20200804000531.920688-3-swboyd@chromium.org Signed-off-by: Mark Brown <broonie@kernel.org>
| * | | | ASoC: rt5682: Use dev_dbg() in rt5682_clk_check()Stephen Boyd2020-08-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I see a spew of "sysclk/dai not set correctly" whenever I cat /sys/kernel/debug/clk/clk_summary on my device. This is because the master pointer isn't set yet in this driver. A user isn't going to be able to do much if this check is failing so this error message isn't really an error, it's more of a kernel debug message. Lower the priority to dev_dbg() so that it isn't so noisy. Signed-off-by: Stephen Boyd <swboyd@chromium.org> Cc: Cheng-Yi Chiang <cychiang@chromium.org> Cc: Shuming Fan <shumingf@realtek.com> Link: https://lore.kernel.org/r/20200804000531.920688-2-swboyd@chromium.org Signed-off-by: Mark Brown <broonie@kernel.org>
* | | | | ASoC: wm8962: Export DAC/ADC monomix switchesSebastian Krzyszkowiak2020-08-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows solutions like ALSA UCM to utilize hardware mono downmix for cases where mono output to a single speaker is desired only in specific situations (like on a mobile phone). Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/3662154.EqNIRYjrc8@pliszka Signed-off-by: Mark Brown <broonie@kernel.org>