GitHub/LineageOS/G12/android_kernel_amlogic_linux-4.9.git
10 years agoMerge tag 'asoc-v3.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Takashi Iwai [Thu, 16 Jan 2014 13:54:00 +0000 (14:54 +0100)]
Merge tag 'asoc-v3.14-2' of git://git./linux/kernel/git/broonie/sound into for-next

ASoC: More updates for v3.14

A few more updates for v3.14 since the last set, highlights include:

 - Lots of DMA updates from Lars-Peter
 - Improvements to the constraints handling code from Lars-Peter
 - A very helpful conversion of the TWL4030 driver to regmap from Peter
 - A new driver for the Freescale ESAI controller from Nicolin Chen
 - Conversion of some of the drivers to use params_width()

10 years agoMerge remote-tracking branches 'asoc/topic/adsp', 'asoc/topic/atmel', 'asoc/topic...
Mark Brown [Thu, 16 Jan 2014 12:44:01 +0000 (12:44 +0000)]
Merge remote-tracking branches 'asoc/topic/adsp', 'asoc/topic/atmel', 'asoc/topic/bcm2835', 'asoc/topic/docs', 'asoc/topic/fsl', 'asoc/topic/generic', 'asoc/topic/kirkwood', 'asoc/topic/mc13783', 'asoc/topic/mxs', 'asoc/topic/nuc900', 'asoc/topic/sai', 'asoc/topic/sh', 'asoc/topic/ssm2602', 'asoc/topic/tlv320aic3x', 'asoc/topic/twl4030', 'asoc/topic/ux500', 'asoc/topic/width' and 'asoc/topic/x86' into for-tiwai

10 years agoMerge remote-tracking branch 'asoc/topic/arizona' into for-tiwai
Mark Brown [Thu, 16 Jan 2014 12:43:55 +0000 (12:43 +0000)]
Merge remote-tracking branch 'asoc/topic/arizona' into for-tiwai

10 years agoMerge remote-tracking branch 'asoc/topic/pcm' into for-tiwai
Mark Brown [Thu, 16 Jan 2014 12:42:57 +0000 (12:42 +0000)]
Merge remote-tracking branch 'asoc/topic/pcm' into for-tiwai

10 years agoMerge remote-tracking branch 'asoc/topic/dma' into for-tiwai
Mark Brown [Thu, 16 Jan 2014 12:42:54 +0000 (12:42 +0000)]
Merge remote-tracking branch 'asoc/topic/dma' into for-tiwai

10 years agoMerge remote-tracking branch 'asoc/topic/dapm' into for-tiwai
Mark Brown [Thu, 16 Jan 2014 12:42:53 +0000 (12:42 +0000)]
Merge remote-tracking branch 'asoc/topic/dapm' into for-tiwai

10 years agoMerge remote-tracking branch 'asoc/topic/core' into for-tiwai
Mark Brown [Thu, 16 Jan 2014 12:42:53 +0000 (12:42 +0000)]
Merge remote-tracking branch 'asoc/topic/core' into for-tiwai

10 years agoMerge remote-tracking branches 'asoc/fix/adau1701' and 'asoc/fix/tlv320aic32x4' into...
Mark Brown [Thu, 16 Jan 2014 12:42:51 +0000 (12:42 +0000)]
Merge remote-tracking branches 'asoc/fix/adau1701' and 'asoc/fix/tlv320aic32x4' into for-tiwai

10 years agoALSA: hda - add headset mic detect quirks for some Dell machines
Hui Wang [Thu, 16 Jan 2014 07:51:10 +0000 (15:51 +0800)]
ALSA: hda - add headset mic detect quirks for some Dell machines

When we plug a 3-ring headset on some Dell machines, the headset
mic can't be detected, after apply this patch, the headset mic
can work well on all those machines.

On the machine with the Subsytem ID 0x10280610, if we use
ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, the headset mic can be
detected and work well, but the sound can't be outputed via
headphone anymore, use ALC269_FIXUP_DELL3_MIC_NO_PRESENCE
can fix this problem.

BugLink: https://bugs.launchpad.net/bugs/1260303
Cc: David Henningsson <david.henningsson@canonical.com>
Tested-by: David Chen <david.chen@canonical.com>
Tested-by: Cyrus Lien <cyrus.lien@canonical.com>
Tested-by: Shawn Wang <shawn.wang@canonical.com>
Tested-by: Chih-Hsyuan Ho <chih.ho@canonical.com>
Cc: stable@vger.kernel.org
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoASoC: tlv320aic32x4: Fix regmap range_min
Markus Pargmann [Wed, 15 Jan 2014 17:12:40 +0000 (18:12 +0100)]
ASoC: tlv320aic32x4: Fix regmap range_min

range_min is the lowest address in the virtual register range. This is
the first register with address 0, not the first register of page 1.

Currently all writes to page 1 are mapped to page 0, so the codec fails
to operate.

Fixes: 4d208ca429ad (ASoC: tlv320aic32x4: Convert to direct regmap API usage)
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org (v3.13 if the fix misses -final)
10 years agoASoC: core: Return -ENOTSUPP from set_sysclk() if no operation provided
Mark Brown [Wed, 15 Jan 2014 19:04:19 +0000 (19:04 +0000)]
ASoC: core: Return -ENOTSUPP from set_sysclk() if no operation provided

