- 31 Jan, 2023 6 commits
-
-
Mark Brown authored
Merge series from Claudiu Beznea <claudiu.beznea@microchip.com>: This series adds runtime PM support for Microchip SPDIFRX driver. Along with it I added few fixes identified while going though the code and playing with Microchip SPDIFRX controller.
-
Mark Brown authored
Merge series from wangweidong.a@awinic.com: The Awinic AW88395 is an I2S/TDM input, high efficiency digital Smart K audio amplifier with an integrated 10.25V smart boost converter. Add a DT schema for describing Awinic AW88395 audio amplifiers. They are controlled using I2C
-
Mark Brown authored
Merge series from Herve Codina <herve.codina@bootlin.com>: The Renesas IDT821034 codec is four channel PCM codec with on-chip filters and programmable gain setting. It also provides SLIC (Subscriber Line Interface Circuit) signals as GPIOs.
-
Kiseok Jo authored
Fix the bindings checks like syntax error. Signed-off-by:
Kiseok Jo <kiseok.jo@irondevice.com> Reported-by:
Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/20230131050946.14385-1-kiseok.jo@irondevice.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Uwe Kleine-König authored
The probe function doesn't make use of the i2c_device_id * parameter so it can be trivially converted. Signed-off-by:
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Link: https://lore.kernel.org/r/20230131082107.174739-1-u.kleine-koenig@pengutronix.deSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Kiseok Jo authored
Add Kiseok Jo as maintainer for Iron Device audio codec drivers. Signed-off-by:
Kiseok Jo <kiseok.jo@irondevice.com> Link: https://lore.kernel.org/r/20230131054526.14653-1-kiseok.jo@irondevice.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
- 30 Jan, 2023 34 commits
-
-
Mark Brown authored
Merge series from Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>: Following is series of fixes and cleanups for core topology code. Few patches fixing various problems all around and few fixing function names.
-
Mark Brown authored
Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>: Audio-Graph-Card and Simple-Audio-Card are similar Card and are sharing same utils. Thus we can also sharing same schema. This patch-set fixup some Renesas's "make dtbs_check".
-
Weidong Wang authored
Add a DT schema for describing Awinic AW88395 audio amplifiers. They are controlled using I2C. Signed-off-by:
Weidong Wang <wangweidong.a@awinic.com> Reviewed-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20230113055301.189541-6-wangweidong.a@awinic.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Weidong Wang authored
The Awinic AW88395 is an I2S/TDM input, high efficiency digital Smart K audio amplifier with an integrated 10.25V smart boost convert Signed-off-by:
Nick Li <liweilei@awinic.com> Signed-off-by:
Bruce zhao <zhaolei@awinic.com> Signed-off-by:
Weidong Wang <wangweidong.a@awinic.com> Link: https://lore.kernel.org/r/20230113055301.189541-5-wangweidong.a@awinic.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Weidong Wang authored
The Awinic AW88395 is an I2S/TDM input, high efficiency digital Smart K audio amplifier with an integrated 10.25V smart boost convert Signed-off-by:
Nick Li <liweilei@awinic.com> Signed-off-by:
Bruce zhao <zhaolei@awinic.com> Signed-off-by:
Ben Yi <yijiangtao@awinic.com> Signed-off-by:
Weidong Wang <wangweidong.a@awinic.com> Link: https://lore.kernel.org/r/20230113055301.189541-4-wangweidong.a@awinic.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Weidong Wang authored
The Awinic AW88395 is an I2S/TDM input, high efficiency digital Smart K audio amplifier with an integrated 10.25V smart boost convert Signed-off-by:
Nick Li <liweilei@awinic.com> Signed-off-by:
Bruce zhao <zhaolei@awinic.com> Signed-off-by:
Weidong Wang <wangweidong.a@awinic.com> Link: https://lore.kernel.org/r/20230113055301.189541-3-wangweidong.a@awinic.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Weidong Wang authored
The Awinic AW88395 is an I2S/TDM input, high efficiency digital Smart K audio amplifier with an integrated 10.25V smart boost convert Signed-off-by:
Nick Li <liweilei@awinic.com> Signed-off-by:
Bruce zhao <zhaolei@awinic.com> Signed-off-by:
Weidong Wang <wangweidong.a@awinic.com> Link: https://lore.kernel.org/r/20230113055301.189541-2-wangweidong.a@awinic.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Herve Codina authored
After contributing the driver, add myself as the maintainer for the Renesas IDT821034 codec. Signed-off-by:
Herve Codina <herve.codina@bootlin.com> Link: https://lore.kernel.org/r/20230126085137.375814-4-herve.codina@bootlin.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Herve Codina authored
The Renesas IDT821034 codec is four channel PCM codec with on-chip filters and programmable gain setting. It also provides SLIC (Subscriber Line Interface Circuit) signals as GPIOs. Signed-off-by:
Herve Codina <herve.codina@bootlin.com> Link: https://lore.kernel.org/r/20230126085137.375814-3-herve.codina@bootlin.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Herve Codina authored
The Renesas IDT821034 codec is a quad PCM codec with programmable gain. Signed-off-by:
Herve Codina <herve.codina@bootlin.com> Reviewed-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20230126085137.375814-2-herve.codina@bootlin.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
Document data structures used by mchp-spdifrx driver. Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-9-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
Add runtime PM support for Microchip SPDIFRX driver. On runtime suspend the clocks are disabled and regmap is set in caching mode. On runtime resume the clocks are enabled and regmap is synced with the device. Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-8-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
Remove member fmt of struct mchp_spdifrx_dev as it is not used anywhere. Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-7-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
clk_get_rate() returns an unsigned long. Use a variable of type unsigned long to store it. Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-6-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
CSC interrupts which might be used in controls are on bits 8 and 9 of SPDIFRX_IDR register. Thus disable all the interrupts that are exported by driver. Fixes: ef265c55 ("ASoC: mchp-spdifrx: add driver for SPDIF RX") Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-5-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
Channel status get and channel subcode get controls relies on data returned by controls when certain IRQs are raised. To achieve that completions are used b/w controls and interrupt service routine. The concurrent accesses to these controls are protected by struct snd_card::controls_rwsem. Issues identified: - reinit_completion() may be called while waiting for completion which should be avoided - in case of multiple threads waiting, the complete() call in interrupt will signal only one waiting thread per interrupt which may lead to timeout for the others - in case of channel status get as the CSC interrupt is not refcounted ISR may disable interrupt for threads that were just enabled it. To solve these the access to controls were protected by a mutex. Along with this there is no need for spinlock to protect the software cache reads/updates b/w controls and ISR as the update is happening only when requested from control, and only one reader can reach the control. Fixes: ef265c55 ("ASoC: mchp-spdifrx: add driver for SPDIF RX") Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-4-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
wait_for_completion_interruptible_timeout() returns 0 in case of timeout. Check this into account when returning from function. Fixes: ef265c55 ("ASoC: mchp-spdifrx: add driver for SPDIF RX") Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-3-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Claudiu Beznea authored
The SPDIFRX block is clocked by 2 clocks: peripheral and generic clocks. Peripheral clock feeds user interface (registers) and generic clock feeds the receiver. To enable the receiver the generic clock needs to be enabled and also the ENABLE bit of MCHP_SPDIFRX_MR register need to be set. The signal control exported by mchp-spdifrx driver reports wrong status when the receiver is disabled. This can happen when requesting the signal and the capture was not previously started. To solve this the receiver needs to be enabled (by enabling generic clock and setting ENABLE bit of MR register) before reading the signal status. As with this fix there are 2 paths now that need to control the generic clock and ENABLE bit of SPDIFRX_MR register (one path though controls, one path though configuration) a mutex has been introduced. We can't rely on subsystem locking as the controls are protected by struct snd_card::controls_rwsem semaphore and configuration is protected by a different lock (embedded in snd_pcm_stream_lock_irq()). The introduction of mutex is also extended to other controls which rely on SPDIFRX_RSR.ULOCK bit as it has been discovered experimentally that having both clocks enabled but not the receiver (through ENABLE bit of SPDIFRX.MR) leads to inconsistent values of SPDIFRX_RSR.ULOCK. Thus on some controls we rely on software state (dev->trigger_enabled protected by mutex) to retrieve proper values. Fixes: ef265c55 ("ASoC: mchp-spdifrx: add driver for SPDIF RX") Signed-off-by:
Claudiu Beznea <claudiu.beznea@microchip.com> Link: https://lore.kernel.org/r/20230130120647.638049-2-claudiu.beznea@microchip.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
struct snd_soc_dobj only needs pointer to the unload function, instead however, there is pointer to all topology operations. Change code to use the function pointer instead of pointer to structure containing all operations. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-12-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
Functions removing bytes, enum and mixer kcontrols are identical. Unify them under one function and use it to free associated kcontrols. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-11-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
Caller already checks if hdr_pos is behind EOF, before calling soc_tplg_valid_header(), so there is no need to recheck it again. This also allows to remove behaviour of return 0 - forcing the caller to break out of while loop. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-10-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
Function soc_tplg_dapm_complete() detects an error and logs it, but doesn't return failure to the caller, fix it by returning the error. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-9-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
Instead of passing address of structure, the containing structure is cast to target structure. While it works - the expected structure is the first field of containing one - it is bad practice, fix this by passing pointer to structure field. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-8-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
There is no need to forward declare functions if their use is after their definition. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-7-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
Those are the only functions missing soc_tplg_ prefix, add it for consistency. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-6-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
Functions other than soc_valid_header have soc_tplg_ prefix. Rename function to follow convention in file. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-5-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
Topology is being abbreviated to "tplg", not "tplc", however, few functions have typo in name, fix it. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-4-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
The constant is unused, so it can be safely removed. Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-3-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Amadeusz Sławiński authored
When accessing values coming from topology, le32_to_cpu should be used. One of recent commits missed that. Fixes: 86e2d14b ("ASoC: topology: Add header payload_size verification") Reviewed-by:
Cezary Rojewski <cezary.rojewski@intel.com> Reviewed-by:
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by:
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20230127231111.937721-2-amadeuszx.slawinski@linux.intel.comSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Steffen Aschbacher authored
Add entry for the TAS5720A-Q1 driver in the dt-bindings doc. Acked-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by:
Steffen Aschbacher <steffen.aschbacher@stihl.de> Signed-off-by:
Alexandru Ardelean <alex@shruggie.ro> Link: https://lore.kernel.org/r/20230128082744.41849-4-alex@shruggie.roSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Steffen Aschbacher authored
Set the reserved bit 7 in the ANALOG_CTRL_REG for the TAS5720A-Q1 device, when probing. The datasheet mentions that the bit should be 1 during reset/powerup. The device did not initialize before setting this value to 1. So, this could be a quirk of this device. Or it could be a quirk with the board on which it was tested. That is why this patch is separate from the patch that adds support for the TAS5720A-Q1 device. Signed-off-by:
Steffen Aschbacher <steffen.aschbacher@stihl.de> Signed-off-by:
Alexandru Ardelean <alex@shruggie.ro> Link: https://lore.kernel.org/r/20230128082744.41849-3-alex@shruggie.roSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Steffen Aschbacher authored
This change adds support the TAS5720A-Q1 audio codec, in the same driver as tas5720. Functionally, this driver is pretty similar to it's TAS5720x variant. The first 3 registers are the same, so the main control and device identification can happen with these registers. The next registers differ. This variant offers control (in the registers) for 2 speakers, which is implemented here (in a basic manner). Signed-off-by:
Steffen Aschbacher <steffen.aschbacher@stihl.de> Signed-off-by:
Alexandru Ardelean <alex@shruggie.ro> Link: https://lore.kernel.org/r/20230128082744.41849-2-alex@shruggie.roSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Alexandru Ardelean authored
This is to be re-used in tas5720_mute() (which is part of the dai_ops) and also in the tas5720_fault_check_work() hook. The benefit here isn't too great (now). It's only when we add support for a new device with a slightly different regmap that this becomes more useful. Signed-off-by:
Alexandru Ardelean <alex@shruggie.ro> Link: https://lore.kernel.org/r/20230128082744.41849-1-alex@shruggie.roSigned-off-by:
Mark Brown <broonie@kernel.org>
-
Marek Vasut authored
Get rid of the vf610 sai special case, instead update the vfxxx.dtsi DT to use the same DMA channel ordering as all the other devices. The sai DMA channel ordering has not been aligned with other IP DMA channel ordering in the vfxxx.dtsi anyway. Signed-off-by:
Marek Vasut <marex@denx.de> Reviewed-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20230105144145.165010-1-marex@denx.deSigned-off-by:
Mark Brown <broonie@kernel.org>
-