openwrt/staging/blogic.git
15 years agoMerge branch 'gta02-audio' into for-2.6.32
Mark Brown [Thu, 30 Jul 2009 12:21:38 +0000 (13:21 +0100)]
Merge branch 'gta02-audio' into for-2.6.32

15 years agoASoC: Fix checkpatch issues and typos of ad1938 codec and bf5xx-tdm dai
Barry Song [Wed, 29 Jul 2009 07:03:16 +0000 (15:03 +0800)]
ASoC: Fix checkpatch issues and typos of ad1938 codec and bf5xx-tdm dai

1. fix "line over 80 characters" checkpatch warnings
2. ‘DMA_nnBIT_MASK’ is deprecated, use DMA_BIT_MASK instead
3. fix typos

Signed-off-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: neo1973_gta02_wm8753: Replace deprecated s3c_gpio calls with gpiolib
Lars-Peter Clausen [Wed, 29 Jul 2009 14:40:19 +0000 (16:40 +0200)]
ASoC: neo1973_gta02_wm8753: Replace deprecated s3c_gpio calls with gpiolib

With the s3c platform has implementing gpiolib support the s3c_gpio api has been
deprecated.
This patch gets rid of all s3c_gpio calls and replaces them by using gpiolib.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: neo1973_gta02_wm8753: Replace snd_soc_cnew with snd_soc_add_controls.
Lars-Peter Clausen [Wed, 29 Jul 2009 14:40:18 +0000 (16:40 +0200)]
ASoC: neo1973_gta02_wm8753: Replace snd_soc_cnew with snd_soc_add_controls.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: board driver to connect bf5xx with ad1938
Barry Song [Wed, 22 Jul 2009 18:10:34 +0000 (02:10 +0800)]
ASoC: board driver to connect bf5xx with ad1938

Signed-off-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: blackfin I2S(TDM mode) CPU DAI driver
Barry Song [Mon, 27 Jul 2009 10:06:39 +0000 (18:06 +0800)]
ASoC: blackfin I2S(TDM mode) CPU DAI driver

The I2S DAI driver for blackfin SPORT, but works in TDM mode.
I2S is not a special case of TDM with only left and right two slots for
SPORT interface. I2S coordinates with TDM in SPORT, but not a part of
TDM. TDM require different hardware configuration with I2S, not only
different slot number.  One is "Stereo Serial Operation" mode of SPORT,
the other one is "Multichannel Operation" mode. They are incompatible
at the same time.
Hardware and DMA description and data transfer flow are much different
for I2S and TDM. Merging them as a whole will be very ugly and difficult
to maintain.
So we don't define a new DAI type, but give two DAI instances for standard
I2S and TDM, both in I2S-family DAI type. The TDM instance still uses the
I2S-family DAI type.

Signed-off-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: CX20442: fix issues pointed out by subsystem maintainer
Janusz Krzysztofik [Tue, 28 Jul 2009 18:24:12 +0000 (20:24 +0200)]
ASoC: CX20442: fix issues pointed out by subsystem maintainer

The patch fixes some checkpatch identified issues and adds a comment about
line discipline interaction to my driver code, as requested by Mark on my
inital submission (thank you Mark for applying my imperfect patch anyway).
It also fixes MODULE_ALIAS mismatch as used in my machine driver.

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Switch palm27x-asoc to jack detection api
Marek Vasut [Thu, 23 Jul 2009 20:16:56 +0000 (22:16 +0200)]
ASoC: Switch palm27x-asoc to jack detection api

This patch removes the old method of jack detection from palm27x-asoc
driver and adds jack detection api. It also removes some other (now)
useless stuff from the driver and corrects pin configuration for the
codec.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Jack handling enhancements as suggested by subsystem maintainer
Janusz Krzysztofik [Fri, 24 Jul 2009 00:48:57 +0000 (02:48 +0200)]
ASoC: Jack handling enhancements as suggested by subsystem maintainer

The patch adds a few small enhancements to the ASoC jack handling, as
suggested by Mark in his comments to my Amstrad Delta driver, and a few fixes
for related bugs found while learning Mark's code and testing results.

Enhancements:
1. Update status of an ASoC jack while associating it with new gpios.
2. Really update DAPM pins while associating them with an ASoC jack.
3. Export ASoC jack gpios over gpiolib sysfs for diagnostic purposes.

Fixes:
1. Apply mask on jack status report before using it, just for case.
2. While updating jack associated DAPM pins, use full resulting jack status,
   not the status report passed as an argument.

Created and tested on linux-2.6.31-rc3

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoALSA: Allow passing platform_data to devices attached to AC97 bus
Marek Vasut [Wed, 22 Jul 2009 11:01:03 +0000 (13:01 +0200)]
ALSA: Allow passing platform_data to devices attached to AC97 bus

This patch allows passing platform_data to devices attached to AC97 bus
(like touchscreens, battery measurement chips ...).

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: MAX9877: fix write operation for register
Joonyoung Shim [Thu, 23 Jul 2009 08:33:17 +0000 (17:33 +0900)]
ASoC: MAX9877: fix write operation for register