Make it easier for generic code to work with set_sysclk() by distinguishing
between the operation not being supported and an error as is done for
other operations like set_dai_fmt()

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: dapm: Change prototype of soc_widget_read
Arun Shamanna Lakshmi [Tue, 14 Jan 2014 23:31:54 +0000 (15:31 -0800)]
ASoC: dapm: Change prototype of soc_widget_read

soc_widget_read API returns the register data and it is possible
that a register can contain 0xffffffff. Thus, change the prototype
of soc_widget_read to return only the error code and pass the reg
data through pointer argument.

Signed-off-by: Arun Shamanna Lakshmi <aruns@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: samsung: Remove SND_DMAENGINE_PCM_FLAG_NO_RESIDUE flag
Lars-Peter Clausen [Sat, 11 Jan 2014 13:02:21 +0000 (14:02 +0100)]
ASoC: samsung: Remove SND_DMAENGINE_PCM_FLAG_NO_RESIDUE flag

The Samsung dmaengine ASoC driver is used with two different dmaengine drivers.
The pl80x, which properly supports residue reporting and the pl330, which
reports that it does not support residue reporting. So there is no need to
manually set the NO_RESIDUE flag. This has the advantage that a proper (race
condition free) PCM pointer() implementation is used when the pl80x driver is
used. Also once the pl330 driver supports residue reporting the ASoC PCM driver
will automatically start using it.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: axi-{spdif,i2s}: Remove SND_DMAENGINE_PCM_FLAG_NO_RESIDUE flag
Lars-Peter Clausen [Sat, 11 Jan 2014 13:02:20 +0000 (14:02 +0100)]
ASoC: axi-{spdif,i2s}: Remove SND_DMAENGINE_PCM_FLAG_NO_RESIDUE flag

The pl330 driver properly reports that it does not have residue reporting
support, which means the PCM dmanegine driver is able to figure this out on its
own. So there is no need to set the flag manually. Removing the flag has the
advantage that once the pl330 driver gains support for residue reporting it will
automatically be used by the generic dmaengine PCM driver.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: generic-dmaengine-pcm: Check DMA residue granularity
Lars-Peter Clausen [Sat, 11 Jan 2014 13:02:19 +0000 (14:02 +0100)]
ASoC: generic-dmaengine-pcm: Check DMA residue granularity

The dmaengine framework now exposes the granularity with which it is able to
report the transfer residue for a certain DMA channel. Check the granularity in
the generic dmaengine PCM driver and
a) Set the SNDRV_PCM_INFO_BATCH if the granularity is per period or worse.
b) Fallback to the (race condition prone) period counting if the driver does
not support any residue reporting.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: generic-dmaengine-pcm: Check NO_RESIDUE flag at runtime
Lars-Peter Clausen [Sat, 11 Jan 2014 13:02:18 +0000 (14:02 +0100)]
ASoC: generic-dmaengine-pcm: Check NO_RESIDUE flag at runtime

Currently we have two different snd_soc_platform_driver structs in the generic
dmaengine PCM driver. One for dmaengine drivers that support residue reporting
and one for those which do not. When registering the PCM component we check
whether the NO_RESIDUE flag is set or not and use the corresponding
snd_soc_platform_driver. This patch modifies the driver to only have one
snd_soc_platform_driver struct where the pointer() callback checks the
NO_RESIDUE flag at runtime. This allows us to set the NO_RESIDUE flag after the
PCM component has been registered. This becomes necessary when querying whether
the dmaengine driver supports residue reporting from the dmaengine driver itself
since the DMA channel might only be requested after the PCM component has been
registered.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agodma: pl330: Set residue_granularity
Lars-Peter Clausen [Sat, 11 Jan 2014 13:02:17 +0000 (14:02 +0100)]
dma: pl330: Set residue_granularity

The pl330 driver currently does not support residue reporting, so set the
residue granularity to DMA_RESIDUE_GRANULARITY_DESCRIPTOR.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agodma: Indicate residue granularity in dma_slave_caps
Lars-Peter Clausen [Sat, 11 Jan 2014 13:02:16 +0000 (14:02 +0100)]
dma: Indicate residue granularity in dma_slave_caps

This patch adds a new field to the dma_slave_caps struct which indicates the
granularity with which the driver is able to update the residue field of the
dma_tx_state struct. Making this information available to dmaengine users allows
them to make better decisions on how to operate. E.g. for audio certain features
like wakeup less operation or timer based scheduling only make sense and work
correctly if the reported residue is fine-grained enough.

Right now four different levels of granularity are supported:
* DESCRIPTOR: The DMA channel is only able to tell whether a descriptor has
  been completed or not, which means residue reporting is not supported by
  this channel. The residue field of the dma_tx_state field will always be
  0.
* SEGMENT: The DMA channel updates the residue field after each successfully
  completed segment of the transfer (For cyclic transfers this is after each
  period). This is typically implemented by having the hardware generate an
  interrupt after each transferred segment and then the drivers updates the
  outstanding residue by the size of the segment. Another possibility is if
  the hardware supports SG and the segment descriptor has a field which gets
  set after the segment has been completed. The driver then counts the
  number of segments without the flag set to compute the residue.
