Adam Thomson [Thu, 14 Feb 2019 10:13:29 +0000 (10:13 +0000)]
ASoC: da7219: Add support for master mode BCLK rate adjustment
Previously the driver would default the BCLK periods per WCLK to
64, to cover all possible non-TDM scenarios when the codec was
DAI clock master. However some devices require a lower BCLK rate
to operate correctly so with this in mind, this commit updates
the code to be more dynamic, with BCLK rate now based on SR and
word length provided to hw_params().
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:47 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Convert to SPDX License Indentifier
Replace GPL v2.0 license statements with SPDX license identifier.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:46 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Comments clean up
Spelling error fixes, upper/lower case letter changes.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:45 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Change indentation in SAMSUNG_I2S_FMTS definition
Change indentation so this macro definition spans 2 rows and looks
more consistent with surrounding code.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:44 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Simplify pri_dai, sec_dai pointers usage
If the probe call is on the primary DAI we can use 'other' in place of
i2s->sec_dai, if the probe call is on the secondary DAI we can use 'i2s'
in place of other->sec_dai.
While at it fix one whitespace issue.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Wen Yang [Sat, 9 Feb 2019 10:41:09 +0000 (10:41 +0000)]
ASoC: stm32: sai: add missing put_device()
The of_find_device_by_node() takes a reference to the underlying device
structure, we should release that reference.
Fixes: 7dd0d835582f ("ASoC: stm32: sai: simplify sync modes management")
Signed-off-by: Wen Yang <yellowriver2010@hotmail.com>
Acked-by: Olivier Moysan <olivier.moysan@st.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:41 +0000 (10:37 +0100)]
ASoC: samsung: Specify DMA channel names through custom DMA config
This is a part of conversion of Samsung platforms to use the custom DMA
config for specifying DMA channel names, in addition to passing custom
DMA device for the secondary CPU DAI's "PCM" component for some variants
of the I2S controller.
We also don't set the SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME any more
as setting it wouldn't allow to specify DMA channels through the custom
DMA config.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:40 +0000 (10:37 +0100)]
ASoC: samsung: odroid: Add support for secondary CPU DAI
This patch adds DPCM links in order to support the secondary I2S interface.
For the secondary PCM interface to be actually available one more entry
should be added to the sound-dai property in sound/cpu node in DT.
The changes in driver are done in a way so we are backwards compatible
with existing DTS/DTB, i.e. if the cpu sound-dai property contains only
one entry only one PCM will be registered.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:39 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Get rid of a static spinlock
This patch makes the spinlock serializing access to the primary/secondary
PCM a per I2S controller lock, rather than a global one. There is no need
to have a global lock across multiple I2S controllers in the SoC.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:38 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Move quirks data to common driver data structure
The quirk flags are common for the primary and the secondary DAI
so move respective field from struct i2s_dai to common driver data
structure.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:37 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Move IP variant data to common driver data structure
The IP variant data is another thing common for both DAIs, move it
to the driver's common data structure.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:36 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Drop spinlock pointer from i2s_dai data structure
As we now have the 'priv' pointer in most of the places we can use
priv->lock directly, dropping extra indirection in the SFR region
spinlock access.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 14 Feb 2019 09:37:35 +0000 (10:37 +0100)]
ASoC: samsung: i2s: Move SFR pointer to common driver data structure
The SFR region is common for both DAIs so move related data structure
field from struct i2s_dai to the common driver data structure.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Wei Yongjun [Wed, 13 Feb 2019 06:29:56 +0000 (06:29 +0000)]
ASoC: cros_ec_codec: Make symbol 'cros_ec_dai' static
Fixes the following sparse warning:
sound/soc/codecs/cros_ec_codec.c:209:27: warning:
symbol 'cros_ec_dai' was not declared. Should it be static?
Fixes: b291f42a3718 ("ASoC: cros_ec_codec: Add codec driver for Cros EC")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Wei Yongjun [Wed, 13 Feb 2019 06:29:44 +0000 (06:29 +0000)]
ASoC: mediatek: mt8183: make some functions static
Fixes the following sparse warnings:
sound/soc/mediatek/mt8183/mt8183-dai-i2s.c:966:5: warning:
symbol 'mt8183_dai_i2s_get_share' was not declared. Should it be static?
sound/soc/mediatek/mt8183/mt8183-dai-i2s.c:986:5: warning:
symbol 'mt8183_dai_i2s_set_priv' was not declared. Should it be static?
Fixes: a94aec035a12 ("ASoC: mediatek: mt8183: add platform driver")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
YueHaibing [Wed, 13 Feb 2019 01:43:32 +0000 (01:43 +0000)]
ASoC: cs35l36: Remove unused including <linux/version.h>
Remove including <linux/version.h> that don't need it.
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Tue, 12 Feb 2019 18:03:27 +0000 (19:03 +0100)]
ASoC: samsung: i2s: Move registers cache to common driver data structure
There is no need to keep the PM suspend/resume register cache separate
for each DAI as those registers are common, move related i2s_dai data
structure to the driver's common data structure. This will allow us
to simplify the code a little eventually and to make it easier to follow.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Tue, 12 Feb 2019 18:03:26 +0000 (19:03 +0100)]
ASoC: samsung: i2s: Move opclk data to common driver data structure
The clock for generating I2S signals is also common for both CPU DAIs
so move it to the driver's common data structure.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Tue, 12 Feb 2019 18:03:25 +0000 (19:03 +0100)]
ASoC: samsung: i2s: Move core clk to the driver common data structure
The core clock is also common for both CPU DAIs so move it to
the driver's private data structure.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Tue, 12 Feb 2019 18:03:24 +0000 (19:03 +0100)]
ASoC: samsung: i2s: Add widgets and routes for DPCM support
This patch adds DAPM widgets required to model the internal mixer
of the I2S controller merging audio streams from the primary and
from the secondary PCM interface.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Tue, 12 Feb 2019 18:03:23 +0000 (19:03 +0100)]
ASoC: samsung: i2s: Move clk supplier data to common driver data structure
Having the clocks provider data in struct samsung_i2s_priv, i.e. per the I2S
controller instance, rather than per CPU DAI better models the hardware and
simplifies the code a little. The clock provider is common for both DAIs.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Mark Brown [Wed, 13 Feb 2019 11:45:08 +0000 (11:45 +0000)]
Merge branch 'for-5.0' of https://git./linux/kernel/git/broonie/sound into asoc-5.1
Sylwester Nawrocki [Tue, 12 Feb 2019 18:03:22 +0000 (19:03 +0100)]
ASoC: samsung: i2s: Restore support for the secondary PCM
This patch introduces again registration of additional platform device as
we still need it for registering the secondary dmaengine PCM component.
This patch in most part is a revert of changes done in commit
be2c92eb64023e ("ASoC: samsung: i2s: Remove virtual device for secondary DAI")
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:57 +0000 (17:45 -0600)]
ASoC: soc-acpi: remove new_mach_data field
We never used this field (or in older SOF implementations), let's
remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:56 +0000 (17:45 -0600)]
ASoC: soc-acpi: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:55 +0000 (17:45 -0600)]
ASoC: Intel: soc-acpi: cnl-match.c: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:54 +0000 (17:45 -0600)]
ASoC: Intel: soc-acpi: icl-match: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:53 +0000 (17:45 -0600)]
ASoC: Intel: soc-acpi: hsw-bdw-match: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:52 +0000 (17:45 -0600)]
ASoC: Intel: soc-acpi: glk-match: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:51 +0000 (17:45 -0600)]
ASoC: Intel: soc-acpi: cht-match: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:50 +0000 (17:45 -0600)]
ASoC: Intel: soc-acpi: byt-match: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:49 +0000 (17:45 -0600)]
ASoC: Intel: soc-acpi: bxt-match: remove asoc_plat_name field
This field was never used, let's remove it
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:48 +0000 (17:45 -0600)]
ASoC: Intel: icl-match: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:47 +0000 (17:45 -0600)]
ASoC: Intel: hsw-bdw-match: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:46 +0000 (17:45 -0600)]
ASoC: Intel: hda-match: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:45 +0000 (17:45 -0600)]
ASoC: Intel: glk-match: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:44 +0000 (17:45 -0600)]
ASoC: Intel: cnl-match: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:43 +0000 (17:45 -0600)]
ASoC: Intel: cht-match: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:42 +0000 (17:45 -0600)]
ASoC: Intel: byt-match.c: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:45:41 +0000 (17:45 -0600)]
ASoC: Intel: bxt-match: remove prefix for SOF files
Prefix is now handled in the code. This allows for default and
alternate paths, and more flexibility for OEMs and distros
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 7 Feb 2019 17:00:13 +0000 (18:00 +0100)]
ASoC: samsung: i2s: Convert to single component with multiple DAIs
This patch includes minimal changes as a prerequisite for adding support
for the Exynos secondary I2S interface as second DAI of the I2S component.
Doing it that way allows to avoid problems as indicated in commmit
6b01e0365b1689 ("ASoC: samsung: i2s: disable secondary DAI until it gets fixed")
The samsung_i2s_get_pri_dai() helper added in this patch is temporary and
will be removed in one of subsequent patches.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 7 Feb 2019 17:00:11 +0000 (18:00 +0100)]
ASoC: samsung: dmaengine: Allow to specify custom DMA device
The additional function argument will allow to select proper DMA device
for requesting DMA channel for the secondary CPU DAI.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 7 Feb 2019 17:00:10 +0000 (18:00 +0100)]
ASoC: dmaengine: Extend use of chan_names provided in custom DMA config
There are currently two ways to specify custom DMA channel names:
- through the SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME flag and
snd_dmaengine_dai_dma_data data structure,
- through chan_names field of struct snd_dmaengine_pcm_config.
In order to replace the DAI DMA data method with the custom DMA config
one on non-DT platforms the dmaengine_pcm_new() function is extended
to also consider channel names specified in the custom DMA config.
If both config->chan_names and dma_data->chan_name are provided
the former will be used.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 7 Feb 2019 17:00:09 +0000 (18:00 +0100)]
ASoC: dmaengine: Improve of_node test in dmaengine_pcm_request_chan_of()
Currently when of_node of the "PCM" device is null
dmaengine_pcm_request_chan_of() function will bail out, including cases
when custom DMA device is intended to be used. To have the channels
properly requested when custom DMA device is provided extend the of_node
test to also consider dma_dev->of_node.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 7 Feb 2019 17:00:12 +0000 (18:00 +0100)]
ASoC: samsung: i2s: Fix prescaler setting for the secondary DAI
Make sure i2s->rclk_srcrate is properly initialized also during
playback through the secondary DAI.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Mathieu Malaterre [Wed, 23 Jan 2019 19:41:30 +0000 (20:41 +0100)]
ASoC: Use __printf markup to silence compiler
Silence warnings (triggered at W=1) by adding relevant __printf
attributes.
sound/soc/soc-dapm.c:149:2: warning: function 'pop_dbg' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
Signed-off-by: Mathieu Malaterre <malat@debian.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Peter Seiderer [Mon, 11 Feb 2019 21:06:30 +0000 (22:06 +0100)]
tlv320aic32x4: delay i2c access by 1 ms after hardware reset
As stated in 'TLV320AIC3254 Application Reference Guide' ([1]):
3.2 Device Startup Lockout Times
After the TLV320AIC3254 initializes through hardware reset at power-up
or software reset, the internal registers initialize to default values.
This initialization takes place within 1ms after pulling the RESET
signal high. During this initialization phase, no register-read or
register-write operation should be performed on ADC or DAC coefficient
buffers. Also, no block within the codec should be powered up during
the initialization phase.
[1] http://www.ti.com/lit/an/slaa408a/slaa408a.pdf
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
KaiChieh Chuang [Tue, 12 Feb 2019 07:18:47 +0000 (15:18 +0800)]
ASoC: mediatek: btcvsd fix rx stream assign
fix tx/rx stream assign wrong direction
Signed-off-by: KaiChieh Chuang <kaichieh.chuang@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sergej Sawazki [Sun, 10 Feb 2019 15:29:29 +0000 (16:29 +0100)]
ASoC: wm8741: Set OSR mode in hw_params()
For correct operation of the digital filtering and other processing on the
WM8741, the user must ensure the correct value of OSR[1:0] is set at all
times.[1] Hence, depending the selected sampling rate, set the OSR (over-
sampling rate) mode in hw_params().
References:
[1] "WM8741 Data Sheet"
Signed-off-by: Sergej Sawazki <sergej@taudac.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sergej Sawazki [Sun, 10 Feb 2019 15:28:04 +0000 (16:28 +0100)]
ASoC: wm8741: Add digital mute callback
Signed-off-by: Sergej Sawazki <sergej@taudac.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 8 Feb 2019 23:26:53 +0000 (17:26 -0600)]
ASoC: hdac_hdmi: use devm_kzalloc for all structures
Loading/unloading modules exposes issues with memory allocation, which
is a mix of devm_kzalloc and manual kzalloc. Move to devm_k routines
everywhere to simplify all this.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
KaiChieh Chuang [Mon, 11 Feb 2019 03:04:41 +0000 (11:04 +0800)]
ASoC: mediatek: use %pOFn instead of device_node.name
In preparation to remove the node name pointer from struct device_node,
convert printf users to use the %pOFn format specifier.
Signed-off-by: KaiChieh Chuang <kaichieh.chuang@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kirill Marinushkin [Mon, 11 Feb 2019 06:08:39 +0000 (07:08 +0100)]
ASoC: pcm3060: Add clock select
ADC and DAC can be clocked from separate or same sources CLK1 and CLK2.
By default, ADC is clocked from CLK1, and DAC - from CLK2.
This commits allows sound cards to selest a proper clock source during
`hw_params()` via `snd_soc_dai_set_sysclk()`. It makes possible to have a
single clock source for both ADC and DAC.
Signed-off-by: Kirill Marinushkin <kmarinushkin@birdec.tech>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kirill Marinushkin [Mon, 11 Feb 2019 06:08:38 +0000 (07:08 +0100)]
ASoC: pcm3060: Add soft reset on probe
Softly reset registers values on module probe
Signed-off-by: Kirill Marinushkin <kmarinushkin@birdec.tech>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 1 Feb 2019 17:22:24 +0000 (11:22 -0600)]
ASoC: Intel: Skylake: set .ignore_module_refcount field in component
There is no risk of the module being removed while the platform
components are in use. This solves the problem of the snd_soc_skl
module not being removable with rmmod
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Fri, 1 Feb 2019 17:22:23 +0000 (11:22 -0600)]
ASoC: core: don't increase component module refcount unconditionally
The ASoC core has for the longest time increased the module reference
counts, even before the transition to the component model. This is
probably fine on most platforms, but it introduces a deadlock case on
Intel devices with the Skylake and SOF drivers which cannot be removed
due to their reference counts being modified by the core.
In these 2 cases, the PCI or ACPI driver .probe creates a platform
device to let the machine driver .probe register the audio
card. Conversely the PCI or ACPI driver .remove will unregister the
platform device which results in the card being removed by the machine
driver .remove.
With ascii art, this can be represented as
modprobe
snd_soc_skl/
soc-pci-dev/sof-acpci-dev ----------> pci/acpi probe
^ |
| ---------------|
| | |
| V V
increase register register machine
refcount component platform_device
^ |
| |
| V
component <---- register card <---- probe
probe
The issue is that by playing with the component's module reference
counts during the card registration, it's no longer possible to remove
the module which controls the component. This can be shown, e.g. with
the following error:
root@plb-XPS-13-9350:~# lsmod | grep snd_soc_skl
snd_soc_skl 110592 1
root@plb-XPS-13-9350:~# rmmod snd_soc_skl
rmmod: ERROR: Module snd_soc_skl is in use
Increasing the reference count during the component probe is not
useful. If the PCI/ACPI module is removed, the card will be removed
anyway.
To avoid breaking existing platforms and allowing Intel platforms to
safely deal with module load/unload cases, this patch introduces a
flag which needs to be set during the component initialization. This
is a strictly opt-in capability that should only be used when the
handling of the component module does not require a reference count
increase to prevent removal during use.
Note that this solution is not directly applicable to the legacy
Atom/SST driver, which uses a different device hierarchy. There are
however additional refcount issues which prevent the ACPI driver from
being removed. This is a different issue which would need a different
patch.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Andy Shevchenko [Wed, 6 Feb 2019 20:49:46 +0000 (22:49 +0200)]
gpiolib: acpi: Introduce ACPI_GPIO_QUIRK_ONLY_GPIOIO
New quirk enforces search for GPIO based on its type,
i.e. iterate over GpioIo resources only.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Johan Hovold [Fri, 8 Feb 2019 15:16:56 +0000 (16:16 +0100)]
ASoC: msm8916-wcd-digital: convert license header to SPDX
Convert the GPLv2-only license header to SPDX.
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Johan Hovold [Fri, 8 Feb 2019 15:16:55 +0000 (16:16 +0100)]
ASoC: msm8916-wcd-analog: add missing license information
Add the missing license and copyright information which never made it
into the analog driver when the original driver was split in two as part
of the review process.
Link: https://lkml.kernel.org/r/1465582725-30183-3-git-send-email-srinivas.kandagatla@linaro.org
Fixes: 585e881e5b9e ("ASoC: codecs: Add msm8916-wcd analog codec")
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Guennadi Liakhovetski [Fri, 8 Feb 2019 13:45:20 +0000 (14:45 +0100)]
ASoC: regulator notifier registration should be managed
Regulator notifiers, that were registered during codec driver probing,
must be unregistered during driver release, or device managed versions
have to be used. This patch fixes codec drivers, that weren't explicitly
unregistering notifiers and simplifies those, that did that manually.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Johan Hovold [Thu, 7 Feb 2019 16:57:55 +0000 (17:57 +0100)]
dt-bindings: sound: msm8916-wcd-analog: fix example regulator names
Fix upper-case regulator names in the binding example which do not match
the corresponding required properties.
While at it, add a blank line after the required-properties section to
improve readability.
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Olivier Moysan [Fri, 8 Feb 2019 10:49:54 +0000 (11:49 +0100)]
SoC: stm32: i2s: manage clock power
Kernel clock management:
Enable/disable I2S kernel clock on audio stream startup/shutdown.
Peripheral clock management:
Manage I2S peripheral clock power through regmap services.
Signed-off-by: Olivier Moysan <olivier.moysan@st.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Olivier Moysan [Fri, 8 Feb 2019 10:49:53 +0000 (11:49 +0100)]
ASoC: stm32: i2s: add power management
Add suspend and resume sleep callbacks,
to support system low power modes.
Signed-off-by: Olivier Moysan <olivier.moysan@st.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Nathan Chancellor [Fri, 8 Feb 2019 04:59:18 +0000 (21:59 -0700)]
ASoC: codecs: jz4725b: Remove unnecessary const qualifier
Clang warns:
sound/soc/codecs/jz4725b.c:177:14: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]
static const SOC_VALUE_ENUM_SINGLE_DECL(jz4725b_codec_adc_src_enum,
^
include/sound/soc.h:356:2: note: expanded from macro 'SOC_VALUE_ENUM_SINGLE_DECL'
SOC_VALUE_ENUM_DOUBLE_DECL(name, xreg, xshift, xshift, xmask, xtexts, xvalues)
^
include/sound/soc.h:353:2: note: expanded from macro 'SOC_VALUE_ENUM_DOUBLE_DECL'
const struct soc_enum name = SOC_VALUE_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, \
^
As it points out, SOC_VALUE_ENUM_DOUBLE_DECL has the const attribute in
its definition so remove it here.
Fixes: e9d97b05a80f ("ASoC: codecs: Add jz4725b-codec driver")
Link: https://github.com/ClangBuiltLinux/linux/issues/354
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
James Schulman [Thu, 7 Feb 2019 18:12:19 +0000 (12:12 -0600)]
ASoC: cs35l36: Add device tree documentation for CS35L36
Add device tree documentation for Cirrus Logic CS35L36
speaker amplifier
Signed-off-by: James Schulman <james.schulman@cirrus.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
James Schulman [Thu, 7 Feb 2019 18:12:15 +0000 (12:12 -0600)]
ASoC: cs35l36: Add support for Cirrus CS35L36 Amplifier
Add driver support for Cirrus Logic CS35L36 boosted
speaker amplifier
Signed-off-by: James Schulman <james.schulman@cirrus.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 7 Feb 2019 17:22:56 +0000 (18:22 +0100)]
ASoC: doc: Fix typos in dpcm.rst
This patch fixes a few typos in the DPCM documentation.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Paul Cercueil [Thu, 7 Feb 2019 13:31:43 +0000 (10:31 -0300)]
ASoC: codecs: jz4725b: Use C++ style comments in header
Change the header comment to use C++ style, so that it looks more
consistent with the rest of ASoC.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
Paul Cercueil [Thu, 7 Feb 2019 13:31:42 +0000 (10:31 -0300)]
ASoC: codecs: Kconfig: Show knob, and depend on MIPS || COMPILE_TEST
Show the knob to enable or disable the jz4740-codec driver, add a
proper description, and add a dependency on MIPS || COMPILE_TEST, as
this driver is only useful on MIPS.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
Paul Cercueil [Thu, 7 Feb 2019 13:31:41 +0000 (10:31 -0300)]
ASoC: codecs: jz4740: Add support for devicetree
Add support for probing the driver from devicetree.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
Paul Cercueil [Thu, 7 Feb 2019 13:31:40 +0000 (10:31 -0300)]
ASoC: codecs: jz4740: Use SPDX license notifier
Add license information as a standard SPDX license notifier instead of
custom text.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
Paul Cercueil [Thu, 7 Feb 2019 13:31:39 +0000 (10:31 -0300)]
dt-bindings: sound: Document jz4725b-codec bindings
Add documentation about how to probe the jz4725b-codec driver from
devicetree.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
Paul Cercueil [Thu, 7 Feb 2019 13:31:38 +0000 (10:31 -0300)]
dt-bindings: sound: Document jz4740-codec bindings
Add documentation about how to probe the jz4740-codec driver from
devicetree.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sylwester Nawrocki [Thu, 7 Feb 2019 14:20:41 +0000 (15:20 +0100)]
ASoC: samsung: Prevent clk_get_rate() calls in atomic context
This patch moves clk_get_rate() call from trigger() to hw_params()
callback to avoid calling sleeping clk API from atomic context
and prevent deadlock as indicated below.
Before this change clk_get_rate() was being called with same
spinlock held as the one passed to the clk API when registering
clocks exposed by the I2S driver.
[ 82.109780] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:908
[ 82.117009] in_atomic(): 1, irqs_disabled(): 128, pid: 1554, name: speaker-test
[ 82.124235] 3 locks held by speaker-test/1554:
[ 82.128653] #0:
cc8c5328 (snd_pcm_link_rwlock){...-}, at: snd_pcm_stream_lock_irq+0x20/0x38
[ 82.137058] #1:
ec9eda17 (&(&substream->self_group.lock)->rlock){..-.}, at: snd_pcm_ioctl+0x900/0x1268
[ 82.146417] #2:
6ac279bf (&(&pri_dai->spinlock)->rlock){..-.}, at: i2s_trigger+0x64/0x6d4
[ 82.154650] irq event stamp: 8144
[ 82.157949] hardirqs last enabled at (8143): [<
c0a0f574>] _raw_read_unlock_irq+0x24/0x5c
[ 82.166089] hardirqs last disabled at (8144): [<
c0a0f6a8>] _raw_read_lock_irq+0x18/0x58
[ 82.174063] softirqs last enabled at (8004): [<
c01024e4>] __do_softirq+0x3a4/0x66c
[ 82.181688] softirqs last disabled at (7997): [<
c012d730>] irq_exit+0x140/0x168
[ 82.188964] Preemption disabled at:
[ 82.188967] [<
00000000>] (null)
[ 82.195728] CPU: 6 PID: 1554 Comm: speaker-test Not tainted
5.0.0-rc5-00192-ga6e6caca8f03 #191
[ 82.204302] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[ 82.210376] [<
c0111a54>] (unwind_backtrace) from [<
c010d8f4>] (show_stack+0x10/0x14)
[ 82.218084] [<
c010d8f4>] (show_stack) from [<
c09ef004>] (dump_stack+0x90/0xc8)
[ 82.225278] [<
c09ef004>] (dump_stack) from [<
c0152980>] (___might_sleep+0x22c/0x2c8)
[ 82.232990] [<
c0152980>] (___might_sleep) from [<
c0a0a2e4>] (__mutex_lock+0x28/0xa3c)
[ 82.240788] [<
c0a0a2e4>] (__mutex_lock) from [<
c0a0ad80>] (mutex_lock_nested+0x1c/0x24)
[ 82.248763] [<
c0a0ad80>] (mutex_lock_nested) from [<
c04923dc>] (clk_prepare_lock+0x78/0xec)
[ 82.257079] [<
c04923dc>] (clk_prepare_lock) from [<
c049538c>] (clk_core_get_rate+0xc/0x5c)
[ 82.265309] [<
c049538c>] (clk_core_get_rate) from [<
c0766b18>] (i2s_trigger+0x490/0x6d4)
[ 82.273369] [<
c0766b18>] (i2s_trigger) from [<
c074fec4>] (soc_pcm_trigger+0x100/0x140)
[ 82.281254] [<
c074fec4>] (soc_pcm_trigger) from [<
c07378a0>] (snd_pcm_do_start+0x2c/0x30)
[ 82.289400] [<
c07378a0>] (snd_pcm_do_start) from [<
c07376cc>] (snd_pcm_action_single+0x38/0x78)
[ 82.298065] [<
c07376cc>] (snd_pcm_action_single) from [<
c073a450>] (snd_pcm_ioctl+0x910/0x1268)
[ 82.306734] [<
c073a450>] (snd_pcm_ioctl) from [<
c0292344>] (do_vfs_ioctl+0x90/0x9ec)
[ 82.314443] [<
c0292344>] (do_vfs_ioctl) from [<
c0292cd4>] (ksys_ioctl+0x34/0x60)
[ 82.321808] [<
c0292cd4>] (ksys_ioctl) from [<
c0101000>] (ret_fast_syscall+0x0/0x28)
[ 82.329431] Exception stack(0xeb875fa8 to 0xeb875ff0)
[ 82.334459] 5fa0:
00033c18 b6e31000 00000004 00004142 00033d80 00033d80
[ 82.342605] 5fc0:
00033c18 b6e31000 00008000 00000036 00008000 00000000 beea38a8 00008000
[ 82.350748] 5fe0:
b6e3142c beea384c b6da9a30 b6c9212c
[ 82.355789]
[ 82.357245] ======================================================
[ 82.363397] WARNING: possible circular locking dependency detected
[ 82.369551]
5.0.0-rc5-00192-ga6e6caca8f03 #191 Tainted: G W
[ 82.376395] ------------------------------------------------------
[ 82.382548] speaker-test/1554 is trying to acquire lock:
[ 82.387834]
6d2007f4 (prepare_lock){+.+.}, at: clk_prepare_lock+0x78/0xec
[ 82.394593]
[ 82.394593] but task is already holding lock:
[ 82.400398]
6ac279bf (&(&pri_dai->spinlock)->rlock){..-.}, at: i2s_trigger+0x64/0x6d4
[ 82.408197]
[ 82.408197] which lock already depends on the new lock.
[ 82.416343]
[ 82.416343] the existing dependency chain (in reverse order) is:
[ 82.423795]
[ 82.423795] -> #1 (&(&pri_dai->spinlock)->rlock){..-.}:
[ 82.430472] clk_mux_set_parent+0x34/0xb8
[ 82.434975] clk_core_set_parent_nolock+0x1c4/0x52c
[ 82.440347] clk_set_parent+0x38/0x6c
[ 82.444509] of_clk_set_defaults+0xc8/0x308
[ 82.449186] of_clk_add_provider+0x84/0xd0
[ 82.453779] samsung_i2s_probe+0x408/0x5f8
[ 82.458376] platform_drv_probe+0x48/0x98
[ 82.462879] really_probe+0x224/0x3f4
[ 82.467037] driver_probe_device+0x70/0x1c4
[ 82.471716] bus_for_each_drv+0x44/0x8c
[ 82.476049] __device_attach+0xa0/0x138
[ 82.480382] bus_probe_device+0x88/0x90
[ 82.484715] deferred_probe_work_func+0x6c/0xbc
[ 82.489741] process_one_work+0x200/0x740
[ 82.494246] worker_thread+0x2c/0x4c8
[ 82.498408] kthread+0x128/0x164
[ 82.502131] ret_from_fork+0x14/0x20
[ 82.506204] (null)
[ 82.508976]
[ 82.508976] -> #0 (prepare_lock){+.+.}:
[ 82.514264] __mutex_lock+0x60/0xa3c
[ 82.518336] mutex_lock_nested+0x1c/0x24
[ 82.522756] clk_prepare_lock+0x78/0xec
[ 82.527088] clk_core_get_rate+0xc/0x5c
[ 82.531421] i2s_trigger+0x490/0x6d4
[ 82.535494] soc_pcm_trigger+0x100/0x140
[ 82.539913] snd_pcm_do_start+0x2c/0x30
[ 82.544246] snd_pcm_action_single+0x38/0x78
[ 82.549012] snd_pcm_ioctl+0x910/0x1268
[ 82.553345] do_vfs_ioctl+0x90/0x9ec
[ 82.557417] ksys_ioctl+0x34/0x60
[ 82.561229] ret_fast_syscall+0x0/0x28
[ 82.565477] 0xbeea384c
[ 82.568421]
[ 82.568421] other info that might help us debug this:
[ 82.568421]
[ 82.576394] Possible unsafe locking scenario:
[ 82.576394]
[ 82.582285] CPU0 CPU1
[ 82.586792] ---- ----
[ 82.591297] lock(&(&pri_dai->spinlock)->rlock);
[ 82.595977] lock(prepare_lock);
[ 82.601782] lock(&(&pri_dai->spinlock)->rlock);
[ 82.608975] lock(prepare_lock);
[ 82.612268]
[ 82.612268] *** DEADLOCK ***
Fixes: 647d04f8e07a ("ASoC: samsung: i2s: Ensure the RCLK rate is properly determined")
Reported-by: Krzysztof Kozłowski <krzk@kernel.org>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:44 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Add Line Playback Volume, Line Boost Volume, Line Right, Line Left, Line Playback Switch
Add Line Playback Volume for Allwinner A10 and Allwinner A20.
Add Line Boost Volume for Allwinner A10 and Allwinner A20.
Add Line Right, Line Left, Line Playback Switch for Allwinner A10 and
Allwinner A20.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:43 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Add FM Playback Volume, FM Left, FM Right, FM Playback Switch
Add FM Playback Volume for Allwinner A10 and Allwinner A20.
Add FM Left, FM Right, FM Playback Switch for Allwinner A10 and
Allwinner A20.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:42 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Add Mic1 Playback Switch, Mic2 Playback Switch
Add Mic1 Playback Switch and Mic2 Playback Switch for Allwinner A10 and
Allwinner A20.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:41 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Merge sun4i_codec_left_mixer_controls and sun4i_codec_right_mixer_controls into sun4i_codec_mixer_controls
Since it's now possible to have a DAPM mixer control with multiple
channels, use it to cut down the total number of controls.
Keep "Left Mixer Left DAC Playback Switch" and "Right Mixer Right DAC
Playback Switch" name & layout the same as before for compatibility.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:40 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Add Mic1 Boost Volume, Mic2 Boost Volume
Add Mic1 Boost Volume and Mic2 Boost Volume for Allwinner A10 and for
Allwinner A20.
Those controls are in different registers per chip model, so put the
Allwinner A10 controls and the Allwinner A20 controls into the newly
split sun4i_codec_controls and sun7i_codec_controls, respectively.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:39 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Add sun7i_codec_controls, sun7i_codec_codec
Introduce sun7i_codec_controls because some of the controls are different
on Allwinner A20 compared to Allwinner A10.
Also introduce sun7i_codec_codec in order to use sun7i_codec_controls and
make sun7i_codec_quirks use sun7i_codec_codec.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:38 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Add Mic Playback Volume
Add a control "Mic Playback Volume" that allows the user to control the
MIC gain stage (common for Mic1 and Mic2) leading to the output mixer.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Danny Milosavljevic [Wed, 30 Jan 2019 10:39:37 +0000 (11:39 +0100)]
ASoC: sun4i-codec: Add MIC2 Pre-Amplifier, Mic2 input
Add MIC2 Pre-Amplifier, Mic2 input for Allwinner A10 and Allwinner A20.
Previously, there only the Mic1 input and MIC1 Pre-Amplifier was exposed.
This exposes the Mic2 input and MIC2 Pre-Amplifier.
Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Colin Ian King [Thu, 7 Feb 2019 09:26:42 +0000 (09:26 +0000)]
ASoC: codecs: jz4725b: fix spelling mistake "Deemphatize" -> "Deemphasize"
There is a spelling mistake in the SOC_SINGLE control name. Fix this.
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
kbuild test robot [Mon, 4 Feb 2019 21:33:25 +0000 (05:33 +0800)]
ASoC: wcd9335: fix semicolon.cocci warnings
sound/soc/codecs/wcd-clsh-v2.c:545:2-3: Unneeded semicolon
sound/soc/codecs/wcd-clsh-v2.c:211:2-3: Unneeded semicolon
sound/soc/codecs/wcd-clsh-v2.c:250:2-3: Unneeded semicolon
Remove unneeded semicolon.
Generated by: scripts/coccinelle/misc/semicolon.cocci
Fixes: cc2e324d39b2 ("ASoC: wcd9335: add CLASS-H Controller support")
CC: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jiada Wang [Mon, 4 Feb 2019 13:41:05 +0000 (22:41 +0900)]
ASoC: rsnd: ssiu: correct shift bit for ssiu9
Currently "0xf << 36" is used to
clear SSIU-9 internal buffer state, which overflows 32-bit value
according to user reference manual, it is always bit4 ~ bit7
of SSI_SYS_STATUS[1,3,5,7] registers indicate
SSIU-9's buffer state, so "0xf << 4" should be used.
This patch fix incorrect shifting issue in SSIU-9 case
Fixes: commit b7169ddea2f2 ("ASoC: rsnd: remove RSND_REG_ from rsnd_reg")
Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Paul Cercueil [Tue, 5 Feb 2019 03:11:08 +0000 (00:11 -0300)]
ASoC: codecs: Add jz4725b-codec driver
Add jz4725b-codec driver to support the internal CODEC found in the
JZ4725B SoC from Ingenic.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Tue, 5 Feb 2019 00:46:43 +0000 (09:46 +0900)]
ASoC: rsnd: fixup rsnd_ssi_master_clk_start() user count check
commit
4d230d1271064 ("ASoC: rsnd: fixup not to call clk_get/set
under non-atomic") added new rsnd_ssi_prepare() and moved
rsnd_ssi_master_clk_start() to .prepare.
But, ssi user count (= ssi->usrcnt) is incremented at .init
(= rsnd_ssi_init()).
Because of these timing exchange, ssi->usrcnt check at
rsnd_ssi_master_clk_start() should be adjusted.
Otherwise, 2nd master clock setup will be no check.
This patch fixup this issue.
Fixes: commit 4d230d1271064 ("ASoC: rsnd: fixup not to call clk_get/set under non-atomic")
Reported-by: Yusuke Goda <yusuke.goda.sx@renesas.com>
Reported-by: Valentine Barshak <valentine.barshak@cogentembedded.com>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Yusuke Goda <yusuke.goda.sx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Pierre-Louis Bossart [Tue, 5 Feb 2019 16:22:28 +0000 (10:22 -0600)]
ASoC: dapm: harden use of lookup tables
To detect potential errors, let's add:
a) build-time warnings when the table size isn't aligned with the enum
list
b) run-time warnings when the values are not initialized. This
requires an increase by one of all values to avoid the default 0.
Suggested-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Mark Brown [Wed, 6 Feb 2019 17:31:39 +0000 (17:31 +0000)]
Merge branch 'asoc-5.0' into asoc-5.1 for dapm table
Pierre-Louis Bossart [Tue, 5 Feb 2019 16:22:27 +0000 (10:22 -0600)]
ASoC: dapm: fix out-of-bounds accesses to DAPM lookup tables
KASAN reports and additional traces point to out-of-bounds accesses to
the dapm_up_seq and dapm_down_seq lookup tables. The indices used are
larger than the array definition.
Fix by adding missing entries for the new widget types in these two
lookup tables, and align them with PGA values.
Also the sequences for the following widgets were not defined. Since
their values defaulted to zero, assign them explicitly
snd_soc_dapm_input
snd_soc_dapm_output
snd_soc_dapm_vmid
snd_soc_dapm_siggen
snd_soc_dapm_sink
Fixes: 8a70b4544ef4 ('ASoC: dapm: Add new widget type for constructing DAPM graphs on DSPs.').
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Marco Felsch [Wed, 6 Feb 2019 17:00:03 +0000 (18:00 +0100)]
ASoC: ssm2602: switch to SPDX identifier
Drop old license header and switch to SPDX-License-Identifier.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Charles Keepax [Tue, 5 Feb 2019 11:18:13 +0000 (11:18 +0000)]
ASoC: compress: Add helper functions for component trigger/set_params
The trigger and set_params callbacks are called from 3 and 2 separate
loops respectively, tidy up the code a little by factoring these out
into helper functions.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Charles Keepax [Tue, 5 Feb 2019 11:18:12 +0000 (11:18 +0000)]
ASoC: compress: Clarify the intent of current compressed ops handling
For callbacks configuring the state of the components (trigger,
set_params, ack and set_metadata) simplify the code a little and make
intention clearer by aborting as soon as an error is encountered. The
operation has already failed and there is nothing to be gained from
processing the callbacks on additional components. The operations
currently abort after the callbacks, so this simply shortens the
error path.
For callbacks returning information from the driver (copy,
get_metadata, pointer, get_codec_caps, get_caps and get_params)
only look for the first callback provided, currently the code will
call every callback only returning the information provided by the
last. Since we can only return one set of data, it makes no sense to
request the data from every component. Again this just makes the
currently supported feature set a little more clear.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Dan Carpenter [Tue, 5 Feb 2019 09:09:27 +0000 (12:09 +0300)]
ASoC: wcd9335: remove some unnecessary NULL checks
These are arrays, not pointers, and they can't be NULL.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Philipp Zabel [Wed, 6 Feb 2019 15:29:47 +0000 (16:29 +0100)]
ASoC: ssm2602: Fix ADC powerup sequencing
According to the ssm2603 data sheet (control register sequencing), the
digital core should be activated only after all necessary bits in the
power register are enabled, and a delay determined by the decoupling
capacitor on the VMID pin has passed. If the digital core is activated
too early, or even before the ADC is powered up, audible artifacts
appear at the beginning of the recorded signal.
The digital core is also needed for playback, so when recording starts
it may already be enabled. This means we cannot get the power sequence
correct when we want to be able to start recording after playback.
As a workaround put the MIC mute switch into the DAPM routes. This
way we can keep the recording disabled until the MIC Bias has settled
and thus get rid of audible artifacts.
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
m.felsch@pengutronix.de: adapt commit message
m.felsch@pengutronix.de: drop of configuration as mentioned by Mark:
https://patchwork.kernel.org/patch/
10407449/
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Charles Keepax [Wed, 6 Feb 2019 11:13:59 +0000 (11:13 +0000)]
ASoC: dapm: Check for NULL widget in dapm_update_dai_unlocked
DAIs linked to the dummy will not have an associated playback/capture
widget, so we need to skip the update in that case.
Fixes: 078a85f2806f ("ASoC: dapm: Only power up active channels from a DAI")
Reported-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Tested-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Clément Péron [Mon, 4 Feb 2019 15:35:38 +0000 (16:35 +0100)]
ASoC: ak4118: fix missing header
This driver use the gpio consumer interface.
Add the header as it's needed.
Signed-off-by: Clément Péron <peron.clem@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Colin Ian King [Mon, 4 Feb 2019 15:31:05 +0000 (15:31 +0000)]
ASoC: mediatek: btcvsd: fix spelling mistake "offest" -> "offset"
There is a spelling mistake in a dev_warn message. Fix this.
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Bard liao [Fri, 1 Feb 2019 17:07:40 +0000 (11:07 -0600)]
ASoC: topology: unload physical dai link in remove
soc_tplg_link_config() will find the physical dai link and call
soc_tplg_dai_link_load() to load the BE dai link. Currently remove_link()
is only used to remove the FE dai link which is created by the topology.
The BE dai link cannot however be unloaded in snd_soc_tplg_component
_remove(), which is problematic if anything needs to be released or
reinitialized.
This patch aligns the definitions of dynamic types with the existing
UAPI and adds a new remove_backend_link() routine to unload the the BE
dai link when snd_soc_tplg_component_remove() is invoked.
Signed-off-by: Bard liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Curtis Malainey [Tue, 29 Jan 2019 21:47:09 +0000 (13:47 -0800)]
ASoC: soc-core: clear platform pointers on error
Originally snd_soc_init_platform was not cleaning up its pointers, this
was fixed to always reallocate dynamic memory but created a memory leak
when snd_soc_init_platform was called multiple times during the same
probe attempt and also threw away any changes made to the struct between
calls. In order to avoid reallocating memory that is still valid, the
behaviour will be changed to clear the dynamically set pointers on a
probe error and a unregister event and snd_soc_init_platform will go
back to its original behaviour of only allocating null pointers so it will
stop throwing away valid changes.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>