Commit Graph

2185 Commits

Author SHA1 Message Date
Mark Brown
7711308ae6 ASoC: Implement interrupt based jack detection
Allow microphone detection on WM8962 to be performed using the interrupt
signal, allowing the detection of both microphone presence and button
presses with a signal singal from the CODEC to CPU.  Currently a 250ms
debounce time is applied to both short circuit and presence detection,
this has not been optimised.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-10-02 14:23:26 -07:00
Mark Brown
3367b8d427 ASoC: Add support for WM8962 GPIO outputs
The WM8962 features five GPIOs, add support for controlling their output
state via gpiolib.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-10-02 14:23:04 -07:00
Mark Brown
205d231bfb ASoC: Remove -dai suffix from i.MX SSI driver
While it is a generic serial port in practice the i.MX SSI is only supported
in Linux as an audio port (the i.MX has dedicated SPI controllers and so on).
This means we don't need to disambiguate against other uses of the hardware
and so can drop the -dai suffix from the driver name which fixes merge
issues with the i.MX tree in -next.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-10-01 00:13:28 -07:00
Mark Brown
d330a080a8 ASoC: Relax restrictions on WM8962 BCLK configuration
The restrictions on configuring BCLK are overly cautious, other constraints
in the system should ensure that reconfiguration is not possible when the
device is sufficiently active to be unable to support reclocking.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-30 14:55:28 -07:00
Dimitris Papastamos
33cf45c80f ASoC: WM8804: Initial driver
The WM8804 is a high performance consumer mode S/PDIF transceiver with
support for 1 received channel and 1 transmitted channel.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-30 13:32:21 -07:00
Dimitris Papastamos
6b90b55ccc ASoC: Remove unneeded use of spi_bus_type
No need to explicitly set the bus type, spi_register_driver does
that for us.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-30 13:32:07 -07:00
Mark Brown
a4f28c001d ASoC: Provide microphone bias configuration for WM8962
Add the widget for MICBIAS power control and allow configuration of the
microphone bias setup via the platform data for the WM8962. When
microphone status signals are brought out to GPIO this should be
sufficient to enable microphone detection.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-30 09:36:13 -07:00
Mark Brown
dee0bb9d0f ASoC: Mark WM8962 Additional Control 4 register as volatile
There are some status bits for microphone detection in here.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-30 09:31:42 -07:00
Mark Brown
45e655047f ASoC: Initial WM8962 IRQ support
Provide an initial hookup for interrupts on the WM8962. Currently we simply
report error status via log messages if an IRQ is provided for the device.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-29 00:32:36 -07:00
Mark Brown
ea738bade2 ASoC: Lowercase WM8962 CODEC name
For consistency.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-29 00:31:50 -07:00
Mark Brown
6137112630 ASoC: Fix masking of WM8962 FLL1 register
When configuring the FLL we preserve the FLL enable configuration in order
to allow us to reenable the FLL after configuration but we do not clear
the other bits in the register, causing old configuration to be preserved.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-28 14:10:18 -07:00
Dimitris Papastamos
d1454e6fbd ASoC: WM8985: Use the correct macro for the kcontrol defined
Since we are using custom get/put handlers
use SOC_ENUM_SINGLE_EXT_DECL instead of the original SOC_ENUM_SINGLE_DECL
macro.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-28 14:10:17 -07:00
Takashi Iwai
cf1ff50116 ASoC: Fix a compile warning for printk format
sound/soc/codecs/wm8985.c: In function 'wm8985_hw_params':
  sound/soc/codecs/wm8985.c:731:2: warning: format '%d' expects type 'int', but argument 4 has type 'size_t'