* BURST: The DMA channel updates the residue field after each transferred
  burst. This is typically only supported if the hardware has a progress
  register of some sort (E.g. a register with the current read/write address
  or a register with the amount of bursts/beats/bytes that have been
  transferred or still need to be transferred).

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoMerge branch 'topic/samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Mark Brown [Tue, 14 Jan 2014 21:28:35 +0000 (21:28 +0000)]
Merge branch 'topic/samsung' of git://git./linux/kernel/git/broonie/sound into asoc-dma

10 years agoMerge branch 'topic/axi' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Mark Brown [Tue, 14 Jan 2014 21:28:22 +0000 (21:28 +0000)]
Merge branch 'topic/axi' of git://git./linux/kernel/git/broonie/sound into asoc-dma

10 years agoASoC: simple-card: fix one bug to writing to the platform data
Xiubo Li [Tue, 14 Jan 2014 04:35:32 +0000 (12:35 +0800)]
ASoC: simple-card: fix one bug to writing to the platform data

It's a bug that writing to the platform data directly, for it should
be constant. So just copy it before writing.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: pcm: Use snd_pcm_rate_mask_intersect() helper
Lars-Peter Clausen [Sat, 11 Jan 2014 09:24:44 +0000 (10:24 +0100)]
ASoC: pcm: Use snd_pcm_rate_mask_intersect() helper

Instead of open-coding the intersecting of two rate masks (and getting slightly
wrong for some of the corner cases) use the new snd_pcm_rate_mask_intersect()
helper function.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoALSA: Add helper function for intersecting two rate masks
Lars-Peter Clausen [Sat, 11 Jan 2014 09:24:43 +0000 (10:24 +0100)]
ALSA: Add helper function for intersecting two rate masks

A bit of special care is necessary when creating the intersection of two rate
masks. This comes from the special meaning of the SNDRV_PCM_RATE_CONTINUOUS and
SNDRV_PCM_RATE_KNOT bits, which needs special handling when intersecting two
rate masks. SNDRV_PCM_RATE_CONTINUOUS means the hardware supports all rates in a
specific interval. SNDRV_PCM_RATE_KNOT means the hardware supports a set of
discrete rates specified by a list constraint. For all other cases the supported
rates are specified directly in the rate mask.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: s6000: Don't mix SNDRV_PCM_RATE_CONTINUOUS with specific rates
Lars-Peter Clausen [Sat, 11 Jan 2014 09:24:42 +0000 (10:24 +0100)]
ASoC: s6000: Don't mix SNDRV_PCM_RATE_CONTINUOUS with specific rates

SNDRV_PCM_RATE_CONTINUOUS means that all rates (possibly limited to a certain
interval) are supported. There is no need to manually set other rate bits.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Daniel Glöckner <daniel-gl@gmx.net>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl: Don't mix SNDRV_PCM_RATE_CONTINUOUS with specific rates
Lars-Peter Clausen [Sat, 11 Jan 2014 09:24:41 +0000 (10:24 +0100)]
ASoC: fsl: Don't mix SNDRV_PCM_RATE_CONTINUOUS with specific rates

SNDRV_PCM_RATE_CONTINUOUS means that all rates (possibly limited to a certain
interval) are supported. There is no need to manually set other rate bits.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: pcm: Properly initialize hw->rate_max
Lars-Peter Clausen [Sat, 11 Jan 2014 09:24:40 +0000 (10:24 +0100)]
ASoC: pcm: Properly initialize hw->rate_max

If none of the components (CODEC or CPU DAI) sets a maximum sample rate we'll
end up with the rate_max field of the runtime hardware set to 0.  (Note that it
is still possible for the components to constrain the supported sample rates
using other methods, e.g. setting a list constraint) If rate_max is 0 this means
that the sound card doesn't support any rates at all, which is not the desired
result. So initialize rate_max to UINT_MAX. For symmetry reasons also set
rate_min to 0.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoMerge tag 'v3.13-rc3' into asoc-pcm
Mark Brown [Tue, 14 Jan 2014 20:41:53 +0000 (20:41 +0000)]
Merge tag 'v3.13-rc3' into asoc-pcm

Linux 3.13-rc3

10 years agosound: oss: remove last sleep_on users
Arnd Bergmann [Thu, 2 Jan 2014 12:07:51 +0000 (13:07 +0100)]
sound: oss: remove last sleep_on users

There are three files in oss for which I could not find an easy way to
replace interruptible_sleep_on_timeout with a non-racy version. This
patch instead just adds a private implementation of the function, now
named oss_broken_sleep_on, and changes over the remaining users in
sound/oss/ so we can remove the global interface.

[fixed coding style warnings by tiwai]

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agosound: oss: dmasound: kill SLEEP() macro to avoid race
Arnd Bergmann [Thu, 2 Jan 2014 12:07:50 +0000 (13:07 +0100)]
sound: oss: dmasound: kill SLEEP() macro to avoid race

The use of interruptible_sleep_on_timeout in the dmasound driver
is questionable and we want to kill off all sleep_on variants.
This replaces the calls with wait_event_interruptible_timeout
where possible, to wait for a particular event instead of blocking
in a racy way. In the sq_write function, the easiest solution is
an open-coded prepare_to_wait loop.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agosound: oss: midibuf: fix sleep_on races
Arnd Bergmann [Thu, 2 Jan 2014 12:07:48 +0000 (13:07 +0100)]
sound: oss: midibuf: fix sleep_on races

