GitHub/LineageOS/G12/android_kernel_amlogic_linux-4.9.git
10 years agoMerge remote-tracking branches 'asoc/fix/pxa' and 'asoc/fix/tlv320aic3x' into asoc...
Mark Brown [Tue, 3 Jun 2014 09:39:38 +0000 (10:39 +0100)]
Merge remote-tracking branches 'asoc/fix/pxa' and 'asoc/fix/tlv320aic3x' into asoc-linus

10 years agoASoC: tlv320aci3x: Fix custom snd_soc_dapm_put_volsw_aic3x() function
Peter Ujfalusi [Fri, 30 May 2014 13:47:41 +0000 (16:47 +0300)]
ASoC: tlv320aci3x: Fix custom snd_soc_dapm_put_volsw_aic3x() function

For some unknown reason the parameters for snd_soc_test_bits() were in wrong
order:
It was:
snd_soc_test_bits(codec, val, mask, reg); /* WRONG!!! */
while it should be:
snd_soc_test_bits(codec, reg, mask, val);

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
10 years agoASoC: pxa: pxa-ssp: Terminate of match table
Stephen Boyd [Sat, 24 May 2014 00:16:49 +0000 (17:16 -0700)]
ASoC: pxa: pxa-ssp: Terminate of match table

Failure to terminate this match table can lead to boot failures
depending on where the compiler places the match table.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Acked-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoMerge remote-tracking branches 'asoc/topic/ux500', 'asoc/topic/wm8731', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:24:04 +0000 (00:24 +0100)]
Merge remote-tracking branches 'asoc/topic/ux500', 'asoc/topic/wm8731', 'asoc/topic/wm8804', 'asoc/topic/wm8955' and 'asoc/topic/wm8985' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/rt5651', 'asoc/topic/samsung', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:24:00 +0000 (00:24 +0100)]
Merge remote-tracking branches 'asoc/topic/rt5651', 'asoc/topic/samsung', 'asoc/topic/sgtl5000', 'asoc/topic/sh', 'asoc/topic/simple', 'asoc/topic/sirf', 'asoc/topic/sta350' and 'asoc/topic/tlv320dac33' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/nuc900', 'asoc/topic/omap', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:23:57 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/nuc900', 'asoc/topic/omap', 'asoc/topic/pxa', 'asoc/topic/rcar', 'asoc/topic/rt5640' and 'asoc/topic/rt5645' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/headers', 'asoc/topic/intel', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:23:54 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/headers', 'asoc/topic/intel', 'asoc/topic/jz4740', 'asoc/topic/max98090', 'asoc/topic/max98095', 'asoc/topic/mc13783' and 'asoc/topic/multicodec' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/devm', 'asoc/topic/fsl', 'asoc/topic/fsl...
Mark Brown [Wed, 21 May 2014 23:23:51 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/devm', 'asoc/topic/fsl', 'asoc/topic/fsl-esai', 'asoc/topic/fsl-sai', 'asoc/topic/fsl-spdif' and 'asoc/topic/fsl-ssi' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/cs42l56', 'asoc/topic/cs42xx8' and 'asoc...
Mark Brown [Wed, 21 May 2014 23:23:49 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/cs42l56', 'asoc/topic/cs42xx8' and 'asoc/topic/davinci' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/ad1980', 'asoc/topic/adsp', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:23:45 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/ad1980', 'asoc/topic/adsp', 'asoc/topic/ak4104', 'asoc/topic/ak4642', 'asoc/topic/alc5623', 'asoc/topic/arizona', 'asoc/topic/atmel' and 'asoc/topic/cache' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/pcm512x' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:45 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/pcm512x' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/pcm' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:44 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/pcm' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/enum' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:44 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/enum' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/dt' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:43 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/dt' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/dapm-init' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:42 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/dapm-init' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/dapm' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:42 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/dapm' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/core' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:41 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/core' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/component' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:41 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/component' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/fix/max98090' into asoc-linus
Mark Brown [Wed, 21 May 2014 23:23:37 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/fix/max98090' into asoc-linus

10 years agoMerge tag 'asoc-v3.15-rc5-intel' into asoc-linus
Mark Brown [Wed, 21 May 2014 23:23:36 +0000 (00:23 +0100)]
Merge tag 'asoc-v3.15-rc5-intel' into asoc-linus

ASoC: Intel fixes for v3.15

This is a relatively large batch of fixes for the newly added
Haswell/Baytrail drivers from Intel.  It's a bit larger than is good for
this point in the cycle but it's all for a newly added driver so not so
worrying as it might otherwise be.  Some of it's integration problems,
some of it's the sort of problem usually turned up in stress tests.

# gpg: Signature made Wed 14 May 2014 12:40:27 BST using RSA key ID 7EA229BD
# gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>"
# gpg:                 aka "Mark Brown <broonie@debian.org>"
# gpg:                 aka "Mark Brown <broonie@kernel.org>"
# gpg:                 aka "Mark Brown <broonie@tardis.ed.ac.uk>"
# gpg:                 aka "Mark Brown <broonie@linaro.org>"
# gpg:                 aka "Mark Brown <Mark.Brown@linaro.org>"

10 years agoMerge tag 'asoc-v3.15-rc5-drivers' into asoc-linus
Mark Brown [Wed, 21 May 2014 23:23:31 +0000 (00:23 +0100)]
Merge tag 'asoc-v3.15-rc5-drivers' into asoc-linus

ASoC: Driver fixes for v3.15

A small set of driver fixes, nothing remarkable in itself or of any
relevance outside of the driver.

# gpg: Signature made Wed 14 May 2014 12:49:57 BST using RSA key ID 7EA229BD
# gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>"
# gpg:                 aka "Mark Brown <broonie@debian.org>"
# gpg:                 aka "Mark Brown <broonie@kernel.org>"
# gpg:                 aka "Mark Brown <broonie@tardis.ed.ac.uk>"
# gpg:                 aka "Mark Brown <broonie@linaro.org>"
# gpg:                 aka "Mark Brown <Mark.Brown@linaro.org>"

10 years agoMerge tag 'asoc-v3.15-rc5-core' into asoc-linus
Mark Brown [Wed, 21 May 2014 23:23:30 +0000 (00:23 +0100)]
Merge tag 'asoc-v3.15-rc5-core' into asoc-linus

ASoC: Core fixes for v3.15

A few things here:

 - Fix the creation of spurious CODEC<->CODEC links which caused DAPM to
   have audio paths which shouldn't be present causing spurious powerups
   and potential audible issues for users.
 - Ensure the suspend->off transition doesn't have spurious transitions
   to prepare added to the sequence.
 - Fix incorrect skipping of PCM suspension for active audio streams.
 - Remove Timur Tabi from the CS4270 maintainers, Cirrus are now doing
   this and Timur no longer has the boards that he was using.

# gpg: Signature made Wed 14 May 2014 12:59:19 BST using RSA key ID 7EA229BD
# gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>"
# gpg:                 aka "Mark Brown <broonie@debian.org>"
# gpg:                 aka "Mark Brown <broonie@kernel.org>"
# gpg:                 aka "Mark Brown <broonie@tardis.ed.ac.uk>"
# gpg:                 aka "Mark Brown <broonie@linaro.org>"
# gpg:                 aka "Mark Brown <Mark.Brown@linaro.org>"

10 years agoASoC: samsung: Add devm_clk_get to pcm.c
Tushar Behera [Wed, 21 May 2014 03:22:20 +0000 (08:52 +0530)]
ASoC: samsung: Add devm_clk_get to pcm.c

clk_get in probe function can be safely replaced with devm_clk_get.

Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: samsung: Use devm_snd_soc_register_component
Tushar Behera [Wed, 21 May 2014 03:22:19 +0000 (08:52 +0530)]
ASoC: samsung: Use devm_snd_soc_register_component

Replaced snd_soc_register_component with its devres equivalent,
devm_snd_soc_register_component.

Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: samsung: Use devm_snd_soc_register_platform
Tushar Behera [Wed, 21 May 2014 03:22:18 +0000 (08:52 +0530)]
ASoC: samsung: Use devm_snd_soc_register_platform

Replaced snd_soc_register_platform with devm_snd_soc_register_platform
in samsung_asoc_dma_platform_register(). This makes the function
samsung_asoc_dma_platform_unregister() redundant. This is removed and
all its users are updated.

Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: samsung: Use devm_snd_soc_register_card
Tushar Behera [Wed, 21 May 2014 03:22:17 +0000 (08:52 +0530)]
ASoC: samsung: Use devm_snd_soc_register_card

Replace snd_soc_register_card with devm_snd_soc_register_card.
With this change, we can delete the empty remove functions.

Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: neo1973_wm8753: Automatically disconnected non-connected pins
Lars-Peter Clausen [Tue, 20 May 2014 09:13:28 +0000 (11:13 +0200)]
ASoC: neo1973_wm8753: Automatically disconnected non-connected pins

The DAPM routes for this board are complete, hence we can let the core take care
of disconnecting non-connected pins rather than doing it manually.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: samsung: Allow setting OP_CLK of the IIS Multi Audio Interface
Sylwester Nawrocki [Mon, 19 May 2014 17:30:38 +0000 (19:30 +0200)]
ASoC: samsung: Allow setting OP_CLK of the IIS Multi Audio Interface

This patch adds support for setting source clock of the "Core CLK"
of the IIS Multi Audio Interface.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: pxa: remove mach header dependency
Arnd Bergmann [Sun, 4 May 2014 03:25:21 +0000 (11:25 +0800)]
ASoC: pxa: remove mach header dependency

As we are moving the mmp platform towards multiplatform support,
we have to stop including platform header files.

This changes the pxa-ssp sound driver file to no longer depend
on mach/hardware.h and mach/dma.h. The code using the definitions
from those headers is actually gone already, the only thing
that was still being used was the pxa_dma_desc typedef, which
we can easily work around by using the normal 'struct pxa_dma_desc'
name.

The pxa2xx-dma driver still uses this header, so we include it
explicitly there, which is ok because that is only used on pxa,
not on mmp.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Xia Kaixu <kaixu.xia@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: alc5623: Add device tree binding
Andrew Lunn [Sat, 3 May 2014 18:30:11 +0000 (20:30 +0200)]
ASoC: alc5623: Add device tree binding

Let the ALC5623 codec be instantiated from DT. Add a simple binding
for the additional control register and the jack detect register.

Also, add a prompt to the Kconfig entry for this CODEC, so that it can
be selected. Since kirkwood-t5325.c will no longer be used, we need to
be able to enable the CODEC in the mvebu_v5_defconfig etc.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Move fsl_ssi_set_dai_sysclk above fsl_ssi_hw_params
Sascha Hauer [Mon, 28 Apr 2014 10:54:52 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Move fsl_ssi_set_dai_sysclk above fsl_ssi_hw_params

fsl_ssi_set_dai_sysclk will be called from fsl_ssi_hw_params in the
next patch. Move up to avoid forward declaration and to keep the next patch
more readable. No functional change.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Transmit enable synchronization
Markus Pargmann [Mon, 28 Apr 2014 10:54:51 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Transmit enable synchronization

When the fsl-ssi unit is used in i2s slave mode, it is possible that the
SSI unit starts transmitting data on the wrong channel. This happens
because the SSI does not synchronize with the left-right-clock by
default.

This patch enables transmit enable synchronization.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Remove unnecessary variables from ssi_private
Markus Pargmann [Mon, 28 Apr 2014 10:54:48 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Remove unnecessary variables from ssi_private

There are some variables defined in struct fsl_ssi_private that describe
states that are also described by other variables.

This patch adds some helper functions that return exactly the same
information based on available variables. This helps to clean up struct
fsl_ssi_private and remove them from the probe function.

It also removes some not really used variables (new_binding, name).

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Cleanup probe function
Markus Pargmann [Mon, 28 Apr 2014 10:54:47 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Cleanup probe function

Reorder the probe function to be able to move the second imx-specific
block to the seperate imx probe function. The patch also removes some
comments/variables/code that are not used anymore or could be simply
replaced by other variables.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Remove useless DMA code
Markus Pargmann [Mon, 28 Apr 2014 10:54:46 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Remove useless DMA code

Simplify dma DT property handling. fsl,ssi-dma-events is not used
anymore. It passes invalid data to imx_pcm_dma_params_init_data() which
copies some data into an imx dma struct. This struct is never used in
imx-dma or imx-sdma because of generic OF DMA handling. The
"fsl,ssi-dma-events" is not used anywhere in dts files.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Move imx-specific probe to seperate function
Markus Pargmann [Mon, 28 Apr 2014 10:54:45 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Move imx-specific probe to seperate function

Move imx specific probe code to a seperate function. It reduces the
size of the probe() function and makes the code and error handling
easier to understand.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Use dev_name for DAI driver struct
Markus Pargmann [Mon, 28 Apr 2014 10:54:44 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Use dev_name for DAI driver struct

Instead of creating a name using string manipulation functions, we can
simply use the device name for the DAI driver struct.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Move debugging to seperate file
Markus Pargmann [Mon, 28 Apr 2014 10:54:43 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Move debugging to seperate file

Move all code that is only used for debugging to a seperate file. This
makes it easier to see what functions are used for debugging only.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Fix register values when disabling
Markus Pargmann [Mon, 28 Apr 2014 10:54:42 +0000 (12:54 +0200)]
ASoC: fsl-ssi: Fix register values when disabling

The bits we have to clear when disabling are different when the other
stream is still active.

This patch fixes the calculation of new register values after disabling
one stream. It also adds a more detailed description of the new register
value calculation.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Tested-By: Michael Grzeschik <mgr@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: mop500_ab8500: Replace instances of rtd->codec->card with rtd->card
Lars-Peter Clausen [Mon, 19 May 2014 09:41:48 +0000 (11:41 +0200)]
ASoC: mop500_ab8500: Replace instances of rtd->codec->card with rtd->card

No need to go via the CODEC to get a pointer to the card. This will help to
eventually remove the card field from the snd_soc_codec struct.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: omap: Replace instances of rtd->codec->card with rtd->card
Lars-Peter Clausen [Mon, 19 May 2014 09:41:46 +0000 (11:41 +0200)]
ASoC: omap: Replace instances of rtd->codec->card with rtd->card

No need to go via the CODEC to get a pointer to the card. This will help to
eventually remove the card field from the snd_soc_codec struct.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: ad1980: Replace goto loop with do-while loop
Lars-Peter Clausen [Tue, 20 May 2014 12:23:10 +0000 (14:23 +0200)]
ASoC: ad1980: Replace goto loop with do-while loop

Using a proper do-while loop here instead of a open-coded goto loop is both
cleaner and shorter.

Also fixes the following warnings from smatch:
sound/soc/codecs/ad1980.c:213 ad1980_reset() info: loop could be replaced with if statement.
sound/soc/codecs/ad1980.c:212 ad1980_reset() info: ignoring unreachable code.
sound/soc/codecs/ad1980.c:215 ad1980_reset() info: ignoring unreachable code.

While we are at it also change retry_cnt to unsigned int, using u16 for a
on-stack loop counter doesn't make that much sense.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Fix pcm stream context restore crash
Kevin Strasser [Mon, 19 May 2014 08:14:23 +0000 (11:14 +0300)]
ASoC: Intel: Fix pcm stream context restore crash

In some cases the pcm stream is closed while context has been
scheduled to be restored, causing a null pointer deref panic.
Cancel work to ensure stream does not get freed while work is
still active/pending.

Also, restoring the pcm context can be safely skipped after the
stream has been stopped. Check if pcm stream is still running
before restoring stream context to help pending work finish
more quickly in stream close path.

Signed-off-by: Kevin Strasser <kevin.strasser@intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rt5645: Fix updating wrong register for T5645_AIF2 case
Axel Lin [Sat, 17 May 2014 11:17:32 +0000 (19:17 +0800)]
ASoC: rt5645: Fix updating wrong register for T5645_AIF2 case

This looks like a copy-paste bug, fix it.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Tested-by: Oder Chiou <oder_chiou@realtek.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Remove needless snd_soc_dapm_enable_pin() from machine driver inits
Jarkko Nikula [Mon, 19 May 2014 13:17:27 +0000 (16:17 +0300)]
ASoC: Remove needless snd_soc_dapm_enable_pin() from machine driver inits

ALSA SoC core marks widgets as connected by default when they are
initialized in snd_soc_dapm_new_control() so there is no need to call
snd_soc_dapm_enable_pin() from machine driver init functions.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Remove needless snd_soc_dapm_sync() from machine driver inits
Jarkko Nikula [Mon, 19 May 2014 13:17:26 +0000 (16:17 +0300)]
ASoC: Remove needless snd_soc_dapm_sync() from machine driver inits

ALSA SoC core takes care of calling snd_soc_dapm_sync() at the end
snd_soc_instantiate_card() so there is no need to call it from machine
driver init functions.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rt5651: Do not use rtd->codec
Lars-Peter Clausen [Mon, 19 May 2014 06:03:04 +0000 (08:03 +0200)]
ASoC: rt5651: Do not use rtd->codec

rtd->codec does not necessarily point to the CODEC instance for which the
callback was called (e.g. for CODEC<->CODEC or multi-CODEC links). Use
dai->codec instead.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: cs42xx8: Do not use rtd->codec
Lars-Peter Clausen [Mon, 19 May 2014 06:03:03 +0000 (08:03 +0200)]
ASoC: cs42xx8: Do not use rtd->codec

rtd->codec does not necessarily point to the CODEC instance for which the
callback was called (e.g. for CODEC<->CODEC or multi-CODEC links). Use
dai->codec instead.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98090: Move microphone bias voltage setting to probe function
Jarkko Nikula [Fri, 16 May 2014 13:55:24 +0000 (16:55 +0300)]
ASoC: max98090: Move microphone bias voltage setting to probe function

Microphone bias level configuration register can configure voltage between
2.2 V and 2.8 V but doesn't manage is voltage on or off. Microphone bias
on/off state is controlled by "MICBIAS" DAPM widget.

Therefore there is no need to update bias voltage conditionally depending on
jack state each time when codec goes to SND_SOC_BIAS_ON state and setting
can be moved to max98090_probe() as driver currently doesn't support other
levels than 2.8 V.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98090: Make sure we configure BCLK in one place
Liam Girdwood [Fri, 16 May 2014 13:55:23 +0000 (16:55 +0300)]
ASoC: max98090: Make sure we configure BCLK in one place

BCL is being configured in two places producing a warning message.
Make sure we only configure BCLK once and when we are master.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98090: Add ACPI probing support
Jarkko Nikula [Fri, 16 May 2014 13:55:25 +0000 (16:55 +0300)]
ASoC: max98090: Add ACPI probing support

Add ACPI ID for MAX98090 and ACPI 5 I2C device probing support.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98090: Mark cache as dirty prior to restoring
Liam Girdwood [Fri, 16 May 2014 13:55:22 +0000 (16:55 +0300)]
ASoC: max98090: Mark cache as dirty prior to restoring

Make sure the cache is fully flushed at resume time.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98090: Reset codec on resume
Liam Girdwood [Fri, 16 May 2014 13:55:21 +0000 (16:55 +0300)]
ASoC: max98090: Reset codec on resume

Make sure we reset codec and clear any IRQs on resume. This matches
the init sequence in probe.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98090: Fix reset at resume time
Liam Girdwood [Fri, 16 May 2014 13:55:20 +0000 (16:55 +0300)]
ASoC: max98090: Fix reset at resume time

Reset needs to wait 20ms before other codec IO is performed. This wait
was not being performed. Fix this by making sure the reset register is not
restored with the cache, but use the manual reset method in resume with
the wait.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
10 years agoASoC: max98090: Fix digital sidetone gain TLV
Liam Girdwood [Fri, 16 May 2014 13:55:19 +0000 (16:55 +0300)]
ASoC: max98090: Fix digital sidetone gain TLV

TLV for digital sidetone volume is wrong, this fix matches it to the
datasheet.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: remove codec memeber from codec structs
Vinod Koul [Thu, 15 May 2014 16:08:17 +0000 (21:38 +0530)]
ASoC: Intel: remove codec memeber from codec structs

As we already have a memeber struct snd_sst_params.codec to fill this.
so removing duplicate instance

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: add drain_notify support
Vinod Koul [Thu, 15 May 2014 16:08:16 +0000 (21:38 +0530)]
ASoC: Intel: add drain_notify support

This patch adds the support to implement drain_notify in Intels mfld driver

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Revert "rename pcm dias to media dai"
Vinod Koul [Thu, 15 May 2014 16:08:15 +0000 (21:38 +0530)]
ASoC: Intel: Revert "rename pcm dias to media dai"

This reverts commit 0cac6fc3eb5218fe40d1c2910abc643ab21d9f19.
This comiit was dropped from rev2 and would not be required as it renames the
platform ops as well which is not required.

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Fix simultaneous Baytrail SST capture and playback
Jarkko Nikula [Thu, 15 May 2014 11:41:48 +0000 (14:41 +0300)]
ASoC: Intel: Fix simultaneous Baytrail SST capture and playback

I managed to drop a change to stream ID setting from commit 49fee1781634
("ASoC: Intel: Only export one Baytrail DAI") leading to non-working
simultaneous capture-playback since after one DAI conversion
rtd->cpu_dai->id + 1 will be the same for both playback and capture.

Use substream->stream + 1 like it was in original Liam's patch.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rsnd: Fix warnings due to improper printk formats
Laurent Pinchart [Mon, 12 May 2014 23:10:20 +0000 (01:10 +0200)]
ASoC: rsnd: Fix warnings due to improper printk formats

Use the %pap printk specifier to print resource_size_t variables. This
fixes warnings on platforms where resource_size_t has a different size
than int.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Only export one Baytrail DAI
Liam Girdwood [Wed, 14 May 2014 14:20:54 +0000 (17:20 +0300)]
ASoC: Intel: Only export one Baytrail DAI

We don't need more than one DAI for Baytrail SST. Usage becomes also more
straightforward by grouping playback and capture streams under the same PCM
device.

[Jarkko: I made Liam's sst-baytrail-pcm.c change a few lines smaller and
squashed together with my byt-rt5640.c change]

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Make Baytrail PCM data per stream rather than per DAI device
Liam Girdwood [Wed, 14 May 2014 14:20:53 +0000 (17:20 +0300)]
ASoC: Intel: Make Baytrail PCM data per stream rather than per DAI device

Prepare for single Baytrail DAI playback/capture link by accessing PCM data
using stream ID instead of rtd->dev. Now rtd->dev is unique for playback
and capture since they are exported as separate DAIs but not once converted
to single DAI.

[Jarkko: Separated from another commit with updated commit log]

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: compress: indent an if statement
Dan Carpenter [Wed, 14 May 2014 14:23:08 +0000 (17:23 +0300)]
ASoC: compress: indent an if statement

The return statement was not indented correctly.  I lined up the
condition a bit as well.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoMerge remote-tracking branch 'asoc/fix/pcm' into asoc-linus
Mark Brown [Wed, 14 May 2014 11:52:41 +0000 (12:52 +0100)]
Merge remote-tracking branch 'asoc/fix/pcm' into asoc-linus

10 years agoMerge remote-tracking branch 'asoc/fix/dapm' into asoc-linus
Mark Brown [Wed, 14 May 2014 11:52:32 +0000 (12:52 +0100)]
Merge remote-tracking branch 'asoc/fix/dapm' into asoc-linus

10 years agoMerge remote-tracking branches 'asoc/fix/audmux', 'asoc/fix/cs42l52', 'asoc/fix/fsl...
Mark Brown [Wed, 14 May 2014 11:49:10 +0000 (12:49 +0100)]
Merge remote-tracking branches 'asoc/fix/audmux', 'asoc/fix/cs42l52', 'asoc/fix/fsl-esai', 'asoc/fix/fsl-spdif', 'asoc/fix/rcar', 'asoc/fix/tlv320aic31xx' and 'asoc/fix/wm8962' into asoc-linus

10 years agoASoC: samsung: Add missing pm ops for Snow sound card driver
Tushar Behera [Wed, 14 May 2014 03:19:06 +0000 (08:49 +0530)]
ASoC: samsung: Add missing pm ops for Snow sound card driver

Adding missing pm ops so that audio playback works across
suspend and resume cycle.

Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: ak4642: Add support for extended sysclk frequencies of the ak4648
Sascha Hauer [Wed, 14 May 2014 07:37:36 +0000 (09:37 +0200)]
ASoC: ak4642: Add support for extended sysclk frequencies of the ak4648

Additionally to the ak4642 pll frequencies the ak4648 also supports 13MHz,
19.2MHz and 26MHz. This adds support for these frequencies.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: ak4642: Add driver data and driver private struct
Sascha Hauer [Wed, 14 May 2014 07:37:35 +0000 (09:37 +0200)]
ASoC: ak4642: Add driver data and driver private struct

Currently unused, this is done to let the driver distinguish between
the different supported codec types in later patches.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: ak4642: Add ALC controls
Sascha Hauer [Wed, 14 May 2014 07:37:34 +0000 (09:37 +0200)]
ASoC: ak4642: Add ALC controls

ALC and ALC Zero crossing detection has been enabled unconditionally.
Add controls for this.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: ak4642: Fix typo zoro -> zero
Sascha Hauer [Wed, 14 May 2014 07:37:33 +0000 (09:37 +0200)]
ASoC: ak4642: Fix typo zoro -> zero

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rsnd: add DVC support
Kuninori Morimoto [Fri, 9 May 2014 00:44:49 +0000 (17:44 -0700)]
ASoC: rsnd: add DVC support

This patch adds DVC (Digital Volume Controller)
support which is member of CMD unit.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rsnd: enable to use multi parameter on rsnd_dai_call/rsnd_mod_call
Kuninori Morimoto [Fri, 9 May 2014 00:44:41 +0000 (17:44 -0700)]
ASoC: rsnd: enable to use multi parameter on rsnd_dai_call/rsnd_mod_call

rsnd_mod_ops would like to come to use multi parameter.
modify macro to enable it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rsnd: remove duplicate parameter from rsnd_mod_ops
Kuninori Morimoto [Fri, 9 May 2014 00:44:29 +0000 (17:44 -0700)]
ASoC: rsnd: remove duplicate parameter from rsnd_mod_ops

Now, it can get rsnd_dai_stream pointer from rsnd_mod.
Remove duplicate parameter from rsnd_mod_ops

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rsnd: add rsnd_get_adinr()
Kuninori Morimoto [Fri, 9 May 2014 00:44:14 +0000 (17:44 -0700)]
ASoC: rsnd: add rsnd_get_adinr()

SRC module needs ADINR register settings,
but, it has many similar xxx_ADINR register,
and needs same settings.
This patch adds rsnd_get_adinr() to sharing code.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rsnd: add rsnd_path_parse() macro
Kuninori Morimoto [Fri, 9 May 2014 00:43:26 +0000 (17:43 -0700)]
ASoC: rsnd: add rsnd_path_parse() macro

Current R-Car sound supports only SRC/SSI,
but, other module will be supported.
This patch adds rsnd_path_parse() macro to share code

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: wm8962: Update register CLASS_D_CONTROL_1 to be non-volatile
Charles Keepax [Tue, 13 May 2014 12:45:15 +0000 (13:45 +0100)]
ASoC: wm8962: Update register CLASS_D_CONTROL_1 to be non-volatile

The register CLASS_D_CONTROL_1 is marked as volatile because it contains
a bit, DAC_MUTE, which is also mirrored in the ADC_DAC_CONTROL_1
register. This causes problems for the "Speaker Switch" control, which
will report an error if the CODEC is suspended because it relies on a
volatile register.

To resolve this issue mark CLASS_D_CONTROL_1 as non-volatile and
manually keep the register cache in sync by updating both bits when
changing the mute status.

Reported-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
10 years agoMerge branch 'fix/intel' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Mark Brown [Tue, 13 May 2014 17:23:56 +0000 (18:23 +0100)]
Merge branch 'fix/intel' of git://git./linux/kernel/git/broonie/sound into asoc-intel

Conflicts:
sound/soc/intel/sst-baytrail-dsp.c

10 years agoASoC: Intel: Fix Baytrail SST DSP firmware loading
Jarkko Nikula [Tue, 13 May 2014 12:46:06 +0000 (15:46 +0300)]
ASoC: Intel: Fix Baytrail SST DSP firmware loading

Commit 10df350977b1 ("ASoC: Intel: Fix Audio DSP usage when IOMMU is
enabled.") caused following regression in Baytrail SST:

baytrail-pcm-audio baytrail-pcm-audio: error: DMA alloc failed
baytrail-pcm-audio baytrail-pcm-audio: error: failed to load firmware

Fix this by calling dma_coerce_mask_and_coherent() in sst_byt_init() with
the same dma_dev device what is now used in sst_fw_new() when allocating the
DMA buffer.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Use ACPI device for Baytrail PCM buffer allocation
Jarkko Nikula [Fri, 9 May 2014 13:47:44 +0000 (16:47 +0300)]
ASoC: Intel: Use ACPI device for Baytrail PCM buffer allocation

This follows the same idea than commit 10df350977b1
("ASoC: Intel: Fix Audio DSP usage when IOMMU is enabled.") by using only
ACPI device for all DMA allocations. Since DMA masking is already done in
firmware loading it can be removed from here.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl_esai: Bypass divider settings if clock requirement is not changed
Nicolin Chen [Tue, 6 May 2014 08:56:01 +0000 (16:56 +0800)]
ASoC: fsl_esai: Bypass divider settings if clock requirement is not changed

We don't need to change those dividers if bclk and mclk remains the same
directions and values.

Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl_esai: Set PCRC and PRRC registers at the end of hw_params()
Nicolin Chen [Tue, 6 May 2014 08:56:02 +0000 (16:56 +0800)]
ASoC: fsl_esai: Set PCRC and PRRC registers at the end of hw_params()

According to Reference Manual -- ESAI Initialization chapter, as the
standard procedure of ESAI personal reset, the PCRC and PRRC registers
should be remained in its reset value and then configured after T/RCCR
and T/RCR configurations's done but before TE/RE's enabling.

So this patch moves PCRC and PRRC settings to the end of hw_params().

Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl_esai: Only bypass sck_div for EXTAL source
Nicolin Chen [Tue, 6 May 2014 08:56:00 +0000 (16:56 +0800)]
ASoC: fsl_esai: Only bypass sck_div for EXTAL source

ESAI can only output EXTAL clock source directly. But for FSYS clock source,
ESAI can not output it without getting through PSR PM dividers.

So this patch adds an extra check in the code.

Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl_esai: Fix incorrect condition within ratio range check for FP
Nicolin Chen [Tue, 6 May 2014 08:55:59 +0000 (16:55 +0800)]
ASoC: fsl_esai: Fix incorrect condition within ratio range check for FP

The range here from 1 to 16 is confined to FP divider only while the
sck_div indicates if the calculation contains PSR and PM dividers. So
for the case using PSR and PM since the sck_div is true, the range of
ratio would simply become bigger than 16.

So this patch fixes the condition here and adds one line comments to
make the purpose here clear.

Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: rt5640: add default case for unexpected ID
Bard Liao [Tue, 6 May 2014 07:56:06 +0000 (15:56 +0800)]
ASoC: rt5640: add default case for unexpected ID

We may read an unexpected value when detemining which codec is attached.
In that case, either a unsupported codec is attached or something wrong
with I2C. The driver will not work properly on both cases. So we return
an error for that.

Signed-off-by: Bard Liao <bardliao@realtek.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Remove runtime field from DAI
Lars-Peter Clausen [Tue, 6 May 2014 07:39:41 +0000 (09:39 +0200)]
ASoC: Remove runtime field from DAI

This was initially removed in commit 6423c1875 ("ASoC: Remove runtime field from
DAI"), but was, presumably by accident, brought back in commit f0fba2ad1 ("ASoC:
multi-component - ASoC Multi-Component Support"). But has never been
initialized to anything but NULL ever since. This commit removes it again.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: atmel-pcm-pdc: Remove broken suspend/resume code
Lars-Peter Clausen [Tue, 6 May 2014 07:39:40 +0000 (09:39 +0200)]
ASoC: atmel-pcm-pdc: Remove broken suspend/resume code

Suspend/resume support for the atmel-pcm-pdc driver was broken in commit
f0fba2ad1 ("ASoC: multi-component - ASoC Multi-Component Support"). It
essentially reverted the modifications done in commit 10cab262 ("ASoC: Change
how suspend and resume obtain the PCM runtime"). The suspend and resume handlers
at the beginning check if dai->runtime is not NULL, but dai->runtime is always
NULL, hence the code never runs. Considering that nobody noticed any problems in
the last 4 years since the code was broken and that the driver does not set
SNDRV_PCM_INFO_RESUME, which means applications are expected to stop and restart
the audio stream during suspend/resume, it is probably safe to assume that his
code is not needed and can be removed.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: dapm: Fix SUSPEND -> OFF bias sequence
Lars-Peter Clausen [Tue, 6 May 2014 08:32:15 +0000 (10:32 +0200)]
ASoC: dapm: Fix SUSPEND -> OFF bias sequence

Currently when the DAPM context bias level is SUSPEND and the target bias level
is OFF dapm_pre_sequence_async() will first transition to PREPARE and
dapm_post_sequence_async() will then transition back from PREPARE to STANDBY and
then to OFF.

This patch makes sure that dapm_pre_sequence_async() only transitions to PREPARE
when either going to ON or away from ON. This avoids the extra unnecessary
transitions.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Allow byt-5640 machine driver and SST core go to suspend
Jarkko Nikula [Thu, 8 May 2014 13:07:27 +0000 (16:07 +0300)]
ASoC: Intel: Allow byt-5640 machine driver and SST core go to suspend

Since there is no support for compressed audio in Baytrail ADSP firmware
there is no need to leave it on during suspend since ALSA PCM buffers are
too small for leaving ADSP on for playing or recording.

Implement PM callbacks to Baytrail byt-rt5640.c machine driver that call
snd_soc_suspend and snd_soc_resume functions and unset the ignore_suspend
fields in DAI links.

This makes soc-core and ALSA core gracefully suspend and resume active
stream and call sst_byt_pcm_trigger() during suspend-resume cycle.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Add Baytrail suspend/resume support
Liam Girdwood [Thu, 8 May 2014 13:07:26 +0000 (16:07 +0300)]
ASoC: Intel: Add Baytrail suspend/resume support

Add suspend and resume support to Baytrail SST DSP. This is implemented by
unloading firmware modules and putting DSP into reset prior suspend and
restarting DSP again in normal boot state after resume.

Context restore for running streams is implemented by scheduling a work from
sst_byt_pcm_trigger() that will allocate a stream with existing parameters
and start it from last known buffer position before suspend.

[Jarkko: Squashed together 5 WIP patches from Liam and 1 from me]

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Allow Rx/Tx message list can be cleared prior to suspend
Liam Girdwood [Thu, 8 May 2014 13:07:25 +0000 (16:07 +0300)]
ASoC: Intel: Allow Rx/Tx message list can be cleared prior to suspend

Suspend/resume requires reloading FW to boot state so we need to also make
sure that the driver matches the FW state at boot.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Move Baytrail extended fw address saving to sst_byt_boot()
Jarkko Nikula [Thu, 8 May 2014 13:07:24 +0000 (16:07 +0300)]
ASoC: Intel: Move Baytrail extended fw address saving to sst_byt_boot()

We have to save the physical address of extended firmware block in the
beginning of mailbox every time when we boot the DSP firmware since that
mailbox address is re-used after DSP firmware is running. Otherwise DSP
firmware will get bogus extended firmware block address during next DSP
boot.

Currently this is not problem but becomes when DSP runtime rebooting is
implemented. Prepare for that by moving extended firmware address saving
from sst_byt_init() to sst_byt_boot().

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Pass stream start position to sst_byt_stream_start()
Jarkko Nikula [Thu, 8 May 2014 13:07:23 +0000 (16:07 +0300)]
ASoC: Intel: Pass stream start position to sst_byt_stream_start()

Stream start position will be needed in resume code. Prepare for it by
adding start offset argument to sst_byt_stream_start().

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Simplify Baytrail stream control IPC construction
Jarkko Nikula [Thu, 8 May 2014 13:07:22 +0000 (16:07 +0300)]
ASoC: Intel: Simplify Baytrail stream control IPC construction

Baytrail ADSP stream IPC simplifies a little by moving IPC_IA_START_STREAM
construction and sending directly into sst_byt_stream_start() from
sst_byt_stream_operations(). This is because IPC_IA_START_STREAM is only
stream IPC with extra message data so this move saves a few code lines.

Main motivation for this is to prepare for passing stream start position
to sst_byt_stream_start() which will be needed in resume code.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Intel: Sample Baytrail DSP DMA pointer only after each period
Jarkko Nikula [Thu, 8 May 2014 13:07:21 +0000 (16:07 +0300)]
ASoC: Intel: Sample Baytrail DSP DMA pointer only after each period

This is for preparing suspend/resume support but can give also more
safeguard against concurrent timestamp structure access between DSP firmware
and host.

Now DSP DMA pointer is sampled in each pcm pointer callback in
sst_byt_pcm_pointer() but that is unneeded since DSP updates the timestamp
period basis and can potentially be racy if sst_byt_pcm_pointer() is called
when DSP is updating the timestamp.

By taking DSP DMA pointer only after period elapsed IPC messages in
byt_notify_pointer() and returning stored hw pointer in
sst_byt_pcm_pointer() there is less risk for concurrent access.

The same stored hw pointer can be also used in suspend/resume code for
restarting the stream at the same position.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: dapm: Handle SND_SOC_DAPM_REG() generically
Lars-Peter Clausen [Sun, 11 May 2014 17:27:47 +0000 (19:27 +0200)]
ASoC: dapm: Handle SND_SOC_DAPM_REG() generically

Commit commit de9ba98b6d ("ASoC: dapm: Make widget power register settings more
flexible") added generic support for on_val/off_val in the DAPM core. With this
in place there is no need anymore for having a special event callback for
SND_SOC_DAPM_REG() widgets.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: dapm: Simplify snd_soc_dapm_link_dai_widgets()
Lars-Peter Clausen [Wed, 7 May 2014 14:20:28 +0000 (16:20 +0200)]
ASoC: dapm: Simplify snd_soc_dapm_link_dai_widgets()

If we find a widget who's stream name matches the name of a DAI widget then
thats the one it should be connected to. Based on the widget id we can say in
which direction the path should be. No need to go back to the DAI and check the
stream names.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: dapm: Use snd_soc_dapm_add_path() in snd_soc_dapm_new_pcm()
Lars-Peter Clausen [Wed, 7 May 2014 14:20:27 +0000 (16:20 +0200)]
ASoC: dapm: Use snd_soc_dapm_add_path() in snd_soc_dapm_new_pcm()

We already know the widgets we want to connect, so use snd_soc_dapm_add_path()
instead of snd_soc_dapm_add_route() in snd_soc_dapm_new_pcm().

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: dapm: Use snd_soc_dapm_add_path() in connect_dai_link_widgets()
Lars-Peter Clausen [Wed, 7 May 2014 14:20:26 +0000 (16:20 +0200)]
ASoC: dapm: Use snd_soc_dapm_add_path() in connect_dai_link_widgets()

We already know which two widgets should be connected, so use
snd_soc_dapm_add_path() instead of snd_soc_dapm_add_route() in
snd_soc_dapm_connect_dai_link_widgets().

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: dapm: Revert "ASoC: dapm: Fix double prefix addition"
Lars-Peter Clausen [Wed, 7 May 2014 14:20:25 +0000 (16:20 +0200)]
ASoC: dapm: Revert "ASoC: dapm: Fix double prefix addition"

This reverts commit bd23c5b661858446267f4d6b2fb4edd8eb710dda.

The patch claims that the patch is necessary to avoid double prefix addition
when calling snd_soc_dapm_add_route() from snd_soc_dapm_connect_dai_link_widgets().
But snd_soc_dapm_add_route() is called with the card's DAPM context, which does
not have a prefix, which means there is no prefix that could be added a second
time.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>