The MAX9877 needs an address of start register when we write values to
registers through i2c_master_send(), but the code for this was missed in
max9877_write_regs().

If the value of control is 0 in the max9877_set_out_mode(), the value is
not increased to 1, but actually the value to write to the register
should be 1.
And the register bits for out_mode and osc_mode should be cleared before
writing.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Add support for Conexant CX20442-11 voice modem codec
Janusz Krzysztofik [Wed, 22 Jul 2009 03:22:28 +0000 (05:22 +0200)]
ASoC: Add support for Conexant CX20442-11 voice modem codec

This patch adds support for Conexant CX20442-11 voice modem codec, suitable
for use by the ASoC board driver for Amstrad E3 (Delta) videophone. Related
sound card driver will follow.

This codec is an optional part of the Conexant SmartV three chip modem design.
As such, documentation for its proprietary digital audio interface is not
available. However, on Amstrad Delta board, thanks to Mark Underwood who
created an initial, omap-alsa based sound driver a few years ago[1], the codec
has been discovered to be accessible not only from the modem side, but also
over the OMAP McBSP based CPU DAI. Thus, the driver can be used by any sound
card that can access the codec DAI directly. The DAI configuration parameters
(sample rate and format, number of channels) has been selected out empirically
for best user experience.

The codec analogue interface consists of two pairs of analogue I/O pins:
speakerphone interface or telephone handset/headset interface. Furthermore, it
seams to provide two operation modes for speakerphone I/O: standard and
advanced, with automatic gain control and echo cancelation. Even if the codec
control interface is unknown and not available, all those interfaces and modes
can be selected over the modem chip using V.253 commands. The driver is able
to issue necessary commands over a suitable hw_write function if provided by a
sound card driver. Otherwise, the codec can be controlled over the modem from
userspace while inactive.

Even if nothig is known about the codec internal power management
capabilities, DAPM widgets has been used to model the codec audio map.
Automatically performed powering up/down of those virtual widgets results in
corresponding V.253 commands being issued.

Some driver features/oddities may be board specific, but I have no way to
verify that with any board other than Amstrad Delta.

[1] http://www.earth.li/pipermail/e3-hacking/2006-April/000481.html

Created and tested against linux-2.6.31-rc3.
Applies and works with linux-omap-2.6 commit
7c5cb7862d32cb344be7831d466535d5255e35ac as well.

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoMerge branch 'for-2.6.31' into for-2.6.32
Mark Brown [Thu, 23 Jul 2009 07:22:58 +0000 (08:22 +0100)]
Merge branch 'for-2.6.31' into for-2.6.32

15 years agoASoC: OMAP: Staticise pcm creation function of omap-pcm
Lopez Cruz, Misael [Thu, 23 Jul 2009 01:45:03 +0000 (20:45 -0500)]
ASoC: OMAP: Staticise pcm creation function of omap-pcm

Signed-off-by: Misael Lopez Cruz <x0052729@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: tlv320aic3x: Enable PLL when not bypassed
Chaithrika U S [Wed, 22 Jul 2009 11:45:04 +0000 (07:45 -0400)]
ASoC: tlv320aic3x: Enable PLL when not bypassed

PLL was not being enabled when it was not bypassed. This patch
enables the PLL when it is used. Additionally, it disables the PLL
when it is bypassed.

Without this patch, the audio on TI DM646x EVM and DM355 EVM
does not work properly. The bit clocks and the frame sync signals
from the codec are not correct and hence the playback/record are faster
than usual for most sample rates. The reason for this was that the PLL
was not enabled when it was not bypassed.

Tested on DM6467 EVM, playback tested on DM355 EVM.

Signed-off-by: Chaithrika U S <chaithrika@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: MAX9877: separate callback functions
Joonyoung Shim [Wed, 22 Jul 2009 05:09:08 +0000 (14:09 +0900)]
ASoC: MAX9877: separate callback functions

The callback function to control register was used by whole controls in
MAX9877 driver, but this causes using many if statement for double
register control or invert.
So, the callback function for double register control is separate
differently, and the code for invert is added in the callback function.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: MPC5200: Increase the delay time between resets
John Bonesio [Tue, 21 Jul 2009 20:15:40 +0000 (13:15 -0700)]
ASoC: MPC5200: Increase the delay time between resets

Reset was failing with the original udelay(50) between the code in
psc_ac97_cold_reset() and the call to psc_ac97_warm_reset(). Through testing
it was found that a delay of 1ms was necessary for the cold_reset code to
consistently complete successfully.

Signed-off-by: John Bonesio <bones@secretlab.ca>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix checkpatch issues in AD1938
Mark Brown [Sat, 18 Jul 2009 10:09:42 +0000 (11:09 +0100)]
ASoC: Fix checkpatch issues in AD1938

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix FLL reference clock division setup in WM8993
Mark Brown [Fri, 17 Jul 2009 21:13:01 +0000 (22:13 +0100)]
ASoC: Fix FLL reference clock division setup in WM8993

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Bodge around GCC 4.4.0 flow analysis bug in GCC 4.4.0
Mark Brown [Fri, 17 Jul 2009 20:53:49 +0000 (21:53 +0100)]
ASoC: Bodge around GCC 4.4.0 flow analysis bug in GCC 4.4.0