sleep_on is known to be racy and going away because of this. All instances
of interruptible_sleep_on and interruptible_sleep_on_timeout in the midibuf
driver can trivially be replaced with wait_event_interruptible and
wait_event_interruptible_timeout.

[fixed coding style warnings by tiwai]

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agosound: oss: vwsnd: avoid interruptible_sleep_on
Arnd Bergmann [Thu, 2 Jan 2014 12:07:49 +0000 (13:07 +0100)]
sound: oss: vwsnd: avoid interruptible_sleep_on

Interruptible_sleep_on is racy and we want to remove it. This replaces
the use in the vwsnd driver with an open-coded prepare_to_wait
loop that fixes the race between concurrent open() and close() calls,
and also drops the global mutex while waiting here, which restores
the original behavior that was changed during the BKL removal.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agosound: oss: msnd_pinnacle: avoid interruptible_sleep_on_timeout
Arnd Bergmann [Thu, 2 Jan 2014 12:07:47 +0000 (13:07 +0100)]
sound: oss: msnd_pinnacle: avoid interruptible_sleep_on_timeout

We want to remove all sleep_on variants from the kernel because they are
racy. In case of the pinnacle driver, we can replace
interruptible_sleep_on_timeout with wait_event_interruptible_timeout
by changing the meaning of a few flags used in the driver so they
are cleared at wakeup time, which is a somewhat more appropriate
way to do the same, although probably still racy.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: hda - Fix endless vmaster hook call in thinkpad_helper.c
Takashi Iwai [Tue, 14 Jan 2014 13:56:55 +0000 (14:56 +0100)]
ALSA: hda - Fix endless vmaster hook call in thinkpad_helper.c

The new vmaster hook, update_tpacpi_mute_led(), calls the original
vmaster hook, but I forgot to save the original hook function but keep
calling the updated one, which of course results in a stupid endless
loop.  Fixed now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: snd-usb: re-order some quirk entries
Daniel Mack [Tue, 14 Jan 2014 13:37:56 +0000 (14:37 +0100)]
ALSA: snd-usb: re-order some quirk entries

No code change, just a cosmetic cleanup to keep entries ordered by the
device ID within a block of unique vendor IDs.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: usb-audio: Fix Creative VF0420 rate
Pavel Hofman [Tue, 14 Jan 2014 12:42:57 +0000 (13:42 +0100)]
ALSA: usb-audio: Fix Creative VF0420 rate

Creative Live! Cam Vista IM (VF0420) reports rate of 16kHz while working
at 8kHz. The patch adds its USB ID to the existing quirk.

Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: usb-audio: Add support for Focusrite Saffire 6 USB
Eduard Gilmutdinov [Fri, 20 Dec 2013 08:06:58 +0000 (14:06 +0600)]
ALSA: usb-audio: Add support for Focusrite Saffire 6 USB

Signed-off-by: Eduard Gilmutdinov <edgilmutdinov@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: hda - automute via amp instead of pinctl on some AIO models
Hui Wang [Tue, 14 Jan 2014 06:07:36 +0000 (14:07 +0800)]
ALSA: hda - automute via amp instead of pinctl on some AIO models

On some AIO (All In One) models with the codec alc668
(Vendor ID: 0x10ec0668) on it, when we plug a headphone into the jack,
the system will switch the output to headphone and set the speaker to
automute as well as change the speaker Pin-ctls from 0x40 to 0x00,
this will bring loud noise to the headphone.

I tried to disable the corresponding EAPD, but it did not help to
eliminate the noise.

According to Takashi's suggestion, we use amp operation to replace the
pinctl modification for the automute, this really eliminate the noise.

BugLink: https://bugs.launchpad.net/bugs/1268468
Cc: David Henningsson <david.henningsson@canonical.com>
Cc: stable@vger.kernel.org
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoASoC: simple-card: use snd_soc_card_set/get_drvdata
Xiubo Li [Mon, 13 Jan 2014 09:08:08 +0000 (17:08 +0800)]
ASoC: simple-card: use snd_soc_card_set/get_drvdata

Remove asoc_simple_get_card_info macro and use snd_soc_card_set_drvdata
and snd_soc_card_get_drvdata instead.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoALSA: hda - Apply codec power_filter to FG nodes
Takashi Iwai [Mon, 13 Jan 2014 15:09:57 +0000 (16:09 +0100)]
ALSA: hda - Apply codec power_filter to FG nodes

Apply the codec->power_filter to the FG nodes in general for reducing
hackish set_power_state ops override in patch_sigmatel.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoASoC: tlv320aic3x: Add tlv320aic32x4 as compatible
Markus Pargmann [Sat, 11 Jan 2014 13:48:31 +0000 (14:48 +0100)]
ASoC: tlv320aic3x: Add tlv320aic32x4 as compatible

Add tlv320aic32x4 to the compatible list in the binding documentation.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: codec: tlv320aic32x4: Fix regmap range config
Markus Pargmann [Sat, 11 Jan 2014 13:48:30 +0000 (14:48 +0100)]
ASoC: codec: tlv320aic32x4: Fix regmap range config

This codec driver fails to probe because it has a higher regmap
range_max value than max_register. This patch sets the range_max to the
max_register value as described in the for struct regmap_range_cfg:
"@range_max: Address of the highest register in virtual range."

