Age | Commit message (Collapse) | Author | Files | Lines |
|
When TRCM mode is enabled, I2S RX and TX clocks are synchronized through
selected clock source. Without this fix BCLK and LRCK might get parented
to an uninitialized MCLK and the DAI will receive data at wrong pace.
However, unlike in original i2s-tdm driver, there is no need to manually
synchronize mclk_rx and mclk_tx, as only one gets used anyway.
Tested on a board with RK3568 SoC and Silergy SY24145S codec with enabled and
disabled TRCM mode.
Fixes: 9e2ab4b18ebd ("ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates")
Signed-off-by: Alibek Omarov <a1ba.omarov@gmail.com>
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://msgid.link/r/20240604184752.697313-1-a1ba.omarov@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
*-objs suffix is reserved rather for (user-space) host programs while
usually *-y suffix is used for kernel drivers (although *-objs works
for that purpose for now).
Let's correct the old usages of *-objs in Makefiles.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20240507155540.24815-22-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The sample rates set by the rockchip_i2s_tdm driver in master mode are
inaccurate up to 5% in several cases, due to the driver logic to configure
clocks and a nasty interaction with the Common Clock Framework.
To understand what happens, here is the relevant section of the clock tree
(slightly simplified), along with the names used in the driver:
vpll0 _OR_ vpll1 "mclk_root"
clk_i2s2_8ch_tx_src "mclk_parent"
clk_i2s2_8ch_tx_mux
clk_i2s2_8ch_tx "mclk" or "mclk_tx"
This is what happens when playing back e.g. at 192 kHz using
audio-graph-card (when recording the same applies, only s/tx/rx/):
0. at probe, rockchip_i2s_tdm_set_sysclk() stores the passed frequency in
i2s_tdm->mclk_tx_freq (*) which is 50176000, and that is never modified
afterwards
1. when playback is started, rockchip_i2s_tdm_hw_params() is called and
does the following two calls
2. rockchip_i2s_tdm_calibrate_mclk():
2a. selects mclk_root0 (vpll0) as a parent for mclk_parent
(mclk_tx_src), which is OK because the vpll0 rate is a good for
192000 (and sumbultiple) rates
2b. sets the mclk_root frequency based on ppm calibration computations
2c. sets mclk_tx_src to 49152000 (= 256 * 192000), which is also OK as
it is a multiple of the required bit clock
3. rockchip_i2s_tdm_set_mclk()
3a. calls clk_set_rate() to set the rate of mclk_tx (clk_i2s2_8ch_tx)
to the value of i2s_tdm->mclk_tx_freq (*), i.e. 50176000 which is
not a multiple of the sampling frequency -- this is not OK
3a1. clk_set_rate() reacts by reparenting clk_i2s2_8ch_tx_src to
vpll1 -- this is not OK because the default vpll1 rate can be
divided to get 44.1 kHz and related rates, not 192 kHz
The result is that the driver does a lot of ad-hoc decisions about clocks
and ends up in using the wrong parent at an unoptimal rate.
Step 0 is one part of the problem: unless the card driver calls set_sysclk
at each stream start, whatever rate is set in mclk_tx_freq during boot will
be taken and used until reboot. Moreover the driver does not care if its
value is not a multiple of any audio frequency.
Another part of the problem is that the whole reparenting and clock rate
setting logic is conflicting with the CCF algorithms to achieve largely the
same goal: selecting the best parent and setting the closest clock
rate. And it turns out that only calling once clk_set_rate() on
clk_i2s2_8ch_tx picks the correct vpll and sets the correct rate.
The fix is based on removing the custom logic in the driver to select the
parent and set the various clocks, and just let the Clock Framework do it
all. As a side effect, the set_sysclk() op becomes useless because we now
let the CCF compute the appropriate value for the sampling rate. It also
implies that the whole calibration logic is now dead code and so it is
removed along with the "PCM Clock Compensation in PPM" kcontrol, which has
always been broken anyway. The handling of the 4 optional clocks also
becomes dead code and is removed.
The actual rates have been tested playing 30 seconds of audio at various
sampling rates before and after this change using sox:
time play -r <sample_rate> -n synth 30 sine 950 gain -3
The time reported in the table below is the 'real' value reported by the
'time' command in the above command line.
rate before after
--------- ------ ------
8000 Hz 30.60s 30.63s
11025 Hz 30.45s 30.51s
16000 Hz 30.47s 30.50s
22050 Hz 30.78s 30.41s
32000 Hz 31.02s 30.43s
44100 Hz 30.78s 30.41s
48000 Hz 29.81s 30.45s
88200 Hz 30.78s 30.41s
96000 Hz 29.79s 30.42s
176400 Hz 27.40s 30.41s
192000 Hz 29.79s 30.42s
While the tests are running the clock tree confirms that:
* without the patch, vpll1 is always used and clk_i2s2_8ch_tx always
produces 50176000 Hz, which cannot be divided for most audio rates
except the slowest ones, generating inaccurate rates
* with the patch:
- for 192000 Hz vpll0 is used
- for 176400 Hz vpll1 is used
- clk_i2s2_8ch_tx always produces (256 * <rate>) Hz
Tested on the RK3308 using the internal audio codec.
Fixes: 081068fd6414 ("ASoC: rockchip: add support for i2s-tdm controller")
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://msgid.link/r/20240305-rk3308-audio-codec-v4-1-312acdbe628f@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Now that the driver core can properly handle constant struct bus_type,
move the i2c_bus_type variable to be a constant structure as well, placing
it into read-only memory which can not be modified at runtime.
Note, the sound/soc/rockchip/rk3399_gru_sound.c also needed tweaking as
it decided to save off a pointer to a bus type for internal stuff, and
it was using the i2c_bus_type as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
|
|
Commit 9958d85968ed ("ASoC: Use device_get_match_data()") dropped the
unconditional use of rockchip_i2s_tdm_match resulting in this warning:
sound/soc/rockchip/rockchip_i2s_tdm.c:1315:34: warning: 'rockchip_i2s_tdm_match' defined but not used [-Wunused-const-variable=]
The fix is to drop of_match_ptr() which is not necessary because DT is
always used for this driver.
Fixes: 9958d85968ed ("ASoC: Use device_get_match_data()")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202310121802.CDAGVdF2-lkp@intel.com/
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231030142337.814907-2-robh@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20231013221945.1489203-10-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Merge series from Rob Herring <robh@kernel.org>:
This is a series is part of ongoing clean-ups related to device
matching and DT related implicit includes. Essentially of_device.h has
a bunch of implicit includes and generally isn't needed any nore except
for of_match_device(). As we also generally want to get rid of
of_match_device() as well, I've done that so we're not updating the
includes twice.
|
|
The Rockchip RT5645 ASoC driver includes two legacy GPIO
headers but doesn't use symbols from any of them. Delete
the includes.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230929-descriptors-asoc-rockchip-v2-4-2d2c0e043aab@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The Rockchip MAX98090 ASoC driver includes two legacy GPIO
headers but doesn't use symbols from any of them. Delete
the includes.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230929-descriptors-asoc-rockchip-v2-3-2d2c0e043aab@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The RK3399 ASoC driver includes two legacy GPIO headers but
doesn't use symbols from any of them. Delete the includes.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230929-descriptors-asoc-rockchip-v2-2-2d2c0e043aab@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
This converts the Rockchip RK3288 HDMI driver to use GPIO
descriptors:
- Look up the HP EN GPIO as an optional descriptor and handle
it directly, the gpiod API is NULL-tolerant so no special
guards are needed.
- Let the Jack detection core obtain and handle the HP detection
GPIO, just pass the right name and gpiod_dev and it will
do the job. Make sure to check that the GPIO property
is there first, so it becomes optional.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230929-descriptors-asoc-rockchip-v2-1-2d2c0e043aab@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Use preferred device_get_match_data() instead of of_match_device() to
get the driver match data. With this, adjust the includes to explicitly
include the correct headers.
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231006-dt-asoc-header-cleanups-v3-5-13a4f0f7fee6@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The DT of_device.h and of_platform.h date back to the separate
of_platform_bus_type before it was merged into the regular platform bus.
As part of that merge prepping Arm DT support 13 years ago, they
"temporarily" include each other. They also include platform_device.h
and of.h. As a result, there's a pretty much random mix of those include
files used throughout the tree. In order to detangle these headers and
replace the implicit includes with struct declarations, users need to
explicitly include the correct includes.
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev> # for at91
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231006-dt-asoc-header-cleanups-v3-1-13a4f0f7fee6@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
ASoC is now unified asoc_xxx() into snd_soc_xxx().
This patch convert asoc_xxx() to snd_soc_xxx().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/878r9cqngq.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
'version' is an enum, thus cast of pointer on 64-bit compile test with
W=1 causes:
rockchip_pdm.c:587:18: error: cast to smaller integer type 'enum rk_pdm_version' from 'const void *' [-Werror,-Wvoid-pointer-to-enum-cast]
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230815143204.379708-3-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
ALSA SoC merges DAI call backs into .ops.
This patch merge these into one.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87r0od9m6i.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
This driver does not properly map jack pins to kcontrols that PulseAudio
and PipeWire need to handle jack detection events. The RT5645 codec used
here supports detecting Headphone and Headset Mic connections. Expose
both to userspace as kcontrols.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Link: https://lore.kernel.org/r/20230802175737.263412-25-alpernebiyasak@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Commit d0508b4f1604 ("ASoC: rk3399_gru_sound: Add DAPM pins, kcontrols
for jack detection") maps kcontrols for Headphones and Headset Mic jacks
for this driver so that PulseAudio and PipeWire can handle insertion
events for these peripherals.
The DA7219 codec used here can also distinguish between Headphone and
Line Out connections that go into the same physical port. Expose the
latter to userspace as a kcontrol as well and add the necessary widget.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Link: https://lore.kernel.org/r/20230802175737.263412-24-alpernebiyasak@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Merge series from Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:
Hello,
this series adapts the platform drivers below sound/ to use the .remove_new()
callback. Compared to the traditional .remove() callback .remove_new() returns
no value. This is a good thing because the driver core doesn't (and cannot)
cope for errors during remove. The only effect of a non-zero return value in
.remove() is that the driver core emits a warning. The device is removed anyhow
and an early return from .remove() usually yields a resource leak.
By changing the remove callback to return void driver authors cannot
reasonably assume any more that there is some kind of cleanup later.
The first two patches simplify a driver each to return zero unconditionally,
and then all drivers are trivially converted to .remove_new().
There are nearly no interdependencies in this patch set---only 1 <- 11 and
2 <- 16. So even if some individual problems are found (I don't expect that),
the other patches can (and from my POV should) still be applied.
Best regards
Uwe
Uwe Kleine-König (173):
ALSA: sh: aica: Drop if blocks with always false condition
ASoC: amd: acp: rembrandt: Drop if blocks with always false condition
ALSA: pxa2xx: Convert to platform remove callback returning void
ALSA: atmel: ac97: Convert to platform remove callback returning void
ALSA: mts64: Convert to platform remove callback returning void
ALSA: portman2x4: Convert to platform remove callback returning void
ALSA: mips/hal2: Convert to platform remove callback returning void
ALSA: mips/sgio2audio: Convert to platform remove callback returning
void
ALSA: hda/tegra: Convert to platform remove callback returning void
ALSA: ppc/powermac: Convert to platform remove callback returning void
ALSA: sh: aica: Convert to platform remove callback returning void
ALSA: sh_dac_audio: Convert to platform remove callback returning void
ASoC: adi: axi-i2s: Convert to platform remove callback returning void
ASoC: adi: axi-spdif: Convert to platform remove callback returning
void
ASoC: amd: acp-pcm-dma: Convert to platform remove callback returning
void
ASoC: amd: acp: rembrandt: Convert to platform remove callback
returning void
ASoC: amd: acp: renoir: Convert to platform remove callback returning
void
ASoC: amd: ps: Convert to platform remove callback returning void
ASoC: amd: raven: acp3x-pcm-dma: Convert to platform remove callback
returning void
ASoC: amd: raven: acp3x-pdm-dma: Convert to platform remove callback
returning void
ASoC: amd: vangogh: acp5x-pcm-dma: Convert to platform remove callback
returning void
ASoC: amd: yc: acp6x-pdm-dma: Convert to platform remove callback
returning void
ASoC: apple: mca: Convert to platform remove callback returning void
ASoC: atmel: atmel-i2s: Convert to platform remove callback returning
void
ASoC: atmel: atmel_wm8904: Convert to platform remove callback
returning void
ASoC: atmel: mchp-i2s-mcc: Convert to platform remove callback
returning void
ASoC: atmel: mchp-pdmc: Convert to platform remove callback returning
void
ASoC: atmel: mchp-spdifrx: Convert to platform remove callback
returning void
ASoC: atmel: mchp-spdiftx: Convert to platform remove callback
returning void
ASoC: atmel: mikroe-proto: Convert to platform remove callback
returning void
ASoC: atmel: sam9g20_wm8731: Convert to platform remove callback
returning void
ASoC: atmel: sam9x5_wm8731: Convert to platform remove callback
returning void
ASoC: atmel: tse850-pcm5142: Convert to platform remove callback
returning void
ASoC: au1x: ac97c: Convert to platform remove callback returning void
ASoC: au1x: i2sc: Convert to platform remove callback returning void
ASoC: au1x: psc-ac97: Convert to platform remove callback returning
void
ASoC: au1x: psc-i2s: Convert to platform remove callback returning
void
ASoC: bcm: bcm63xx-i2s-whistler: Convert to platform remove callback
returning void
ASoC: bcm: cygnus-ssp: Convert to platform remove callback returning
void
ASoC: cirrus: edb93xx: Convert to platform remove callback returning
void
ASoC: cirrus: ep93xx-i2s: Convert to platform remove callback
returning void
ASoC: codecs: cs47l15: Convert to platform remove callback returning
void
ASoC: codecs: cs47l24: Convert to platform remove callback returning
void
ASoC: codecs: cs47l35: Convert to platform remove callback returning
void
ASoC: codecs: cs47l85: Convert to platform remove callback returning
void
ASoC: codecs: cs47l90: Convert to platform remove callback returning
void
ASoC: codecs: cs47l92: Convert to platform remove callback returning
void
ASoC: codecs: inno_rk3036: Convert to platform remove callback
returning void
ASoC: codecs: lpass-rx-macro: Convert to platform remove callback
returning void
ASoC: codecs: lpass-tx-macro: Convert to platform remove callback
returning void
ASoC: codecs: lpass-va-macro: Convert to platform remove callback
returning void
ASoC: codecs: lpass-wsa-macro: Convert to platform remove callback
returning void
ASoC: codecs: msm8916-wcd-analog: Convert to platform remove callback
returning void
ASoC: codecs: msm8916-wcd-digital: Convert to platform remove callback
returning void
ASoC: codecs: rk817_codec: Convert to platform remove callback
returning void
ASoC: codecs: wcd938x: Convert to platform remove callback returning
void
ASoC: codecs: wm5102: Convert to platform remove callback returning
void
ASoC: codecs: wm5110: Convert to platform remove callback returning
void
ASoC: codecs: wm8994: Convert to platform remove callback returning
void
ASoC: codecs: wm8997: Convert to platform remove callback returning
void
ASoC: codecs: wm8998: Convert to platform remove callback returning
void
ASoC: dwc: dwc-i2s: Convert to platform remove callback returning void
ASoC: fsl: eukrea-tlv320: Convert to platform remove callback
returning void
ASoC: fsl: fsl_asrc: Convert to platform remove callback returning
void
ASoC: fsl: fsl_aud2htx: Convert to platform remove callback returning
void
ASoC: fsl: fsl_audmix: Convert to platform remove callback returning
void
ASoC: fsl: fsl_dma: Convert to platform remove callback returning void
ASoC: fsl: fsl_easrc: Convert to platform remove callback returning
void
ASoC: fsl: fsl_esai: Convert to platform remove callback returning
void
ASoC: fsl: fsl_mqs: Convert to platform remove callback returning void
ASoC: fsl: fsl_rpmsg: Convert to platform remove callback returning
void
ASoC: fsl: fsl_sai: Convert to platform remove callback returning void
ASoC: fsl: fsl_spdif: Convert to platform remove callback returning
void
ASoC: fsl: fsl_ssi: Convert to platform remove callback returning void
ASoC: fsl: fsl_xcvr: Convert to platform remove callback returning
void
ASoC: fsl: imx-audmux: Convert to platform remove callback returning
void
ASoC: fsl: imx-pcm-rpmsg: Convert to platform remove callback
returning void
ASoC: fsl: imx-sgtl5000: Convert to platform remove callback returning
void
ASoC: fsl: mpc5200_psc_ac97: Convert to platform remove callback
returning void
ASoC: fsl: mpc5200_psc_i2s: Convert to platform remove callback
returning void
ASoC: fsl: mpc8610_hpcd: Convert to platform remove callback returning
void
ASoC: fsl: p1022_ds: Convert to platform remove callback returning
void
ASoC: fsl: p1022_rdk: Convert to platform remove callback returning
void
ASoC: fsl: pcm030-audio-fabric: Convert to platform remove callback
returning void
ASoC: generic: test-component: Convert to platform remove callback
returning void
ASoC: img: img-i2s-in: Convert to platform remove callback returning
void
ASoC: img: img-i2s-out: Convert to platform remove callback returning
void
ASoC: img: img-parallel-out: Convert to platform remove callback
returning void
ASoC: img: img-spdif-in: Convert to platform remove callback returning
void
ASoC: img: img-spdif-out: Convert to platform remove callback
returning void
ASoC: img: pistachio-internal-dac: Convert to platform remove callback
returning void
ASoC: Intel: sst-mfld-platform-pcm: Convert to platform remove
callback returning void
ASoC: Intel: sst: Convert to platform remove callback returning void
ASoC: Intel: bytcht_es8316: Convert to platform remove callback
returning void
ASoC: Intel: bytcr_rt5640: Convert to platform remove callback
returning void
ASoC: Intel: boards: bytcr_rt5651: Convert to platform remove callback
returning void
ASoC: Intel: bytcr_wm5102: Convert to platform remove callback
returning void
ASoC: Intel: cht_bsw_max98090_ti: Convert to platform remove callback
returning void
ASoC: Intel: sof_es8336: Convert to platform remove callback returning
void
ASoC: Intel: sof_pcm512x: Convert to platform remove callback
returning void
ASoC: Intel: sof_sdw: Convert to platform remove callback returning
void
ASoC: Intel: sof_wm8804: Convert to platform remove callback returning
void
ASoC: Intel: catpt: Convert to platform remove callback returning void
ASoC: Intel: skl-ssp-clk: Convert to platform remove callback
returning void
ASoC: kirkwood: kirkwood-i2s: Convert to platform remove callback
returning void
ASoC: mediatek: mtk-btcvsd: Convert to platform remove callback
returning void
ASoC: mediatek: mt2701-afe-pcm: Convert to platform remove callback
returning void
ASoC: mediatek: mt6797-afe-pcm: Convert to platform remove callback
returning void
ASoC: mediatek: mt8173-afe-pcm: Convert to platform remove callback
returning void
ASoC: mediatek: mt8183-afe-pcm: Convert to platform remove callback
returning void
ASoC: mediatek: mt8188-afe-pcm: Convert to platform remove callback
returning void
ASoC: mediatek: mt8192-afe-pcm: Convert to platform remove callback
returning void
ASoC: mediatek: mt8195-afe-pcm: Convert to platform remove callback
returning void
ASoC: meson: aiu: Convert to platform remove callback returning void
ASoC: mxs: mxs-sgtl5000: Convert to platform remove callback returning
void
ASoC: pxa: mmp-sspa: Convert to platform remove callback returning
void
ASoC: pxa: pxa2xx-ac97: Convert to platform remove callback returning
void
ASoC: qcom: qdsp6: Convert to platform remove callback returning void
ASoC: rockchip: rockchip_i2s: Convert to platform remove callback
returning void
ASoC: rockchip: rockchip_i2s_tdm: Convert to platform remove callback
returning void
ASoC: rockchip: rockchip_pdm: Convert to platform remove callback
returning void
ASoC: rockchip: rockchip_rt5645: Convert to platform remove callback
returning void
ASoC: rockchip: rockchip_spdif: Convert to platform remove callback
returning void
ASoC: samsung: arndale: Convert to platform remove callback returning
void
ASoC: samsung: i2s: Convert to platform remove callback returning void
ASoC: samsung: odroid: Convert to platform remove callback returning
void
ASoC: samsung: pcm: Convert to platform remove callback returning void
ASoC: samsung: snow: Convert to platform remove callback returning
void
ASoC: samsung: spdif: Convert to platform remove callback returning
void
ASoC: sh: fsi: Convert to platform remove callback returning void
ASoC: sh: hac: Convert to platform remove callback returning void
ASoC: sh: rcar: Convert to platform remove callback returning void
ASoC: sh: rz-ssi: Convert to platform remove callback returning void
ASoC: sh: siu_dai: Convert to platform remove callback returning void
ASoC: sprd: sprd-mcdt: Convert to platform remove callback returning
void
ASoC: stm: stm32_adfsdm: Convert to platform remove callback returning
void
ASoC: stm: stm32_i2s: Convert to platform remove callback returning
void
ASoC: stm: stm32_sai_sub: Convert to platform remove callback
returning void
ASoC: stm: stm32_spdifrx: Convert to platform remove callback
returning void
ASoC: sunxi: sun4i-codec: Convert to platform remove callback
returning void
ASoC: sunxi: sun4i-i2s: Convert to platform remove callback returning
void
ASoC: sunxi: sun4i-spdif: Convert to platform remove callback
returning void
ASoC: sunxi: sun50i-dmic: Convert to platform remove callback
returning void
ASoC: sunxi: sun8i-codec: Convert to platform remove callback
returning void
ASoC: tegra: tegra186_asrc: Convert to platform remove callback
returning void
ASoC: tegra: tegra186_dspk: Convert to platform remove callback
returning void
ASoC: tegra: tegra20_ac97: Convert to platform remove callback
returning void
ASoC: tegra: tegra20_i2s: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_admaif: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_adx: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_ahub: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_amx: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_dmic: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_i2s: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_mixer: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_mvc: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_ope: Convert to platform remove callback
returning void
ASoC: tegra: tegra210_sfc: Convert to platform remove callback
returning void
ASoC: tegra: tegra30_ahub: Convert to platform remove callback
returning void
ASoC: tegra: tegra30_i2s: Convert to platform remove callback
returning void
ASoC: ti: ams-delta: Convert to platform remove callback returning
void
ASoC: ti: davinci-i2s: Convert to platform remove callback returning
void
ASoC: ti: davinci-mcasp: Convert to platform remove callback returning
void
ASoC: ti: omap-hdmi: Convert to platform remove callback returning
void
ASoC: ti: omap-mcbsp: Convert to platform remove callback returning
void
ASoC: uniphier: evea: Convert to platform remove callback returning
void
ASoC: ux500: mop500: Convert to platform remove callback returning
void
ASoC: ux500: ux500_msp_dai: Convert to platform remove callback
returning void
ASoC: xilinx: xlnx_formatter_pcm: Convert to platform remove callback
returning void
ASoC: xilinx: xlnx_spdif: Convert to platform remove callback
returning void
ASoC: xtensa: xtfpga-i2s: Convert to platform remove callback
returning void
ALSA: sparc/cs4231: Convert to platform remove callback returning void
ALSA: sparc/dbri: Convert to platform remove callback returning void
sound/arm/pxa2xx-ac97.c | 6 ++----
sound/atmel/ac97c.c | 6 ++----
sound/drivers/mts64.c | 6 ++----
sound/drivers/portman2x4.c | 6 ++----
sound/mips/hal2.c | 5 ++---
sound/mips/sgio2audio.c | 5 ++---
sound/pci/hda/hda_tegra.c | 6 ++----
sound/ppc/powermac.c | 5 ++---
sound/sh/aica.c | 7 ++-----
sound/sh/sh_dac_audio.c | 5 ++---
sound/soc/adi/axi-i2s.c | 6 ++----
sound/soc/adi/axi-spdif.c | 6 ++----
sound/soc/amd/acp-pcm-dma.c | 6 ++----
sound/soc/amd/acp/acp-rembrandt.c | 13 +++----------
sound/soc/amd/acp/acp-renoir.c | 5 ++---
sound/soc/amd/ps/ps-pdm-dma.c | 5 ++---
sound/soc/amd/raven/acp3x-pcm-dma.c | 5 ++---
sound/soc/amd/renoir/acp3x-pdm-dma.c | 5 ++---
sound/soc/amd/vangogh/acp5x-pcm-dma.c | 5 ++---
sound/soc/amd/yc/acp6x-pdm-dma.c | 5 ++---
sound/soc/apple/mca.c | 5 ++---
sound/soc/atmel/atmel-i2s.c | 6 ++----
sound/soc/atmel/atmel_wm8904.c | 6 ++----
sound/soc/atmel/mchp-i2s-mcc.c | 6 ++----
sound/soc/atmel/mchp-pdmc.c | 6 ++----
sound/soc/atmel/mchp-spdifrx.c | 6 ++----
sound/soc/atmel/mchp-spdiftx.c | 6 ++----
sound/soc/atmel/mikroe-proto.c | 6 ++----
sound/soc/atmel/sam9g20_wm8731.c | 6 ++----
sound/soc/atmel/sam9x5_wm8731.c | 6 ++----
sound/soc/atmel/tse850-pcm5142.c | 6 ++----
sound/soc/au1x/ac97c.c | 6 ++----
sound/soc/au1x/i2sc.c | 6 ++----
sound/soc/au1x/psc-ac97.c | 6 ++----
sound/soc/au1x/psc-i2s.c | 6 ++----
sound/soc/bcm/bcm63xx-i2s-whistler.c | 5 ++---
sound/soc/bcm/cygnus-ssp.c | 6 ++----
sound/soc/cirrus/edb93xx.c | 6 ++----
sound/soc/cirrus/ep93xx-i2s.c | 5 ++---
sound/soc/codecs/cs47l15.c | 6 ++----
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 | 6 ++----
sound/soc/codecs/inno_rk3036.c | 6 ++----
sound/soc/codecs/lpass-rx-macro.c | 6 ++----
sound/soc/codecs/lpass-tx-macro.c | 6 ++----
sound/soc/codecs/lpass-va-macro.c | 6 ++----
sound/soc/codecs/lpass-wsa-macro.c | 6 ++----
sound/soc/codecs/msm8916-wcd-analog.c | 6 ++----
sound/soc/codecs/msm8916-wcd-digital.c | 6 ++----
sound/soc/codecs/rk817_codec.c | 6 ++----
sound/soc/codecs/wcd938x.c | 6 ++----
sound/soc/codecs/wm5102.c | 6 ++----
sound/soc/codecs/wm5110.c | 6 ++----
sound/soc/codecs/wm8994.c | 6 ++----
sound/soc/codecs/wm8997.c | 6 ++----
sound/soc/codecs/wm8998.c | 6 ++----
sound/soc/dwc/dwc-i2s.c | 5 ++---
sound/soc/fsl/eukrea-tlv320.c | 6 ++----
sound/soc/fsl/fsl_asrc.c | 6 ++----
sound/soc/fsl/fsl_aud2htx.c | 6 ++----
sound/soc/fsl/fsl_audmix.c | 6 ++----
sound/soc/fsl/fsl_dma.c | 6 ++----
sound/soc/fsl/fsl_easrc.c | 6 ++----
sound/soc/fsl/fsl_esai.c | 6 ++----
sound/soc/fsl/fsl_mqs.c | 5 ++---
sound/soc/fsl/fsl_rpmsg.c | 6 ++----
sound/soc/fsl/fsl_sai.c | 6 ++----
sound/soc/fsl/fsl_spdif.c | 6 ++----
sound/soc/fsl/fsl_ssi.c | 6 ++----
sound/soc/fsl/fsl_xcvr.c | 5 ++---
sound/soc/fsl/imx-audmux.c | 6 ++----
sound/soc/fsl/imx-pcm-rpmsg.c | 6 ++----
sound/soc/fsl/imx-sgtl5000.c | 6 ++----
sound/soc/fsl/mpc5200_psc_ac97.c | 5 ++---
sound/soc/fsl/mpc5200_psc_i2s.c | 5 ++---
sound/soc/fsl/mpc8610_hpcd.c | 6 ++----
sound/soc/fsl/p1022_ds.c | 6 ++----
sound/soc/fsl/p1022_rdk.c | 6 ++----
sound/soc/fsl/pcm030-audio-fabric.c | 6 ++----
sound/soc/generic/test-component.c | 6 ++----
sound/soc/img/img-i2s-in.c | 6 ++----
sound/soc/img/img-i2s-out.c | 6 ++----
sound/soc/img/img-parallel-out.c | 6 ++----
sound/soc/img/img-spdif-in.c | 6 ++----
sound/soc/img/img-spdif-out.c | 6 ++----
sound/soc/img/pistachio-internal-dac.c | 6 ++----
sound/soc/intel/atom/sst-mfld-platform-pcm.c | 5 ++---
sound/soc/intel/atom/sst/sst_acpi.c | 5 ++---
sound/soc/intel/boards/bytcht_es8316.c | 5 ++---
sound/soc/intel/boards/bytcr_rt5640.c | 5 ++---
sound/soc/intel/boards/bytcr_rt5651.c | 5 ++---
sound/soc/intel/boards/bytcr_wm5102.c | 5 ++---
sound/soc/intel/boards/cht_bsw_max98090_ti.c | 6 ++----
sound/soc/intel/boards/sof_es8336.c | 6 ++----
sound/soc/intel/boards/sof_pcm512x.c | 6 ++----
sound/soc/intel/boards/sof_sdw.c | 6 ++----
sound/soc/intel/boards/sof_wm8804.c | 5 ++---
sound/soc/intel/catpt/device.c | 6 ++----
sound/soc/intel/skylake/skl-ssp-clk.c | 6 ++----
sound/soc/kirkwood/kirkwood-i2s.c | 6 ++----
sound/soc/mediatek/common/mtk-btcvsd.c | 5 ++---
sound/soc/mediatek/mt2701/mt2701-afe-pcm.c | 6 ++----
sound/soc/mediatek/mt6797/mt6797-afe-pcm.c | 6 ++----
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 5 ++---
sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 6 ++----
sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 6 ++----
sound/soc/mediatek/mt8192/mt8192-afe-pcm.c | 5 ++---
sound/soc/mediatek/mt8195/mt8195-afe-pcm.c | 5 ++---
sound/soc/meson/aiu.c | 6 ++----
sound/soc/mxs/mxs-sgtl5000.c | 6 ++----
sound/soc/pxa/mmp-sspa.c | 7 +++----
sound/soc/pxa/pxa2xx-ac97.c | 5 ++---
sound/soc/qcom/qdsp6/q6routing.c | 6 ++----
sound/soc/rockchip/rockchip_i2s.c | 6 ++----
sound/soc/rockchip/rockchip_i2s_tdm.c | 6 ++----
sound/soc/rockchip/rockchip_pdm.c | 6 ++----
sound/soc/rockchip/rockchip_rt5645.c | 6 ++----
sound/soc/rockchip/rockchip_spdif.c | 6 ++----
sound/soc/samsung/arndale.c | 5 ++---
sound/soc/samsung/i2s.c | 8 +++-----
sound/soc/samsung/odroid.c | 6 ++----
sound/soc/samsung/pcm.c | 6 ++----
sound/soc/samsung/snow.c | 6 ++----
sound/soc/samsung/spdif.c | 6 ++----
sound/soc/sh/fsi.c | 6 ++----
sound/soc/sh/hac.c | 5 ++---
sound/soc/sh/rcar/core.c | 6 ++----
sound/soc/sh/rz-ssi.c | 6 ++----
sound/soc/sh/siu_dai.c | 5 ++---
sound/soc/sprd/sprd-mcdt.c | 6 ++----
sound/soc/stm/stm32_adfsdm.c | 6 ++----
sound/soc/stm/stm32_i2s.c | 6 ++----
sound/soc/stm/stm32_sai_sub.c | 6 ++----
sound/soc/stm/stm32_spdifrx.c | 6 ++----
sound/soc/sunxi/sun4i-codec.c | 6 ++----
sound/soc/sunxi/sun4i-i2s.c | 6 ++----
sound/soc/sunxi/sun4i-spdif.c | 6 ++----
sound/soc/sunxi/sun50i-dmic.c | 6 ++----
sound/soc/sunxi/sun8i-codec.c | 6 ++----
sound/soc/tegra/tegra186_asrc.c | 6 ++----
sound/soc/tegra/tegra186_dspk.c | 6 ++----
sound/soc/tegra/tegra20_ac97.c | 6 ++----
sound/soc/tegra/tegra20_i2s.c | 6 ++----
sound/soc/tegra/tegra210_admaif.c | 6 ++----
sound/soc/tegra/tegra210_adx.c | 6 ++----
sound/soc/tegra/tegra210_ahub.c | 6 ++----
sound/soc/tegra/tegra210_amx.c | 6 ++----
sound/soc/tegra/tegra210_dmic.c | 6 ++----
sound/soc/tegra/tegra210_i2s.c | 6 ++----
sound/soc/tegra/tegra210_mixer.c | 6 ++----
sound/soc/tegra/tegra210_mvc.c | 6 ++----
sound/soc/tegra/tegra210_ope.c | 6 ++----
sound/soc/tegra/tegra210_sfc.c | 6 ++----
sound/soc/tegra/tegra30_ahub.c | 6 ++----
sound/soc/tegra/tegra30_i2s.c | 6 ++----
sound/soc/ti/ams-delta.c | 5 ++---
sound/soc/ti/davinci-i2s.c | 6 ++----
sound/soc/ti/davinci-mcasp.c | 6 ++----
sound/soc/ti/omap-hdmi.c | 5 ++---
sound/soc/ti/omap-mcbsp.c | 6 ++----
sound/soc/uniphier/evea.c | 6 ++----
sound/soc/ux500/mop500.c | 6 ++----
sound/soc/ux500/ux500_msp_dai.c | 6 ++----
sound/soc/xilinx/xlnx_formatter_pcm.c | 5 ++---
sound/soc/xilinx/xlnx_spdif.c | 5 ++---
sound/soc/xtensa/xtfpga-i2s.c | 5 ++---
sound/sparc/cs4231.c | 6 ++----
sound/sparc/dbri.c | 6 ++----
171 files changed, 345 insertions(+), 654 deletions(-)
base-commit: fe15c26ee26efa11741a7b632e9f23b01aca4cc6
--
2.39.2
|
|
The Rockchip I2S driver supports the RK3588/RK3588S SoCs, hence add the
corresponding compatible string.
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Link: https://lore.kernel.org/r/20230315114806.3819515-9-cristian.ciocaltea@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-124-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-123-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-122-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20230315150745.67084-120-u.kleine-koenig@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Current ASoC has many helper function.
This patch use it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87pmavea3l.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Fix spelling in sound/soc/ Kconfig files:
s/upto/up to/
(reported by codespell)
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Reviewed-by: Heiko Stuebner <heiko@sntech.de> #rockchip
Link: https://lore.kernel.org/r/20230124181746.19028-1-rdunlap@infradead.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
rk_spdif_runtime_resume()
rk_spdif_runtime_resume() may have called clk_prepare_enable() before return
from failed branches, add missing clk_disable_unprepare() in this case.
Fixes: f874b80e1571 ("ASoC: rockchip: Add rockchip SPDIF transceiver driver")
Signed-off-by: Wang Jingjin <wangjingjin1@huawei.com>
Link: https://lore.kernel.org/r/20221208063900.4180790-1-wangjingjin1@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
rockchip_pdm_runtime_resume()
The clk_disable_unprepare() should be called in the error handling of
rockchip_pdm_runtime_resume().
Fixes: fc05a5b22253 ("ASoC: rockchip: add support for pdm controller")
Signed-off-by: Wang Jingjin <wangjingjin1@huawei.com>
Link: https://lore.kernel.org/r/20221205032802.2422983-1-wangjingjin1@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
This adds support for the RK3588 SoC to the I2S/TDM driver.
Signed-off-by: Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
Link: https://lore.kernel.org/r/20221025124132.399729-5-frattaroli.nicolas@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Only IO Multiplex and two TRCM modes need access to the GRF, so
making it a hard requirement is not a wise idea, as it complicates
support for newer SoCs which do not do these things.
Signed-off-by: Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
Link: https://lore.kernel.org/r/20221025124132.399729-3-frattaroli.nicolas@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Do not access the internal function directly, do so through
component->set_jack() instead.
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20221031160227.2352630-5-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
1. Uses regmap_read_poll_timeout_atomic to poll I2S_CLR as it is called
within a spin lock.
2. Fixes the typo of break condition in regmap_read_poll_timeout_atomic.
Fixes: fbb0ec656ee5 ("ASoC: rockchip: i2s: use regmap_read_poll_timeout to poll I2S_CLR")
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Link: https://lore.kernel.org/r/20220930151546.2017667-1-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Use regmap_read_poll_timeout to poll I2S_CLR.
It also fixes the 'rockchip-i2s ff070000.i2s; fail to clear' when
the read of I2S_CLR exceeds the retry limit.
Fixes: 0ff9f8b9f592 ("ASoC: rockchip: i2s: Fix error code when fail to read I2S_CLR")
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Link: https://lore.kernel.org/r/20220914031234.2250298-1-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Needed for the Rockchip driver.
|
|
Commit a5450aba737d ("ASoC: rockchip: i2s: switch BCLK to GPIO") switched
BCLK to GPIO functions when probing the i2s bus interface, but missed
adding a check for when devm_pinctrl_get() returns an error. This can lead
to the following NULL pointer dereference on a rockpro64-v2 if there are no
"pinctrl" properties in the i2s device tree node.
Check that i2s->pinctrl is valid before attempting to search for the
bclk_on and bclk_off pinctrl states.
Fixes: a5450aba737d ("ASoC: rockchip: i2s: switch BCLK to GPIO")
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Link: https://lore.kernel.org/r/20220711130522.401551-1-alexandru.elisei@arm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Add the error code '-EBUSY' when fail to read I2S_CLR
in rockchip_snd_rxctrl() and rockchip_snd_txctrl()
Fixes: 44f362c2cc6d ("ASoC: rockchip: i2s: switch BCLK to GPIO")
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Link: https://lore.kernel.org/r/20220701021427.3120549-1-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Merge series from Charles Keepax <ckeepax@opensource.cirrus.com>:
Historically, the legacy DAI naming scheme was applied to platform
drivers and the newer scheme to CODEC drivers. During componentisation
the core lost the knowledge of if a driver was a CODEC or platform, they
were all now components. To continue to support the legacy naming on
older platform drivers a flag was added to the snd_soc_component_driver
structure, non_legacy_dai_naming, to indicate to use the new scheme and
this was applied to all CODECs as part of the migration.
However, a slight issue appears to be developing with respect to this
flag being opt in for the non-legacy scheme, which presumably we want to
be the primary scheme used. Many codec drivers appear to forget to
include this flag:
grep -l -r "snd_soc_component_driver" sound/soc/codecs/*.c |
xargs grep -L "non_legacy_dai_naming" | wc
48 48 556
Whilst in many cases the configuration of the DAIs themselves will cause
the core to apply the new scheme anyway, it would seem more sensible to
change the flag to legacy_dai_naming making the new scheme opt out. This
patch series migrates across to such a scheme.
|
|
Remove the unwanted dma settings in rockchip_i2s_probe.
Fixes: 44f362c2cc6d ("ASoC: rockchip: i2s: switch BCLK to GPIO")
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Link: https://lore.kernel.org/r/20220629080421.2427933-1-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Use dev_dbg on missing i2s->pinctrl as the pinctrl property is optional.
Fixes: 44f362c2cc6d ("ASoC: rockchip: i2s: switch BCLK to GPIO")
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Link: https://lore.kernel.org/r/20220629080345.2427872-1-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Simplify the flow.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20220616220427.136036-10-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
simplify the flow. No functionality change, except that on -EACCESS
the reference count will be decreased.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20220616220427.136036-7-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Change the legacy DAI naming flag from opting in to the new scheme
(non_legacy_dai_naming), to opting out of it (legacy_dai_naming).
These drivers appear to be on the CPU side of the DAI link and
currently uses the legacy naming, so add the new flag.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220623125250.2355471-27-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We discoverd that the state of BCLK on, LRCLK off and SD_MODE on
may cause the speaker melting issue. Removing LRCLK while BCLK
is present can cause unexpected output behavior including a large
DC output voltage as described in the Max98357a datasheet.
In order to:
1. prevent BCLK from turning on by other component.
2. keep BCLK and LRCLK being present at the same time
This patch switches BCLK to GPIO func before LRCLK output, and
configures BCLK func back during LRCLK is output.
Without this fix, BCLK is turned on 11 ms earlier than LRCK by the
da7219.
With this fix, BCLK is turned on only 0.4 ms earlier than LRCK by
the rockchip codec.
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Link: https://lore.kernel.org/r/20220615045643.3137287-1-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
The error code is missing in this code scenario, add the error code
'-EINVAL' to the return value 'ret'.
This was found by coccicheck:
sound/soc/rockchip/rockchip_i2s.c:810 rockchip_i2s_probe() warn: missing error code 'ret'.
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Link: https://lore.kernel.org/r/20220624082745.68367-1-jiapeng.chong@linux.alibaba.com
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Merge series from Judy Hsiao <judyhsiao@chromium.org>:
The patches series is to fix the unexpected large DC output
voltage of Max98357a that burns the speakers on the rockchip
platform when BCLK and SD_MODE are ON but LRCLK is OFF.
|
|
Commit 44f362c2cc6d ("ASoC: rockchip: i2s: switch BCLK to GPIO") added
pinctrl lookups, but did not skip the lookup if there was no pinctrl
device tied to the I2S controller. As a result, the lookup was done
on an invalid pointer in such cases, causing a kernel panic.
Only do the subsequent pinctrl state lookups and switch if a pinctrl
device was found.
i2s_pinctrl_select_bclk_{on,off} already guard against missing pinctrl
device or pinctrl state, so those two functions aren't touched.
Fixes: 44f362c2cc6d ("ASoC: rockchip: i2s: switch BCLK to GPIO")
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Link: https://lore.kernel.org/r/20220621185747.2782-1-wens@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Needed for new development.
|
|
We discoverd that the state of BCLK on, LRCLK off and SD_MODE on
may cause the speaker melting issue. Removing LRCLK while BCLK
is present can cause unexpected output behavior including a large
DC output voltage as described in the Max98357a datasheet.
In order to:
1. prevent BCLK from turning on by other component.
2. keep BCLK and LRCLK being present at the same time
This patch switches BCLK to GPIO func before LRCLK output, and
configures BCLK func back during LRCLK is output.
Without this fix, BCLK is turned on 11 ms earlier than LRCK by the
da7219.
With this fix, BCLK is turned on only 0.4 ms earlier than LRCK by
the rockchip codec.
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Link: https://lore.kernel.org/r/20220619095324.492678-2-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
We discoverd that the state of BCLK on, LRCLK off and SD_MODE on
may cause the speaker melting issue. Removing LRCLK while BCLK
is present can cause unexpected output behavior including a large
DC output voltage as described in the Max98357a datasheet.
In order to:
1. prevent BCLK from turning on by other component.
2. keep BCLK and LRCLK being present at the same time
This patch switches BCLK to GPIO func before LRCLK output, and
configures BCLK func back during LRCLK is output.
Without this fix, BCLK is turned on 11 ms earlier than LRCK by the
da7219.
With this fix, BCLK is turned on only 0.4 ms earlier than LRCK by
the rockchip codec.
Signed-off-by: Judy Hsiao <judyhsiao@chromium.org>
Link: https://lore.kernel.org/r/20220615045643.3137287-1-judyhsiao@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Merge series from Charles Keepax <ckeepax@opensource.cirrus.com>:
Currently the set_fmt callback always passes clock provider/consumer
with respect to the CODEC. This made sense when the framework was
directly broken down into platforms and CODECs. However, as things
are now broken down into components which can be connected as either
the CPU or CODEC side of a DAI link it simplifies things if each
side of the link is just told if it is provider or consumer of the
clocks. Making this change allows us to remove one of the last parts
of the ASoC core that needs to know if a driver is a CODEC driver,
where it flips the clock format specifier if a CODEC driver is used on
the CPU side of a DAI link, as well as just being conceptually more
consistent with componentisation.
The basic idea of this patch chain is to change the set_fmt callback
from specifying if the CODEC is provider/consumer into directly
specifying if the component is provider/consumer. To do this we add
some new defines, and then to preserve bisectability, the migration is
done by adding a new callback, converting over all existing CPU side
drivers, converting the core, and then finally reverting back to the
old callback.
Converting the platform drivers makes sense as the existing defines
are from the perspective of the CODEC and there are more CODEC drivers
than platform drivers.
Obviously a fair amount of this patch chain I was only able to build
test, so any testing that can be done would be greatly appreciated.
|