GCC 4.4.0 doesn't appear to be able to spot that we don't apply any FLL
configuration if the output frequency is zero.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: SDP3430: Add support for EXTMUTE using TWL GPIO6
Candelaria Villareal, Jorge [Wed, 15 Jul 2009 01:04:08 +0000 (20:04 -0500)]
ASoC: SDP3430: Add support for EXTMUTE using TWL GPIO6

Board sdp3430 has hardware support for EXTMUTE using TWL4030 GPIO6
line, controlled by register INTBR_PMBR1. Machine driver takes care
of enabling gpio line through i2c and codec driver manipulates the
line during headset ramp up/down sequence.

Signed-off-by: Jorge Eduardo Candelaria <x0107209@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Kill direct accesses to driver_data
Takashi Iwai [Fri, 17 Jul 2009 05:48:03 +0000 (07:48 +0200)]
ASoC: Kill direct accesses to driver_data

Replaced with dev_{get|set}_drvdata().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
15 years agoASoC: new ad1938 codec driver based on asoc
Barry Song [Thu, 16 Jul 2009 08:00:05 +0000 (16:00 +0800)]
ASoC: new ad1938 codec driver based on asoc

Signed-off-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: davinci: don't use clock names
Kevin Hilman [Wed, 15 Jul 2009 17:42:09 +0000 (10:42 -0700)]
ASoC: davinci: don't use clock names

clock name strings are no longer passed on platform_data.  Instead,
we rely entirely on struct device and clkdev to find the right clock.

Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: MAX9877: add MAX9877 amp driver
Joonyoung Shim [Wed, 15 Jul 2009 11:34:00 +0000 (20:34 +0900)]
ASoC: MAX9877: add MAX9877 amp driver

The MAX9877 combines a high-efficiency Class D audio power amplifier
with a stereo Class AB capacitor-less DirectDrive headphone amplifier.

The max9877_add_controls() is called to register the MAX9877 specific
controls on machine specific init() of the machine driver.

The datasheet for the MAX9877 can find at the following url:
http://datasheets.maxim-ic.com/en/ds/MAX9877.pdf

[Slight edit to sort the ALL_CODECS entries -- broonie.]

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: add SOC_DOUBLE_R_EXT_TLV control type
Joonyoung Shim [Wed, 15 Jul 2009 11:33:50 +0000 (20:33 +0900)]
ASoC: add SOC_DOUBLE_R_EXT_TLV control type

This is a macro for double controls with special callback function and
TLV. The SOC_DOUBLE_R_EXT_TLV needs two registers and one shift for
double controls.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: add SOC_DOUBLE_EXT_TLV control type
Joonyoung Shim [Wed, 15 Jul 2009 11:33:47 +0000 (20:33 +0900)]
ASoC: add SOC_DOUBLE_EXT_TLV control type

This is a macro for double controls with special callback function and
TLV. The SOC_DOUBLE_EXT_TLV needs one register and two shifts for double
controls.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Error out if we can't determine a suitable WM9081 sysclk
Mark Brown [Wed, 15 Jul 2009 09:36:51 +0000 (10:36 +0100)]
ASoC: Error out if we can't determine a suitable WM9081 sysclk

Due to the flexibility of the WM9081 FLL this should never happen
in a real system.

Reported-by: Jaswinder Singh Rajput <jaswinder@kernel.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix sample rate lookup in WM8993
Mark Brown [Wed, 15 Jul 2009 09:01:30 +0000 (10:01 +0100)]
ASoC: Fix sample rate lookup in WM8993

We need to use the best value we picked, not the last value we
looked at.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Blackfin I2S: fix resume handling
Cliff Cai [Tue, 14 Jul 2009 14:01:40 +0000 (10:01 -0400)]
ASoC: Blackfin I2S: fix resume handling

There is no need to manually start playback/capture ourselves as the PCM
driver will handle things for us.

Signed-off-by: Cliff Cai <cliff.cai@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Blackfin AC97: fix resume handling
Cliff Cai [Tue, 14 Jul 2009 14:01:39 +0000 (10:01 -0400)]
ASoC: Blackfin AC97: fix resume handling

There is no need to manually start playback/capture ourselves as the PCM
driver will handle things for us.

Signed-off-by: Cliff Cai <cliff.cai@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoMerge branch 'for-2.6.31' into for-2.6.32
Mark Brown [Mon, 13 Jul 2009 22:05:51 +0000 (23:05 +0100)]
Merge branch 'for-2.6.31' into for-2.6.32

15 years agoASoC: fixes multiple typos in comments, no functional change
Peter Meerwald [Mon, 13 Jul 2009 22:05:11 +0000 (23:05 +0100)]
ASoC: fixes multiple typos in comments, no functional change

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: spdif: set module licence to GPL
Kevin Hilman [Mon, 13 Jul 2009 21:50:40 +0000 (14:50 -0700)]
ASoC: spdif: set module licence to GPL