Fixes: 4d208ca429ad (ASoC: tlv320aic32x4: Convert to direct regmap API usage)
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org (v3.13 if the fix misses -final)
10 years agoASoC: max9850: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 20:39:44 +0000 (20:39 +0000)]
ASoC: max9850: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98095: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 20:39:37 +0000 (20:39 +0000)]
ASoC: max98095: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98090: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 20:39:30 +0000 (20:39 +0000)]
ASoC: max98090: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: max98088: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 20:39:22 +0000 (20:39 +0000)]
ASoC: max98088: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: isabelle: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:50:38 +0000 (19:50 +0000)]
ASoC: isabelle: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: da9055: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:50:21 +0000 (19:50 +0000)]
ASoC: da9055: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: da732x: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:50:07 +0000 (19:50 +0000)]
ASoC: da732x: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: da7213: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:49:51 +0000 (19:49 +0000)]
ASoC: da7213: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: da7210: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:49:37 +0000 (19:49 +0000)]
ASoC: da7210: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: cs42l51: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:48:20 +0000 (19:48 +0000)]
ASoC: cs42l51: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: alc5632: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:28:27 +0000 (19:28 +0000)]
ASoC: alc5632: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: alc5623: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 19:28:07 +0000 (19:28 +0000)]
ASoC: alc5623: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoALSA: hda - Don't set indep_hp flag for old AD codecs
Takashi Iwai [Mon, 13 Jan 2014 11:40:07 +0000 (12:40 +0100)]
ALSA: hda - Don't set indep_hp flag for old AD codecs

Some old AD codecs don't like the independent HP handling, either it
contains a single DAC (AD1981) or it mandates the mixer routing
(AD1986A).  This patch removes the indep_hp flag for such codecs.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=68081
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: Enable CONFIG_ZONE_DMA for smaller PCI DMA masks
Takashi Iwai [Fri, 10 Jan 2014 13:20:42 +0000 (14:20 +0100)]
ALSA: Enable CONFIG_ZONE_DMA for smaller PCI DMA masks

The PCI devices with DMA masks smaller than 32bit should enable
CONFIG_ZONE_DMA.  Since the recent change of page allocator, page
allocations via dma_alloc_coherent() with the limited DMA mask bits
may fail more frequently, ended up with no available buffers, when
CONFIG_ZONE_DMA isn't enabled.  With CONFIG_ZONE_DMA, the system has
much more chance to obtain such pages.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=68221
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: PCM: Warn when buffer preallocation fails
Takashi Iwai [Fri, 10 Jan 2014 12:01:41 +0000 (13:01 +0100)]
ALSA: PCM: Warn when buffer preallocation fails

The failures of buffer preallocations at driver initializations aren't
critical but it's still helpful to inform, so that user can know that
something doesn't work as expected.

For example, the recent page allocator change triggered regressions,
but developers didn't notice until recently because the driver didn't
complain.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoASoC: fsl_esai: Add ESAI CPU DAI driver
Nicolin Chen [Fri, 10 Jan 2014 09:54:06 +0000 (17:54 +0800)]
ASoC: fsl_esai: Add ESAI CPU DAI driver

This patch implements a device-tree-only CPU DAI driver for Freescale ESAI
controller that supports:

 - 12 channels playback and 8 channels record.
   [ Some of the inner transmitters and receivers are sharing same group of
     pins. So the maxmium 12 output or 8 input channels are only valid if
     there is no pin conflict occurring to it. ]

 - Independent (asynchronous mode) or shared (synchronous mode) transmit and
   receive sections with separate or shared internal/external clocks and frame
   syncs, operating in Master or Slave mode.
   [ Current ALSA seems not to allow CPU DAI drivers to configure DAI format
     separately for PLAYBACK and CAPTURE. So this first version only supports
     the case that uses the same DAI format for both directions. ]

 - Various DAI formats: I2S, Left-Justified, Right-Justified, DSP-A and DSP-B.

 - Programmable word length (8, 16, 20 or 24bits)

 - Flexible selection between system clock or external oscillator as input
   clock source, programmable internal clock divider and frame sync generation.

Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: wm5110: Add controls for headphone short circuit protection
Charles Keepax [Thu, 9 Jan 2014 14:29:25 +0000 (14:29 +0000)]
ASoC: wm5110: Add controls for headphone short circuit protection

Add controls to enable/disable the headphone short circuit protection of
the headphone outputs.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agomfd: wm5110: Add registers for headphone short circuit control
Charles Keepax [Thu, 9 Jan 2014 14:29:24 +0000 (14:29 +0000)]
mfd: wm5110: Add registers for headphone short circuit control

Add the registers necessary to enable/disable the headphone short
circuit protection.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoMerge tag 'v3.13-rc3' into asoc-arizona
Mark Brown [Fri, 10 Jan 2014 11:52:05 +0000 (11:52 +0000)]
Merge tag 'v3.13-rc3' into asoc-arizona

Linux 3.13-rc3

10 years agoALSA: ctxfi - Work around emu20k1 glitch to prevent buffered sound data loss
Sarah Bessmer [Thu, 9 Jan 2014 19:36:31 +0000 (11:36 -0800)]
ALSA: ctxfi - Work around emu20k1 glitch to prevent buffered sound data loss

