There is a missing mutex_unlock() here. The cleanup path also has more
debug output.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Add machine-driver for ST-Ericsson U8500 platform, including
support for the AB8500-codec.
Signed-off-by: Ola Lilja <ola.o.lilja@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
soc_probe_dai_link() currently inter-mixes the probing of CODECs,
platforms, and DAIs. This can lead to problems such as a CODEC's DAI
being probed before the CODEC, if that DAI is used as the CPU-side of
a DAI link without any other of the CODEC's DAIs having been used as
the CODEC-side of any DAI link that was probed earlier.
To solve this, split soc_probe_dai_link() into soc_probe_link_components()
and soc_probe_link_dais(). The former is used to probe all CODECs and
platforms used by a card first, and then the latter is used to probe all
the DAIs and links later.
A similar change is made to soc_remove_dai_links().
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This change simply factors out part of soc_remove_dai_link() into a
standalone function. This makes platform and CODEC removal much more
similar at the call-sites.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
When a standalone CPU DAI (one not part of a CODEC) is probed, widgets
are created for it. Add a call to snd_soc_dapm_free() in order to clean
these up when the CPU DAI is removed.
In order for snd_soc_dapm_free() to work, the CPU DAI's DAPM context's
list member must be initialized, since snd_soc_dapm_free() removes that
from the list it's part of. Add it to the card's list of DAPM contexts.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
If the CPU-side of a DAI link is a CODEC rather than a standalone DAI,
the codec initialization will call try_module_get() and create the DAI
widgets. Ensure that this isn't duplicated when the CPU DAI itself is
probed, if the CPU DAI is part of a CODEC.
Note that this is not a complete fix on its own, since there's no
guarantee that the CODEC itself will be initialized - currently that only
happens if the CODEC is also used as the CODEC-side of a DAI link, and
that initialization may happen before or after the DAIs within the CODEC
are initialized. However, such a scenario doesn't necessarily currently
work, and I don't think this change alone makes it any worse. This is
fixed in a couple patches time.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
add ttc-dkb machine support for pxa910. It uses 88pm8607 as codec
dai, mmp-pcm as platform and pxa-ssp as cpu dai.
Signed-off-by: Qiao Zhou <zhouqiao@marvell.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Adds Alsa audio platform driver for mmp brownstone machine
Signed-off-by: Zhangfei Gao <zhangfei.gao@marvell.com>
Signed-off-by: Leo Yan <leoy@marvell.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
The SSPA is a configurable multi-channel audio serial (TDM) interface.
It's configurable at runtime to support up to 128 channels and the
number of bits per sample: 8, 12, 16, 20, 24 and 32 bits. It also
support stereo format: I2S, left-justified or right-justified.
Signed-off-by: Zhangfei Gao <zhangfei.gao@marvell.com>
Signed-off-by: Leo Yan <leoy@marvell.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
mmp-pcm handle audio dma based on soc-dmaengine
Support mmp and pxa910
Signed-off-by: Zhangfei Gao <zhangfei.gao@marvell.com>
Signed-off-by: Leo Yan <leoy@marvell.com>
Signed-off-by: Qiao Zhou <zhouqiao@marvell.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This fixes a leak if snd_soc_register_codec fails.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
GPLv2 -> GPL v2
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Ola Lilja <ola.o.lilja@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Use clk_prepare/clk_unprepare as required by the generic clk framework.
Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
If mic detect is left enabled and the WM8903 detects a status change,
the WM8903 driver will make a callback against the free()d jack, which
will cause a crash.
This problem can be triggered by fully initializing an audio card, then
removing and re-inserting the machine driver module.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Also convert to use update_bits() while we're at it. No great need to do
this, it's just a bit neater to do as much as possible in the I2C probe.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Stephen Warren <swarren@wwwdotorg.org>
There's no reason to defer requesting of the interrupt until the CODEC
probe and doing so results in more work if we hit an error as we'll have
registered the CODEC with the core. It's neater to acquire as many of the
resources we'll need as we can in the bus probe function.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Stephen Warren <swarren@wwwdotorg.org>
There's no urgent need for the interrupt handler to use the ASoC I/O
functions and it'll support a further move in where we request the
interrupt so call the regmap APIs directly.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Stephen Warren <swarren@wwwdotorg.org>
Ensure that the device pins are configured as soon as possible by moving
the pin configration (including MICBIAS) into the I2C probe() function.
This had been done in the CODEC probe() function when we were relying on
the ASoC register I/O code.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Stephen Warren <swarren@wwwdotorg.org>
The Tegra ASoC machine drivers only depend on Tegra architecture support
to compile, not specific board support. Remove Kconfig dependencies on
any particular board. This is required since Kconfig options for boards
are going away given the migration to device tree.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This patch adds support for Dialog DA732x audio codecs.
Signed-off-by: Michal Hajduk <Michal.Hajduk@diasemi.com>
Signed-off-by: Adam Thomson <Adam.Thomson@diasemi.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
They aren't marked as readable and the feature is never used so they'll
never get referenced.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
If we don't have control over the LDO but do have control over the other
regulators then we may end up trying to write to a powered off device.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
We're using demv_regulator_bulk_get() so don't need to manually free and
this is in the CODEC driver not the I2C driver anyway.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Add codec-driver for ST-Ericsson AB8500 mixed-signal ASIC.
Signed-off-by: Ola Lilja <ola.o.lilja@stericsson.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
We should be using the regmap API consistently for all the cache only
configuration and we should be going cache only before we power down
the supplies.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
We no longer have a flat ASoC cache so can't peer directly into the array
any more but should instead use the register I/O functions to update the
cache.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org (v3.4)
pxa-ssp.c uses API like cpu_is_pxa3xx(), cpu_is_pxa2xx(), which is
defined under arch-pxa architecture, and drivers under mach-mmp
can't find it. so just use ssp->type to replace that API.
Signed-off-by: Qiao Zhou <zhouqiao@marvell.com>
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This allows the module to automatically load when instantiated from
device tree.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Stop open-coding the caching of the ctrl registers; instead, use
regmap_update_bits() to update parts of the register from different
places. The removal of the open-coded cache will allow controls to be
created which touch registers, which will be necessary if any of these
modules are converted to CODECs.
Get rid of tegra*_read/write; just call regmap_read/write directly.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This is the actual device of the I2S or SPDIF controller reporting the
problem. If a future change converts these controllers to be CODECs, then
there may be no pcm associated with the substream, so this change avoids
a crash.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
rtd->codec_dai->codec can be used instead.
This is a slight step along the way to not needing the rtd->codec field
any more.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Define the DAI format statically in the dai_link, rather than executing
code to set it each time the hw params are set.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This is certainly required if the I2S and SPDIF controllers are converted
to be CODECs, and is probably good practice irrespective.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Rather than having varying timeouts depending on the transition always
use a 4s timeout. This provides better diagnostics for clocking errors
and ensures compatibility with current calibration firmwares.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
We should set "isabelle_regmap" before using it. GCC complains.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
We should only add source widgets to the input list.
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Make sure that the dpcm_get_be() only returns BE DAI links.
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Volume updates may not be acted upon if there is no clock applied when
the volume update is written. Ensure this doesn't happen by writing out
registers with volume updates after we enable each of the clocks.
There are more registers updated than before as previously we were
relying on wm_hubs to set those for controls it manages.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
Ensure that all the actions get taken at appropriate times by calling the
_PRE and _POST events for the aifNclk_ev functions explicitly.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
The core fills in some blanks which makes it annoying to do the right thing
and constify the calls in the core.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This reverts commit 014e5b5670 since
PowerPC doesn't use clkdev and hasn't implemented devm_clk_get() itself.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
With devm_ APIs regmap_exit() not needed, so remove regmap_exit().
Signed-off-by: Vishwas A Deshpande <vishwas.a.deshpande@ti.com>
Signed-off-by: M R Swami Reddy <mr.swami.reddy@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
ASoC: Support TI Isabelle Audio driver
The Isabelle Audio IC is a complete low power high fidelity CODEC with integrated
ADCs, DACs, decimation and interpolation filters, PLL, and power providers. This
device supports 2 analog and 2 digital microphone channels, a mono earpiece driver,
stereo class G headphone drivers with ultra low power and best SNR in the industry,
stereo Class D speaker drivers, and 2 high performance Line drivers.
The below patch is a basic driver code for TI Isabelle audio codec. The
functionalities like headset detection, etc., will be included incrementally
in the up-coming patches.
Signed-off-by: Vishwas A Deshpande <vishwas.a.deshpande@ti.com>
Signed-off-by: M R Swami Reddy <mr.swami.reddy@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
version.h header file is no longer required.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
version.h header file is no longer needed.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
Acked-by: Dong Aisheng <dong.aisheng@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Make sure we check the correct path for capture.
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Control type added for cases where a specific range of values
within a register are required for control.
Added convenience macros:
SOC_SINGLE_RANGE
SOC_SINGLE_RANGE_TLV
Added accessor implementations:
snd_soc_info_volsw_range
snd_soc_put_volsw_range
snd_soc_get_volsw_range
Signed-off-by: Michal Hajduk <Michal.Hajduk@diasemi.com>
Signed-off-by: Adam Thomson <Adam.Thomson@diasemi.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Prior to this patch, the CPU side of a DAI link was specified using a
single name. Often, this was the result of calling dev_name() on the
device providing the DAI, but in the case of a CPU DAI driver that
provided multiple DAIs, it needed to mix together both the device name
and some device-relative name, in order to form a single globally unique
name.
However, the CODEC side of the DAI link was specified using separate
fields for device (name or OF node) and device-relative DAI name.
This patch allows the CPU side of a DAI link to be specified in the same
way as the CODEC side, separating concepts of device and device-relative
DAI name.
I believe this will be important in multi-codec and/or dynamic PCM
scenarios, where a single CPU driver provides multiple DAIs, while also
booting using device tree, with accompanying desire not to hard-code the
CPU side device's name into the original .cpu_dai_name field.
Ideally, both the CPU DAI and CODEC DAI loops in soc_bind_dai_link()
would now be identical. However, two things prevent that at present:
1) The need to save rtd->codec for the CODEC side, which means we have
to search for the CODEC explicitly, and not just the CODEC side DAI.
2) Since we know the CODEC side DAI is part of a codec, and not just
a standalone DAI, it's slightly more efficient to convert .codec_name/
.codec_of_node into a codec first, and then compare each DAI's .codec
field, since this avoids strcmp() on each DAI's CODEC's name within
the loop.
However, the two loops are essentially semantically equivalent.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Less error prone and one less line of code in drivers.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
ALSA mixers cannot classify this "Class-D Amplifier Gain" speaker output
gain control as a playback control. Fix this by changing the name as
"Class-D Playback Volume".
Signed-off-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
PIO handler is not good performance, but works on all platform.
So, switch to PIO handler if DMA handler was invalid case.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This patch used dmaengine helper functions instead of using hand setting.
And reduced local variables
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Add platform-driver handling all DMA-activities.
Signed-off-by: Ola Lilja <ola.o.lilja@stericsson.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Adds a supply-widget variant for connection to the clock-framework.
This widget-type corresponds to the variant for regulators.
Signed-off-by: Ola Lilja <ola.o.lilja@stericsson.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
In kernel 3.6, Seaboard will only be supported when booting using device
tree; the board files are being removed. Hence, remove the non-DT support
for Seaboard and derivatives Kaen and Aebl from the audio driver.
Harmony is the only remaining board supported by this driver when not
using DT. This support is currently scheduled for removal in 3.7.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
By the time any widget callbacks could be called, if the GPIO ID they
will manipulate is valid, it must have already been requested, or the
card would have failed to probe or initialize. So, testing for GPIO
validity is equivalent to testing whether the GPIO was successfully
requested at this point in the code. Making this change will allow later
patches to remove the gpio_requested variable.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
The headphone jack GPIOs are added/initialized in the DAI link's init()
method, and hence in theory may not always have been added before remove()
is called in some unusual cases. In order to prevent calling
snd_soc_jack_free_gpios() if snd_soc_jack_add_gpios() had not been, the
code kept track of the initialization state to avoid the free call when
necessary.
However, it appears that snd_soc_jack_free_gpios() is robust in the face
of being called without snd_soc_jack_add_gpios() first succeeding, so
there is little point manually tracking this information. Hence, remove
the tracking code. All other machine drivers already operate this way.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Now that deferred probe exists, we can parse device tree and request
GPIOs from probe(), rather than deferring this to the DAI link's init().
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
The headphone jack GPIOs are added/initialized in the DAI link's init()
method, and hence in theory may not always have been added before remove()
is called in some unusual cases. In order to prevent calling
snd_soc_jack_free_gpios() if snd_soc_jack_add_gpios() had not been, the
code kept track of the initialization state to avoid the free call when
necessary.
However, it appears that snd_soc_jack_free_gpios() is robust in the face
of being called without snd_soc_jack_add_gpios() first succeeding, so
there is little point manually tracking this information. Hence, remove
the tracking code. Almost all other machine drivers already operate this
way.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
By using this function, the driver no longer needs to explicitly free
the GPIOs. Hence, we can also remove the flags we use to track whether
we allocated these GPIOs.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Now that deferred probe exists, we can parse device tree and request
GPIOs from probe(), rather than deferring this to the DAI link's init().
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This allows the GPIOs to be available as soon as the I2C device has
probed, which in turn enables machine drivers to request the GPIOs in
their probe(), rather than deferring this to their ASoC machine init
function, i.e. after the whole sound card has been constructed, and
hence the WM8903 codec is available.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Small driver-specific updates.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJPxfaDAAoJEBus8iNuMP3dnJgP/0cCc7LlY/6jUl+4Bq2KvTg7
hGH0vyCkhnVV6olPXDdGwFDrqK/Y+N9ezC/nRR1JD8hZT6oh9SYTl4yxQdApmmgV
RNnWuKysjNbSA4nOG/HvLNaJ3xgKN8/Vy65jCT5shPUUL/WplKphko2z1/f/+x5P
A+C1RzXG7PSrUjvf9YI199WHUErWDl3pmUZ99iepXaMz385fsQEuGkdZZzH7jOHo
aLwn3hGJ52bproIFugkxBcSRpzf96k+XbjLl6mY+hwMCa6aWJe/IECJNulOuioJ6
8cnyPRSDxyOS0ScSyTPenu1SW+dTqPN65hHrd5FbSUDDa0FMt9pwUV7xrcw54YGX
33/sMll7JhfkSnt+pY5idqSKzseUiwooHYLnWqvfgTnxq/qR95TXKVNumPpyyb97
uoQ3A6VO+d6YtGeBFpV65tdAcyxoHE1etdDbmBrM/B+CevS1TfwxfEROiv3hd8Fp
8znMSp+8RNTAdg9VucTx21/6aqfLKGFykcET5wR5OPx6QFY8kg/h/d/AMFe3U6Bx
80zJVOCRxXTv+EB3HFwZfKjMD9I5bE7P+tmPxfeHzZXuIWsw/5yBee5w1Q5I7n1N
r6GVcxwH0ZMhtqHyHo4MZfqiwDYk1w7PY7eokAH7V4ESL4izrYsQlMpaZeXiFC1H
1K1WJVvuDxMUMy77EWIQ
=Ch46
-----END PGP SIGNATURE-----
Merge tag 'asoc-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: A few bug fixes for the merge window
Small driver-specific updates.
FSI DMAEngine has to be stopped certainly at the start/stop time.
Without this patch, it will include noise on playback.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
FSI driver is using dma_sync_single_xxx(),
but the dma area was not correct.
This patch fix it up.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
DMA stream handler didn't care about master clock.
This patch fixes it up.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
The new clock subsystem was merged in linux-3.4 without any users, this
now moves the first three platforms over to it: imx, mxs and spear.
The series also contains the changes for the clock subsystem itself,
since Mike preferred to have it together with the platforms that require
these changes, in order to avoid interdependencies and conflicts.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAABAgAGBQJPuexPAAoJEIwa5zzehBx3YBsP/0nFhXjb5t1PdLfFzGKtcZVB
j4zXWXMHQ1fA7wIfEpZF3Nnco6MQkufF5wJPoPdn1+wmkzCn3D6IwNVWVtW4U5i9
VGyShSbgusAAYXUe/9yYj8eN+bbRQSvdN4eWYWU6+rRXShGZ5dZZmp+IPNl54dnW
6F8uCnHX0cnIMCpGqV+41zZgZ/4wL2k9gdqu0LO6pi07o4tGd0Z4gcySgUFAnn1R
kofNHueYIP4UgOg8DREoBzVKlpRqMou3S2kSZUfMeb3Q9ryF7UIvaGqIILyi7PKL
kWd3nptg0EPavfL21SwXHiGpnDpB/Gj/F70kcPLus5RYujB24C9bvBmc26z68NZx
Sz9mbElkkIU5duZsl1nxBWJ8IZ/tSWdtmC2xQMznmV7gHyGgVwr4j47f4Uv5sBvM
14JHDO7mqN6E6FnTFZu/oPAN5pDjgL+TVNK5BU6Wkq0zitrA6eyKDqCvBCqkO6Nn
tNzOuyRDzMOwM7HzqXhxqtzJWXylO1Mldc4bM8X4Cocf4pnLna/X6uP6dgE6A+JY
azVYx4I/0NdEPerDTzIcEhBDgZeBVROhUQr+kHxc4rf6WzUUbu/wEo1UKXWV66oW
1jb1yAFFWqYjkQuQc2PD4JSx35sFJaoSaoneRtmzBzRDfzSr5KjKj1E0e1skyMFq
7ZVLCqZD0cB9DhmMDkWP
=rwFF
-----END PGP SIGNATURE-----
Merge tag 'clock' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm-soc clock driver changes from Olof Johansson:
"The new clock subsystem was merged in linux-3.4 without any users,
this now moves the first three platforms over to it: imx, mxs and
spear.
The series also contains the changes for the clock subsystem itself,
since Mike preferred to have it together with the platforms that
require these changes, in order to avoid interdependencies and
conflicts."
Fix up trivial conflicts in arch/arm/mach-kirkwood/common.c (code
removed in one branch, added OF support in another) and
drivers/dma/imx-sdma.c (independent changes next to each other).
* tag 'clock' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (97 commits)
clk: Fix CLK_SET_RATE_GATE flag validation in clk_set_rate().
clk: Provide dummy clk_unregister()
SPEAr: Update defconfigs
SPEAr: Add SMI NOR partition info in dts files
SPEAr: Switch to common clock framework
SPEAr: Call clk_prepare() before calling clk_enable
SPEAr: clk: Add General Purpose Timer Synthesizer clock
SPEAr: clk: Add Fractional Synthesizer clock
SPEAr: clk: Add Auxiliary Synthesizer clock
SPEAr: clk: Add VCO-PLL Synthesizer clock
SPEAr: Add DT bindings for SPEAr's timer
ARM i.MX: remove now unused clock files
ARM: i.MX6: implement clocks using common clock framework
ARM i.MX35: implement clocks using common clock framework
ARM i.MX5: implement clocks using common clock framework
ARM: Kirkwood: Replace clock gating
ARM: Orion: Audio: Add clk/clkdev support
ARM: Orion: PCIE: Add support for clk
ARM: Orion: XOR: Add support for clk
ARM: Orion: CESA: Add support for clk
...
This is the second updates for 3.5-rc1. It's mainly for OMAP4 HDMI
updates and the device tree updates for OMAP, in addition to a couple
of PCM accuray improvement and Realtek ALC269VD codec support.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
iQIcBAABAgAGBQJPvz1xAAoJEGwxgFQ9KSmk6eoQAILf1oW24ZoYfN4daJRmM0dj
aQP1YqOCio0llgYZEM+VpuEdvRjfopUC00/TGyp/NGzWApJdkxZps6Ia8Dvuw215
CG079u4z6fPqO82IeTkn9GkDkVo+BPkuvW2dz9j9QobkALZ7YNYNVXnNZ10qo8tU
JqbNBSgn/bIOJ8nkbu7X1WwecVdZbqgj+xlobi/IidyNqJMkm95NR6OmFGJjyyAO
dyA/i8WdMO1V2eypDvVAD7+0oLcJeTilkSj337UJex7SL/KlopBVdTgDqUyhXHtq
+2G+2L3jHDjs+38d3DosPik5DRQkGswJWK08jNC5VAE+/SggLSf1aRDWUouJ1zqd
0rpDZs9lB8XD8pt3/AYPVai6Yo+dGBVmoexvru1VnKivQ5R78kG+UV27yfhyjxeu
hsr+NEdRNoN56953eZjRWoELh10+iZCH6ARDsAOLV1qRBgAEMe+ayiVdr5k6+12C
pmVoBq/54NpDQ7M6FHR1KcgShxQ3mhwWbjmfPbJ36xuCZISRKXVDmt6GYjx0X4W6
/frJqbv9sy/Ap09JQ6YPdUtmGz+Eh09QyfzpoyMq5vZbu4Y0YIzRS18R4YKdXD6g
lmQ5tv01Fn3C0IQ1SHMaWiRqi0a2gtmXUEE0s4Pu5Oi9MNP2mFtcWuEivrMbysrL
vLWGubKFTRIjmMQ7mtqx
=88ho
-----END PGP SIGNATURE-----
Merge tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound update from Takashi Iwai:
"This is the second updates for 3.5-rc1. It's mainly for OMAP4 HDMI
updates and the device tree updates for OMAP, in addition to a couple
of PCM accuray improvement and Realtek ALC269VD codec support."
* tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (21 commits)
ALSA: hda/realtek - Add new codec support for ALC269VD
ALSA: core: group read of pointer, tstamp and jiffies
ASoC: OMAP: HDMI: Rename sound card source file
ASoC: OMAP: HDMI: Make sound card naming more generic
ASoC: OMAP: HDMI: Make build config options more generic
ASoC: OMAP: HDMI: Expand capabilities of the HDMI DAI
ASoC: OMAP: HDMI: Improve how the display state is verified
ASoC: OMAP: HDMI: Expand configuration of hw_params
ASoC: OMAP: HDMI: Use the DSS audio interface
ASoC: OMAP: HDMI: Create a structure for private data of the CPU DAI
ASoC: OMAP: HDMI: Change error values in HDMI CPU DAI
ASoC: OMAP: HDMI: Update the platform device names
ASoC: omap-abe-twl6040: Introduce driver data for runtime parameters
ASoC: omap-abe-twl6040: Move Digital Mic widget into dapm table
ASoC: omap-abe-twl6040: Keep only one snd_soc_dai_link structure
ASoC: omap-dmic: Add device tree bindings
ASoC: omap-mcpdm: Add device tree bindings
ASoC: omap-mcbsp: buffer size constraint only applies to playback stream
ASoC: omap-mcbsp: Use the common interrupt line if supported by the SoC
ASoC: omap-mcbsp: Remove unused FRAME dma_op_mode
...
This is the first big chunk for 3.5 merges of sound stuff.
There are a few big changes in different areas. First off, the
streaming logic of USB-audio endpoints has been largely rewritten
for the better support of "implicit feedback". If anything about USB
got broken, this change has to be checked.
For HD-audio, the resume procedure was changed; instead of delaying
the resume of the hardware until the first use, now waking up immediately
at resume. This is for buggy BIOS.
For ASoC, dynamic PCM support and the improved support for digital links
between off-SoC devices are major framework changes.
Some highlights are below:
* HD-audio
- Avoid the accesses of invalid pin-control bits that may stall the codec
- V-ref setup cleanups
- Fix the races in power-saving code
- Fix the races in codec cache hashes and connection lists
- Split some common codes for BIOS auto-parser to hda_auto_parser.c
- Changed the PM resume code to wake up immediately for buggy BIOS
- Creative SoundCore3D support
- Add Conexant CX20751/2/3/4 codec support
* ASoC
- Dynamic PCM support, allowing support for SoCs with internal routing
through components with tight sequencing and formatting constraints
within their internal paths or where there are multiple components
connected with CPU managed DMA controllers inside the SoC.
- Greatly improved support for direct digital links between off-SoC
devices, providing a much simpler way of connecting things like digital
basebands to CODECs.
- Much more fine grained and robust locking, cleaning up some of the
confusion that crept in with multi-component.
- CPU support for nVidia Tegra 30 I2S and audio hub controllers and
ST-Ericsson MSP I2S controolers
- New CODEC drivers for Cirrus CS42L52, LAPIS Semiconductor ML26124, Texas
Instruments LM49453.
- Some regmap changes needed by the Tegra I2S driver.
- mc13783 audio support.
* Misc
- Rewrite with module_pci_driver()
- Xonar DGX support for snd-oxygen
- Improvement of packet handling in snd-firewire driver
- New USB-endpoint streaming logic
- Enhanced M-audio FTU quirks and relevant cleanups
- Increment the support of OSS devices to 256
- snd-aloop accuracy improvement
There are a few more pending changes for 3.5, but they will be
sent slightly later as partly depending on the changes of DRM.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
iQIcBAABAgAGBQJPvD/9AAoJEGwxgFQ9KSmkPsIP/AuBGpAZy7b7FiEEIy1Hhdws
US8WVuPzyDslMVdzZ8OFqyPXanIcL9gscoOGMZOEy7UFtMBiR4GuYiPRPubEMxuP
/gopUqK4SqIsIwT238qqYszSJSxE7gNEZ/2jhSGtkX4EkaSZ4bAskn0iOKX5uw2f
kTUQknA1rNLIGba2z6rJbgIW7hdxGfpFy05ruv3ct81nO+5JlgyLuP/v5R6jL+do
cum0N4dJFRd9YSEi2BG612gdz8LJyzOgPqBKmxMEva6BfqLkR8EdP80FtE3eEOiP
Et1q2LhZwOlBt0BEjsjjOVxMsgxVax6ps9cuNRTk5ECEOldU5dbDatC45L/e9mSD
OQVUjYAX1mQAtYva4U4PPn6WU6ma2L5yjy4peCObtyCMkEchXk1bfs4CEfVqCXUP
yFYN8C+y6osZOyWE3+Enn9ifZdWyLeSVq6CT33Yt+fyKlswp6gRkhKYiEPqTA5aU
p71X59Pp7q1y3tQwiMJNpf2QdkxuxfKURHswdc4BS9ct0mdZhQX0GyDS7OffkTd4
Lq5UkVMHA1rLlF9oRPd2C9P4BuMEuvLjf662YCKiw+mWFYdBC036DHLLjm1Hcwuj
UkpQ2PSrrdHG1u0c3ooZ9dQj1BNX4LoABLqvaMtce6sESD/hJ5gcprYJWvtituwM
ZzZiJavIWsoJ+SWQWBHe
=+JSm
-----END PGP SIGNATURE-----
Merge tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai:
"This is the first big chunk for 3.5 merges of sound stuff.
There are a few big changes in different areas. First off, the
streaming logic of USB-audio endpoints has been largely rewritten for
the better support of "implicit feedback". If anything about USB got
broken, this change has to be checked.
For HD-audio, the resume procedure was changed; instead of delaying
the resume of the hardware until the first use, now waking up
immediately at resume. This is for buggy BIOS.
For ASoC, dynamic PCM support and the improved support for digital
links between off-SoC devices are major framework changes.
Some highlights are below:
* HD-audio
- Avoid accesses of invalid pin-control bits that may stall the codec
- V-ref setup cleanups
- Fix the races in power-saving code
- Fix the races in codec cache hashes and connection lists
- Split some common codes for BIOS auto-parser to hda_auto_parser.c
- Changed the PM resume code to wake up immediately for buggy BIOS
- Creative SoundCore3D support
- Add Conexant CX20751/2/3/4 codec support
* ASoC
- Dynamic PCM support, allowing support for SoCs with internal
routing through components with tight sequencing and formatting
constraints within their internal paths or where there are multiple
components connected with CPU managed DMA controllers inside the
SoC.
- Greatly improved support for direct digital links between off-SoC
devices, providing a much simpler way of connecting things like
digital basebands to CODECs.
- Much more fine grained and robust locking, cleaning up some of the
confusion that crept in with multi-component.
- CPU support for nVidia Tegra 30 I2S and audio hub controllers and
ST-Ericsson MSP I2S controolers
- New CODEC drivers for Cirrus CS42L52, LAPIS Semiconductor ML26124,
Texas Instruments LM49453.
- Some regmap changes needed by the Tegra I2S driver.
- mc13783 audio support.
* Misc
- Rewrite with module_pci_driver()
- Xonar DGX support for snd-oxygen
- Improvement of packet handling in snd-firewire driver
- New USB-endpoint streaming logic
- Enhanced M-audio FTU quirks and relevant cleanups
- Increment the support of OSS devices to 256
- snd-aloop accuracy improvement
There are a few more pending changes for 3.5, but they will be sent
slightly later as partly depending on the changes of DRM."
Fix up conflicts in regmap (due to duplicate patches, with some further
updates then having already come in from the regmap tree). Also some
fairly trivial context conflicts in the imx and mcx soc drivers.
* tag 'sound-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (280 commits)
ALSA: snd-usb: fix stream info output in /proc
ALSA: pcm - Add proper state checks to snd_pcm_drain()
ALSA: sh: Fix up namespace collision in sh_dac_audio.
ALSA: hda/realtek - Fix unused variable compile warning
ASoC: sh: fsi: enable chip specific data transfer mode
ASoC: sh: fsi: call fsi_hw_startup/shutdown from fsi_dai_trigger()
ASoC: sh: fsi: use same format for IN/OUT
ASoC: sh: fsi: add fsi_version() and removed meaningless version check
ASoC: sh: fsi: use register field macro name on IN/OUT_DMAC
ASoC: tegra: Add machine driver for WM8753 codec
ALSA: hda - Fix possible races of accesses to connection list array
ASoC: OMAP: HDMI: Introduce codec
ARM: mx31_3ds: Add sound support
ASoC: imx-mc13783 cleanup
mx31moboard: Add sound support
ASoC: mc13783 codec cleanups
ASoC: add imx-mc13783 sound support
ASoC: Add mc13783 codec
mfd: mc13xxx: add codec platform data
ASoC: don't flip master of DT-instantiated DAI links
...
Pull trivial updates from Jiri Kosina:
"As usual, it's mostly typo fixes, redundant code elimination and some
documentation updates."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (57 commits)
edac, mips: don't change code that has been removed in edac/mips tree
xtensa: Change mail addresses of Hannes Weiner and Oskar Schirmer
lib: Change mail address of Oskar Schirmer
net: Change mail address of Oskar Schirmer
arm/m68k: Change mail address of Sebastian Hess
i2c: Change mail address of Oskar Schirmer
net: Fix tcp_build_and_update_options comment in struct tcp_sock
atomic64_32.h: fix parameter naming mismatch
Kconfig: replace "--- help ---" with "---help---"
c2port: fix bogus Kconfig "default no"
edac: Fix spelling errors.
qla1280: Remove redundant NULL check before release_firmware() call
remoteproc: remove redundant NULL check before release_firmware()
qla2xxx: Remove redundant NULL check before release_firmware() call.
aic94xx: Get rid of redundant NULL check before release_firmware() call
tehuti: delete redundant NULL check before release_firmware()
qlogic: get rid of a redundant test for NULL before call to release_firmware()
bna: remove redundant NULL test before release_firmware()
tg3: remove redundant NULL test before release_firmware() call
typhoon: get rid of redundant conditional before all to release_firmware()
...
With this, five platforms are moving to the relatively new pinctrl
subsystem for their pin management, replacing the older soc specific
in-kernel interfaces with common code.
There is quite a bit of net addition of code for each platform being
added to the pinctrl subsystem. but the payback comes later when adding
new boards can be done by only providing new device trees instead.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAABAgAGBQJPuw1/AAoJEIwa5zzehBx3wbsP/RFCYzMVyz85BNLQuRyY9eO2
GCRWd0Vvy3fIfypiPdHdhkq6nIU/JnxgsfBbKX9FvWqvxXi96Ojh13KSIhSI1rQ9
t14VyuwUXaS3leeCyKxhNF1vRscz2iyEGXJqp+XEN4ckf2nrQCpKBiY5Eg9sH6/J
fvYgSBY9Lf9nFAn+/wqSKIfdvw7H0NXwUdsLvNU0uCwvrSG929bTxx2AnHX00TdJ
qf4XLhmatMg1uwdUgL/99ZxxgHlj6o55u7S6aRhUWXNXCimV6uEZ1F35ET37b+x3
YUltBCIaXjFR7iwNHmkkl42d8uyfkBznB555sY5qS3G/uF5Ma1R5I7fv8EIEy+2w
bVHsva4lj1yFazic6m8yKTET4i8n6OPiKVNqGnDsp2yb6WzOGSliKdr0Jlo1oNG2
gS69LcDZxCkXrqEq0Ht8uUoCo9TWei+qhJ6ZOJ1Z3+9ZyFq1iRTKgPVxyA5VaHaB
wwBbqKrohAwuExY8/gkAj6SYqBOF3l/J8QSB2JjXyj4trLC5UMq+l3L4cIWyMRPc
fil83hV6460CiIBoKcsnV9hDUS0oh74mv52zHo0Xj73qABqZ4dcrpHVayWjtMtpl
Z+tUpvD1rMQ+E0gdXDrwMrwILVyCDsBvpFKF4avnujDJ4WmyywtKZ+xvnpMd73VZ
YrI/+XQsMT8ZfVkkj54D
=HIfz
-----END PGP SIGNATURE-----
Merge tag 'pinctrl' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm soc-specific pinctrl changes from Olof Johansson:
"With this, five platforms are moving to the relatively new pinctrl
subsystem for their pin management, replacing the older soc specific
in-kernel interfaces with common code.
There is quite a bit of net addition of code for each platform being
added to the pinctrl subsystem. But the payback comes later when
adding new boards can be done by only providing new device trees
instead."
Fix up trivial conflicts in arch/arm/mach-ux500/{Makefile,board-mop500.c}
* tag 'pinctrl' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (61 commits)
mtd: nand: gpmi: fix compile error caused by pinctrl call
ARM: PRIMA2: select PINCTRL and PINCTRL_SIRF in Kconfig
ARM: nomadik: enable PINCTRL_NOMADIK where needed
ARM: mxs: enable pinctrl support
video: mxsfb: adopt pinctrl support
ASoC: mxs-saif: adopt pinctrl support
i2c: mxs: adopt pinctrl support
mtd: nand: gpmi: adopt pinctrl support
mmc: mxs-mmc: adopt pinctrl support
serial: mxs-auart: adopt pinctrl support
serial: amba-pl011: adopt pinctrl support
spi/imx: adopt pinctrl support
i2c: imx: adopt pinctrl support
can: flexcan: adopt pinctrl support
net: fec: adopt pinctrl support
ARM: ux500: switch MSP to using pinctrl for pins
ARM: ux500: alter MSP registration to return a device pointer
ARM: ux500: switch to using pinctrl for uart0
ARM: ux500: delete custom pin control system
ARM: ux500: switch over to Nomadik pinctrl driver
...
Rename sound card driver source file to encompass not only OMAP4 but future
OMAP versions that feature HDMI.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Rename all the relevant structures, variables and functions to not
make specific reference to OMAP4. This is to make the driver encompass
future OMAP versions that feature HDMI and not only OMAP4. These
changes are only in naming. There are not functional changes.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Make Kconfig and Makefile more generic to encompass not only
OMAP4 but other OMAP processors featuring HDMI.
Also, relax the dependency list to depend only on any OMAP processor
supporting OMAP2_DSS and OMAP4_DSS_HDMI. As HDMI support for
future OMAP versions is added, the dependency list must change
accordingly.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
According to the HDMI specification, a source is permitted to
transmit L-PCM audio in the following sample rates: 32kHz, 44.1kHz,
48kHz, 88.2kHz, 96kHz, 176.4kHz or 192kHz.
It also supports up to 8 audio channels.
The sink may not necessarily support all these sample rates and
channels. However, as this CPU DAI describes the HDMI source, it
makes sense to include them. The limitation of capabilities as
supported by the sink should be done in the ASoC HDMI codec.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Before starting to play audio, we need to make sure that the
display is active and the current video mode supports audio. instead
of using the overlay manager in the machine driver, we use the DSS audio
interface's audio_supported function. As we already have a pointer to
the correct dssdev, we do not have to look for it every time audio is
to be played. Also, the CPU DAI startup function is called earlier
than the card hw_param function. Hence and we can detect the state of
the display earlier.
While there, add a error message if the constraint cannot be applied.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
squash to improve err
Signed-off-by: Liam Girdwood <lrg@ti.com>
Expand the configuration of the hw_params to include the IEC-60958
channel status word and the CEA-861 audio infoframe. The configuration
of such structures depends on the snd_pcm_hw_params received. A
omap_dss_audio is used to pass the configuration parameters to DSS.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Instead of accessing the HDMI IP directly, the CPU DAI driver takes
advantage of the audio interface provided by the DSS device driver.
The ASoC driver will link the DSS audio functionality with ALSA by
calling the appropriate DSS device driver functions at the relevant
moments. For this, three new DAI operations are added: trigger, prepare
and shutdown operations.
At the moment, it is assumed that only one HDMI display is available
in the system, as it is the case in OMAP4. However, in the future,
one DAI for each HDMI display should be provided.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Create a struct hdmi_priv to store the relevant data of the CPU DAI
driver. As more data is added to the driver, having all the data
in the same location eases its handling. At the moment, only the DMA
configuration parameters are included in the structure.
Also, the required memory is allocated using devm_kzalloc rather than
using a static global variable.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
When getting the needed resources fails, return -ENODEV. This is more
in line with other drivers do and it gives a more descriptive error.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
In order to utilize the new OMAP HDMI codec and the updated name of
the device of the CPU DAI, update the names at the drivers accordingly.
While there, also update the name of the machine driver to be more
generic and encompass more OMAP processors featuring HDMI and not
only OMAP4.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
In preparation to Device Tree support.
With DT booted kernel we can not rely on pdata which used to
hold information needed for the driver at runtime.
Use the card's driver data to hold these informations from now on.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
The needed change in routing will be done runtime for the non
twl6040 connected widgets, like the Digital microphone.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
There is no need to have two snd_soc_dai_link structure for the two setup
the machine driver supports.
We can just tell core to register only the first link if the DMIC link is
not in use on the device.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Device tree support for OMAP4+ dmic cpu dai driver.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Device tree support for OMAP4+ McPDM cpu dai driver.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
In capture stream the buffer size does not need to be constrained to be
bigger then the McBSP FIFO.
In capture the FIFO content is taken out in period length burst, this
enusres that the FIFO is not going to overflow.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
With the common irq the driver only needs to use one interrupt line, and
it provides better debugging possibilites compared to the legacy TX/RX
interrupt lines.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
The frame dma_op_mode has never been used, and it is just creating
confusion for users/developers.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Take the DMA packet mode into use when the McBSP is configured in element
dma_op_mode if the stream is not mono.
In this way we transfer one sample from/to McBSP FIFO upon DMA request.
This change only affects OMAP3+ versions, where the McBSP ports have FIFO.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
These are all new code, they've been in -next already so should be OK
for merge this time round. I'd been planning to send a pull request
today after they'd had a bit of exposure there to make sure breakage
didn't propagate into your tree.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJPuldTAAoJEBus8iNuMP3d+AgP/jqsjHm4DRXw48OMO3gX45yN
Y9JsvMQRYtiUY/zmfHKm8J2BoH3N1SdQjFXzp7qpAJ1RIz5aEKQu41ji/xDOSiu7
X/SxPxeMumZp50HjQS3VHyrwtkd+bwprbG0/Hk2TPnZ2aY6WQ6pfC3smHQYKQ75m
saXrpmTv7s4zgAN2KXw35m304WvifuQ/KvUs/PU5LFVdy38YXacA0SMusTV6H2VG
DN5ENxT2e9NYU5zTCTEVmK7vwoApsX7PmnDor6KygGUceGijHHmDtDqRWBxelVJv
MS+LQsM3xdqRkX4gETtzg4EN7taRLRJQAFFImM32+M3u4g2Q2fYSpIEPYrf5SatP
GxpcZogDtjs6e+SqtWQb8vFmVCEq/6icMpOzmUQZhoKjF4D5QO7gGN8LLPiahons
Cc1C3L2JQO1tZ9vryt6aEub2vUNm7KO22ODqYo6xVYBaYYl8vv9WXvLv7TgTSocF
YwsxaRfFTy8jlP1OFVsywQa5k1yPb/twD9HFNpwTUtMrMP4QPdp7wvJaDJrBBXxi
U8uD/JSub/0CDjlYgvB/f6LRTZdjeVeirR9AyAyiLKnj9YxdrmY0v6n40voDFwMg
wLGECAdksuDSfnnN7+k+LM7bRDycQhO/QMV7t6ZdtMl5KdQZ69KoK4qdyoLq4BUi
c3LRJaPlV6tmI54YrhRN
=5L34
-----END PGP SIGNATURE-----
Merge tag 'asoc-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Last minute updates
These are all new code, they've been in -next already so should be OK
for merge this time round. I'd been planning to send a pull request
today after they'd had a bit of exposure there to make sure breakage
didn't propagate into your tree.
The major thing here is the addition of some helpers to factor code out
of drivers, making a fair proportion of regulators much more just data
rather than code which is nice.
- Helpers in the core for regulators using regmap, providing generic
implementations of the enable and voltage selection operations which
just need data to describe them in the drivers.
- Split out voltage mapping and voltage setting, allowing many more
drivers to take advantage of the infrastructure for selectors.
- Loads and loads of cleanups from Axel Lin once again, including many
changes to take advantage of the above new framework features
- New drivers for Ricoh RC5T583, TI TPS62362, TI TPS62363, TI TPS65913,
TI TWL6035 and TI TWL6037.
Some of the registration changes to support the core refactoring caused
so many conflicts that eventually topic branches were abandoned for this
release.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJPuhn4AAoJEBus8iNuMP3d6m4P/0gNiGbTwDlOgU/mPDyW2jJc
xqvABzlOIQbI28/dgFYO/nA9YWW7VxpEaAPlkg4auk4wQ9tEyEjEqlOCfzymMetY
0k6L4n8LqFsbMAeNQbFPbW7PpWp59oI97J9afJI4kEJmHmOlmlL9U82/TzUFfGrA
yiPlzue+DotKB7FjsymLMbLyeFoiMSOIjVDk8OTs0u1EqeOo4nJG2ODLa+yGo+QW
0yqQExEdIp28WXbkZQtmsOmj2V/uhkKAv2i2PDT2TmlduhNdCGxJsgZIiZCl1R4c
vwirbfb+v93HAxvADdgj8eVdLJXQ0oItxr2ohKt8AgXIBrUJBsMkCQGvulZjRb+a
/A/7Ea3o7HI+PQx4aIP0yGA/eBwbzo/cmBxU+KGzTA9Mov0fnK1kkUs6gfrYBdli
U/TcMizDa1539BrKBIF2gmlRCKx8YD9ic27Zl1x4i5cgAP1gdYgdBYBybKHMpo2+
9Xp1R9C8FvvgytIqJ3QQ34tRomZyQ5iUaIuIuAosoQ6iuF33EQ6I0FvHcIe74iOi
zcu62ZPiuSwg1di9PrTERLcbrS81lvXpOWt5+EorzqoGXWzVIGoTh1F2kWEEMhaD
Q6V5iE03VC0k3tj/MmtTiVkyhNkRElQDtekE9sfm15pdVnpu/+b+iicWJa7QFbZQ
MybS0BBFQKhJXUDttKtS
=UR7s
-----END PGP SIGNATURE-----
Merge tag 'regulator-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
Pull regulator updates from Mark Brown:
"The major thing here is the addition of some helpers to factor code
out of drivers, making a fair proportion of regulators much more just
data rather than code which is nice.
- Helpers in the core for regulators using regmap, providing generic
implementations of the enable and voltage selection operations which
just need data to describe them in the drivers.
- Split out voltage mapping and voltage setting, allowing many more
drivers to take advantage of the infrastructure for selectors.
- Loads and loads of cleanups from Axel Lin once again, including many
changes to take advantage of the above new framework features
- New drivers for Ricoh RC5T583, TI TPS62362, TI TPS62363, TI
TPS65913, TI TWL6035 and TI TWL6037.
Some of the registration changes to support the core refactoring
caused so many conflicts that eventually topic branches were abandoned
for this release."
* tag 'regulator-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (227 commits)
regulator: tps65910: use of_node of matched regulator being register
regulator: tps65910: dt: support when "regulators" node found
regulator: tps65910: add error message in case of failure
regulator: tps62360: dt: initialize of_node param for regulator register.
regulator: tps65910: use devm_* for memory allocation
regulator: tps65910: use small letter for regulator names
mfd: tpx6586x: Depend on regulator
regulator: regulator for Palmas Kconfig
regulator: regulator driver for Palmas series chips
regulator: Enable Device Tree for the db8500-prcmu regulator driver
regulator: db8500-prcmu: Separate regulator registration from probe
regulator: ab3100: Use regulator_map_voltage_iterate()
regulator: tps65217: Convert to set_voltage_sel and map_voltage
regulator: Enable the ab8500 for Device Tree
regulator: ab8500: Split up probe() into manageable pieces
regulator: max8925: Remove check_range function and max_uV from struct rc5t583_regulator_info
regulator: max8649: Remove unused check_range() function
regulator: rc5t583: Remove max_uV from struct rc5t583_regulator_info
regulator: da9052: Convert to set_voltage_sel and map_voltage
regulator: max8952: Use devm_kzalloc
...
SupherH FSI2 can use special data transfer,
but it depends on CPU-FSI2 connection style.
We can use 16bit data stream mode if it was valid connection,
and it is required for 16bit data DMA transfer / SPDIF sound output.
We can use 24bit data transfer if it was invalid connection.
We can select connection type if CPU is SH7372,
and it is always valid connection if latest SuperH.
This patch adds new bus_option and fsi_bus_setup()
for supporting these feature.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
fsi_hw_startup/shutdown() needs the setup of bus width,
but it is impossible to get parameter of snd_pcm_runtime at this timing.
So, these functions are changed so that be called from fsi_dai_trigger().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This patch adds fsi_version() function for accessing version.
And there were some meaningless version check which never hit.
This patch removed it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Introduce codec for HDMI. At the moment, this is a dummy codec. In the
future it will parse the EDID to modify the supported parameters, such
as the number of channels and the sample rates. At the moment, it blindly
supports all the sample rates and audio channels described in the HDMI
1.4a specification.
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
A few last-minute regression fixes for 3.4 final kernel.
All trivial, and Cc'ed to stable kernel.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
iQIcBAABAgAGBQJPs5nDAAoJEGwxgFQ9KSmkKqAP/AxbPIMOhYtwJXSLIBJdDTBy
QIh7SUZTDF7m3h3pElFIUzb6NXftBOktwNBCYjYrtWH3hv6a0XwAG/zs2ysvHo4O
1iIEIT61ojckSC2OXqdCLSnZrLZmysuBUJEt8JdpHKoGnfxt8xUUSOqtIggur6s+
T34u1pqJr7gcaU0/51XXqGqR2s4qui8LkSyPVx+s3Pz4+mfh+um1SBcYz5bYpkXe
04gwCR6qrxwvqn1gGUiwFw1KtWNuD+BwWyLN+WNWLrm7NVipVLPaAaCjvnouxYwU
Z9psy3QgwgFyJ0k27lWf+NkP25/9NXuj0yaV0++dUHR4QP3+P9IJpvpyFLvkyXBe
EPjLsAdW9WQKlp/0eN/b2k8825Ip5on3UNrQhTmXc0QLC6bCyoRlznSI2nKC7rZw
eYcFUv37pka3iL9i/cNQKwhY8iRwts6vAuHdqONA3iDyCoBIYWsZZDzs+tjc3xYN
f1cI+vbDLatzpn6ut2yXIqCHJLLUROL6DnKC6l86+7DNXo7hJ9CZOSgedhvdPRc6
sayOsbWwG8RX7vLsbp4SvfpaGwI+GtfFoaECKcLW5Tem8xLuTbUcuIavAyjqxzrk
Shp7TGDmM5U1JFcXK3ZtvUcumBFjTa2rl9OB5dHMzLQV8KZAzeVUNqSHm4pma3SX
NpdEX7QxM83K0zSnppjh
=e/ZS
-----END PGP SIGNATURE-----
Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"A few last-minute regression fixes for 3.4 final kernel. All trivial,
and Cc'ed to stable kernel."
* tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ASoC: wm8994: Fix AIF2ADC power down
ALSA: hda/idt - Fix power-map for speaker-pins with some HP laptops
ASoC: cs42l73: Sync digital mixer kcontrols to allow for 0dB
* 'clk-next' of git://git.linaro.org/people/mturquette/linux:
clk: Fix CLK_SET_RATE_GATE flag validation in clk_set_rate().
clk: Provide dummy clk_unregister()
ARM: Kirkwood: Replace clock gating
ARM: Orion: Audio: Add clk/clkdev support
ARM: Orion: PCIE: Add support for clk
ARM: Orion: XOR: Add support for clk
ARM: Orion: CESA: Add support for clk
ARM: Orion: SDIO: Add support for clk.
ARM: Orion: NAND: Add support for clk, if there is one.
ARM: Orion: EHCI: Add support for enabling clocks
ARM: Orion: SATA: Add per channel clk/clkdev support.
ARM: Orion: UART: Get the clock rate via clk_get_rate().
ARM: Orion: WDT: Add clk/clkdev support
ARM: Orion: Eth: Add clk/clkdev support.
ARM: Orion: SPI: Add clk/clkdev support.
ARM: Orion: Add clocks using the generic clk infrastructure.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Commit 4924082 "ASoC: core: Flip master for CODECs in the CPU slot of a
CODEC<->CODEC link" added code that was conditional on there being no
PCM/DMA driver for the link. However, it failed to cover the case where
the link was instantiated from device tree, and hence was specified by
DT node rather than name.
This prevents the following error on Toshiba AC100:
aplay: pcm_write:1603: write error: Input/output error
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Some last minute fixes for ASoC. Small, focused changes to specific
drivers.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJPspeNAAoJEBus8iNuMP3deBkP/15YJrq0uQ6JkLwbkS6aor/R
C0BILwQVvHhTt2IAUq44T1lJwjdTYhTgZU8IF5PJhmeSrPGJY3aGaxDocuYhoHFM
RQJye5lxfkmsvMjS+nx0qxaSyYMyTP0rM3GC0urgMME/1KKQ9P0/PcwVvtbGt/aR
JuhWmh8Zkk2qmsdFlcd3wFoiVqSDwHmnLJkcj5a6SxAHuwwVGxfF+ZjWJrt+7VFo
xkmKGpb5iWDmgiZJwGBCwYzVp+pbOEltKoRuhmmtDOgXm01YlMwBLQzvoaJA8uaK
p+xzrAPvr25rQxLnv4W0LFHJcF/ONkyfPP0nfxK2Y1pMYY7xvMRmM8l5yw0QF97m
FFZdjz9IBPVW0urCsRrVC/b+2a4VdOlCloYoffGocd1oroNZJlBcFsWtx5/9QOiK
5eynB2EY/Aywu+Sle9BIKV2Gx7gseo9wdt8oi1cK1CmCeser1NekG0cavJJux8LO
oHrOssKb4rRK1Br0jT1A4xUr0G2mIwTWIvNrRIVkNId8PVfGUKbW6dlTkG72h6Jp
j1Rs4lR0wSlCYfwBzxrmf7/L/5dTNDFiiVZWBky29prq3yNkhqTvKMqCSyb5Uboc
/zJdzfFwh+dF8w08fxvpd0VfeNPiWNyPqDOH0dbjxCL68lnmUoS1WJ5ec1l6ZJht
1xXeuj4sK9PZ6uzJc/Il
=iqgt
-----END PGP SIGNATURE-----
Merge tag 'asoc-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Last minute fixes
Some last minute fixes for ASoC. Small, focused changes to specific
drivers.
aic3x_set_headset_detection() isn't made available outside the driver or
referenced within the driver which sparse notices and complains about.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
In preparation for irq_domain support change the code to the not switch
based on the irq number. This actually makes things simpler, if slightly
repetitive.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Use the devm_ versions of the regmap and memory allocation functions,
saving some error handling code.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Since we only need to clock AIF2 when it's actively in use start up the
FLL for it using a supply widget which supplies AIF2CLK. This both makes
the sequencing more robust and ensures we minimise power consumption.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Add device tree probe for mxs-sgtl5000 machine driver.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Add device tree probe for mxs-saif driver.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Same as the commit 518de86 (ASoC: tegra: register 'platform' from DAIs,
get rid of pdev), it makes mxs-pcm not a platform_driver but helper to
register "platform", so that the platform_device for mxs-pcm can be
saved completely.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Some of the Digital mixer kcontrol max values were off by 1 not allowing a max of 0dB.
Signed-off-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
Slightly more than expected as rc7, but all are reasonablly small fixes.
A few additions of HD-audio fixup entries, a couple of other regression
fixes including a revert, and a few other trivial oneliners.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
iQIcBAABAgAGBQJPq2sLAAoJEGwxgFQ9KSmk4ZMP/jC9XLQpn3Y95+/id/D+54R5
dU4aIQYNo1vheODv9hToN6Zvyd+FrouU7mikKwFnyJ1iuPfsxKrsaY+ifbfqXuQo
L0CuWDnwSDutDf5D3s8G+jg0VQHoYu+Dv7MgLqKs/DGYe3iNZKD34QtgOq0BVio0
9PP6bQCVB48TeTte3b0KD4O8rWBfSreDJj+UEewFy0V81f8P/e/ILJnkPW144FXy
1DaR70wE/1wvhW4GWvc+WGM+iH5mUWLaE49K7wdXqcTgR7XRejG4BjWAJBKEoHVc
o3AmFMTfidMzHokXdU6YgV16I8IXRmlEWFnlEGA5dxVsh0JP0t2d3mIQpcVJMm3E
Gpz5OMSjRvuOcW3wkNWYYgcm+npHtiRcXYKr+azFymsPoTSA0xlDoi7HQsVbMzG+
Jz5AwtsyZcp2BIolLvAJTXmBiHuRHNjHW2huqV+G2OI37A5YZWRIfD2vEF07MxXH
FMRCUEHOMVbRuvZtUnSGbcpdVuSMS2hjwsOdBcO03oPVrc/gp224oQvG2iNxsCHu
iH0s114j1mIYxVZX4dx+sjMyD9h3lVSghNQcz9Z7jShWdJBiQuiIneTd3y0FVbh1
l0Nq9A/oPbIYK9kbSb9z4J13WmXeS7rFYdFSPNJJ7XAKwIsZdqEMbxZM3fLHoi7b
dF95KKVJ7VwCeLjrDVZ4
=7Zz7
-----END PGP SIGNATURE-----
Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"Slightly more than expected as rc7, but all are reasonablly small
fixes. A few additions of HD-audio fixup entries, a couple of other
regression fixes including a revert, and a few other trivial
oneliners."
* tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ASoC: sh: fix migor.c compilation
ALSA: HDA: Lessen CPU usage when waiting for chip to respond
Revert "ALSA: hda - Set codec to D3 forcibly even if not used"
ALSA: hda/realtek - Call alc_auto_parse_customize_define() always after fixup
ALSA: hdsp - Provide ioctl_compat
ALSA: hda/realtek - Add missing CD-input pin for MSI-7350 mobo
ALSA: hda/realtek - Add a fixup for Acer Aspire 5739G
ALSA: echoaudio: Remove incorrect part of assertion
They pollute the global namespace and cause sparse to complain.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
It can only be used with a machine driver so the idiomatic thing for
ASoC is to select this driver from the machine driver.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Makes sparse happy and avoids polluting the global namespace.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Brian Austin <brian.austin@cirrus.com>
We need to read the real register values
Signed-off-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
An API update which wasn't sufficiently thorough in updating the tree...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIbBAABAgAGBQJPqlf6AAoJEBus8iNuMP3duOcP+MUkL8T/PMaehNqqcLW6tJCE
vxmS5RzpRcsGBzc5MYGpuzItpNiqEZGjHsp+2RAGTY3P5ACIJ04jzrwFxCrkoFB4
w4tro6dz8uFA+gWAFqd+/D/UQXE7bDfxy2mZ0PYjgZtA8C2aVaQuIt0Btkt4jcqo
42LioL2JM0OERHPf2cacuownf3YU8O1srVfhTXpbgKjUU4llkIzA6UMOjAZuTf6W
z0dmXet5DHs19f7PM8PnRxTUkCuMM5KtzCUPhENxf/mTb8RWc/rS6iJrhWTkzVYg
Kn41YDXElcjakoOiM/T8kaUe25Y3d1YSKgy/4OiFvn8fdb/icXai+3Z2eEk7Tnye
ZEzSEheSuNw/6IHEcdw8wxy0Dh/Cal6oDUSANk3d3+vVGjxMGK7IpuKdJ3vk353f
+MRwTxlfRQUlwRlv2Wp4J6TQ13nJKksalvGTcsDfmtcAQTP0s+8xtXG0gzWNuqJo
tGTt4sLTMjLsJawH7fLqsUVRzrFqJaFSQ0fkxU3sVnomREDTQkaIPFDXJPS1id2C
E4VIHkYi3mA9ki0TH67HcCvKnNm765oUAiqovZiu4LdH9vJpM+yAnG0Hc8SrM7AQ
9jK6z9YOdHV7KyGpBUq8LM2+lLTLZRsFLPQ/d2xiJw2JxCYZD9YykQv90ZGMtTaR
Ks8T4KioUZinkCSB4eg=
=HF38
-----END PGP SIGNATURE-----
Merge tag 'asoc-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Build fix for SH in 3.4
An API update which wasn't sufficiently thorough in updating the tree...
We're trying to remove all usage of the ASoc level cache and I/O code and
for a device like this with a pretty sparse register map the rbtree cache
is a better idea anyway.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Add driver for running I2S with the MSP-block.
Signed-off-by: Ola Lilja <ola.o.lilja@stericsson.com>
[Fixed trailing whitespace -- broonie]
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Fix a recent compilation breakage, caused by a change in SH clock API.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
When we instantiate an aux_dev we use a fake rtd as part of the process
which doesn't have a dai_link associated with it. Fix the dpcm startup
code to cope with this.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
None of the machines uses the gain ramp possibility for HS/HF.
This code path is mostly unused and it does not reduces the pop
noise on the output (it alters it to sound a bit different).
The preferred method to reduce pop noise is to use ABE.
Remove the gain ramp, and related features form the driver.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Allocating the SSP DMA parameters in startup, freeing it in
shutdown instead of freeing and re-allocating it in hw_params.
After doing that, the logic is clear and more safe.
Signed-off-by: guoyh <guoyh@marvell.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
As good as nothing exciting here; just a few trivial fixes for
various ASoC stuff.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
iQIcBAABAgAGBQJPpRa+AAoJEGwxgFQ9KSmkM4sP/jsd/scLYP3T1tu1pqiU6zyZ
qNDu8ghU3AVuGe3qxAVb8AjrXALyqkqg1GXHY66R+Q/BmgtjOfTNyNV+ypGRuGif
TJcLqWim0CVASZRFGkg/C9fEmeN5CDKcmZF7B53nAL2PRzm2/OrNhVBBKFc9bcbI
S73pRGg+MoHbA3OrroZnBIA4dyG3+K+p2h9VlXUj1gdxu5+uzoiZwSbu/nGdLi/W
5CCw9VceFi7sRkjBHuFL9grCgGASP5T89O6+lUH79JVnFdLXV63zpQt+zc6JUM8e
mvosfcJZ6uln6aG+ACA0xgEwExImLLXiPl0BScIJo+HmwGoCbPIS06lBmjLBac1p
78CYNYfhV3AzWCKbmMZXMEiu3g1O33N9UuOxKvnH02TH5b8B6OUdTFkf6JUA32Zw
wtCe4yT48zJ+Iu5+YU/7dvDrtUdMVQ7ogSUyMnKFee+uh5a5I5r1T7ybJ8igF/qe
2YqhpeUW4AEFA9VlPxVP4itVVQK8V0GL1+N0ny5COoT8ldImqqjCCpCJRdljCHDr
xTK5n0FVZBP0hh2MwJZDNOwtNV2fKrA3vPJYjFhNfhzj+Sha9rxDXg4KnW5PA2P2
H6I88vETSsrer5JlOzGp7myzdzrqb5gpMKTuWKpjxbCl3aihN16NiKQa8NzizSzg
ZQldGV1KrK6GNFOkoSeQ
=ZPkR
-----END PGP SIGNATURE-----
Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound sound fixes from Takashi Iwai:
"As good as nothing exciting here; just a few trivial fixes for various
ASoC stuff."
* tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ASoC: omap-pcm: Free dma buffers in case of error.
ASoC: s3c2412-i2s: Fix dai registration
ASoC: wm8350: Don't use locally allocated codec struct
ASoC: tlv312aic23: unbreak resume
ASoC: bf5xx-ssm2602: Set DAI format
ASoC: core: check of_property_count_strings failure
ASoC: dt: sgtl5000.txt: Add description for 'reg' field
ASoC: wm_hubs: Make sure we don't disable differential line outputs
Signed-off-by: Oleg Matcovschi <oleg.matcovschi@ti.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
This patch improves playback quality for few sample rates like 8000 and
11025 Hz.
This also fixes an issue observed during testing of pll slave mode. Due
to the issue, on some rare occasions there was no sound output for first
time playback after system boot, though all subsequent playbacks were
fine. It was mainly because of the sequence in which SRM bit was
enabled.
Signed-off-by: Ashish Chavan <ashish.chavan@kpitcummins.com>
Signed-off-by: David Dajun Chen <dchen@diasemi.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Rather than invalidating the cached DCS value every time the headphone
gain changes store multiple values, indexed by gain. This allows the
optimisation we get from the cache to take effect more often.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This binding doesn't include the nvidia,model or nvidia,audio-routing
properties the other Tegra audio DT bindings have, because this binding
is targetted at a single machine, rather than for any machine using the
tlv320aic23 codec.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
As s3c2412-i2s is using the s3c_i2sv2 it should call the more specialised
s3c_i2sv2_register_dai instead of simply calling snd_soc_register_dai.
Without this call the snd_soc_dai_ops structure isn't initialised correctly.
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This is now very standard behaviour for CODECs so shouldn't be device
specific and we shouldn't really be trying to peer into the register
cache from atomic context anyway.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
In the conversion to module_init_i2c() the original open coded module
exit function was left. Remove it.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This patch adds support for Cirrus Logic CS42L52 Low Power Stereo Codec
Signed-off-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Georgi Vlaev <joe@nucleusys.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
The core allocates the live copies, we shouldn't try to duplicate it and
were buggy trying to do so as we were using uninitialised data for the
control data.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
We should check dailess before dereferencing.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* commit f9dfbf9 "ASoC: tlv320aic23: convert to soc-cache" leads to
a bug preventing resumeof the codec as regmap expects a 9 bits data
register but 0xFFFF is passed in tlv320aic23_set_bias_level and this
values gets cached preventing any write to the TLV320AIC23_PWR
register as the final value produced by regmap is (register << 9) | value
* this patch solves the problem by only working on the 9 bits the
register contains.
Signed-off-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
It tries to clk_get the clock. And if it failed, it assumes the clock
by default enabled.
Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Class W can be used for any path where only data from the DAC is routed
to the headphones. Currently we only enable it when the direct DAC to
headphone path is used but it can also be enabled for paths that go via
the output mixer providing the DAC is the only input to the output mixer.
Implement support for this, including updates to the class W status when
the output mixer configuration is changed. This also allows us to enable
the DC servo optimisations for DAC to headphone paths where the output
mixer is used.
In general the direct DAC path is still preferred as this will offer
better performance on most wm_hubs devices but these additional paths
can simplify use case management.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Since the analogue portions of the checks for class W are the same over
all the devices factor out these checks into wm_hubs and while we're at
it also use wm_hubs_dac_hp_direct() to enable class W optimisations on
more paths.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
The optimisations which we can do with caching the headphone DCS result in
wm_hubs have only been enabled in cases where class W is enabled. However,
there are more use cases which can benefit from the cache, especially with
WM8994 series devices with their more advanced digital routing.
Rather than keying off the class W information from the CODECs have a
check in wm_hubs for a suitable path and use that to determine if we can
deploy our headphone optimisations.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Remove writable debugFS permission, use simple_open() and
fix indentation.
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This patch fixes a bug discovered during testing of non pll slave mode.
Due to the bug chip was not getting correctly configured and as a result
there was no sound output while playback. After applying this patch,
both pll and non pll modes work fine.
Signed-off-by: Ashish Chavan <ashish.chavan@kpitcummins.com>
Signed-off-by: David Dajun Chen <dchen@diasemi.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Reduce our stack consumption by moving the params off the stack, they
are reasonably large and might be an issue on platforms with small stacks.
Reported-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Ackeded-by: Liam Girdwood <lrg@ti.com>
A workaround for an ASUS laptop and a few ASoC changes;
most of the commits are tagged for stable, too.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
iQIcBAABAgAGBQJPmUKpAAoJEGwxgFQ9KSmk3eIP/iGu1az70dixqEjfOifTcJcv
V3VS5HIko0n3+iAkBQr+lo7RLnMQsqy5DQzv6h8FVzuyYgYVvT2eKLPEUh1p+LNw
tZaosfrrnvGhthF5uDVKUeDe69wujfW68gLJJdp+dnUU28RG/cCuUu4+ae2nCBE+
Glus4Zn5wC06P2Uuv67AHYiraCahiuwbrrXAYa0X8glEE7Vpg5t09d3l/KHBIbFH
g46UF5D7LYoMHEThgeyYgq8lEK2THUJlLl887dZTjSqS9ps52cOyRlQmljRvvDXw
BNdOSSu0YqRBX0ja7kIkadCVfZpQEyqfW6ISETozchPYogO9SHXz0plEB/OXWB+q
dUwJGRdoWeJtW/jyd4RHIJlxYektY1ygUsrCeKdIM3lO3M8RnwMosUcy0rW9yKsA
C8BIJz6KdEsiOHpTvvadln5MoarvoPIQXdw8yahJnisd5Kbrx1bQX8PPLhOatRpF
U125ywvif5miV66+0ocnTB2eNJTy4zyokpR6JAQ1z9I+IZOF4mwH+OgLEGlTm28k
Dn/UCxYhEGvLH0vrtU/WiPXE42Jw1ZeRRn56ErWPWOpRBzaJjK4hRu9zFK3cL9xh
bBfP4hsMq2X8lW5nIFz5FLeocnIaMe0CCyNH9X+EoH+BS9HVx274a63t0te8fKtV
E457r7iBnssONY4WIG2l
=KjOE
-----END PGP SIGNATURE-----
Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"A workaround for an ASUS laptop and a few ASoC changes; most of the
commits are tagged for stable, too."
* tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ASoC: wm8994: Improve sequencing of AIF channel enables
ALSA: HDA: Add external mic quirk for Asus Zenbook UX31E
ASoC: fsi: update for dmaengine prep_slave_sg fallout.
ASoC: core: Fix card RTD count for deferred probe.
ASoC: cs42l73: don't use negative array index
ASoC: dapm: Ensure power gets managed for line widgets
If a driver using a custom mic detection callback has provided a table
of mic detection rates via platform data then use it.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Use a slightly larger debounce when identifying accessory type and a
slightly smaller one when detecting buttons in response to user feedback
from large scale testing.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>