Without MODULE_LICENCE("GPL"), when built as a module it will fail
to load because it uses other GPL symbols from kernel.

Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: spdif codec: enable use by modules
Kevin Hilman [Mon, 13 Jul 2009 21:50:39 +0000 (14:50 -0700)]
ASoC: spdif codec: enable use by modules

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: fix checking for external widgets bug
Rongrong Cao [Fri, 10 Jul 2009 19:13:30 +0000 (20:13 +0100)]
ASoC: fix checking for external widgets bug

In SOC DAPM layer of SOUND subsystem, when add signal route (in the
function snd_soc_dapm_add_route() ), the original code has wrong logic
when dapm layer check each widget whether an external one.

Signed-off-by: Rongrong Cao <rrcao@ambarella.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Keep index within stac9766_reg[]
Roel Kluin [Mon, 13 Jul 2009 00:20:10 +0000 (02:20 +0200)]
ASoC: Keep index within stac9766_reg[]

Keep index within stac9766_reg[]

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: WM8510 has a single frame clock so needs symmetric rates
Mark Brown [Thu, 9 Jul 2009 10:28:07 +0000 (11:28 +0100)]
ASoC: WM8510 has a single frame clock so needs symmetric rates

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix NULL pointer dereference in __pxa2xx_pcm_hw_free
Daniel Mack [Wed, 8 Jul 2009 17:24:26 +0000 (19:24 +0200)]
ASoC: Fix NULL pointer dereference in __pxa2xx_pcm_hw_free

Check for rtd->params->drcmr != NULL before accessing it.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Add pop delay debug at end of DAPM sequencing
Mark Brown [Wed, 8 Jul 2009 17:54:57 +0000 (18:54 +0100)]
ASoC: Add pop delay debug at end of DAPM sequencing

Provide an interval after the end of DAPM sequencing so that we
can distinguish between a pop in the final step of the sequence
and a pop generated from some other source outside DAPM.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Configure WM8731 SYSCLK at startup on AT91SAM9G20-EK
Mark Brown [Wed, 8 Jul 2009 17:26:16 +0000 (18:26 +0100)]
ASoC: Configure WM8731 SYSCLK at startup on AT91SAM9G20-EK

The system clock is currently fixed by the driver and this avoids
the need for us to handle errors with enabling and disabling MCLK
(which was incorrect previously so this fixes bugs in error
handling).

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Disable microphone input for AT91SAM9G20-EK by default
Mark Brown [Wed, 8 Jul 2009 17:18:19 +0000 (18:18 +0100)]
ASoC: Disable microphone input for AT91SAM9G20-EK by default

As shipped the board does not have inputs but it is relatively
straightforward to modify the board to hook them up so support
is provided in the driver. When these modifications have not
been made enabling the microphone stage can cause problems.

Add an ifdef to disable this by default. Don't put it into
Kconfig since users will have to get their soldering irons
out to change things.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Use CODEC as clock master on AT91SAM9G20-EK
Mark Brown [Wed, 8 Jul 2009 17:05:51 +0000 (18:05 +0100)]
ASoC: Use CODEC as clock master on AT91SAM9G20-EK

This simplifies the driver by removing the need to manually
configure dividers within the CPU and improve audio performance
by ensuring that the optimal phase relationships between the
clocks in the system are maintained.

Note that currently this means that for playback to work the
Output Mixer HiFi switch must be enabled since otherwise CODEC
will not generate the DAC clock.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Limit WM8731 to symmetric rates
Mark Brown [Wed, 8 Jul 2009 16:48:12 +0000 (17:48 +0100)]
ASoC: Limit WM8731 to symmetric rates

While the hardware is capable of some limited asynmmetric modes the
driver does not currently support those modes so tell applications
that only symmetric rates are available.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Add WM8993 CODEC driver
Mark Brown [Fri, 5 Jun 2009 15:32:59 +0000 (16:32 +0100)]
ASoC: Add WM8993 CODEC driver

The WM8993 is a highly integrated ultra-low power hi-fi CODEC designed
for portable devices such as multimedia phones.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci I2S needs mach/asp.h
Mark Brown [Wed, 8 Jul 2009 15:54:51 +0000 (16:54 +0100)]
ASoC: DaVinci I2S needs mach/asp.h

Reported-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Correct WM8731 Mic Capture Switch control name
Mark Brown [Wed, 8 Jul 2009 16:05:43 +0000 (17:05 +0100)]
ASoC: Correct WM8731 Mic Capture Switch control name

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Add TLV information for WM8731
Mark Brown [Wed, 8 Jul 2009 15:53:12 +0000 (16:53 +0100)]
ASoC: Add TLV information for WM8731

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: pcm, don't play 1st sound period twice
Troy Kisky [Wed, 8 Jul 2009 00:36:06 +0000 (17:36 -0700)]
ASoC: DaVinci: pcm, don't play 1st sound period twice

Update the dma link with correct data as soon as
the master channel has copied it. Otherwise, the
1st period will play twice.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoMerge branch 'davinci' into for-2.6.32
Mark Brown [Tue, 7 Jul 2009 18:18:46 +0000 (19:18 +0100)]
Merge branch 'davinci' into for-2.6.32