Occasionally, on playback stream ringbuffer wraparound, the EMU20K1
hardware will momentarily return 0 instead of the proper current(loop)
address. This patch handles that case, fixing the problem of playback
position corruption and subsequent loss of buffered sound data, that
occurs with some common buffering layout patterns(e.g. multiple
simultaneous output streams with differently-sized or
non-power-of-2-sized buffers).

An alternate means of fixing the problem would be to read the ca
register continuously, until two sequential reads return the same
value; however, that would be a more invasive change, has performance
implications, and isn't necessary unless there are also issues with the
value not being updated atomically in regards to individual bits or
something similar(which I have not encountered through light testing).

I have no EMU20K2 hardware to confirm if the issue is present there,
but even if it's not, this change shouldn't break anything that's not
already broken.

Signed-off-by: Sarah Bessmer <aotos@fastmail.fm>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoASoC: simple-card: fix the cinfo error check
Xiubo Li [Thu, 9 Jan 2014 09:49:40 +0000 (17:49 +0800)]
ASoC: simple-card: fix the cinfo error check

If the dt is used and the cinfo is NULL, the -ENOMEM should be return.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: simple-card: fix a bug where cinfo will be NULL before using it
Xiubo Li [Thu, 9 Jan 2014 09:19:08 +0000 (17:19 +0800)]
ASoC: simple-card: fix a bug where cinfo will be NULL before using it

If the dt is not used, the cinfo will be always NULL before using it.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl_ssi: Set default slot number for common cases
Nicolin Chen [Thu, 9 Jan 2014 10:42:48 +0000 (18:42 +0800)]
ASoC: fsl_ssi: Set default slot number for common cases

For those platforms using DAI master mode like I2S, it's better to pre-set
a default slot number so that there's no need for these common cases to set
the slot number from its machine driver any more.

Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Add missing clk_disable_unprepare() on error in fsl_ssi_probe()
Wei Yongjun [Thu, 9 Jan 2014 14:27:31 +0000 (22:27 +0800)]
ASoC: fsl-ssi: Add missing clk_disable_unprepare() on error in fsl_ssi_probe()

Add the missing clk_disable_unprepare() before return from
fsl_ssi_probe() in the request irq error handling case.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: Allow PCMs to restrict the supported formats
Lars-Peter Clausen [Mon, 6 Jan 2014 13:19:16 +0000 (14:19 +0100)]
ASoC: Allow PCMs to restrict the supported formats

Some DMA cores might add additional restrictions on which in memory audio
formats can be supported by the compound sound card. If the PCM component
specifies a set of formats it supports (by setting the formats field to non 0)
take these into account when calculating the format set for the compound sound
card.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: ux500: Don't set unused struct snd_pcm_hardware fields
Lars-Peter Clausen [Mon, 6 Jan 2014 13:19:15 +0000 (14:19 +0100)]
ASoC: ux500: Don't set unused struct snd_pcm_hardware fields

The ASoC core assumes that the PCM component of the ASoC card transparently
moves data around and does not impose any restrictions on the memory layout or
the transfer speed. It ignores all fields from the snd_pcm_hardware struct for
the PCM driver that are related to this. Setting these fields in the PCM driver
might suggest otherwise though, so rather not set them.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: sh: Don't set unused struct snd_pcm_hardware fields
Lars-Peter Clausen [Mon, 6 Jan 2014 13:19:14 +0000 (14:19 +0100)]
ASoC: sh: Don't set unused struct snd_pcm_hardware fields

The ASoC core assumes that the PCM component of the ASoC card transparently
moves data around and does not impose any restrictions on the memory layout or
the transfer speed. It ignores all fields from the snd_pcm_hardware struct for
the PCM driver that are related to this. Setting these fields in the PCM driver
might suggest otherwise though, so rather not set them.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: nuc900: Don't set unused struct snd_pcm_hardware fields
Lars-Peter Clausen [Mon, 6 Jan 2014 13:19:13 +0000 (14:19 +0100)]
ASoC: nuc900: Don't set unused struct snd_pcm_hardware fields

The ASoC core assumes that the PCM component of the ASoC card transparently
moves data around and does not impose any restrictions on the memory layout or
the transfer speed. It ignores all fields from the snd_pcm_hardware struct for
the PCM driver that are related to this. Setting these fields in the PCM driver
might suggest otherwise though, so rather not set them.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: kirkwood: Don't set unused struct snd_pcm_hardware fields
Lars-Peter Clausen [Mon, 6 Jan 2014 13:19:11 +0000 (14:19 +0100)]
ASoC: kirkwood: Don't set unused struct snd_pcm_hardware fields

The ASoC core assumes that the PCM component of the ASoC card transparently
moves data around and does not impose any restrictions on the memory layout or
the transfer speed. It ignores all fields from the snd_pcm_hardware struct for
the PCM driver that are related to this. Setting these fields in the PCM driver
might suggest otherwise though, so rather not set them.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: intel: Don't set unused struct snd_pcm_hardware fields
Lars-Peter Clausen [Mon, 6 Jan 2014 13:19:10 +0000 (14:19 +0100)]
ASoC: intel: Don't set unused struct snd_pcm_hardware fields