Actually the variable is fine as int.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2010-09-27 08:18:13 +02:00
Dimitris Papastamos
fc38a8a11d ASoC: WM8985: Remove unneeded declaration.
We are not using the private data in this function, so get rid of it.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-24 17:00:37 +01:00
Mark Brown
591796b82a ASoC: Clean up AC'97 glue driver
Remove version number and clean up some indentation.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-24 10:41:27 +01:00
Mark Brown
8d85d7414a ASoC: Add debug logging for s3c-ac97 resets
Helps tracing errors further up the stack.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-24 10:41:02 +01:00
Mark Brown
4a6f998ebb ASoC: Convert s3c-ac97 to pr_() macros
Could use dev_() but we'd have to remember the struct device somewhere
and it wouldn't make the logging clearer.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-24 10:40:33 +01:00
Mark Brown
97daff36f2 ASoC: Clean up the CODEC device as well as the board for SMDK WM9713
Otherwise we try to re-register the CODEC device if the module is reloaded
and sysfs becomes miserable.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-24 10:40:08 +01:00
Mark Brown
9fab963503 ASoC: Clarify naming for SMDK WM9713 driver
At least some of the systems using this device have multiple audio
subsystems so provide some guidance to userspace about which one this
is.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-24 10:39:41 +01:00
Mark Brown
266edab35d ASoC: Remove unneeded WM9713 header include from SMDK WM9713 driver
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-24 10:39:17 +01:00
Dimitris Papastamos
005d65fbac ASoC: Fix incorrect parameter to snd_soc_codec_volatile_register
We need to pass the register index and not the register value.
This patch depends on my previous patch "ASoC: Delegate to hw
specific read for volatile registers".

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-23 19:48:16 +01:00
Dimitris Papastamos
db49c146a8 ASoC: Delegate to hw specific read for volatile registers
Ensure that reads on volatile registers will correctly delegate
to the bus specific read function.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-23 19:48:11 +01:00
Takashi Iwai
3e13f65e3a ASoC: adapt multi-componentism again
Go back to the new world order.

(Also fixed indentation.)

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2010-09-23 07:41:37 +02:00
Takashi Iwai
42c39a6267 Merge branch 'for-2.6.36' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc 2010-09-23 07:31:27 +02:00
Mark Brown
0077ca0b5c ASoC: Fix multi-componentism
Spot the build testing.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-22 18:47:40 +01:00
Dimitris Papastamos
391d8a04fc ASoC: Return -1 instead of -EINVAL to ensure consistency
The code can't really cope with I/O errors, so it would be better
to be consistent throughout all cache functions and return -1 instead
of -EINVAL.

The return value of snd_soc_read(...) is mostly checked in the probe
function and nowhere else.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-22 16:48:50 +01:00
Mark Brown
321de0d05a ASoC: Report error codes for card DAI instantiation failures
Also clean up the error print a bit.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-22 16:40:15 +01:00
Mark Brown
0704129ff4 Merge branch 'for-2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc-2.6 into for-2.6.37 2010-09-22 12:19:07 +01:00
Dimitris Papastamos
d47372e852 ASoC: Fix soc-cache buffer overflow bug
Make sure we stay within the cache boundaries when updating the
register cache.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-22 12:01:05 +01:00
Dimitris Papastamos
fa6d529389 ASoC: Fix soc-cache buffer overflow bug
Make sure we stay within the cache boundaries when updating the
register cache.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-21 18:43:40 +01:00
Jarkko Nikula
0b25ad0571 ASoC: Remove extra rtd->dev.init_name assignment in soc_probe_dai_link
rtd->dev.init_name is set twice in soc_probe_dai_link. I removed the first
assignement from dai_link->stream_name since then there won't be sysfs name
changes and usually dai_link->name seems to fit anyway better for a sysfs
directory name.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-21 18:43:01 +01:00
Mark Brown
13f808cf8d ASoC: Fix merge issue with WM8962 control addition
Let's not add the core controls twice.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-21 10:18:02 +01:00
Mark Brown
082100dc92 ASoC: Report error code when failing to add controls
Helps with diagnostics.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-21 10:18:02 +01:00
Mark Brown
17cc26cd8c ASoC: Prototype s3c64xx_i2s_get_clock()
So machine drivers can see the declaration.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-21 10:18:02 +01:00
Kuninori Morimoto
d8b3353492 ASoC: fsi: merge fsi_data_push/pop to fsi_fifo_data_ctrl
Current FSI driver had data push/pop functions.
But the main operation of these 2 were very similar.
This mean it is possible to merge these to 1 function.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-20 20:45:04 +01:00
Kuninori Morimoto
5bfb9ad084 ASoC: fsi: modify variable name to easy to understand
Current FSI driver is using
data-length / width / number / offset for variables.
But it was a very confusing name.

