Richard Fitzgerald [Thu, 19 Jul 2018 10:50:39 +0000 (11:50 +0100)]
ASoC: wm_adsp: Parse HOST_BUFFER controls
Currently the compressed streams in DSP firmwares are
identified essentially by looking at a fixed location inside
the firmware. This is fragile and also limits things to a
single compressed stream.
Here a new form of firmware parameter is added, the HOST_BUFFER
which identifies a compressed stream from meta-data in the
firmware file. This is more robust and allows for the possiblity
of using multiple streams per core in the future. Currently the
implementation is still limited to a single stream and will
use the first HOST_BUFFER parameter encountered. If there aren't
any HOST_BUFFER parameters it will fall back to the legacy way
of finding the host buffer.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Richard Fitzgerald [Thu, 19 Jul 2018 10:50:38 +0000 (11:50 +0100)]
ASoC: wm_adsp: Allow up to 8 channels for voice control
Newer voice control firmwares can capture multiple audio channels.
Allow up to 8 channels for future-proofing.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Charles Keepax [Thu, 19 Jul 2018 10:50:36 +0000 (11:50 +0100)]
ASoC: wm_adsp: Take prefix into account in control name length
Currently when creating ALSA control names for the DSP the length of any
prefix applied to the CODEC is not taken into account. Whilst this is
mostly harmless it does result in ALSA doing the truncation of the
control names and printing a warning. It is better to have the driver do
the truncation so it can truncate from the start of parameter name
itself to give a greater chance of the result maintain a unique name.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Charles Keepax [Thu, 19 Jul 2018 10:50:35 +0000 (11:50 +0100)]
ASoC: wm_adsp: Correct algorithm list allocation size
Commit
6396bb221514 ("treewide: kzalloc() -> kcalloc()") was
overlooked when doing some refactoring to the algorithm list
handling, which lead to twice as much buffer being allocated
as required for reading the algorithm list. A kcalloc is no
longer appropriate since the allocation size is now in bytes
not registers, as such change back to kzalloc.
Fixes:
7f7cca08abf4 ("ASoC: wm_adsp: Simplify handling of alg offset and length")
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 17 Jul 2018 15:42:56 +0000 (17:42 +0200)]
ASoC: meson: add axg tdm formatters DT bindings documentation
Add the DT bindings documentation for axg's TDM formatters: TDMIN
and TDMOUT.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 17 Jul 2018 15:42:55 +0000 (17:42 +0200)]
ASoC: meson: add axg spdif output
Add support for the spdif output serializer of the axg SoC family
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 17 Jul 2018 15:42:54 +0000 (17:42 +0200)]
ASoC: meson: add axg spdif output DT bindings documentation
Add the DT bindings documentation for axg's SPDIF output.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 17 Jul 2018 15:42:53 +0000 (17:42 +0200)]
ASoC: meson: add axg toddr driver
Add the capture memory interface of Amlogic's axg SoCs.
TDM, SPDIF or PDM input devices place audio samples inside this FIFO.
The FIFO content is then pushed to DDR
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 17 Jul 2018 15:42:52 +0000 (17:42 +0200)]
ASoC: meson: add axg frddr driver
Add the playback memory interface of Amlogic's axg SoCs.
This device pulls data from DDR to an internal FIFO.
This FIFO is then used to feed TDM and SPDIF Output devices.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 17 Jul 2018 15:42:51 +0000 (17:42 +0200)]
ASoC: meson: add axg fifo base driver
Amlogic's axg SoCs have two types of fifos which are the memory
interfaces of the audio subsystem. FRDDR provides the playback
interface while TODDR provides the capture interface.
The way these fifos operate is very similar. Only a few settings
are specific to each.
They implement the same pcm driver here and the specifics of each
will be dealt with the related DAI driver.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 17 Jul 2018 15:42:50 +0000 (17:42 +0200)]
ASoC: meson: add axg fifos DT binding documentation
Add the DT bindings documentation for axg's FIFOs: TODDR and FRDDR.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Sriram Periyasamy [Mon, 16 Jul 2018 10:02:34 +0000 (15:32 +0530)]
ASoC: hdac_hdmi: Add documentation for power management
Add documentation for power management of HDAC HDMI codec device for
various scenarios such as S0/S3, probe and playback use case.
Signed-off-by: Sriram Periyasamy <sriramx.periyasamy@intel.com>
Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Fri, 13 Jul 2018 15:36:32 +0000 (16:36 +0100)]
ASoC: qcom: apq8096: remove component framework related code
Now that the component framework is integrated into the ASoC core,
remove any redundant code in this driver.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Fri, 13 Jul 2018 15:36:31 +0000 (16:36 +0100)]
ASoC: qdsp6: q6routing: remove component framework related code
Now that the component framework is integrated into the ASoC core,
remove any redundant code in this driver.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Fri, 13 Jul 2018 15:36:30 +0000 (16:36 +0100)]
ASoC: qdsp6: q6asm-dai: remove component framework related code
Now that the component framework is integrated into the ASoC core,
remove any redundant code in this driver.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Fri, 13 Jul 2018 15:36:29 +0000 (16:36 +0100)]
ASoC: qdsp6: q6afe-dai: remove component fw related code
Now that the component framework is integrated into the ASoC core,
remove any redundant code in this driver.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Fri, 13 Jul 2018 15:36:28 +0000 (16:36 +0100)]
ASoC: core: add support to card re-bind using component framework
This patch aims at achieving dynamic behaviour of audio card when
the dependent components disappear and reappear.
With this patch the card is removed if any of the dependent component
is removed and card is added back if the dependent component comes back.
All this is done using component framework and matching based on
component name.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Agrawal, Akshu [Mon, 16 Jul 2018 07:02:41 +0000 (15:02 +0800)]
ASoC: AMD: For capture have interrupts on I2S->ACP channel
Having interrupts enabled for ACP<->SYSMEM DMA transfer, we are in
for an interrupt storm.
For both playback and capture interrupts should be enabled for
I2S<->ACP DMA.
Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Agrawal, Akshu [Mon, 16 Jul 2018 07:02:40 +0000 (15:02 +0800)]
ASoC: AMD: Send correct channel for configuring DMA descriptors
Earlier, ch1 was used to define ACP-SYSMEM transfer and ch2 for
ACP-I2S transfer. With recent patches ch1 is used to define channel
order number 1 and ch2 as channel order number 2. Thus,
Playback:
ch1:SYSMEM->ACP
ch2:ACP->I2S
Capture:
ch1:I2S->ACP
ch1:ACP->SYSMEM
Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Naveen Manohar [Wed, 11 Jul 2018 10:35:36 +0000 (16:05 +0530)]
ASoC: Intel: Boards: Add GLK Realtek Maxim I2S machine driver
Patch adds Geminilake I2S machine driver which uses following codecs:
RT5682 and MAX98357A.
Signed-off-by: Naveen Manohar <naveen.m@intel.com>
Signed-off-by: Harsha Priya <harshapriya.n@intel.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Fri, 13 Jul 2018 12:50:43 +0000 (14:50 +0200)]
ASoC: allow soc-core to pick up name prefixes from component nodes
When the component does not match the configuration table provided
by the card, let soc-core check the component node for a name prefix
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Fri, 13 Jul 2018 12:50:42 +0000 (14:50 +0200)]
ASoC: add DT documentation for the sound-name-prefix property
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Thu, 5 Jul 2018 10:13:49 +0000 (12:13 +0200)]
ASoC: dpcm: add rate merge to the BE stream merge
As done for format and channels, add the possibility to merge
the backend rates on the frontend rates.
This useful if the backend does not support all rates supported by the
frontend, or if several backends (cpu and codecs) with different
capabilities are connected to the same frontend.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Thu, 5 Jul 2018 10:13:48 +0000 (12:13 +0200)]
ASoC: dpcm: rework runtime stream merge
The goal of this patch is to simplify a bit dpcm runtime stream merge
by removing several local variables.
ATM, merge functions return the BE 'filter' values which should then be
filtered against the FE stream values. This create a lot of local
variable and unnecessary init of min and max.
Instead of this, we can pass the FE stream values directly and let the
BE filtering functions perform the merge 'in-place'
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Wed, 4 Jul 2018 22:59:35 +0000 (00:59 +0200)]
ASoC: Intel: bytcr_rt5651: Reporting button presses
Enable reporting of button presses now that the codec driver recently has
gotten support for this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Wed, 4 Jul 2018 22:59:34 +0000 (00:59 +0200)]
ASoC: Intel: bytcr_rt5651: Disable jack-detect over suspend/resume
Disable jack-detection and thus the codec IRQ over suspend/resume.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Wed, 4 Jul 2018 22:59:33 +0000 (00:59 +0200)]
ASoC: rt5651: Add button press support
Enable button press detection for headsets by using the ovcd IRQ to get
notified of button presses.
This is modelled after (almost exactly copied from) the button press code
for the rt5640 which has identical ovcd hardware.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Wed, 4 Jul 2018 22:59:32 +0000 (00:59 +0200)]
ASoC: rt5651: Allow disabling jack-detect by calling set_jack(NULL)
Allow the machine driver to disable jack-detect over a suspend/resume by
calling snd_soc_component_set_jack(NULL).
Note this renames rt5651_set_jack, where all the jack-enable work was done
to rt5651_enable_jack_detect. This function can now no longer fail as it
does not request the IRQ anymore. It can still be passed an invalid jack
source, but that should never happen, so this is now logged and treated as
no jack source.
Cc: Carlo Caione <carlo@endlessm.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Wed, 4 Jul 2018 22:59:31 +0000 (00:59 +0200)]
ASoC: rt5651: Fix workqueue cancel vs irq free race on remove
On removal we must free the IRQ *before* cancelling the jack-detect work,
so that the jack-detect work cannot be rescheduled by the IRQ.
Before this commit we were cancelling the jack-detect work from the
driver remove callback, while relying on devm to free the IRQ, which
happens after the remove callback.
This is the wrong order. This commit uses a devm-action to register
a devm callback which cancels the work, before requesting the IRQ
(devm tears things down in reverse order). This also allows us to
remove the now empty remove driver callback.
Cc: Carlo Caione <carlo@endlessm.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Sun, 1 Jul 2018 18:36:31 +0000 (20:36 +0200)]
ASoC: Intel: bytcr_rt5651: Add support for externar amplifier enable GPIO
The rt5651 does not have a built-in speaker amplifier, so it is often
used together with an external amplifier. On Cherry Trail boards this
external amplifier's enable pin is driven through a GPIO, which is
given as the first GPIO in the ACPI resources of the codec fwnode.
This commit adds support to the bytcr_rt5651 for this GPIO, fixing
the speaker not working on CHT devices with a rt5651 codec.
Cc: Carlo Caione <carlo@endlessm.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Sun, 1 Jul 2018 18:36:30 +0000 (20:36 +0200)]
ASoC: Intel: bytcr_rt5651: Move getting of codec_dev into probe()
Move the getting of the codec_dev, to add device-props to it, out of
byt_rt5651_add_codec_device_props() and into its caller,
snd_byt_rt5651_mc_probe().
This is a preparation patch for adding support for an external amplifier
enable GPIO, which requires further accesses to the codec_dev.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Sun, 1 Jul 2018 18:36:29 +0000 (20:36 +0200)]
ASoC: Intel: bytcr_rt5651: Remove is_valleyview helper
Remove is_valleyview helper, this is not necessary, we can simply call
x86_match_cpu() directly instead.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Hans de Goede [Sat, 7 Jul 2018 10:22:10 +0000 (12:22 +0200)]
ASoC: Intel: bytcr_rt5640: Add quirk for the Lenovo Miix2 8 tablet
Add a quirk for the Lenovo Miix2 8 tablet, this tablet uses a digital
mic on DMIC1 and has a mono-speaker. The jack-detect uses the default
settings..
Reported-and-tested-by: russianneuromancer@ya.ru
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Lars-Peter Clausen [Fri, 6 Jul 2018 13:19:14 +0000 (16:19 +0300)]
ASoC: adau171x1: Connect playback DAI to the DSP
The playback DAI is connected to the DSP and the DSP might be sourcing
signals from the playback stream. Add a DAPM route between the two to make
sure that the playback DAI is powered up, when the DSP is active.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Arnd Bergmann [Fri, 6 Jul 2018 13:30:48 +0000 (15:30 +0200)]
ASoC: pxa: make SND_PXA_SOC_SSP depend on PLAT_PXA
For the moment, we can't enable CONFIG_SND_PXA_SOC_SSP unless we are
building for ARM PXA or MMP:
WARNING: unmet direct dependencies detected for PXA_SSP
Depends on [n]: PLAT_PXA [=n]
Selected by [y]:
- SND_PXA_SOC_SSP [=y] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=y]
This adds an explicit dependency for it.
Fixes:
0a94cf345740 ("ASoC: pxa: make SND_PXA2XX_SOC_I2S selectable")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
benjamin.gaignard@linaro.org [Fri, 6 Jul 2018 13:07:03 +0000 (15:07 +0200)]
ASoC: stm32: replace "%p" with "%pK"
The format specifier "%p" can leak kernel addresses.
Use "%pK" instead.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Gustavo A. R. Silva [Thu, 5 Jul 2018 13:06:17 +0000 (08:06 -0500)]
ASoC: nau8824: use 64-bit arithmetic instead of 32-bit
Add suffix ULL to constant 256 in order to give the compiler complete
information about the proper arithmetic to use.
Notice that such constant is used in a context that expects an
expression of type u64 (64 bits, unsigned) and the following
expression is currently being evaluated using 32-bit arithmetic:
256 * fs * 2 * mclk_src_scaling[i].param
Addresses-Coverity-ID: 1432039 ("Unintentional integer overflow")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Mon, 2 Jul 2018 15:11:00 +0000 (17:11 +0200)]
ASoC: pxa-ssp: add support for an external clock in devicetree
Allow setting a clock called 'extclk' in the device of the ssp-dai
device. If specified, this clock will be set to the mclk rate from the
DAI's .set_sysclk() callback. The DAI will also configure itself to
use that external clock.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Andrew Gabbasov [Thu, 5 Jul 2018 02:20:04 +0000 (11:20 +0900)]
ASoC: rsnd: cmd: Add missing newline to debug message
To comply with the style of all kernel messages, add newline
to the end of every message.
Fixes:
70fb10529f61 ("ASoC: rsnd: add MIX (Mixer) support")
Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
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>
Gustavo A. R. Silva [Wed, 4 Jul 2018 14:18:33 +0000 (09:18 -0500)]
ASoC: fsl_spdif: Use 64-bit arithmetic instead of 32-bit
Add suffix ULL to constant 64 in order to give the compiler complete
information about the proper arithmetic to use.
Notice that such constant is used in a context that expects an
expression of type u64 (64 bits, unsigned) and the following
expression is currently being evaluated using 32-bit arithmetic:
rate[index] * txclk_df * 64
Addresses-Coverity-ID: 1222129 ("Unintentional integer overflow")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Wed, 4 Jul 2018 09:49:42 +0000 (10:49 +0100)]
ASoC: qdsp6: q6afe-dai: Do not overwrite slim dai num_channels
num_channels for slim dais are aready set int set_channel_map,
do not overwrite them in hw_params.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Wed, 4 Jul 2018 09:49:41 +0000 (10:49 +0100)]
ASoC: qdsp6: q6routing: add slim rx routings
This patch add routings mixer controls for slim rx ports.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Wed, 4 Jul 2018 09:49:40 +0000 (10:49 +0100)]
ASoC: qdsp6: q6afe-dai: add support to slim tx dais
This patch adds support to SLIMbus TX dais in AFE module.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Srinivas Kandagatla [Wed, 4 Jul 2018 09:49:39 +0000 (10:49 +0100)]
ASoC: qdsp6: q6afe: Add missing slimbus capture ports
Existing code already has support for SLIMbus TX and RX, only thing
that was missing from TX side was mapping between virtual to actual
DSP port ids.
This patch adds those mappings.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Takashi Iwai [Wed, 4 Jul 2018 14:01:46 +0000 (16:01 +0200)]
ASoC: stm32: Use snd_pcm_stop_xrun() helper
The XRUN trigger from the driver should be done via
snd_pcm_stop_xrun(). It simplifies the locking as well.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Takashi Iwai [Wed, 4 Jul 2018 14:01:45 +0000 (16:01 +0200)]
ASoC: sti: Use snd_pcm_stop_xrun() helper
The XRUN trigger from the driver should be done via
snd_pcm_stop_xrun(). It fixes the missing stream locking as a gratis,
too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Takashi Iwai [Wed, 4 Jul 2018 14:01:44 +0000 (16:01 +0200)]
ASoC: qcom: Use snd_pcm_stop_xrun() helper
The XRUN trigger from the driver should be done via
snd_pcm_stop_xrun(). It fixes the missing stream locking as a gratis,
too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Takashi Iwai [Wed, 4 Jul 2018 14:01:43 +0000 (16:01 +0200)]
ASoC: davinci: Use snd_pcm_stop_xrun() helper
Replace open-codes with the standard snd_pcm_stop_xrun() helper.
It simplifies codes a lot.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Gustavo A. R. Silva [Wed, 4 Jul 2018 14:28:28 +0000 (09:28 -0500)]
ASoC: nau8825: use 64-bit arithmetic instead of 32-bit
Add suffix ULL to constant 256 in order to give the compiler complete
information about the proper arithmetic to use.
Notice that such constant is used in a context that expects an
expression of type u64 (64 bits, unsigned) and the following
expression is currently being evaluated using 32-bit arithmetic:
256 * fs * 2 * mclk_src_scaling[i].param
Addresses-Coverity-ID: 1339616 ("Unintentional integer overflow")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Liam Girdwood [Mon, 2 Jul 2018 15:59:54 +0000 (16:59 +0100)]
ASoC: core: Allow topology to override machine driver FE DAI link config.
Machine drivers statically define a number of DAI links that currently
cannot be changed or removed by topology. This means PCMs and platform
components cannot be changed by topology at runtime AND machine drivers
are tightly coupled to topology.
This patch allows topology to override the machine driver DAI link config
in order to reuse machine drivers with different topologies and platform
components. The patch supports :-
1) create new FE PCMs with a topology defined PCM ID.
2) destroy existing static FE PCMs
3) change the platform component driver.
4) assign any new HW params fixups.
5) assign a new card name prefix to differentiate this topology to userspace.
The patch requires no changes to the machine drivers, but does add some
platform component flags that the platform component driver can assign
before loading topologies.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Codrin Ciubotariu [Tue, 3 Jul 2018 14:56:31 +0000 (17:56 +0300)]
ASoC: atmel-i2s: dt-bindings: Remove unnecessary phandle to aclk
The optional clock phandle to aclk (Audio PLL clock) is no longer needed
by the driver.
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Codrin Ciubotariu [Tue, 3 Jul 2018 14:56:30 +0000 (17:56 +0300)]
ASoC: atmel-i2s: Remove unnecessary audio PLL clock (aclk)
The generated clock (gclk) driver is able to set aclk as its parent and
change its rate alone, if needed. This means that our driver no longer
needs to configure aclk and we can let gclk select and configure its
clock source.
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 3 Jul 2018 15:06:00 +0000 (17:06 +0200)]
ASoC: es7134: add support for the es7154
Add support for the es7154 which is basically an es7134 with an
embedded power amplifier and lower maximum sample rate
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 3 Jul 2018 15:05:59 +0000 (17:05 +0200)]
ASoC: es7134: correct required power supplies
Drop AVDD in favor of PVDD to match the names used in the datasheet
and only claim PVDD on the es7154. The es7134 and es7144 don't have
a separate supply for the digital I/O.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 3 Jul 2018 15:05:58 +0000 (17:05 +0200)]
ASoC: es7134: update DT binding with new compatible and supplies
Update the documentation to add support for the es7154 and
optional power supplies phandles.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Kurtz [Mon, 2 Jul 2018 21:19:55 +0000 (15:19 -0600)]
ASoC: AMD: Simplify trigger handler
Now that the I2S channel names are fixed, and DMA data flow order is
consistent (ch1 then ch2), we can simplify channel start order:
start the upstream channel and then the downstream channel for both
playback and capture cases.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Kurtz [Mon, 2 Jul 2018 21:19:51 +0000 (15:19 -0600)]
ASoC: AMD: Reset bytescount when starting transaction
The pointer() callback gets its value by reading the I2S BYTE_COUNT
register. This is a 64-bit runnning transaction counter. If a
transaction was aborted in the middle of a sample buffer, the counter will
stop counting on a number divisible by the buffer size. Since we actually
use it as a pointer into an aligned buffer, however, we do want to ensure
that it always starts at a number divisible by the buffer size when
starting a transaction, hence we reset it whenever starting a transaction.
To accomplish this, it wasn't necessary to zero bytescount at the
termination of each transaction, so remove this unnecessary code.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Kurtz [Mon, 2 Jul 2018 21:19:54 +0000 (15:19 -0600)]
ASoC: AMD: Do not generate interrups for every captured sample
On capture, audio data is first copied from I2S to ACP memory, and then
from ACP to SYSRAM. The I2S_TO_ACP_DMA interrupt fires on every sample
transferred from I2S to ACP memory. That is it fires ~48000 times per
second when capturing @ 48 kHz. Since we don't do anything on this
interrupt anyway, disable it to save quite a few unnecessary interrupts.
The real "work" (calling snd_pcm_period_elapsed()) is done when transfer
from ACP to SYSRAM is complete.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Kurtz [Mon, 2 Jul 2018 21:19:53 +0000 (15:19 -0600)]
ASoC: AMD: Fix Capture DMA channel names
On capture, audio data is first copied from I2S to ACP memory, and then
to SYSRAM. For each step the channel number increases, so the names in
the driver were wrong.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Kurtz [Mon, 2 Jul 2018 21:19:52 +0000 (15:19 -0600)]
ASoC: AMD: Always subtract bytescount
It is always correct to subtract out the starting bytescount value. Even
in the case of 2^64 byte rollover (292 Million Years in the future
@ 48000 Hz) the math still works out.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Kurtz [Mon, 2 Jul 2018 21:19:50 +0000 (15:19 -0600)]
ASoC: AMD: Always stop ch2 first
Commit
6b116dfb4633a ("ASoC: AMD: make channel 1 dma as circular") made
both channels circular, so this comment and logic no longer applies. Always
stop ch2 (the channel closest to the output) before ch1. This ensures
that the downstream circular DMA channel does not continue to play/capture
repeated samples after the upstream circular DMA channel has already
stopped.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Gustavo A. R. Silva [Mon, 2 Jul 2018 12:17:07 +0000 (07:17 -0500)]
ASoC: pxa-ssp: mark expected switch fall-through
In preparation to enabling -Wimplicit-fallthrough, mark switch cases
where we are expecting to fall through.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 3 Jul 2018 13:28:45 +0000 (15:28 +0200)]
ASoC: es7241: add es7241 codec support
Add support for the everest es7241 which is a simple 2 channels
analog to digital converter.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Tue, 3 Jul 2018 13:28:44 +0000 (15:28 +0200)]
ASoC: es7241: add dt-bindings documentation for the es7241 adc
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Bard Liao [Tue, 3 Jul 2018 05:07:25 +0000 (13:07 +0800)]
ASoC: rt5682: add button detection mode control
We are currently using power saving mode for button detection.
However, it will impact the headset recording performance.
This patch will switch button detection to normal mode in capture
and switch to power saving mode in the end of capture.
Signed-off-by: Bard Liao <bardliao@realtek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Fri, 29 Jun 2018 15:09:23 +0000 (17:09 +0200)]
ASoC: es7134: Add VDD and AVDD power supplies
Add the VDD and AVDD power supplies to the DAPM graph as some board may
need to enable a regulator to turn them on.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Fri, 29 Jun 2018 15:09:21 +0000 (17:09 +0200)]
ASoC: es7134: check if mclk rate is valid
For each supported sample rate, the es7134 can work with several
mclk / sample rate ratio. Check if ratio we get is actually OK.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Jerome Brunet [Fri, 29 Jun 2018 15:09:20 +0000 (17:09 +0200)]
ASoC: es7134: remove 64kHz rate from the supported rates
64Khz is actually not supported by the es7134 according to the datasheet
Fixes:
9000b59d7a12 ("ASoC: es7134: add es7134 DAC driver")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Fri, 29 Jun 2018 12:59:40 +0000 (14:59 +0200)]
ASoC: pxa-ssp: remove .set_pll() and .set_clkdiv() callbacks
The .set_pll() and .set_clkdiv() callbacks are considered legacy and should
not be used anymore. In order to support PXA boards on DT platforms, remove
them and let the code figure out the correct dividers and PLL base
frequencies itself.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Sat, 30 Jun 2018 20:24:33 +0000 (22:24 +0200)]
ASoC: pxa: select SND_PXA2XX_LIB for drivers that depend on it
Commit
d767d3ce5c48b ("ASoC: pxa: provide PCM ops for ssp, i2s and ac97
components") created a build-time dependency to SND_PXA2XX_LIB but
missed to reflect that in Kconfig.
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:26:27 +0000 (06:26 +0000)]
ASoC: ac97: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:25:11 +0000 (06:25 +0000)]
ASoC: soc-generic-dmaengine-pcm: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:24:57 +0000 (06:24 +0000)]
ASoC: soc-compress: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:24:45 +0000 (06:24 +0000)]
ASoC: soc-topology: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:24:31 +0000 (06:24 +0000)]
ASoC: soc-dapm: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:24:18 +0000 (06:24 +0000)]
ASoC: soc-core: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:24:04 +0000 (06:24 +0000)]
ASoC: soc-acpi: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:23:45 +0000 (06:23 +0000)]
ASoC: soc-devres.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:23:30 +0000 (06:23 +0000)]
ASoC: soc-utils.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:23:16 +0000 (06:23 +0000)]
ASoC: soc-jack.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:22:58 +0000 (06:22 +0000)]
ASoC: soc-dpcm.h: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:22:44 +0000 (06:22 +0000)]
ASoC: soc-pcm.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:22:30 +0000 (06:22 +0000)]
ASoC: soc-ops.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:22:15 +0000 (06:22 +0000)]
ASoC: soc-dai.h: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:21:54 +0000 (06:21 +0000)]
ASoC: soc-io.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:31:33 +0000 (06:31 +0000)]
ASoC: audio-graph-scu-card.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:31:16 +0000 (06:31 +0000)]
ASoC: audio-graph-card.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:30:58 +0000 (06:30 +0000)]
ASoC: simple-scu-card.c: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:30:44 +0000 (06:30 +0000)]
ASoC: simple-card-utils: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Kuninori Morimoto [Mon, 2 Jul 2018 06:30:28 +0000 (06:30 +0000)]
ASoC: simple-card: convert to SPDX identifiers
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
KaiChieh Chuang [Fri, 29 Jun 2018 12:29:45 +0000 (20:29 +0800)]
ASoC: mt6797: sub dai use list_head
Signed-off-by: KaiChieh Chuang <kaichieh.chuang@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
KaiChieh Chuang [Fri, 29 Jun 2018 12:29:44 +0000 (20:29 +0800)]
ASoC: mediatek: sub dai use list_head
use list_head for sub_dais,
since original sub_dais array is sparsely occupied
Signed-off-by: KaiChieh Chuang <kaichieh.chuang@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Wed, 27 Jun 2018 19:33:59 +0000 (21:33 +0200)]
ASoC: pxa: make SND_PXA2XX_SOC_I2S selectable
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Wed, 27 Jun 2018 19:33:58 +0000 (21:33 +0200)]
ASoC: pxa: remove bindings from pxa2xx-pcm
This platform is no longer needed on DT boards, so let's remove them to
avoid confusion. DT bindings should use the CPU DAIs (I2S/SSP/AC97)
directly.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Wed, 27 Jun 2018 19:33:57 +0000 (21:33 +0200)]
ASoC: pxa: provide PCM ops for ssp, i2s and ac97 components
Now that the functions are now available through pxa2xx-lib, hook them up
to pxa-sspi, pxa-ac97 and pxa-i2s. This allows DT platforms to use the DAIs
without a platform driver.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Wed, 27 Jun 2018 19:33:56 +0000 (21:33 +0200)]
ASoC: pxa2xx-pcm-lib: fix indenting
While at it, also fix some indenting.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Wed, 27 Jun 2018 19:33:55 +0000 (21:33 +0200)]
ASoC: pxa: move some functions to pxa2xx-lib
To get rid of some intermediate platform layers, move pxa2xx_soc_pcm_new()
and pxa2xx_pcm_ops in pxa2xx-lib.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Wed, 27 Jun 2018 19:33:54 +0000 (21:33 +0200)]
ASoC: pxa: clean up function names in pxa2xx-lib
Clean up the namespace a bit and drop the __ prefix of all functions
exported by pxa2xx-lib. This improves the readability of the code.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Daniel Mack [Wed, 27 Jun 2018 19:33:53 +0000 (21:33 +0200)]
ASoC: fold pxa2xx-pcm into its only user, pxa2xx-ac97
Now that the PXA SSP bits are ported over to generic DMA, the pxa2xx-pcm
code only has a single user left. This patch folds the remaining bits into
its only user and removes the unnecessary glue layer along with its header
file.
The include dependency to linux/dma/pxa-dma.h is also gone now.
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Robert Jarzmik [Thu, 28 Jun 2018 20:08:37 +0000 (22:08 +0200)]
ASoC: pxa: remove the dmaengine compat need
As the pxa architecture switched towards the dmaengine slave map, the
old compatibility mechanism to acquire the dma requestor line number and
priority are not needed anymore.
This patch simplifies the dma resource acquisition, using the more
generic function dma_request_slave_channel().
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>