The ASoC core assumes that the PCM component of the ASoC card transparently
moves data around and does not impose any restrictions on the memory layout or
the transfer speed. It ignores all fields from the snd_pcm_hardware struct for
the PCM driver that are related to this. Setting these fields in the PCM driver
might suggest otherwise though, so rather not set them.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: adav80x: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 18:50:40 +0000 (18:50 +0000)]
ASoC: adav80x: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
10 years agoASoC: adau1701: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 18:50:25 +0000 (18:50 +0000)]
ASoC: adau1701: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
10 years agoASoC: adau1373: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 18:49:58 +0000 (18:49 +0000)]
ASoC: adau1373: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
10 years agoASoC: ad193x: Use params_width() rather than memory format
Mark Brown [Wed, 8 Jan 2014 18:38:20 +0000 (18:38 +0000)]
ASoC: ad193x: Use params_width() rather than memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
10 years agoASoC: ad1836: Use params_width() rather than explicit memory format
Mark Brown [Wed, 8 Jan 2014 18:37:22 +0000 (18:37 +0000)]
ASoC: ad1836: Use params_width() rather than explicit memory format

Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
10 years agoASoC: fsl-ssi: Fix stats compile warning
Markus Pargmann [Thu, 9 Jan 2014 10:16:11 +0000 (11:16 +0100)]
ASoC: fsl-ssi: Fix stats compile warning

single_open requires a function with signature
'int (*)(struct seq_file *, void *)'. This patch fixes the warning by
fixing the wrong return type of fsl_ssi_stats_show.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi doc: Add list of supported compatibles
Markus Pargmann [Thu, 9 Jan 2014 10:16:10 +0000 (11:16 +0100)]
ASoC: fsl-ssi doc: Add list of supported compatibles

There is no list of compatibles that are supported. This patch adds a
list of compatibles to the documentation.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: wm_adsp: Mark wm_adsp2_boot_work as static
Charles Keepax [Thu, 9 Jan 2014 09:06:54 +0000 (09:06 +0000)]
ASoC: wm_adsp: Mark wm_adsp2_boot_work as static

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoALSA: Merge memalloc code into snd-pcm module
Takashi Iwai [Thu, 9 Jan 2014 06:48:12 +0000 (07:48 +0100)]
ALSA: Merge memalloc code into snd-pcm module

Instead of keeping a separate snd-page-alloc module, merge into the
core snd-pcm module, as we don't need to keep it as an individual
module due to the drop of page reservation.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: Remove superfluous header inclusions in memalloc.c
Takashi Iwai [Thu, 9 Jan 2014 06:44:11 +0000 (07:44 +0100)]
ALSA: Remove superfluous header inclusions in memalloc.c

After cutting off the proc and page reservation codes, we don't need
many headers any longer.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: Remove memory reservation code from memalloc helper
Takashi Iwai [Wed, 8 Jan 2014 15:12:25 +0000 (16:12 +0100)]
ALSA: Remove memory reservation code from memalloc helper

Nowadays we have CMA for obtaining the contiguous memory pages
efficiently.  Let's kill the old kludge for reserving the memory pages
for large buffers.  It was rarely useful (only for preserving pages
among module reloading or a little help by an early boot scripting),
used only by a couple of drivers, and yet it gives too much ugliness
than its benefit.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: Remove memory accounting in memalloc helper
Takashi Iwai [Wed, 8 Jan 2014 15:09:31 +0000 (16:09 +0100)]
ALSA: Remove memory accounting in memalloc helper

It's almost superfluous, and doesn't help much for real uses.
Let's reduce the layer size.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: hda/hdmi - apply all Haswell fix-ups to Broadwell display codec
Mengdong Lin [Wed, 8 Jan 2014 20:55:32 +0000 (15:55 -0500)]
ALSA: hda/hdmi - apply all Haswell fix-ups to Broadwell display codec

Broadwell and Haswell have the same behavior on display audio. So this patch
defines is_haswell_plus() to include codecs for both Haswell and its successor
Broadwell, and apply all Haswell fix-ups to Broadwell.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: hda - add codec ID for Broadwell display audio codec
Mengdong Lin [Wed, 8 Jan 2014 20:55:24 +0000 (15:55 -0500)]
ALSA: hda - add codec ID for Broadwell display audio codec

This patch adds codec ID (0x80862808) and module alias for Broadwell
display codec.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoALSA: hda - add device ID for Broadwell display audio controller
Mengdong Lin [Wed, 8 Jan 2014 20:55:14 +0000 (15:55 -0500)]
ALSA: hda - add device ID for Broadwell display audio controller

This patch adds the device ID for Intel Broadwell display HD-Audio controller,
and applies Haswell properties to this device.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoASoC: bcm: Remove obsoleted Kconfig dependency
Takashi Iwai [Wed, 8 Jan 2014 09:37:07 +0000 (10:37 +0100)]
ASoC: bcm: Remove obsoleted Kconfig dependency

CONFIG_SND_SOC_DMAENGINE_PCM was renamed to CONFIG_SND_DMAENGINE_PCM
recently.  And yet we don't have to select it since
CONFIG_SND_GENERIC_DMAENGINE_PCM selects the dependency by itself, so
just rip it off.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Florian Meier <florian.meier@koalo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: wm_adsp: Start DSP booting earlier in the DAPM process
Charles Keepax [Wed, 8 Jan 2014 17:42:19 +0000 (17:42 +0000)]
ASoC: wm_adsp: Start DSP booting earlier in the DAPM process