Conflicts:
sound/soc/davinci/davinci-i2s.c

15 years agoMerge branch 'for-2.6.31' into for-2.6.32
Mark Brown [Mon, 6 Jul 2009 20:49:35 +0000 (21:49 +0100)]
Merge branch 'for-2.6.31' into for-2.6.32

15 years agoASoC: Remove unused AK4535 hardware read functionality
Mark Brown [Sun, 5 Jul 2009 16:28:41 +0000 (17:28 +0100)]
ASoC: Remove unused AK4535 hardware read functionality

Nothing uses it and the existing hw_read operation needs to be
refectored so it's easier to remove it rather than work with it.
Support can be re-added if the code requires volatile registers.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix leaks in WM8988 registration error handling
Mark Brown [Sun, 5 Jul 2009 15:29:39 +0000 (16:29 +0100)]
ASoC: Fix leaks in WM8988 registration error handling

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix WM8960 leaks on probe failure
Mark Brown [Sun, 5 Jul 2009 14:47:03 +0000 (15:47 +0100)]
ASoC: Fix WM8960 leaks on probe failure

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix leaks in WM8731 probe error handling
Mark Brown [Sun, 5 Jul 2009 14:18:01 +0000 (15:18 +0100)]
ASoC: Fix leaks in WM8731 probe error handling

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Add CODEC volatile register operation
Mark Brown [Sun, 5 Jul 2009 14:12:22 +0000 (15:12 +0100)]
ASoC: Add CODEC volatile register operation

Add a volatile_register() operation to the CODEC structure providing a
standard operation to query if a register is volatile. This will be used
to factor out the register cache I/O operations for the CODECs.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: i2s, add davinci_i2s_prepare and shutdown
Troy Kisky [Sun, 5 Jul 2009 02:29:59 +0000 (19:29 -0700)]
ASoC: DaVinci: i2s, add davinci_i2s_prepare and shutdown

If the codec is master then prepare should call
mcbsp_start, not trigger.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: i2s, fix mcbsp_word_length update
Troy Kisky [Sun, 5 Jul 2009 02:29:57 +0000 (19:29 -0700)]
ASoC: DaVinci: i2s, fix mcbsp_word_length update

Code previously just "ors" in this field without clearing
first. Fix, by never reading this register.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: i2s, minor cleanup of davinci_i2s_startup
Troy Kisky [Sun, 5 Jul 2009 02:29:56 +0000 (19:29 -0700)]
ASoC: DaVinci: i2s, minor cleanup of davinci_i2s_startup

Save a few lines of code.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: i2s, only start sample generator if needed
Troy Kisky [Sun, 5 Jul 2009 02:29:55 +0000 (19:29 -0700)]
ASoC: DaVinci: i2s, only start sample generator if needed

Only start sample generator if needed, and more
cleanup on davinci_mcbsp_start.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: i2s cleanup
Troy Kisky [Sun, 5 Jul 2009 02:29:54 +0000 (19:29 -0700)]
ASoC: DaVinci: i2s cleanup

Move variable declaration closer to use.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoc: DaVinci: i2s, minor cleanup
Troy Kisky [Sun, 5 Jul 2009 02:29:53 +0000 (19:29 -0700)]
ASoc: DaVinci: i2s, minor cleanup

Add davinci_mcbsp_dev as argument to davinci_mcbsp_start
and davinci_mcbsp_stop.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: i2s toggle clock to complete reset
Troy Kisky [Sun, 5 Jul 2009 02:29:52 +0000 (19:29 -0700)]
ASoC: DaVinci: i2s toggle clock to complete reset

Add toggle_clock function to complete i2s reset earlier.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: DaVinci: i2s, remove MOD_REG_BIT macro
Troy Kisky [Sun, 5 Jul 2009 02:29:51 +0000 (19:29 -0700)]
ASoC: DaVinci: i2s, remove MOD_REG_BIT macro

No functional changes. Rename variable w to something
more meaningful. Remove code obfuscating macro MOD_REG_BIT.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix wm8753 register cache size and initialization
Lars-Peter Clausen [Thu, 2 Jul 2009 23:04:16 +0000 (01:04 +0200)]
ASoC: Fix wm8753 register cache size and initialization

Register cache space was not being allocated for the final register,
causing bugs when it was used.  Allocate space for it.

Also ensure that the final register is displayed in sysfs.

[Commit message rewritten to document actual issue. -- broonie]

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: TWL4030: Add tristate callbacks for HiFi and Voice
Lopez Cruz, Misael [Fri, 3 Jul 2009 07:21:39 +0000 (02:21 -0500)]
ASoC: TWL4030: Add tristate callbacks for HiFi and Voice

Add "set_tristate" callbacks for HiFi and Voice DAIs.
Machine drivers can enable and disable tristate for each
DAI with "snd_soc_dai_set_tristate" function.

Signed-off-by: Misael Lopez Cruz <x0052729@ti.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Zoom2: Update twl4030_setup_data parameters
Candelaria Villareal, Jorge [Fri, 3 Jul 2009 00:04:07 +0000 (19:04 -0500)]
ASoC: Zoom2: Update twl4030_setup_data parameters