This patch rename them to easy to understand,
and add new functions for it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-20 20:44:24 +01:00
Mark Brown
5250a5031e ASoC: Fix WM8978/migor driver name conflict
Standardise on 'wm8978' as the name for the CODEC.

Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-20 20:43:12 +01:00
Jarkko Nikula
7d1be0a678 ASoC: tlv320aic3x: Let the codec hit SND_SOC_BIAS_OFF when idle
Now codec hits the SND_SOC_BIAS_OFF also when it is idle. This is also
the default state after probing and codec is left unconfigured and
unpowered by default. Initialization will happen when the bias state changes
and aic3x_set_power does power-up and cache sync.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-20 18:40:47 +01:00
Jarkko Nikula
5a895f8a09 ASoC: tlv320aic3x: Use regulator notifiers for optimizing the cache sync
There is no need to reset the codec and perform cache sync if none of the
supply regulators were not disabled. Patch registers a notifier callback for
each supply and callback then sets a flag to indicate when cache sync is
required.

HW writes are also needless when codec bias is off so cache_only flag is set
independently of actual supply regulators state.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-20 18:40:47 +01:00
Jarkko Nikula
6c1a7d40c2 ASoC: tlv320aic3x: Add runtime regulator control to aic3x_set_bias_level
Now all the regulators are disabled when entering into SND_SOC_BIAS_OFF
and enabled when coming back to SND_SOC_BIAS_STANDBY state. Currently this
runtime control happens only with suspend/resume as this patch does not
change the default idle behavior.

This patch manages all the regulators and reset since it seems that register
sync is needed even if only analog supplies AVDD and DRVDD are disabled.
This was noted when the system was running with idle behavior changed and
IOVDD and DVDD were on.

It is not known are all the registers needed to sync or only some subset of
them. Therefore patch plays safe and does always full shutdown/power-up.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-20 18:40:46 +01:00
Jarkko Nikula
2f24111a08 ASoC: tlv320aic3x: Move regulator management from i2c to soc domain
It will be easier to keep regulator enable/disable calls in sync when dynamic
regulator management is added if regulator management is moved from
aic3x_i2c_probe/_remove to aic3x_probe/_remove.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-20 18:40:46 +01:00
Liam Girdwood
826ca0bd53 Merge remote branch 'asoc/for-2.6.37' into for-2.6.37 2010-09-20 09:53:29 +01:00
Jarkko Nikula
19f7ac5038 ASoC: tlv320aic3x: Add virtual output pin Detection
Purpose of this virtual Detection pin is to keep codec bias on whenever the
GPIO or jack detection features are needed.

Jack detection needs a mic bias so machine drivers can construct a following
route for instance for keeping the path and codec bias on:

"Input Jack" -> "Mic Bias xV" -> "Detection" -> detection block inside codec.

For the GPIO the machine driver can force the pin on with
snd_soc_dapm_force_enable_pin.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-09-20 09:52:39 +01:00
Liam Girdwood
611ad378b3 Merge remote branch 'broonie-asoc/for-2.6.37' into for-2.6.37 2010-09-20 09:49:26 +01:00
Kuninori Morimoto
b9fde18c05 ASoC: fsi: Add fsi_dma_soft_push/pop function
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-19 16:10:56 +01:00
Kuninori Morimoto
c8fe2574cf ASoC: fsi: modify noisy comment out
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-19 16:10:55 +01:00
Kuninori Morimoto
c79eab3ea4 ASoC: fsi: Add fsi_dma_get_area
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-19 16:10:54 +01:00
Guennadi Liakhovetski
c6834dd2d2 ASoC: fix SIU driver breakage, occurred during the multi-component transition
This patch fixes multiple bugs and a typo, occurred during the multi-
component transition.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-19 16:04:35 +01:00
Guennadi Liakhovetski
c54291de43 ASoC: fix compile breakage of the sh/siu driver
The sh/siu ASoC driver doesn't compile because of a function defined static in
the source and extern in a header. Remove the unneeded declaration in the
header.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2010-09-19 16:04:19 +01:00
Mark Brown
382e302002 Merge branch 'for-2.6.36' into for-2.6.37 2010-09-19 16:03:16 +01:00