Move the start of booting the DSP to earlier in the DAPM process, and
move the final starting of the DSP to later in the DAPM process. This
allows us to overlap some of the processing with other components of the
system being brought up.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: wm_adsp: Factor out ADSP2 boot proceedure
Charles Keepax [Wed, 8 Jan 2014 17:42:18 +0000 (17:42 +0000)]
ASoC: wm_adsp: Factor out ADSP2 boot proceedure

Move the ADSP2 boot proceedure into a work structure in preparation for
running it asynchronously with the reset of the audio path bring up.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Drop ac97 specific trigger function
Markus Pargmann [Fri, 20 Dec 2013 13:11:35 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Drop ac97 specific trigger function

The normal trigger function can now be used for AC97. Drop AC97 trigger
function.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Move RX/TX configuration to seperate functions
Markus Pargmann [Fri, 20 Dec 2013 13:11:34 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Move RX/TX configuration to seperate functions

This patch defines the appropriate register values for different
oparation modes and IP versions. We have to handle DMA/FIQ, AC97,
DEBUG-IRQs and offline/online configuration support.

With this patch we cleanup some driver code that was not reference
manual conform and try to cleanup the whole trigger function to seperate
the actual register values from the enable/disable logic, which is now
hidden in fsl_ssi_config helpers.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Add configuration helper functions
Markus Pargmann [Fri, 20 Dec 2013 13:11:33 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Add configuration helper functions

This patch adds a struct 'fsl_ssi_rxtx_reg_val' which holds register
values necessary to enable rx/tx. Based on those preset register values,
the added configuration functions will cleanly enable/disable different
parts of the SSI IP while supporting online/offline configuration.
Different operating modes can be setup directly as different register
values in fsl_ssi_reg_val.

These functions and structs will help to cleanup and simplify the
trigger function to support many different IP versions (online/offline
configuration) and different operating modes.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Add offline_config flag
Markus Pargmann [Fri, 20 Dec 2013 13:11:32 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Add offline_config flag

imx50-ssi and later versions of this IP support online reconfiguration
of all registers. The reference manual does not list any registers that
can only be configured while the SSI unit is disabled. This patch
introduces the flag for later use.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Fix interrupt stats for imx
Markus Pargmann [Fri, 20 Dec 2013 13:11:31 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Fix interrupt stats for imx

irqs should only be requested/released with enabled DMA. Previously
interrupt statistics where disabled for IMX Processors because of
different writeable SISR bits.

This patch introduces support for irqstats on imx processors again by
creating a sisr writeback mask and introducing a imx35-ssi compatible.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Add imx51-ssi and of_device_id matching
Markus Pargmann [Fri, 20 Dec 2013 13:11:30 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Add imx51-ssi and of_device_id matching

There is a small but significant difference between imx21-ssi and
imx51-ssi and above. imx21-ssi does not allow online reconfiguration of
some registers. They have to be configured at the beginning.

imx51-ssi has to reconfigure the SSI unit while it is running. Otherwise
it would not be possible to have two streams in parallel. The new SDMA
unit in imx51 and above has to be configured before the first DMA
request arrives. Therefor we need to setup TDMAE/RDMAE just before
starting the stream.

This patch introduces distinct imx51-ssi as compatible and adds
of_device_id matching in the probe function.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Move sysfs stats to debugfs
Markus Pargmann [Fri, 20 Dec 2013 13:11:29 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Move sysfs stats to debugfs

Interrupt statistics of fsl_ssi are mainly for debugging purpose. Most
of those interrupts show error states, e.g. under/overflow.
The stats should be exposed via debugfs instead of sysfs.

This patch moves the statistics file to debugfs.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: fsl-ssi: Fix probe error handling
Markus Pargmann [Fri, 20 Dec 2013 13:11:28 +0000 (14:11 +0100)]
ASoC: fsl-ssi: Fix probe error handling

This patch fixes the error handling in the fsl-ssi probe function.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoALSA: hda - Split Thinkpad ACPI-related code
Takashi Iwai [Wed, 8 Jan 2014 10:44:21 +0000 (11:44 +0100)]
ALSA: hda - Split Thinkpad ACPI-related code

Both patch_realtek.c and patch_conexant.c contain the fairy same code
snippet for supporting Thinkpad ACPI LED controls.  Split them into
thinkpad_helper.c and include it from both places.  Although this
isn't the best approach from the code size POV, the probability for
coexistence of both Realtek and Conexant codecs on a single machine is
pretty low, thus it'll end up with less memory footprint than
splitting to yet another module.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
10 years agoASoC: ssm2602: add 16kHz sampling rate support
Andreas Pretzsch [Tue, 7 Jan 2014 21:34:41 +0000 (22:34 +0100)]
ASoC: ssm2602: add 16kHz sampling rate support

SSM260x also supports 16kHz with external master clocks of 12.000MHz,
12.288MHz and 18.432MHz.
Add matching coefficients, update constraints and announced rates.

Signed-off-by: Andreas Pretzsch <apr@cn-eng.de>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
10 years agoASoC: twl4030: Pass the twl4030_priv directly to twl4030_can_write_to_chip()
Peter Ujfalusi [Fri, 3 Jan 2014 13:27:56 +0000 (15:27 +0200)]
ASoC: twl4030: Pass the twl4030_priv directly to twl4030_can_write_to_chip()

To avoid another lookup for the twl4030_priv in there.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@linaro.org>