Add support for EXTMUTE in Zoom2 machine driver. This is necessary
to further reduce pop noise problem. Signal EXTMUTE is connected to
signal GPIO 153 in Zoom2 board.

In addition, change ramp delay value to 3 (218/161/109 ms). With
previous ramp delay value, pop noise was louder. With a longer value
the beep tone can be observed.

Signed-off-by: Jorge Eduardo Candelaria <x0107209@ti.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: add locking to mpc5200-psc-ac97 driver
Grant Likely [Thu, 2 Jul 2009 17:57:25 +0000 (11:57 -0600)]
ASoC: add locking to mpc5200-psc-ac97 driver

AC97 bus register read/write hooks need to provide locking, but the
mpc5200-psc-ac97 driver does not.  This patch adds a mutex around
the register access routines.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Jon Smirl <jonsmirl@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix mpc5200-psc-ac97 to ensure the data ready bit is cleared
Grant Likely [Thu, 2 Jul 2009 17:57:19 +0000 (11:57 -0600)]
ASoC: Fix mpc5200-psc-ac97 to ensure the data ready bit is cleared

When doing register reads, it is possible for there to be a stale
data ready bit set which will cause subsequent reads to return
prematurely with incorrect data.  This patch fixes the issues by
ensuring stale data is cleared before starting another transaction.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Jon Smirl <jonsmirl@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix register cache initialisation for WM8753
Mark Brown [Fri, 3 Jul 2009 09:33:39 +0000 (10:33 +0100)]
ASoC: Fix register cache initialisation for WM8753

The wrong register cache variable was being used to provide the size for
the memcpy(), resulting in a copy of only a void * of data.

Reported-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
15 years agoASoC: TWL4030: Add EXTMUTE to reduce pop-noise effect
Candelaria Villareal, Jorge [Thu, 2 Jul 2009 00:17:43 +0000 (19:17 -0500)]
ASoC: TWL4030: Add EXTMUTE to reduce pop-noise effect

According to TRM, an external FET controlled by a 1.8V output signal
can be used to reduce the pop-noise heard when the audio amplifier is
switched on. It is suggested that GPIO6 of TWL4030 be used, but any
other gpio can be used instead. This is indicated in machine driver
with the following twl4030_setup_data members:

-hs_extmute. Set to 1 if board has support for EXTMUTE.

-set_hs_extmute. Set to a callback funcion to control an external gpio
line. Set to NULL if MUTE[GPIO6] pin is used.

Codec driver takes care of enabling and disabling this output during
the headset pop attenuation sequence.

Also add a delay to let VMID settle in ramp up sequence.

Signed-off-by: Jorge Eduardo Candelaria <x0107209@ti.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoMerge branch 'for-2.6.31' into for-2.6.32
Mark Brown [Wed, 1 Jul 2009 20:45:47 +0000 (21:45 +0100)]
Merge branch 'for-2.6.31' into for-2.6.32

15 years agoASoC: Add WM8523 CODEC driver
Mark Brown [Wed, 1 Jul 2009 17:28:54 +0000 (18:28 +0100)]
ASoC: Add WM8523 CODEC driver

The WM8523 is a high performance stereo DAC with integral charge
pump providing 2Vrms line driver outputs using a single 3.3V power
supply rail.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Only disable pxa2xx-i2s clocks if we enabled them
Mark Brown [Wed, 1 Jul 2009 17:23:26 +0000 (18:23 +0100)]
ASoC: Only disable pxa2xx-i2s clocks if we enabled them

The clock API can't cope with unbalanced enables and disables and
we only enable in hw_params() but try to disable in shutdown.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Convert to dev_pm_ops
Mark Brown [Tue, 30 Jun 2009 18:05:15 +0000 (19:05 +0100)]
ASoC: Convert to dev_pm_ops

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: OMAP: fix OMAP1510 broken PCM pointer callback
Janusz Krzysztofik [Sat, 27 Jun 2009 22:21:05 +0000 (00:21 +0200)]
ASoC: OMAP: fix OMAP1510 broken PCM pointer callback

This patch tries to work around the problem of broken OMAP1510 PCM playback
pointer calculation by replacing DMA function call that incorrectly tries to
read the value form DMA hardware with a value computed locally from an
already maintained variable omap_runtime_data.period_index.

Tested on OMAP5910 based Amstrad Delta (E3) using work in progress ASoC
driver.

Based on linux-2.6-asoc.git v2.6.31-rc1.

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: remove BROKEN from Efika and pcm030 fabric drivers
Grant Likely [Sun, 28 Jun 2009 07:42:06 +0000 (01:42 -0600)]
ASoC: remove BROKEN from Efika and pcm030 fabric drivers

The needed spin_event_timeout() macro is now merged in from the
powerpc tree, so these drivers are no longer broken.  This reverts
commit 0c0e09e21a9e7bc6ca54e06ef3d497255ca26383 (ASoC: Mark MPC5200
AC97 as BROKEN until PowerPC merge issues are resolved)

