- 18 May, 2020 18 commits
-
-
Mark Brown authored
Merge series "ASoC: codecs: rt*-sdw: memory leaks and simplifications" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>: While debugging unrelated memory corruption errors, I detected issues related to the interaction with the SoundWire and ASoC cores, here are 3 small patches to fix all this. Pierre-Louis Bossart (3): ASoC: codecs: rt*-sdw: don't assign slave_ops ASoC: codecs: rt*-sdw: fix memory leak in set_sdw_stream() ASoC: codecs: rt1308-sdw: remove duplicate allocation sound/soc/codecs/rt1308-sdw.c | 11 +++-------- sound/soc/codecs/rt5682-sdw.c | 3 --- sound/soc/codecs/rt5682.c | 3 +++ sound/soc/codecs/rt700-sdw.c | 3 --- sound/soc/codecs/rt700.c | 3 +++ sound/soc/codecs/rt711-sdw.c | 3 --- sound/soc/codecs/rt711.c | 3 +++ sound/soc/codecs/rt715-sdw.c | 3 --- sound/soc/codecs/rt715.c | 3 +++ 9 files changed, 15 insertions(+), 20 deletions(-) base-commit: d731c1a0 -- 2.20.1
-
Mark Brown authored
Merge series "ASoC: Intel: minor fixes to machine drivers" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>: Minor button remap changes, inspired by recent Chromebook patches, typo in component string reported by Jaroslav and driver name change not submitted in last wm8804 contribution. Pierre-Louis Bossart (5): ASoC: Intel: soc-acpi: change machine driver name for WM8804 platforms ASoC: Intel: sof_sdw: fix typo in components string ASoC: Intel: sof_sdw_rt711: remap buttons ASoC: Intel: sof_sdw_rt700: remap buttons ASoC: Intel: cht_bsw_nau8824: remap BTN_0 as KEY_PLAYPAUSE sound/soc/intel/boards/cht_bsw_nau8824.c | 4 ++-- sound/soc/intel/boards/sof_sdw.c | 2 +- sound/soc/intel/boards/sof_sdw_rt700.c | 8 ++++---- sound/soc/intel/boards/sof_sdw_rt711.c | 8 ++++---- sound/soc/intel/common/soc-acpi-intel-bxt-match.c | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) base-commit: d731c1a0 -- 2.20.1
-
Mark Brown authored
Merge series "ASoC: da7213: support for usage with simple-card" from Sebastian Reichel <sebastian.reichel@collabora.com>: Hi, This extends the da7213 driver to be used with simple-audio-card in combination with a fixed clock. Here is a snippet of the downstream board's DT, that is supposed to be supported by this patchset. --------------------------------------------------------------------- / { sound { compatible = "simple-audio-card"; simple-audio-card,name = "audio-card"; simple-audio-card,format = "i2s"; simple-audio-card,bitclock-master = <&dailink_master>; simple-audio-card,frame-master = <&dailink_master>; simple-audio-card,widgets = "Speaker", "Ext Spk"; simple-audio-card,audio-routing = "Ext Spk", "LINE"; simple-audio-card,cpu { sound-dai = <&ssi1>; }; dailink_master: simple-audio-card,codec { sound-dai = <&codec>; }; }; clk_ext_audio_codec: clock-codec { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <12288000>; }; }; &i2c1 { codec: audio-codec@1a { compatible = "dlg,da7212"; reg = <0x1a>; #sound-dai-cells = <0>; VDDA-supply = <®_2v5_audio>; VDDSP-supply = <®_5v0_audio>; VDDMIC-supply = <®_3v3_audio>; VDDIO-supply = <®_3v3_audio>; clocks = <&clk_ext_audio_codec>; clock-names = "mclk"; }; }; --------------------------------------------------------------------- This is mostly a resend of PATCHv2. There was quite a bit of discussion for the last patch. As far as I can see no better solution was found and the patch is fine as is. Sorry for the delay in sending another revision. Changes since PATCHv2: * https://lore.kernel.org/alsa-devel/20191120152406.2744-1-sebastian.reichel@collabora.com/ * dropped patch converting DA7213 into selectable Kconfig option (merged) * fix compatible string in patch 1 (DT binding) as pointed out by Adam Thomson * collected Reviewed-by from Adam Thomson for patch 2-4 Changes since PATCHv1: * https://lore.kernel.org/alsa-devel/20191108174843.11227-1-sebastian.reichel@collabora.com/ * add patch adding da7212 compatible to DT bindings * update regulator patch, so that VDDA is enabled together with VDDIO while the device is enabled to avoid device reset * update clock patch, so that automatic PLL handling is not enabled when PLL is configured manually * update clock patch, so that automatic PLL is disabled when the device is suspended * update clock patch, so that automatic PLL is configured into bypass mode when possible -- Sebastian Sebastian Reichel (5): ASoC: da7213: Add da7212 DT compatible ASoC: da7213: Add regulator support ASoC: da7213: move set_sysclk to codec level ASoC: da7213: move set_pll to codec level ASoC: da7213: add default clock handling .../devicetree/bindings/sound/da7213.txt | 8 +- sound/soc/codecs/da7213.c | 172 ++++++++++++++++-- sound/soc/codecs/da7213.h | 11 ++ 3 files changed, 175 insertions(+), 16 deletions(-) -- 2.26.2
-
Tang Bin authored
Delete unused initialized value of 'ret', because it will be assigned by the function fsl_micfil_set_mclk_rate(). Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> Link: https://lore.kernel.org/r/20200518110040.18036-1-tangbin@cmss.chinamobile.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Akshu Agrawal authored
This fixes the issue of driver not getting auto loaded with MODULE_ALIAS. With this patch: $find /sys/devices -name modalias -print0 | xargs -0 grep -i acp3x /sys/devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp3x_i2s_playcap.2/ modalias:platform:acp3x_i2s_playcap /sys/devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp3x_i2s_playcap.0/ modalias:platform:acp3x_i2s_playcap /sys/devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp3x_rv_i2s_dma.0/ modalias:platform:acp3x_rv_i2s_dma /sys/devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp3x_i2s_playcap.1/ modalias:platform:acp3x_i2s_playcap Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com> Link: https://lore.kernel.org/r/20200518043913.40646-1-akshu.agrawal@amd.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Tang Bin authored
In the function fsl_micfil_startup(), the two lines of dev_err() can be shortened to one line. Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> Link: https://lore.kernel.org/r/20200518105951.19200-1-tangbin@cmss.chinamobile.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sebastian Reichel authored
Move set_pll function to component level, so that it can be used at both component and DAI level. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/20200511132544.82364-5-sebastian.reichel@collabora.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sebastian Reichel authored
Move set_sysclk function to component level, so that it can be used at both component and DAI level. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/20200511132544.82364-4-sebastian.reichel@collabora.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sebastian Reichel authored
This adds support for most regulators of da7212 for improved power management. The only thing skipped was the speaker supply, which has some undocumented dependencies. It's supposed to be either always-enabled or always-disabled. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Link: https://lore.kernel.org/r/20200511132544.82364-3-sebastian.reichel@collabora.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sebastian Reichel authored
This adds a compatible for da7212. It's handled exactly the same way as DA7213 and follows the ACPI bindings. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Link: https://lore.kernel.org/r/20200511132544.82364-2-sebastian.reichel@collabora.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
Use same mapping as in all other machine drivers: BTN_0 : KEY_PLAYPAUSE BTN_1 : KEY_VOICECOMMAND BTN_2 : KEY_VOLUMEUP BTN_3 : KEY_VOLUMEDOWN Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Link: https://lore.kernel.org/r/20200515210731.10942-6-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
Use same mapping as in all other machine drivers: BTN_0 : KEY_PLAYPAUSE BTN_1 : KEY_VOICECOMMAND BTN_2 : KEY_VOLUMEUP BTN_3 : KEY_VOLUMEDOWN Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Link: https://lore.kernel.org/r/20200515210731.10942-5-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
Use same mapping as in all other machine drivers: BTN_0 : KEY_PLAYPAUSE BTN_1 : KEY_VOICECOMMAND BTN_2 : KEY_VOLUMEUP BTN_3 : KEY_VOLUMEDOWN Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Link: https://lore.kernel.org/r/20200515210731.10942-4-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
The component string attributes are separated by spaces, not commas. Fixes: b1ca2f63 ("ASoC: Intel: sof_sdw: add amp number in components string for ucm") Reported-by: Jaroslav Kysela <perex@perex.cz> 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> Link: https://lore.kernel.org/r/20200515210731.10942-3-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
Remove obsolete reference to Broxton since the machine driver will be reused on other platforms, e.g. Up Extreme. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://lore.kernel.org/r/20200515210731.10942-2-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
The .read_prop callback is supposed to be called by the SoundWire core only. Calling it again from this driver results in an additional memory allocation for no good reason. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Cc: Oder Chiou <oder_chiou@realtek.com> Cc: Shuming Fan <shumingf@realtek.com> Cc: Jack Yu <jack.yu@realtek.com> Link: https://lore.kernel.org/r/20200515211531.11416-4-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
Now that the sdw_stream is allocated in machine driver, set_sdw_stream() is also called with a NULL argument during the dailink shutdown. In this case, the drivers should not allocate any memory, and just return. Detected with KASAN/kmemleak. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Cc: Oder Chiou <oder_chiou@realtek.com> Cc: Shuming Fan <shumingf@realtek.com> Cc: Jack Yu <jack.yu@realtek.com> Link: https://lore.kernel.org/r/20200515211531.11416-3-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Pierre-Louis Bossart authored
The SoundWire bus core already assigns the slave ops, no need to set them a second time manually in each driver. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Cc: Oder Chiou <oder_chiou@realtek.com> Cc: Shuming Fan <shumingf@realtek.com> Cc: Jack Yu <jack.yu@realtek.com> Link: https://lore.kernel.org/r/20200515211531.11416-2-pierre-louis.bossart@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 15 May, 2020 4 commits
-
-
Mark Brown authored
Add support for imx8qm. Shengjiu Wang (2): ASoC: fsl_esai: introduce SoC specific data ASoC: fsl_esai: Add new compatible string for imx8qm Changes in v2 - drop the 0002 patch in v1, the dma relate limitation should be done in dma driver, or define a new DMA API for it. .../devicetree/bindings/sound/fsl,esai.txt | 1 + sound/soc/fsl/fsl_esai.c | 46 +++++++++++++++---- 2 files changed, 38 insertions(+), 9 deletions(-) -- 2.21.0
-
Ard Biesheuvel authored
The CrOS EC codec driver uses SHA-256 explicitly, and not in a performance critical manner, so there is really no point in using the SHASH crypto API here. Let's switch to the library API instead. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Tzung-Bi Shih <tzungbi@google.com> Cc: Cheng-Yi Chiang <cychiang@chromium.org> Cc: Enric Balletbo i Serra <enric.balletbo@collabora.com> Cc: Guenter Roeck <groeck@chromium.org> Cc: Benson Leung <bleung@chromium.org> Cc: Liam Girdwood <lgirdwood@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Eric Biggers <ebiggers@kernel.org> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: Tzung-Bi Shih <tzungbi@google.com> Link: https://lore.kernel.org/r/20200515100309.20795-1-ardb@kernel.orgSigned-off-by: Mark Brown <broonie@kernel.org>
-
Shengjiu Wang authored
Add new compatible string "fsl,imx8qm-esai" in the binding document. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Acked-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/fade597f6fb7e0ef9eb1185b491eaa46a9d287e3.1589537601.git.shengjiu.wang@nxp.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Shengjiu Wang authored
Introduce a SoC specific data structure which contains the differences between the different SoCs. This makes it easier to support more differences without having to introduce a new if/else each time. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Acked-by: Nicolin Chen <nicoleotsuka@gmail.com> Link: https://lore.kernel.org/r/c188279975bd216995904f9bf8a84c7887b759a0.1589537601.git.shengjiu.wang@nxp.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 14 May, 2020 4 commits
-
-
Mark Brown authored
Merge branch 'for-5.7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.8
-
Dan Murphy authored
Configure the PDM sampling edges based on the values from the firmware. Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200514123338.20392-3-dmurphy@ti.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Dan Murphy authored
Add a device tree property to configure the PDM sampling edge for each digital microphone. Signed-off-by: Dan Murphy <dmurphy@ti.com> CC: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/20200514123338.20392-2-dmurphy@ti.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Dan Murphy authored
Add ALSA controls to configure the PDM clocks. The clocks need to be configurable to accommodate various microphones that use clocks for low power/low resolution modes to high power/high resolution modes. Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200514123338.20392-1-dmurphy@ti.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 13 May, 2020 2 commits
-
-
Dan Murphy authored
The device tree binding declares the ti,mic-bias-source and the ti,vref-source properties as u32. The code reads them as u8 which is incorrect. Since the device tree binding indicates them as u32 the conde needs to be updated to read u32. In addition the bias source needs to be shifted 4 bits to correctly write the register. driver family") Fixes: 37bde5acf040 ("ASoC: tlv320adcx140: Add the tlv320adcx140 codec Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200513142807.11802-1-dmurphy@ti.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Shengjiu Wang authored
When CLOCKING2 is non-volatile register, we need force clear the WM8962_SYSCLK_ENA bit after reset, for the value in cache maybe 0 but in hardware it is 1. Otherwise there will issue as below statement in driver. /* SYSCLK defaults to on; make sure it is off so we can safely * write to registers if the device is declocked. Fixes: c38b6085 ("ASoC: wm8962: set CLOCKING2 as non-volatile register") Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/1589347835-20554-1-git-send-email-shengjiu.wang@nxp.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 12 May, 2020 12 commits
-
-
Lubomir Rintel authored
The values set by set_dai_fmt() and hw_params() seem to be tailored only for 32-bit formats. Negotiate the correct ones in hw_params() callback instead. This was essentially copied from the OLPC kernel driver and tested to fix wrong audio output for non-32bit formats. The documentation is not available. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Link: https://lore.kernel.org/r/20200511210134.1224532-10-lkundrak@v3.skSigned-off-by: Mark Brown <broonie@kernel.org>
-
Lubomir Rintel authored
Only turn on the Audio island when it's in use. This requires keeping track of control register contents instead of reloading them back from hardware, because they're lost when the power is off. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Link: https://lore.kernel.org/r/20200511210134.1224532-9-lkundrak@v3.skSigned-off-by: Mark Brown <broonie@kernel.org>
-
Lubomir Rintel authored
The driver enables the clocks without preparing them and disables without unpreparing afterwards. Fix that. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Link: https://lore.kernel.org/r/20200511210134.1224532-8-lkundrak@v3.skSigned-off-by: Mark Brown <broonie@kernel.org>
-
Lubomir Rintel authored
The "serial port" it represents is actually a SPI controller -- it's not clear why would the audio serial interface embed it. We're only using the mmio_base and clk fields. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Link: https://lore.kernel.org/r/20200511210134.1224532-7-lkundrak@v3.skSigned-off-by: Mark Brown <broonie@kernel.org>
-
Lubomir Rintel authored
This makes the driver usable with the mmp_tdma drier via soc-generic-dmaengine-pcm. This is conditionalized on DT node (support for DT is added by a later patch). A custom mmap callback that creates a NC mapping is used instead of the default WC one, because with write-combining some bytes don't seem to make it through for reasons unknown to me. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Link: https://lore.kernel.org/r/20200511210134.1224532-6-lkundrak@v3.skSigned-off-by: Mark Brown <broonie@kernel.org>
-
Lubomir Rintel authored
This makes things simpler. There's no reason not to just embed the struct snd_dmaengine_dai_dma_data in struct sspa_priv and do away with an unnecessary kmalloc(). While at that, we can initialize the snd_dmaengine_dai_dma_data structures earlier. Let's also stop offsetting the source/destination of the DMA transfer by phys_base. Firstly, it's never set and is always zero. Secondly, the hardware actually ignores it, at least on a MMP2 and MMP3. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Link: https://lore.kernel.org/r/20200511210134.1224532-5-lkundrak@v3.skSigned-off-by: Mark Brown <broonie@kernel.org>
-
Lubomir Rintel authored
"Transmit", not "Tansmit". Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Link: https://lore.kernel.org/r/20200511210134.1224532-4-lkundrak@v3.skSigned-off-by: Mark Brown <broonie@kernel.org>
-
Christophe JAILLET authored
If an error occurs after the call to 'omap_mcbsp_init()', the reference to 'mcbsp->fclk' must be decremented, as already done in the remove function. This can be achieved easily by using the devm_ variant of 'clk_get()' when the reference is taken in 'omap_mcbsp_init()' This fixes the leak in the probe and has the side effect to simplify both the error handling path of 'omap_mcbsp_init()' and the remove function. Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Acked-by: Peter Ujfalusi <peter.ujflausi@ti.com> Link: https://lore.kernel.org/r/20200512134325.252073-1-christophe.jaillet@wanadoo.frSigned-off-by: Mark Brown <broonie@kernel.org>
-
Cezary Rojewski authored
With 'ASoC: Intel: Skylake: Fix HDaudio and Dmic' series applied, warning is no longer true. Remove it and update the description. Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20200506212114.8502-1-cezary.rojewski@intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Johan Jonker authored
The description below is already in use for rk3308.dtsi, but was somehow never added to a document, so add "rockchip,rk3308-i2s", "rockchip,rk3066-i2s" for i2s nodes on a rk3308 platform to rockchip-i2s.yaml. One of the rk3308 i2s nodes also has a different dma layout, so change that as well. Signed-off-by: Johan Jonker <jbx6244@gmail.com> Link: https://lore.kernel.org/r/20200507113238.7904-1-jbx6244@gmail.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Christophe JAILLET authored
There are 2 issues here: - if one of the 'of_parse_phandle' fails, calling 'mop500_of_node_put()' is a no-op because the 'mop500_dai_links' structure has not been initialized yet, so the referenced are not decremented - The reference stored in 'mop500_dai_links[i].codecs' is refcounted only once in the probe and must be decremented only once. Fixes: 39013bd6 ("ASoC: Ux500: Dispose of device nodes correctly") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Link: https://lore.kernel.org/r/20200512100705.246349-1-christophe.jaillet@wanadoo.frSigned-off-by: Mark Brown <broonie@kernel.org>
-
Gustavo A. R. Silva authored
The current codebase makes use of the zero-length array language extension to the C90 standard, but the preferred mechanism to declare variable-length types such as these ones is a flexible array member[1][2], introduced in C99: struct foo { int stuff; struct boo array[]; }; By making use of the mechanism above, we will get a compiler warning in case the flexible array does not occur last in the structure, which will help us prevent some kind of undefined behavior bugs from being inadvertently introduced[3] to the codebase from now on. Also, notice that, dynamic memory allocations won't be affected by this change: "Flexible array members have incomplete type, and so the sizeof operator may not be applied. As a quirk of the original implementation of zero-length arrays, sizeof evaluates to zero."[1] sizeof(flexible-array-member) triggers a warning because flexible array members have incomplete type[1]. There are some instances of code in which the sizeof operator is being incorrectly/erroneously applied to zero-length arrays and the result is zero. Such instances may be hiding some bugs. So, this work (flexible-array member conversions) will also help to get completely rid of those sorts of issues. This issue was found with the help of Coccinelle. [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html [2] https://github.com/KSPP/linux/issues/21 [3] commit 76497732 ("cxgb3/l2t: Fix undefined behaviour") Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Acked-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20200511174647.GA17318@embeddedorSigned-off-by: Mark Brown <broonie@kernel.org>
-