Tested against 2.6.31-rc1.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Jon Smirl <jonsmirl@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix typo in MPC5200 PSC AC97 driver Kconfig
Grant Likely [Sun, 28 Jun 2009 07:41:52 +0000 (01:41 -0600)]
ASoC: Fix typo in MPC5200 PSC AC97 driver Kconfig

ALSA SoC drivers should be specify SND_SOC_AC97_BUS instead, not AC97_BUS.
Without SND_SOC_AC97_BUS defined, an AC97 device will not get correctly
registered on the AC97 bus, which prevents thinks like the WM9712
touchscreen driver from getting probed.

Tested against 2.6.31-rc1.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Jon Smirl <jonsmirl@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix WM8961 suspend function type
Mark Brown [Mon, 29 Jun 2009 15:29:06 +0000 (16:29 +0100)]
ASoC: Fix WM8961 suspend function type

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Fix widget powerdown on shutdown
Mark Brown [Fri, 26 Jun 2009 14:36:56 +0000 (15:36 +0100)]
ASoC: Fix widget powerdown on shutdown

We need to set the widget power state we want to implement.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: Remove word "Switch" from Handsfree switch name
Lopez Cruz, Misael [Thu, 25 Jun 2009 17:36:14 +0000 (12:36 -0500)]
ASoC: Remove word "Switch" from Handsfree switch name

SoC dapm adds the suffix "Switch" to SND_SOC_DAPM_SWITCH controls,
removing word "Switch" from HandsfreeL/HandsfreeR widget name
for avoiding to duplicate it.

Signed-off-by: Misael Lopez Cruz <x0052729@ti.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoASoC: txx9aclc: dynamically allocate dmaengine devname
Atsushi Nemoto [Thu, 25 Jun 2009 13:36:58 +0000 (22:36 +0900)]
ASoC: txx9aclc: dynamically allocate dmaengine devname

Use kasprintf to allocate temporary devname string instead of a
fixed size string.
This fixes "FIXME" introduced on removal of BUS_ID_SIZE.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoMerge branch 'for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Takashi Iwai [Thu, 25 Jun 2009 13:28:39 +0000 (15:28 +0200)]
Merge branch 'for-2.6.32' of git://git./linux/kernel/git/broonie/sound-2.6 into topic/asoc

15 years agoMerge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Takashi Iwai [Thu, 25 Jun 2009 13:28:14 +0000 (15:28 +0200)]
Merge branch 'for-2.6.31' of git://git./linux/kernel/git/broonie/sound-2.6 into fix/asoc

Conflicts:
MAINTAINERS

15 years agoMerge branch 'for-2.6.31' into for-2.6.32
Mark Brown [Thu, 25 Jun 2009 12:58:37 +0000 (13:58 +0100)]
Merge branch 'for-2.6.31' into for-2.6.32

15 years agoASoC: Add core suspend and resume callbacks to WM8961
Mark Brown [Thu, 25 Jun 2009 12:57:59 +0000 (13:57 +0100)]
ASoC: Add core suspend and resume callbacks to WM8961

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoMAINTAINERS: Add entry for twl4030 series soc codec driver
Peter Ujfalusi [Thu, 25 Jun 2009 10:26:09 +0000 (13:26 +0300)]
MAINTAINERS: Add entry for twl4030 series soc codec driver

New MAINTAINERS entry for twl4030 series soc codec driver
with Peter Ujfalusi as maintainer.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
15 years agoLinux 2.6.31-rc1
Linus Torvalds [Wed, 24 Jun 2009 23:25:37 +0000 (16:25 -0700)]
Linux 2.6.31-rc1

15 years agoRevert "PCI: use ACPI _CRS data by default"
Linus Torvalds [Wed, 24 Jun 2009 23:23:03 +0000 (16:23 -0700)]
Revert "PCI: use ACPI _CRS data by default"

This reverts commit 9e9f46c44e487af0a82eb61b624553e2f7118f5b.

Quoting from the commit message:

 "At this point, it seems to solve more problems than it causes, so let's
  try using it by default.  It's an easy revert if it ends up causing
  trouble."

And guess what? The _CRS code causes trouble.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
15 years agoMerge git://git.infradead.org/battery-2.6
Linus Torvalds [Wed, 24 Jun 2009 21:35:57 +0000 (14:35 -0700)]
Merge git://git.infradead.org/battery-2.6

* git://git.infradead.org/battery-2.6:
  da9030_battery: Fix race between event handler and monitor
  Add MAX17040 Fuel Gauge driver
  w1: ds2760_battery: add support for sleep mode feature
  w1: ds2760: add support for EEPROM read and write
  ds2760_battery: cleanups in ds2760_battery_probe()

15 years agoMerge branches 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro...
Linus Torvalds [Wed, 24 Jun 2009 21:17:14 +0000 (14:17 -0700)]
Merge branches 'for-linus' of git://git./linux/kernel/git/viro/{vfs-2.6,audit-current}

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
  another race fix in jfs_check_acl()
  Get "no acls for this inode" right, fix shmem breakage
  inline functions left without protection of ifdef (acl)

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current:
  audit: inode watches depend on CONFIG_AUDIT not CONFIG_AUDIT_SYSCALL

15 years agoanother race fix in jfs_check_acl()
Al Viro [Wed, 24 Jun 2009 21:02:42 +0000 (17:02 -0400)]
another race fix in jfs_check_acl()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
15 years agoGet "no acls for this inode" right, fix shmem breakage
Al Viro [Wed, 24 Jun 2009 20:58:48 +0000 (16:58 -0400)]
Get "no acls for this inode" right, fix shmem breakage

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
15 years agoaudit: inode watches depend on CONFIG_AUDIT not CONFIG_AUDIT_SYSCALL
Eric Paris [Wed, 24 Jun 2009 20:09:01 +0000 (16:09 -0400)]
audit: inode watches depend on CONFIG_AUDIT not CONFIG_AUDIT_SYSCALL

Even though one cannot make use of the audit watch code without
CONFIG_AUDIT_SYSCALL the spaghetti nature of the audit code means that
the audit rule filtering requires that it at least be compiled.

Thus build the audit_watch code when we build auditfilter like it was
before cfcad62c74abfef83762dc05a556d21bdf3980a2

Clearly this is a point of potential future cleanup..

Reported-by: Frans Pop <elendil@planet.nl>
Signed-off-by: Eric Paris <eparis@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
15 years agoinline functions left without protection of ifdef (acl)
Markus Trippelsdorf [Wed, 24 Jun 2009 20:28:52 +0000 (22:28 +0200)]
inline functions left without protection of ifdef (acl)

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
15 years agoMerge branch 'futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
Linus Torvalds [Wed, 24 Jun 2009 20:33:19 +0000 (13:33 -0700)]
Merge branch 'futexes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  futex: Fix the write access fault problem for real

15 years agofutex: Fix the write access fault problem for real
Thomas Gleixner [Thu, 11 Jun 2009 21:15:43 +0000 (23:15 +0200)]
futex: Fix the write access fault problem for real

commit 64d1304a64 (futex: setup writeable mapping for futex ops which
modify user space data) did address only half of the problem of write
access faults.

The patch was made on two wrong assumptions:

1) access_ok(VERIFY_WRITE,...) would actually check write access.

   On x86 it does _NOT_. It's a pure address range check.

2) a RW mapped region can not go away under us.

   That's wrong as well. Nobody can prevent another thread to call
   mprotect(PROT_READ) on that region where the futex resides. If that
   call hits between the get_user_pages_fast() verification and the
   actual write access in the atomic region we are toast again.

The solution is to not rely on access_ok and get_user() for any write
access related fault on private and shared futexes. Instead we need to
fault it in with verification of write access.

There is no generic non destructive write mechanism which would fault
the user page in trough a #PF, but as we already know that we will
fault we can as well call get_user_pages() directly and avoid the #PF
overhead.

If get_user_pages() returns -EFAULT we know that we can not fix it
anymore and need to bail out to user space.

Remove a bunch of confusing comments on this issue as well.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@kernel.org
15 years agoSLUB: Don't pass __GFP_FAIL for the initial allocation
Pekka Enberg [Wed, 24 Jun 2009 18:59:51 +0000 (21:59 +0300)]
SLUB: Don't pass __GFP_FAIL for the initial allocation

SLUB uses higher order allocations by default but falls back to small
orders under memory pressure. Make sure the GFP mask used in the initial
allocation doesn't include __GFP_NOFAIL.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
15 years agoDon't warn about order-1 allocations with __GFP_NOFAIL
Linus Torvalds [Wed, 24 Jun 2009 19:16:49 +0000 (12:16 -0700)]
Don't warn about order-1 allocations with __GFP_NOFAIL

Traditionally, we never failed small orders (even regardless of any
__GFP_NOFAIL flags), and slab will allocate order-1 allocations even for
small allocations that could fit in a single page (in order to avoid
excessive fragmentation).

Maybe we should remove this warning entirely, but before making that
judgement, at least limit it to bigger allocations.

Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
15 years agoMerge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
Linus Torvalds [Wed, 24 Jun 2009 17:47:38 +0000 (10:47 -0700)]
Merge branch 'upstream' of git://ftp.linux-mips.org/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
  Staging: octeon-ethernet: Fix race freeing transmit buffers.
  Staging: octeon-ethernet: Convert to use net_device_ops.
  MIPS: Cavium: Add CPU hotplugging code.
  MIPS: SMP: Allow suspend and hibernation if CPU hotplug is available
  MIPS: Add arch generic CPU hotplug
  DMA: txx9dmac: use dma_unmap_single if DMA_COMPL_{SRC,DEST}_UNMAP_SINGLE set
  MIPS: Sibyte: Fix build error if CONFIG_SERIAL_SB1250_DUART is undefined.
  MIPS: MIPSsim: Fix build error if MSC01E_INT_BASE is undefined.
  MIPS: Hibernation: Remove SMP TLB and cacheflushing code.
  MIPS: Build fix - include <linux/smp.h> into all smp_processor_id() users.
  MIPS: bug.h Build fix - include <linux/compiler.h>.