signature=5a82f07ebd192aa2a90fd4281b9e7e79,Advanced Linux Sound Architecture

Hello,

This is an automated email from the git hooks/update script, it was

generated because a ref change was pushed to the repository.

Updating branch, master,

via 1904ae448061e9edc6dcb26b441ab60c294c5e45 (commit)

via ba02305c749f7f653ace8dfb1bd2c4d997d30361 (commit)

via e2434bb8914d105a048fd03c27d9c907b64d9583 (commit)

via b5fbb8dcb0f5b9b3d17e32dedecc897d3c4d3796 (commit)

via 58e4bb52bf4338e76a4316386d7ee4aa0f5f833a (commit)

via c4c8277f33c17257c72e4d07d41dd8b7d31f77e6 (commit)

via b1e5fd7e111761fd0cd0ce8fa331b073f76db653 (commit)

via a147590cfa449a2bfd01d19e2e6a0211541aa3e4 (commit)

via 8b97735ac6947536a129c1dd0cc209f160ec2ab8 (commit)

via d3ba6a56b8203a7de6f8e1da935f375d3ffa0d9a (commit)

via 3ae179a4654e9ec7a1d0ef5699388c98b3510b01 (commit)

via 8b09bc3acfb65c13b20e50fe880be40ed3dbcbcd (commit)

via 4abd87c858bb67d1ca6c0c504ce1362c6a4a4e80 (commit)

via ace4e47cded41f3b98f18993489b94d635e17cf5 (commit)

via ab668194b7895a67169806de4087cf839c11dfb1 (commit)

via 1274fcf62929f4d080ae6547b7cb8c4ca3ac98b4 (commit)

via fba3d3e2c4155ee7cd846d067c46217adf01c8c0 (commit)

via 048cf0ffe334a7decf496250a01bfb0255d09eca (commit)

via f52bb06dd8f947bbfa12a2f9b870d5d7fb3637ff (commit)

via 503caca97b78a422e702c6afe10c46431c15f549 (commit)

via 8f40359b45bda376d54d675fe3871fd258c8e845 (commit)

via da887e73520df6c746a0e197c57986d1b494199a (commit)

via a75062423b3c65620e4fa5ca15cfcdd0378985e5 (commit)

via 036ce840398bac2feb40f84c4e5bb0d19c9598ad (commit)

via 968409f61268b72c6b3d37739a373a314c5e0340 (commit)

via 74ca9c7ba9fb0e4d9440f69cef0425f885c7b42b (commit)

via 63abdd6fc7a97b5a12a54003ee83cde6d81ffa40 (commit)

via 0f1787f82fde933f8537793768e6c04b5d240178 (commit)

via f4c039642d8b0ad200498a7791fdc35183ff2da3 (commit)

via 104b95f28874d5cfd119f6cef89e32a44befd5a8 (commit)

via f535703cb896fe4c91183bcd2f39a9591ce5a6bc (commit)

via fb432adf3557e6ee050ec8d9806542a0f263af7c (commit)

via 769e57e395aec47a8a908748f36d93d35e76e1bd (commit)

via d93036311850e2e8c574482eba8c268018cb0b98 (commit)

via e2aab70ead6a91421705b7c35b97b4419b5079fa (commit)

via f7465c9212724828127850914a906fe771106fdb (commit)

via 12ec2d89071cea4eef398dc01ed0d3ce4ca36fb4 (commit)

via 7eeec1e0f27eb7f465cb112916c24d8d4b28cc69 (commit)

via 197e1afd1853ad78e6bd44561158916cac46b8a0 (commit)

via 825da6e20eeeca7fdd5f2d140d331069d1f5e72a (commit)

via 71996be8b09d53c253690bffed00e90224c8a33f (commit)

via ad1f572429f60c8533c2f011178e3e0a9e341809 (commit)

via bb46294fc7778e57ee665f404a2d51548ff12b3d (commit)

via 21bac8d049491a9c72184d1b0cc3709c8228f82d (commit)

via dd79c014d6e7f75df819a6d2be355f9f3a1b1e62 (commit)

via e59163335a5fed4dfb80478a466ca3187ccdf7fc (commit)

via 714420ada8adb06b4a69bc08a8f4a4a166c6d4af (commit)

via 9c64e85d2186183bf2c9ccd3892d5a473ed90908 (commit)

via 04f7eb10b056cec80a8cc4596ef95eb4067002ec (commit)

via 29c4d096279422ee427604813a98f5f6ce780874 (commit)

via b19d7136cf40b772d0fb727f4c6e86dc67167057 (commit)

via 16ac407466b33b01b6b795ce3418bb87fe781a43 (commit)

via 900ca43ebdc5ac8e617dbd1a107bf21593b0c1a7 (commit)

via 8c35643385fe4a0a60331b17b2f814fc7c202d4d (commit)

via b1950903bb1d46d803758bfd1f04f582c182200e (commit)

via e4627969b07cbedc62a770efef9e7d10fa25e0d9 (commit)

via 2658bc197bdfa281873a88585d702da1b6f02d18 (commit)

via 68ae49a7829c88422d9ac3b4ea743480161717d8 (commit)

via 7e43125810a9ee2b3f4caa7e8aaaed86bf72a74e (commit)

via f080e02683cfd20c4e43e3450bfd0a9e1dc1e19a (commit)

via 17171072e1d057c61559056d2467cf89a58c1418 (commit)

via f17e98be77af44784466bcc2d00172e82b915569 (commit)

via c9f7df041f9a2b3a5816a9486cb414c3098c0d39 (commit)

via 44f8e0017b9c2aa6e63c0ea8664eae001f26a6ca (commit)

via eae735df41d5207730bbcb92118ca6ebc69582dc (commit)

via 37eae9db275685d77ebab4e07abbd1c1dea83e8c (commit)

via 170eadd1e5a33cd9f9581ac4202ae2ae52586abd (commit)

via b967733221bf6e1364babb647c012720ac84b7f3 (commit)

via 194baaa87edfdd9f5a1c4d5eef107dc5866dd232 (commit)

via 99e73728b679fedb31b00cb3bd5d44949ffdb23f (commit)

via e3ab1a4de585d0d7239c8e3cfadf0f67aafbb6f4 (commit)

via ac153992fe69ddec0d78aea4ca62cc567b502c71 (commit)

via decfa9a6de010aa639f50ef5d6c70c80b8de64ce (commit)

via c7d0dcb003bf1efae4fa9a1282df0c2d39161514 (commit)

via bf0a4743f7e025ab570f7b51d60ddbc22e108bec (commit)

via 6b224353627109ab9f31ef9ba82cbb6c522472c2 (commit)

via a088aacb051d5a584099bfa498a19e8e7a4d7229 (commit)

via df77ee95c1a8782e1b0e78c917e390ff20e6d150 (commit)

via 03f93d592e1ce0ee33c407b25d5029bbe0e18058 (commit)

via 76f2a6fa40dc8a5f38f8b6bd691dfc9b3d3b7f02 (commit)

via 6a786cd743e3d1fd093759eb8ed3fbbad5bcbce8 (commit)

via 934ba03567168d8bc7f469758544281a0362ac2e (commit)

via ff9aecb5b9127f95225cacd7c1b7fb92b797d27d (commit)

via aa4b8d86a7ee6f24ff30ddf4b422c314d810be11 (commit)

via 51d95579f4d86f7cc65ca4a29f2de75135949196 (commit)

via 767ab9aa714e970dcaadf158d730b48c88b8f1d6 (commit)

via 1487283b0822d6c207e09264a6d5a0c8bf592621 (commit)

via 19d34f23b097fbcf5395629f650e34c66536387d (commit)

via 7e521409c89cd24a7df041ebfa3a316e2de10830 (commit)

via dcba034be0641bd92c882dbd6a7c2a7e137baadc (commit)

via ad72dc672f6aa4002662ff4fa2fbe5de4d67a610 (commit)

via 4a7c91e23a87eaa9a68de5ab540a2e2bbf6eef79 (commit)

via 02720b549d74b24d28529efc1b434df33a5fffdc (commit)

via 0b2e98cb031635966f8f55ff58b8b0cc6fa3f3d8 (commit)

via 85fa73ac89efa68eb8c14604065e644da0d7316f (commit)

via aac8581e0b3be1065b314beae10ede4f3a815aaa (commit)

via 29504a5d5c2aa96e1adeebc6ff107547e89e1b6a (commit)

via 4baa02e503a82e42e8926b7a379e6a205ed5a134 (commit)

via 01fcaaa23b8e19219931333ce2993fd753424fb2 (commit)

via 97e7a45038053ceb37d4787ddef6a9873ca4d4a0 (commit)

via 47eebee752d7fb493b9f4000a282bef94c61e67d (commit)

via 47434f0b7f03c07c12f0fa915e0b52b4c6803113 (commit)

via c7b12c89fbfa5a13ca004baf91a1cd17ed56cb48 (commit)

via 3f5f1581d40bb9ae1ec0c859ed7624b1906e06dc (commit)

via ff4f18dd3d4a71072322707d8ed57db2831e0176 (commit)

via 4c84801540084d4e8b9fa3de9ce9f3670910b63a (commit)

from d03aee24a6627de642c4839a0014b22ea106ddd3 (commit)

- Log -----------------------------------------------------------------

commit 1904ae448061e9edc6dcb26b441ab60c294c5e45

Author: Richard Zhao

AuthorDate: Tue Nov 15 14:48:02 2011 +0800

Commit: Jaroslav Kysela

CommitDate: Fri Apr 27 12:46:52 2012 +0200

ARM: mxc: audmux-v2: add clk_prepare/clk_unprepare

It's for migrating to generic clk framework API.

Signed-off-by: Richard Zhao

Signed-off-by: Sascha Hauer

Signed-off-by: Jaroslav Kysela

commit ba02305c749f7f653ace8dfb1bd2c4d997d30361

Author: Viresh Kumar

AuthorDate: Wed Feb 1 16:12:19 2012 +0530

Commit: Jaroslav Kysela

CommitDate: Fri Apr 27 12:46:52 2012 +0200

dmaengine: Pass dma_slave_config .device_fc = NULL for all existing users

.device_fc is added in struct dma_slave_config recently. All user drivers, which

want DMA to be the flow controller must pass this field as false. As earlier

driver don't look to use this feature, mark it false for now.

Signed-off-by: Viresh Kumar

Acked-by: Linus Walleij

Signed-off-by: Vinod Koul

Signed-off-by: Jaroslav Kysela

commit e2434bb8914d105a048fd03c27d9c907b64d9583

Author: Fabio Estevam

AuthorDate: Thu Apr 5 10:57:51 2012 -0300

Commit: Jaroslav Kysela

CommitDate: Fri Apr 27 12:46:52 2012 +0200

ASoC: imx-audmux: Check for NULL pointer

Check for NULL pointer before accessing it.

Signed-off-by: Fabio Estevam

Signed-off-by: Mark Brown

Signed-off-by: Jaroslav Kysela

commit b5fbb8dcb0f5b9b3d17e32dedecc897d3c4d3796

Author: Huang Shijie

AuthorDate: Thu Feb 16 14:17:32 2012 +0800

Commit: Jaroslav Kysela

CommitDate: Fri Apr 27 12:46:35 2012 +0200

mxs-dma : move the mxs dma.h to a more common place

Move the header to a more common place.

The mxs dma engine is not only used in mx23/mx28, but also used

in mx50/mx6q. It will also be used in the future chips.

Rename it to mxs-dma.h, and create a new folder include/linux/fsl/ to

store the Freescale's header files.

change mxs-dma driver, mxs-mmc driver, gpmi-nand driver, mxs-saif driver

to the new header file.

Acked-by: Shawn Guo

Acked-by: Mark Brown

Signed-off-by: Huang Shijie

Acked-by: Vinod Koul

Acked-by: Chris Ball

Signed-off-by: David Woodhouse

Signed-off-by: Jaroslav Kysela

commit 58e4bb52bf4338e76a4316386d7ee4aa0f5f833a

Author: Alexandre Bounine

AuthorDate: Thu Mar 8 16:11:18 2012 -0500

Commit: Jaroslav Kysela

CommitDate: Fri Apr 27 11:11:52 2012 +0200

dmaengine/dma_slave: introduce inline wrappers

Add inline wrappers for device_prep_slave_sg() and device_prep_dma_cyclic()

interfaces to hide new parameter from current users of affected interfaces.

Convert current users to use new wrappers instead of direct calls.

Suggested by Russell King [https://lkml.org/lkml/2012/2/3/269].

Signed-off-by: Alexandre Bounine

Signed-off-by: Vinod Koul

Signed-off-by: Jaroslav Kysela

commit c4c8277f33c17257c72e4d07d41dd8b7d31f77e6

Author: Takashi Iwai

AuthorDate: Thu Apr 19 15:18:08 2012 +0200

Commit: Jaroslav Kysela

CommitDate: Fri Apr 27 11:06:49 2012 +0200

ALSA: hda/conexant - Set up the missing docking-station pins

ThinkPad 410,420,510,520 and X201 with cx50585 & co chips have the

docking-station ports, but BIOS doesn't initialize for these pins.

Thus, like the former X200, we need to set up the pins manually in the

driver.

The odd part is that the same PCI SSID is used for X200 and T400, thus

we need to prepare individual fixup tables for cx5051 and others.

Bugzilla entries:

https://bugzilla.redhat.com/show_bug.cgi?id=808559

https://bugzilla.redhat.com/show_bug.cgi?id=806217

https://bugzilla.redhat.com/show_bug.cgi?id=810697

Reported-by: Josh Boyer

Reported-by: Jens Taprogge

Tested-by: Jens Taprogge

Cc:

Signed-off-by: Takashi Iwai

Signed-off-by: Jaroslav Kysela

commit b1e5fd7e111761fd0cd0ce8fa331b073f76db653

Author: Mark Brown

AuthorDate: Thu Apr 12 19:47:11 2012 +0100

Commit: Mark Brown

CommitDate: Mon Apr 23 12:55:52 2012 +0100

ASoC: wm8994: Improve sequencing of AIF channel enables

This ensures a clean startup of the channels, without this change some

use cases could result in issues in a small proportion of cases.

Signed-off-by: Mark Brown

Cc: stable@...

commit a147590cfa449a2bfd01d19e2e6a0211541aa3e4

Author: David Henningsson

AuthorDate: Fri Apr 20 10:01:46 2012 +0200

Commit: Takashi Iwai

CommitDate: Fri Apr 20 10:08:08 2012 +0200

ALSA: HDA: Add external mic quirk for Asus Zenbook UX31E

According to the reporter, external mic starts to work if the

laptop-dmic model is used. According to BIOS pin config, all

pins are consistent with the alc269vb_laptop_dmic fixup, except

for the external mic, which is not present.

Cc: stable@...

BugLink: https://bugs.launchpad.net/bugs/950490

Signed-off-by: David Henningsson

Signed-off-by: Takashi Iwai

commit 8b97735ac6947536a129c1dd0cc209f160ec2ab8

Author: Takashi Iwai

AuthorDate: Thu Apr 19 15:15:25 2012 +0200

Commit: Takashi Iwai

CommitDate: Thu Apr 19 15:15:25 2012 +0200

ALSA: hda/conexant - Don't set HP pin-control bit unconditionally

Some output pins on Conexant chips have no HP control bit, but the

auto-parser initializes these pins unconditionally with PIN_HP.

Check the pin-capability and avoid the HP bit if not supported.

Cc:

Signed-off-by: Takashi Iwai

commit d3ba6a56b8203a7de6f8e1da935f375d3ffa0d9a

Author: Kuninori Morimoto

AuthorDate: Thu Apr 19 00:00:27 2012 -0700

Commit: Takashi Iwai

CommitDate: Thu Apr 19 13:51:54 2012 +0200

ALSA: workaround: change the timing of alsa_sound_last_init()

Current alsa_sound_last_init() was called as __initcall().

So, on current ALSA, only devices that had been properly

registered at this point were shown.

So, it will show "No soundcards found" if driver requests

probe deferment. it's often misleading.

This patch delays the timing of alsa_sound_last_init()

as workaround.

Signed-off-by: Kuninori Morimoto

Reviwed-by: Mark Brown

Signed-off-by: Takashi Iwai

commit 3ae179a4654e9ec7a1d0ef5699388c98b3510b01

Author: Takashi Iwai

AuthorDate: Thu Apr 19 12:04:03 2012 +0200

Commit: Takashi Iwai

CommitDate: Thu Apr 19 12:04:03 2012 +0200

ALSA: hda/sigmatel - Fix inverted mute LED

While refactoring the mute-LED handling for HP laptops, I messed up

the polarity check in a wrong way. The red (or the mute-LED if any)

should appear in the muted state, corresponding to GPIO on.

Reported-by: Mikko Vinni

Signed-off-by: Takashi Iwai

commit 8b09bc3acfb65c13b20e50fe880be40ed3dbcbcd

Author: Takashi Iwai

AuthorDate: Thu Apr 19 07:33:27 2012 +0200

Commit: Takashi Iwai

CommitDate: Thu Apr 19 07:33:27 2012 +0200

ALSA: hda/realtek - Fix regression on Quanta/Gericom KN1

Through the transition to the auto-parser, the support for

Quanta/Gericom KN1 got broken. There are two problems behind it:

- This machine doesn't like the default COEF setup for ALC260 we take

now as default

- BIOS doesn't set the pins correctly at all; especially the machine

uses only the pin 0x0f for both headphone and speaker

This patch adds the fixup as a workaround for these issues.

Reported-and-tested-by: Uros Vampl

Signed-off-by: Takashi Iwai

commit 4abd87c858bb67d1ca6c0c504ce1362c6a4a4e80

Author: Paul Mundt

AuthorDate: Tue Apr 17 19:13:04 2012 -0700

Commit: Mark Brown

CommitDate: Wed Apr 18 09:16:13 2012 +0100

ASoC: fsi: update for dmaengine prep_slave_sg fallout.

Leading up to the ->device_prep_slave_sg change in

185ecb5f4fd43911c35956d4cc7d94a1da30417f 'dmaengine: add context

parameter to prep_slave_sg and prep_dma_cyclic' a generic wrapper was

added in place to guard against the API change, though the fsi driver

wasn't updated in the process (presumably its dmaengine support hadn't

been merged yet at the time). This trivially switches over to the new

wrapper and gets it building again.

Signed-off-by: Paul Mundt

Acked-by: Kuninori Morimoto

Signed-off-by: Mark Brown

commit ace4e47cded41f3b98f18993489b94d635e17cf5

Author: Randy Dunlap

AuthorDate: Tue Apr 17 17:03:42 2012 -0700

Commit: Takashi Iwai

CommitDate: Wed Apr 18 07:56:15 2012 +0200

ALSA: fix core/vmaster.c kernel-doc warning

Fix kernel-doc warning in sound/core/vmaster.c:

Warning(sound/core/vmaster.c:429): No description found for parameter 'private_data'

Signed-off-by: Randy Dunlap

Signed-off-by: Takashi Iwai

commit ab668194b7895a67169806de4087cf839c11dfb1

Author: Liam Girdwood

AuthorDate: Tue Apr 17 18:00:11 2012 +0100

Commit: Mark Brown

CommitDate: Tue Apr 17 20:52:19 2012 +0100

ASoC: core: Fix card RTD count for deferred probe.

Currently we increment the number of RTD's per card during the DAI link

bind. This can cause an incorrect RTD count when we cannot find a component

and defer the probe (and hence perform the DAI link bind for the card again).

Fix the count so that it is cleared before every card registration

and bind attempt.

Signed-off-by: Liam Girdwood

Signed-off-by: Mark Brown

commit 1274fcf62929f4d080ae6547b7cb8c4ca3ac98b4

Author: Peter Ujfalusi

AuthorDate: Tue Apr 3 11:56:51 2012 +0300

Commit: Samuel Ortiz

CommitDate: Mon Apr 16 16:45:34 2012 +0200

mfd: Convert twl6040 to i2c driver, and separate it from twl core

Complete the separation of the twl6040 from the twl core since

it is a separate chip, not part of the twl6030 PMIC.

Make the needed Kconfig changes for the depending drivers at the

same time to avoid breaking the kernel build (vibra, ASoC components).

Signed-off-by: Peter Ujfalusi

Reviewed-by: Mark Brown

Acked-by: Tony Lindgren

Acked-by: Dmitry Torokhov

Signed-off-by: Samuel Ortiz

commit fba3d3e2c4155ee7cd846d067c46217adf01c8c0

Author: Jesper Juhl

AuthorDate: Thu Apr 12 21:54:34 2012 +0200

Commit: Mark Brown

CommitDate: Fri Apr 13 10:01:38 2012 +0100

ASoC: cs42l73: don't use negative array index

If cs42l73_get_mclkx_coeff() returns < 0 (which it can) in

sound/soc/codecs/cs42l73.c::cs42l73_set_mclk(), then we'll be using

the (negative) return value as array index on the very next line of

code - that's bad.

Catch the negative return value and propagate it to the caller (which

checks for it) and things are a bit more sane :-)

Signed-off-by: Jesper Juhl

Signed-off-by: Mark Brown

commit 048cf0ffe334a7decf496250a01bfb0255d09eca

Author: Jesper Juhl

AuthorDate: Thu Apr 12 22:11:25 2012 +0200

Commit: Takashi Iwai

CommitDate: Fri Apr 13 07:35:57 2012 +0200

ALSA: hda/realtek - Fix mem leak (and rid us of trailing whitespace).

In sound/pci/hda/patch_realtek.c::alc_auto_fill_dac_nids(), in the

'for (;;)' loop, if the 'badness' value returned from

fill_and_eval_dacs() is negative, then we'll return from the function

without freeing the memory we allocated for 'best_cfg', thus leaking.

Fix the leak by kfree()'ing the memory when badness is negative.

While I was there I also noticed some trailing whitespace in the

function that I removed (along with all other trailing whitespace in

the file) - it didn't seem worth-while to do that as two patches, so I

hope it's OK that I just did it all as one patch.

Signed-off-by: Jesper Juhl

Signed-off-by: Takashi Iwai

commit f52bb06dd8f947bbfa12a2f9b870d5d7fb3637ff

Author: Mark Brown

AuthorDate: Thu Apr 12 17:29:36 2012 +0100

Commit: Mark Brown

CommitDate: Thu Apr 12 19:36:52 2012 +0100

ASoC: dapm: Ensure power gets managed for line widgets

Line widgets had not been included in either the power up or power down

sequences so if a widget had an event associated with it that event would

never be run. Fix this minimally by adding them to the sequences, we

should probably be doing away with the specific widget types as they all

have the same priority anyway.

Signed-off-by: Mark Brown

Cc: stable@...

commit 503caca97b78a422e702c6afe10c46431c15f549

Author: Josh Boyer

AuthorDate: Thu Apr 12 13:55:36 2012 -0400

Commit: Takashi Iwai

CommitDate: Thu Apr 12 20:00:48 2012 +0200

ALSA: hda/realtek - Add quirk for Mac Pro 5,1 machines

A user reported that setting model=imac24 used to allow sound to work on their

Mac Pro 5,1 machine. Commit 5671087ffa "Move ALC885 macpro and imac24 models

to auto-parser" removed this model option. All Mac machines are now explicitly

handled with a quirk and the auto-parser. This adds a quirk for the device

found on the Mac Pro 5,1 machines.

This (partially) fixes https://bugzilla.redhat.com/show_bug.cgi?id=808559

[sorted the new entry in the ID number order by tiwai]

Reported-by: Gabriel Somlo

Signed-off-by: Josh Boyer

Signed-off-by: Takashi Iwai

commit 8f40359b45bda376d54d675fe3871fd258c8e845

Author: Takashi Iwai

AuthorDate: Thu Apr 12 08:00:19 2012 +0200

Commit: Takashi Iwai

CommitDate: Thu Apr 12 19:57:18 2012 +0200

ALSA: hda/realtek - Add a fixup entry for Acer Aspire 8940G

It's compatible with 8930G.

Using the same fixup gives the proper 5.1 sound back.

Reported-and-tested-by: Dany Martineau

Cc: [v3.3+]

Signed-off-by: Takashi Iwai

commit da887e73520df6c746a0e197c57986d1b494199a

Author: Takashi Iwai

AuthorDate: Wed Apr 11 17:18:12 2012 +0200

Commit: Takashi Iwai

CommitDate: Thu Apr 12 07:58:19 2012 +0200

ALSA: hda/realtek - Fix GPIO1 setup for Acer Aspire 4930 & co

Add GPIO1 setup explicitly for Acer Aspire 493x & co.

This could be set by alc_auto_init_amp(), but it's safer to set it

more explicitly in the fixup table.

Signed-off-by: Takashi Iwai

commit a75062423b3c65620e4fa5ca15cfcdd0378985e5

Author: Takashi Iwai

AuthorDate: Wed Apr 11 14:03:41 2012 +0200

Commit: Takashi Iwai

CommitDate: Wed Apr 11 14:10:57 2012 +0200

ALSA: hda/realtek - Add a few ALC882 model strings back

Since there are still many Acer models that might not be covered by

the current fixup table, let's add back a few typical model names so

that user can test the fixup without recompiling.

Signed-off-by: Takashi Iwai

commit 036ce840398bac2feb40f84c4e5bb0d19c9598ad

Author: Fengguang Wu

AuthorDate: Tue Apr 10 17:00:35 2012 +0800

Commit: Takashi Iwai

CommitDate: Tue Apr 10 14:53:55 2012 +0200

ALSA: hda - hide HDMI/ELD printks unless snd.debug=2

Also remove two warnings when CONFIG_SND_DEBUG is not set:

sound/pci/hda/patch_hdmi.c: In function âhdmi_intrinsic_eventâ:

sound/pci/hda/patch_hdmi.c:761:6: warning: unused variable âeldvâ [-Wunused-variable]

sound/pci/hda/patch_hdmi.c:760:6: warning: unused variable âpdâ [-Wunused-variable]

Signed-off-by: Wu Fengguang

Signed-off-by: Takashi Iwai

commit 968409f61268b72c6b3d37739a373a314c5e0340

Author: Julia Lawall

AuthorDate: Mon Apr 9 10:16:35 2012 +0200

Commit: Takashi Iwai

CommitDate: Tue Apr 10 08:42:07 2012 +0200

ALSA: sound/isa/sscape.c: add missing resource-release code

At the point of this error-handling code, both regions and the dma have

been allocated, so free it as done in previous and subsequent

error-handling code.

Signed-off-by: Julia Lawall

Signed-off-by: Takashi Iwai

commit 74ca9c7ba9fb0e4d9440f69cef0425f885c7b42b

Author: Hans Verkuil

AuthorDate: Sun Apr 1 15:24:48 2012 -0300

Commit: Mauro Carvalho Chehab

CommitDate: Mon Apr 9 10:12:54 2012 -0300

[media] Drivers/media/radio: Fix build error

On Sunday, April 01, 2012 21:09:34 Tracey Dent wrote:

> radio-maxiradio depends on SND_FM801_TEA575X_BOOL to build or will

> result in an build error such as:

>

> Kernel: arch/x86/boot/bzImage is ready (#1)

> ERROR: "snd_tea575x_init" [drivers/media/radio/radio-maxiradio.ko] undefined!

> ERROR: "snd_tea575x_exit" [drivers/media/radio/radio-maxiradio.ko] undefined!

> WARNING: modpost: Found 6 section mismatch(es).

> To see full details build your kernel with:

> 'make CONFIG_DEBUG_SECTION_MISMATCH=y'

> make[1]: *** [__modpost] Error 1

> make: *** [modules] Error 2

>

> Select CONFIG_SND_TEA575X to fixes problem and enable

> the driver to be built as desired.

>

> v2:

> instead of selecting CONFIG_SND_FM801_TEA575X_BOOL, select

> CONFIG_SND_TEA575X, which in turns selects CONFIG_SND_FM801_TEA575X_BOOL

> and any other dependencies for it to build.

No, this is the correct patch:

RADIO_MAXIRADIO should be treated just like RADIO_SF16FMR2, I just didn't

realize at the time that it had to be added as a SND_TEA575X dependency.

Signed-off-by: Hans Verkuil

Tested-by: Shea Levy

Acked-by: Mauro Carvalho Chehab

Signed-off-by: Mauro Carvalho Chehab

commit 63abdd6fc7a97b5a12a54003ee83cde6d81ffa40

Author: Michael Karcher

AuthorDate: Fri Apr 6 15:34:20 2012 +0200

Commit: Takashi Iwai

CommitDate: Sat Apr 7 12:25:56 2012 +0200

ALSA: hda - clean up CX20549 test mixer setup

name pins consistently (MIC1/LINE1/HP-OUT/CD) on all controls

affecting those pins.

remove duplicate SET_AMP_GAIN_MUTE to 0x17/index 0 and 0x17/index 1

really select MIC1, not Mixer out for recording

"Mixer out" for recording is not a "pin", adjust comment

Signed-off-by: Michael Karcher

Signed-off-by: Takashi Iwai

commit 0f1787f82fde933f8537793768e6c04b5d240178

Author: Michael Karcher

AuthorDate: Fri Apr 6 15:34:19 2012 +0200

Commit: Takashi Iwai

CommitDate: Sat Apr 7 12:25:47 2012 +0200

ALSA: hda - CX20549 doesn't need pin_amp_workaround.

CX20549 (ctx5045) doesn't accept data on index 1 for output pins,

as shown in the following hda-var transaction:

$ hda-verb /dev/snd/hwC0D0 0x10 set_amp_gain 0xb126

nid = 0x10, verb = 0x300, param = 0xb126

value = 0x0

$ hda-verb /dev/snd/hwC0D0 0x10 get_amp_gain 0x8001

nid = 0x10, verb = 0xb00, param = 0x8001

value = 0x0

Signed-off-by: Michael Karcher

Signed-off-by: Takashi Iwai

commit f4c039642d8b0ad200498a7791fdc35183ff2da3

Author: Michael Karcher

AuthorDate: Fri Apr 6 15:34:18 2012 +0200

Commit: Takashi Iwai

CommitDate: Sat Apr 7 12:25:40 2012 +0200

ALSA: hda - Remove CD control from model=benq for CX20549

The ID used for detection of the BenQ R55E actually identifies the

Quanta TW3 ODM design, which is also used for the Gigabyte W551 laptop

series. Schematics on the internet clearly indicate that the "Port C"

(analog input connected to record source #4 and mixer input #4) is

unconnected.

Playing an audio CD through analog playback (using cdplay from cdtools)

produces no sound, even with the mixer input labelled "CD" enabled, and

the volume control in the CD drive set to maximum. This indicates the

connection is really not present.

Signed-off-by: Michael Karcher

Signed-off-by: Takashi Iwai

commit 104b95f28874d5cfd119f6cef89e32a44befd5a8

Author: Michael Karcher

AuthorDate: Fri Apr 6 15:34:17 2012 +0200

Commit: Takashi Iwai

CommitDate: Sat Apr 7 12:25:34 2012 +0200

ALSA: hda - fix record volume controls of CX20459 ("Venice")

The "input converter" widget of the CX20459 has only one input amplifier,

expose that one as "Capture Volume/Capture Switch". The actual record

source selection is already exposed through the separately installed

input mux.

Signed-off-by: Michael Karcher

Signed-off-by: Takashi Iwai

commit f535703cb896fe4c91183bcd2f39a9591ce5a6bc

Author: Michael Karcher

AuthorDate: Fri Apr 6 15:34:16 2012 +0200

Commit: Takashi Iwai

CommitDate: Sat Apr 7 12:25:25 2012 +0200

ALSA: hda - Rename capture sources of CX20549 to match common conventions

This includes renaming "Line In" to line, also in the mixer settings.

Signed-off-by: Michael Karcher

Signed-off-by: Takashi Iwai

commit fb432adf3557e6ee050ec8d9806542a0f263af7c

Author: Michael Karcher

AuthorDate: Fri Apr 6 15:34:15 2012 +0200

Commit: Takashi Iwai

CommitDate: Sat Apr 7 12:25:02 2012 +0200

ALSA: hda - Fix proc output for ADC amp values of CX20549

The CX20549 has only one single input amp on it's input converter

widget. Fix printing of values in the codec file in /proc/asound.

Signed-off-by: Michael Karcher

Signed-off-by: Takashi Iwai

commit 769e57e395aec47a8a908748f36d93d35e76e1bd

Author: Stephen Warren

AuthorDate: Thu Apr 5 23:11:16 2012 -0600

Commit: Mark Brown

CommitDate: Fri Apr 6 12:28:49 2012 +0100

ASoC: tegra: fix i2s compilation when !CONFIG_DEBUG_FS

Commit d4a2eca "ASoC: Tegra I2S: Remove dependency on pdev->id" changed

the prototype of tegra_i2s_debug_add, but didn't update the dummy inline

used when !CONFIG_DEBUG_FS. Fix that.

Signed-off-by: Stephen Warren

Signed-off-by: Mark Brown

Cc: # 3.3

commit d93036311850e2e8c574482eba8c268018cb0b98

Author: Stephen Boyd

AuthorDate: Thu Apr 5 14:25:11 2012 -0700

Commit: Linus Torvalds

CommitDate: Thu Apr 5 15:25:50 2012 -0700

simple_open: automatically convert to simple_open()

Many users of debugfs copy the implementation of default_open() when

they want to support a custom read/write function op. This leads to a

proliferation of the default_open() implementation across the entire

tree.

Now that the common implementation has been consolidated into libfs we

can replace all the users of this function with simple_open().

This replacement was done with the following semantic patch:

@ open @

identifier open_f != simple_open;

identifier i, f;

@@

-int open_f(struct inode *i, struct file *f)

-{

(

-if (i->i_private)

-f->private_data = i->i_private;

|

-f->private_data = i->i_private;

)

-return 0;

-}

@ has_open depends on open @

identifier fops;

identifier open.open_f;

@@

struct file_operations fops = {

...

-.open = open_f,

+.open = simple_open,

...

};

[akpm@...: checkpatch fixes]

Signed-off-by: Stephen Boyd

Cc: Greg Kroah-Hartman

Cc: Al Viro

Cc: Julia Lawall

Acked-by: Ingo Molnar

Signed-off-by: Andrew Morton

Signed-off-by: Linus Torvalds

commit e2aab70ead6a91421705b7c35b97b4419b5079fa

Author: Stephen Warren

AuthorDate: Thu Apr 5 12:28:01 2012 -0600

Commit: Mark Brown

CommitDate: Thu Apr 5 21:55:49 2012 +0100

ASoC: set idle_bias_off=1 for all platform DAPM contexts

The ASoC core currently defaults to using STANDBY rather than OFF for

idle ASoC platform devices, which causes a permanent pm_runtime_get() on

them. This keeps the device active unnecessarily. This can be especially

problematic when the ASoC platform device and DAI device are the same

device.

The distinction between OFF and STANDBY is likely not relevant for ASoC

platform drivers, since they aren't analog devices. So, solve this issue

by hard-coding idle_bias_off = 1 for all ASoC platform devices. If this

turns out to be a problem, this value could be sourced from the

snd_soc_platform_driver, similarly to soc_probe_codec().

Note: Prior to this change, this caused a large (10) runtime_active count

for the Tegra I2S controller even when not in use, and a leak in that

value as streams were started and stopped. This change probably hides a

bug.

Signed-off-by: Stephen Warren

Signed-off-by: Mark Brown

commit f7465c9212724828127850914a906fe771106fdb

Author: Fabio Estevam

AuthorDate: Thu Apr 5 09:45:51 2012 -0300

Commit: Mark Brown

CommitDate: Thu Apr 5 15:23:17 2012 +0100

ASoC: imx-audmux: Fix ssi port numbers in sysfs

Doing a 'cat /sys/kernel/debug/audmux/ssi7' causes the following oops to be printed by the kernel:

Uhandled fault: external abort on non-linefetch (0x008) at 0xf53b003c

Internal error: : 8 [#1] PREEMPT

Modules linked in:

CPU: 0 Not tainted (3.3.0-00033-gecc726e-dirty #307)

PC is at audmux_read_file+0x68/0x2f4

LR is at clk_enable+0x3c/0x48

pc : [] lr : [] psr: a0000013

sp : c3ad3f38 ip : c30a4000 fp : 00000003

r10: 00001000 r9 : be83fb00 r8 : c3ad3f80

r7 : c3ad3f80 r6 : 00000007 r5 : 00031010 r4 : c30a5000

r3 : f53b0000 r2 : 0000003c r1 : 380fa100 r0 : c068dda0

Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user

Control: 0005317f Table: 83034000 DAC: 00000015

Process cat (pid: 1042, stack limit = 0xc3ad2270)

Stack: (0xc3ad3f38 to 0xc3ad4000)

3f20: c3139180 00000000

3f40: c3bc6500 00001000 be83fb00 c3ad3f80 00001000 c3ad2000 00000000 c0095f3c

3f60: 00000003 c3bc6508 c3bc6500 be83fb00 00000000 00000000 00001000 c0096010

3f80: 00000000 00000000 b6fe2050 00000000 00001000 be83fb00 00000003 00000003

3fa0: c000eb88 c000e9e0 00001000 be83fb00 00000003 be83fb00 00001000 00000000

3fc0: 00001000 be83fb00 00000003 00000003 00000001 00000001 00000000 00000003

3fe0: 000bec8c be83fae0 0000f808 b6ea8d5c 60000010 00000003 7dff7ede 749bedf1

[] (audmux_read_file+0x68/0x2f4) from [] (vfs_read+0xb0/0x144)

[] (vfs_read+0xb0/0x144) from [] (sys_read+0x40/0x70)

[] (sys_read+0x40/0x70) from [] (ret_fast_syscall+0x0/0x2c)

Code: e1a02186 e2822004 e3500000 e7935186 (e7937002)

---[ end trace 4d046e31309023de ]---

Fix the ssi port numbers in sysfs to fix this problem.

Reported-by: Joan Carles

Signed-off-by: Fabio Estevam

Signed-off-by: Mark Brown

commit 12ec2d89071cea4eef398dc01ed0d3ce4ca36fb4

Author: Kuninori Morimoto

AuthorDate: Wed Apr 4 23:28:01 2012 -0700

Commit: Mark Brown

CommitDate: Thu Apr 5 11:08:45 2012 +0100

ASoC: ak4642: fixup: mute needs +1 step

ak4642 out_tlv is +12.0dB to -115.0 dB, and it supports mute.

But current settings didn't care +1 step for mute.

This patch adds it

Signed-off-by: Kuninori Morimoto

Signed-off-by: Mark Brown

Cc: stable@...

commit 7eeec1e0f27eb7f465cb112916c24d8d4b28cc69

Author: Martin Jansa

AuthorDate: Mon Apr 2 10:24:08 2012 +0200

Commit: Mark Brown

CommitDate: Mon Apr 2 23:02:20 2012 +0100

ASoC: pxa: pxa2xx-i2s: add io.h for IOMEM macro

* fixes

sound/soc/pxa/pxa2xx-i2s.c:86:2: error: implicit declaration of function 'IOMEM' [-Werror=implicit-function-declaration]

sound/soc/pxa/pxa2xx-i2s.c:86:2: error: initializer element is not constant

after 23019a733bb83c8499f192fb428b7e6e81c95a34 removed IOMEM

definition from arch/arm/mach-pxa/include/mach/hardware.h

Signed-off-by: Martin Jansa

Signed-off-by: Mark Brown

commit 197e1afd1853ad78e6bd44561158916cac46b8a0

Author: Stephen Warren

AuthorDate: Fri Mar 30 17:07:17 2012 -0600

Commit: Mark Brown

CommitDate: Mon Apr 2 23:02:11 2012 +0100

ASoC: tegra: ensure clocks are enabled when touching registers

Debugfs files could be accessed any time, so explicitly enable clocks

when reading registers to generate debugfs file content.

Signed-off-by: Stephen Warren

Signed-off-by: Mark Brown

commit 825da6e20eeeca7fdd5f2d140d331069d1f5e72a

Author: Zeng Zhaoming

AuthorDate: Fri Mar 30 00:13:02 2012 +0800

Commit: Mark Brown

CommitDate: Mon Apr 2 23:02:11 2012 +0100

ASoC: sgtl5000: Enable VAG when DAC/ADC up

As manual described, VAG is an internal voltage reference of DAC/ADC,

So enabled it before DAC/ADC up.

One more thing should care about is VAG fully ramped down requires 400ms,

wait it to avoid pop.

Signed-off-by: Zeng Zhaoming

Signed-off-by: Shawn Guo

Signed-off-by: Mark Brown

commit 71996be8b09d53c253690bffed00e90224c8a33f

Author: Lucas De Marchi

AuthorDate: Fri Mar 30 13:37:16 2012 -0700

Commit: Linus Torvalds

CommitDate: Fri Mar 30 16:03:15 2012 -0700

Documentation: remove references to /etc/modprobe.conf

Usage of /etc/modprobe.conf file was deprecated by module-init-tools and

is no longer parsed by new kmod tool. References to this file are

replaced in Documentation, comments and Kconfig according to the

context.

There are also some references to the old /etc/modules.conf from 2.4

kernels that are being removed.

Signed-off-by: Lucas De Marchi

Acked-by: Takashi Iwai

Acked-by: Mauro Carvalho Chehab

Signed-off-by: Randy Dunlap

Signed-off-by: Linus Torvalds

commit ad1f572429f60c8533c2f011178e3e0a9e341809

Author: Eliot Blennerhassett

AuthorDate: Fri Mar 30 09:52:25 2012 +1300

Commit: Takashi Iwai

CommitDate: Fri Mar 30 16:24:48 2012 +0200

ALSA: asihpi - fix return value of hpios_locked_mem_alloc()

Make this function consistent with others in this module by

returning 1 for error, instead of -ENOMEM

(reverts function signature change from a938fb1e)

Signed-off-by: Eliot Blennerhassett

Signed-off-by: Takashi Iwai

commit bb46294fc7778e57ee665f404a2d51548ff12b3d

Author: Randy Dunlap

AuthorDate: Wed Mar 28 18:26:17 2012 -0700

Commit: Takashi Iwai

CommitDate: Thu Mar 29 17:57:08 2012 +0200

ALSA: fix isa/opti9xx module param type

Fix module parameter data type to eliminate build warnings.

sound/isa/opti9xx/opti92x-ad1848.c:87:1: warning: return from incompatible pointer type

sound/isa/opti9xx/opti92x-ad1848.c:87:1: warning: return from incompatible pointer type

Signed-off-by: Randy Dunlap

Signed-off-by: Takashi Iwai

commit 21bac8d049491a9c72184d1b0cc3709c8228f82d

Author: Timur Tabi

AuthorDate: Mon Mar 19 11:06:39 2012 -0500

Commit: Kumar Gala

CommitDate: Thu Mar 29 08:14:07 2012 -0500

powerpc/8xxx: remove 85xx/86xx restrictions from fsl_guts.h

Remove the check for CONFIG_PPC_85xx and CONFIG_PPC_86xx from fsl_guts.h.

The check was originally intended to allow the same header file to

be used on 85xx and 86xx systems, even though the Global Utilities

register could be different. It turns out that they're not actually

different, and so the check is not necessary. In addition, neither

macro is defined for 64-bit e5500 kernels, so that causes a build

break.

Signed-off-by: Timur Tabi

Acked-by: Mark Brown

Signed-off-by: Kumar Gala

commit dd79c014d6e7f75df819a6d2be355f9f3a1b1e62

Author: David Howells

AuthorDate: Wed Mar 28 18:30:03 2012 +0100

Commit: David Howells

CommitDate: Wed Mar 28 18:30:03 2012 +0100

Remove all #inclusions of asm/system.h

Remove all #inclusions of asm/system.h preparatory to splitting and killing

it. Performed with the following command:

perl -p -i -e 's!^#\s*include\s*.*\n!!' `grep -Irl '^#\s*include\s*' *`

Signed-off-by: David Howells

commit e59163335a5fed4dfb80478a466ca3187ccdf7fc

Author: Dan Carpenter

AuthorDate: Wed Mar 28 09:57:02 2012 +0300

Commit: Takashi Iwai

CommitDate: Wed Mar 28 18:49:49 2012 +0200

ALSA: asihpi - fix return type of hpios_locked_mem_alloc()

This function returns zero or -ENOMEM, but because it's type is u16, the

-ENOMEM gets changed to 65524. None of the callers care, but lets fix

it anyway as a cleanup.

Signed-off-by: Dan Carpenter

Signed-off-by: Takashi Iwai

commit 714420ada8adb06b4a69bc08a8f4a4a166c6d4af

Author: Vinod Koul

AuthorDate: Mon Mar 26 17:28:08 2012 +0530

Commit: Mark Brown

CommitDate: Mon Mar 26 18:28:11 2012 +0100

ASoC: dmaengine_pcm: use dmaengine cyclic wrapper

commit 4a163c82 added extra parameter to device_prep_dma_cyclic

this is not required if we use the wrapper over cyclic API.

This is split from Alexedre's patch

Signed-off-by: Vinod Koul

Signed-off-by: Mark Brown

commit 9c64e85d2186183bf2c9ccd3892d5a473ed90908

Author: Rob Herring

AuthorDate: Tue Mar 20 14:33:19 2012 -0500

Commit: Rob Herring

CommitDate: Sun Mar 25 14:36:31 2012 -0500

ARM: pxa: use common IOMEM definition

pxa was missed in the moving of IOMEM to a common definition, so lots of

IOMEM redefined warnings were introduced. So remove pxa IOMEM definition

and fix all the fallout.

Reported-by: Paul Gortmaker

Signed-off-by: Rob Herring

Cc: Eric Miao

Cc: Russell King

Cc: Haojian Zhuang

Cc: Alessandro Zummo

Cc: Jaroslav Kysela

Cc: Takashi Iwai

Cc: rtc-linux@...

Cc: alsa-devel@...

commit 04f7eb10b056cec80a8cc4596ef95eb4067002ec

Author: Bobby Powers

AuthorDate: Fri Mar 23 15:01:51 2012 -0700

Commit: Linus Torvalds

CommitDate: Fri Mar 23 16:58:31 2012 -0700

headers: include linux/types.h where appropriate

This addresses some header check warnings. DRM headers which include

"drm.h" have been excluded, as they indirectly include types.h.

Signed-off-by: Bobby Powers

Cc: Chris Ball

Cc: Dave Airlie

Cc: James Bottomley

Cc: Takashi Iwai

Signed-off-by: Andrew Morton

Signed-off-by: Linus Torvalds

commit 29c4d096279422ee427604813a98f5f6ce780874

Author: Fabio Estevam

AuthorDate: Thu Mar 22 10:19:03 2012 -0300

Commit: Mark Brown

CommitDate: Thu Mar 22 15:38:43 2012 +0000

ASoC: Add extra parameter to device_prep_dma_cyclic

Since commit 185ecb5 (dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic)

prep_dma_cyclic() got an extra context parameter.

Add this new parameter in order to fix the following build error (mxs_defconfig and imx_v4_v5_defconfig):

sound/soc/soc-dmaengine-pcm.c:149:3: error: too few arguments to function 'chan->device->device_prep_dma_cyclic'

Signed-off-by: Fabio Estevam

Signed-off-by: Mark Brown

commit b19d7136cf40b772d0fb727f4c6e86dc67167057

Author: Takashi Iwai

AuthorDate: Thu Mar 22 14:36:50 2012 +0100

Commit: Takashi Iwai

CommitDate: Thu Mar 22 15:15:51 2012 +0100

ALSA: hda/realtek - Fix ADC assignment with a shared HP/Mic pin

The recent Realtek driver tries to assign an extra input via the

headphone plug when only a single input source is found. The code

worked on Samsung Q1, but it broke ASUS 1015 where the mic is a

digital-mic and only a specific ADC works.

This patch fixes the assignment of ADC in the shared mic/hp case.

Instead of assuming the single ADC at first, reduce the ADCs after

trying to assign both mic and HP pins.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42973

Cc:

Signed-off-by: Takashi Iwai

commit 16ac407466b33b01b6b795ce3418bb87fe781a43

Author: Mark Brown

AuthorDate: Wed Mar 21 13:22:40 2012 +0000

Commit: Mark Brown

CommitDate: Wed Mar 21 13:40:52 2012 +0000

ASoC: wm8994: Update WM8994 DCS calibration

Based on latest production information.

Signed-off-by: Mark Brown

Cc: stable@...

commit 900ca43ebdc5ac8e617dbd1a107bf21593b0c1a7

Author: Mark Brown

AuthorDate: Mon Mar 19 17:32:06 2012 +0000

Commit: Mark Brown

CommitDate: Mon Mar 19 19:08:17 2012 +0000

ASoC: wm8994: Provide VMID mode control and fix default sequence

The optimal management of VMID depends on a number of factors which vary

dynamically at runtime, for example the connection to a system docking

station. In some circumstances it is desirable to keep VMID enabled all

the time, in others it is desirable to aggressively power it up and down.

Provide a callback allowing machine driver to configure either the normal

power up/down mode (WM8994_VMID_MODE_NORMAL) or to maintain VMID even

when idle (WM8994_VMID_MODE_FORCE). This callback, wm8994_vmid_mode(),

should be called with the CODEC lock.

Signed-off-by: Mark Brown

commit 8c35643385fe4a0a60331b17b2f814fc7c202d4d

Author: Mark Brown

AuthorDate: Sat Mar 3 13:06:25 2012 +0000

Commit: Mark Brown

CommitDate: Mon Mar 19 19:08:15 2012 +0000

ASoC: wm8994: Add missing break in resume

Signed-off-by: Mark Brown

commit b1950903bb1d46d803758bfd1f04f582c182200e

Author: Mark Brown

AuthorDate: Mon Mar 19 17:31:56 2012 +0000

Commit: Mark Brown

CommitDate: Mon Mar 19 19:08:12 2012 +0000

ASoC: wm_hubs: Don't actively manage LINEOUT_VMID_BUF

It can just be enabled all the time with no impact.

Signed-off-by: Mark Brown

commit e4627969b07cbedc62a770efef9e7d10fa25e0d9

Author: Hans Verkuil

AuthorDate: Mon Feb 27 05:31:58 2012 -0300

Commit: Mauro Carvalho Chehab

CommitDate: Mon Mar 19 11:28:52 2012 -0300

[media] tea575x: fix HW seek

Fix HW seek in TEA575x to work properly:

- a delay must be present after search start and before first register read

or the seek does weird things

- when the search stops, the new frequency is not available immediately, we

must wait until it appears in the register (fortunately, we can clear the

frequency bits when starting the search as it starts at the frequency

currently set, not from the value written)

- sometimes, seek remains on the current frequency (or moves only a little),

so repeat it until it moves by at least 50 kHz

Signed-off-by: Ondrej Zary

Signed-off-by: Hans Verkuil

Signed-off-by: Mauro Carvalho Chehab

commit 2658bc197bdfa281873a88585d702da1b6f02d18

Author: Hans Verkuil

AuthorDate: Mon Feb 27 05:30:13 2012 -0300

Commit: Mauro Carvalho Chehab

CommitDate: Mon Mar 19 11:27:21 2012 -0300

[media] tea575x-tuner: update to latest V4L2 framework requirements

The tea575x-tuner module has been updated to use the latest V4L2 framework

functionality. This also required changes in the drivers that rely on it.

The tea575x changes are:

- The drivers must provide a v4l2_device struct to the tea module.

- The radio_nr module parameter must be part of the actual radio driver,

and not of the tea module.

- Changed the frequency range to the normal 76-108 MHz range instead of

50-150.

- Add hardware frequency seek support.

- Fix broken rxsubchans/audmode handling.

- The application can now select between stereo and mono.

- Support polling for control events.

- Add V4L2 priority handling.

And radio-sf16fmr2.c now uses the isa bus kernel framework.

Signed-off-by: Hans Verkuil

Thanks-to: Ondrej Zary

Signed-off-by: Mauro Carvalho Chehab

commit 68ae49a7829c88422d9ac3b4ea743480161717d8

Author: Daniel Mack

AuthorDate: Mon Mar 19 09:12:53 2012 +0100

Commit: Mark Brown

CommitDate: Mon Mar 19 12:47:25 2012 +0000

ASoC: pxa-ssp: atomically set stream active masks

PXA's SSP engine fails to take its current channel phase into account

when enabling a stream while the engine is already running. This

results in randomly swapped left/right channels on either the record

or the playback side, depending on which one was enabled first.

The following patch fixes this by factoring out the bit field

modifications in question to a separate function that pauses the

engine temporarily, modifies the bits and kicks it off again

afterwards. Appearantly, a transition of SSCR0_SSE syncs both

directions properly.

The patch has been rolled out to quite a number of devices over the

last weeks and seems to fix the issue reliably.

Signed-off-by: Daniel Mack

Reported-and-tested-by: Sven Neumann

Signed-off-by: Mark Brown

Cc: stable@...

commit 7e43125810a9ee2b3f4caa7e8aaaed86bf72a74e

Author: Timur Tabi

AuthorDate: Fri Mar 16 16:32:52 2012 -0500

Commit: Mark Brown

CommitDate: Sat Mar 17 21:11:16 2012 +0000

ASoC: fsl: p1022ds: tell the WM8776 codec driver that it's the master

The WM8776 codec driver requires the machine driver to set one of the

SND_SOC_DAIFMT_CBx_xxx values. The P1022DS machine driver should be setting

SND_SOC_DAIFMT_CBM_CFM, but since that value was zero, no one noticed.

Commit 75d9ac46 ("ASoC: Allow DAI formats to be specified in the

dai_link"), however, changed the value of SND_SOC_DAIFMT_CBM_CFM from zero

to a non-zero value, which means that it now needs to be specifically set

by the machine driver.

We also set SND_SOC_DAIFMT_NB_NF, for the same reason.

Signed-off-by: Timur Tabi

Signed-off-by: Mark Brown

Cc: stable@...

commit f080e02683cfd20c4e43e3450bfd0a9e1dc1e19a

Author: viresh kumar

AuthorDate: Thu Mar 15 10:40:38 2012 +0100

Commit: Russell King

CommitDate: Fri Mar 16 23:32:35 2012 +0000

ARM: 7362/1: AMBA: Add module_amba_driver() helper macro for amba_driver

For simple modules that contain a single amba_driver without any

additional setup code then ends up being a block of duplicated

boilerplate. This patch adds a new macro, module_amba_driver(),

which replaces the module_init()/module_exit() registrations with

template functions.

Signed-off-by: Viresh Kumar

Signed-off-by: Russell King

commit 17171072e1d057c61559056d2467cf89a58c1418

Author: Sangsu Park

AuthorDate: Fri Mar 16 15:40:53 2012 +0900

Commit: Mark Brown

CommitDate: Fri Mar 16 18:50:41 2012 +0000

ASoC: Samsung: Added to support mono recording

The dma size will be changed by requested number of

channel(mono/stereo) from platform. For mono recording,

channels_min value should be 1.

Signed-off-by: Sangsu Park

Signed-off-by: Sangbeom Kim

Signed-off-by: Mark Brown

commit f17e98be77af44784466bcc2d00172e82b915569

Author: Takashi Iwai

AuthorDate: Fri Mar 16 16:09:03 2012 +0100

Commit: Takashi Iwai

CommitDate: Fri Mar 16 16:15:33 2012 +0100

ALSA: hda - Fix build with CONFIG_PM=n

Signed-off-by: Takashi Iwai

commit c9f7df041f9a2b3a5816a9486cb414c3098c0d39

Author: Paul Gortmaker

AuthorDate: Mon Jan 30 11:46:54 2012 -0500

Commit: Paul Gortmaker

CommitDate: Fri Mar 16 10:38:24 2012 -0400

device.h: audit and cleanup users in main include dir

The header includes a lot of stuff, and

it in turn gets a lot of use just for the basic "struct device"

which appears so often.

Clean up the users as follows:

1) For those headers only needing "struct device" as a pointer

in fcn args, replace the include with exactly that.

2) For headers not really using anything from device.h, simply

delete the include altogether.

3) For headers relying on getting device.h implicitly before

being included themselves, now explicitly include device.h

4) For files in which doing #1 or #2 uncovers an implicit

dependency on some other header, fix by explicitly adding

the required header(s).

Any C files that were implicitly relying on device.h to be

present have already been dealt with in advance.

Total removals from #1 and #2: 51. Total additions coming

from #3: 9. Total other implicit dependencies from #4: 7.

As of 3.3-rc1, there were 110, so a net removal of 42 gives

about a 38% reduction in device.h presence in include/*

Signed-off-by: Paul Gortmaker

commit 44f8e0017b9c2aa6e63c0ea8664eae001f26a6ca

Author: Takashi Iwai

AuthorDate: Fri Mar 16 09:54:00 2012 +0100

Commit: Takashi Iwai

CommitDate: Fri Mar 16 09:54:00 2012 +0100

ALSA: au88x0 - Avoid possible Oops at unbinding

The irq handler must check whether the MPU401 instance is still alive.

Signed-off-by: Takashi Iwai

commit eae735df41d5207730bbcb92118ca6ebc69582dc

Author: Takashi Iwai

AuthorDate: Thu Mar 15 16:14:38 2012 +0100

Commit: Takashi Iwai

CommitDate: Thu Mar 15 16:14:38 2012 +0100

ALSA: usb-audio - Fix build error by consitification of rate list

Signed-off-by: Takashi Iwai

commit 37eae9db275685d77ebab4e07abbd1c1dea83e8c

Author: Mark Brown

AuthorDate: Wed Mar 14 20:18:49 2012 +0000

Commit: Mark Brown

CommitDate: Thu Mar 15 14:28:25 2012 +0000

ASoC: core: Fix obscure leak of runtime array

We're currently not freeing card->rtd in cases where the card is

unregistered before being instantiated - convert it to devm_kzalloc() to

make sure that happens.

Signed-off-by: Mark Brown

Acked-by: Liam Girdwood

commit 170eadd1e5a33cd9f9581ac4202ae2ae52586abd

Author: Takashi Iwai

AuthorDate: Tue Mar 13 15:55:43 2012 +0100

Commit: Takashi Iwai

CommitDate: Thu Mar 15 07:36:00 2012 +0100

ALSA: pcm - Avoid GFP_ATOMIC in snd_pcm_link()

GFP_ATOMIC is used in snd_pcm_link() just because the kmalloc is

called inside a lock. Since this function isn't too critical for

speed and is rarely called in practice, better to allocate the chunk

at first before spinlock and free it in error paths, so that

GFP_KERNEL can be used.

Signed-off-by: Takashi Iwai

commit b967733221bf6e1364babb647c012720ac84b7f3

Author: Mark Brown

AuthorDate: Wed Mar 14 19:48:43 2012 +0000

Commit: Takashi Iwai

CommitDate: Thu Mar 15 07:35:17 2012 +0100

ALSA: pcm: Constify the list in snd_pcm_hw_constraint_list

Allows the constraint lists to be declared const by drivers which seems

reasonable; there's plenty of other constification we could do if we were

being complete but this was easy and quick.

Signed-off-by: Mark Brown

Signed-off-by: Takashi Iwai

commit 194baaa87edfdd9f5a1c4d5eef107dc5866dd232

Author: Mark Brown

AuthorDate: Wed Mar 14 18:38:28 2012 +0000

Commit: Mark Brown

CommitDate: Wed Mar 14 20:37:29 2012 +0000

ASoC: wm8996: Add 44.1kHz support

The WM8996 specification has been updated to specify 44.1kHz as a supported

sample rate. Update the driver to accept this configuration.

Signed-off-by: Mark Brown

commit 99e73728b679fedb31b00cb3bd5d44949ffdb23f

Author: Takashi Iwai

AuthorDate: Wed Mar 14 08:20:20 2012 +0100

Commit: Takashi Iwai

CommitDate: Wed Mar 14 08:20:20 2012 +0100

ALSA: hda - Fix build of patch_sigmatel.c without CONFIG_SND_HDA_POWER_SAVE

Now the mute-LED is controlled without powersave hack, and the ifdefs must

be removed.

Signed-off-by: Takashi Iwai

commit e3ab1a4de585d0d7239c8e3cfadf0f67aafbb6f4

Author: Fabio Estevam

AuthorDate: Mon Mar 12 19:48:49 2012 -0300

Commit: Mark Brown

CommitDate: Tue Mar 13 23:09:59 2012 +0000

ASoC: mx27vis-aic32x4: Convert it to platform driver

Convert mx27vis-aic32x4 to platform driver.

Signed-off-by: Fabio Estevam

Tested-by: Javier Martin

Signed-off-by: Mark Brown

commit ac153992fe69ddec0d78aea4ca62cc567b502c71

Author: Anssi Hannula

AuthorDate: Tue Mar 13 17:43:02 2012 +0200

Commit: Takashi Iwai

CommitDate: Tue Mar 13 18:27:09 2012 +0100

ALSA: hda - fix printing of high HDMI sample rates

A previous commit af65cbf296 (ALSA: hdmi: fix printout of SAD sampling

rates) fixed the sample rates shown in /proc/asound/cardX/eldY and

kernel log to not be entirely wrong. However, a missing rate from the

array added in the patch causes HDMI rates 88.2 kHz, 96 kHz, 176.4 kHz,

and 192 kHz to be shown as 96 kHz, 176.4 kHz, 192 kHz, and 384 kHz,

respectively.

Fix the reporting by adding the ALSA rate 64 kHz into the conversion

array between 48 kHz and 88.2 kHz.

Signed-off-by: Anssi Hannula

Cc: Pierre-Louis Bossart

Cc: stable@...

Signed-off-by: Takashi Iwai

commit decfa9a6de010aa639f50ef5d6c70c80b8de64ce

Author: Takashi Iwai

AuthorDate: Tue Mar 13 07:55:10 2012 +0100

Commit: Takashi Iwai

CommitDate: Tue Mar 13 07:55:10 2012 +0100

ALSA: hda - Add expose_enum_ctl flag to snd_hda_add_vmaster_hook()

Since it's not always safe to assume that the vmaster hook is purely the

mute-LED control, add the flag indicating whether to expose the mute-LED

enum control or not. Currently, conexant codec sets this off for non-HP

laptops where EAPD may be used really as EAPD.

Signed-off-by: Takashi Iwai

commit c7d0dcb003bf1efae4fa9a1282df0c2d39161514

Author: Takashi Iwai

AuthorDate: Mon Mar 12 16:59:58 2012 +0100

Commit: Takashi Iwai

CommitDate: Tue Mar 13 07:46:50 2012 +0100

ALSA: hda - Add "Mute-LED Mode" enum control

Create snd_hda_add_vmaster_hook() and snd_hda_sync_vmaster_hook()

helper functions to handle the mute-LED in vmaster hook more

commonly. In the former function, a new enum control "Mute-LED Mode"

is added. This provides user to choose whether the mute-LED should be

turned on/off explicitly or to follow the master-mute status.

Reviewed-by: David Henningsson

Signed-off-by: Takashi Iwai

commit bf0a4743f7e025ab570f7b51d60ddbc22e108bec

Author: Lars-Peter Clausen

AuthorDate: Mon Mar 5 14:02:15 2012 +0100

Commit: Mark Brown

CommitDate: Mon Mar 12 19:03:39 2012 +0000

ASoC: ep93xx-pcm: Use dmaengine PCM helper functions

Signed-off-by: Lars-Peter Clausen

Acked-by: Vinod Koul

Tested-by: Mika Westerberg

Signed-off-by: Mark Brown

commit 6b224353627109ab9f31ef9ba82cbb6c522472c2

Author: Mika Westerberg

AuthorDate: Mon Mar 5 14:02:14 2012 +0100

Commit: Mark Brown

CommitDate: Mon Mar 12 19:03:22 2012 +0000

ASoC: dmaengine_pcm: Reset pointer position when starting a stream

Otherwise a wrong position will be reported after restarting a stream and the

first few samples might be skipped.

Signed-off-by: Mika Westerberg

Signed-off-by: Lars-Peter Clausen

Signed-off-by: Mark Brown

commit a088aacb051d5a584099bfa498a19e8e7a4d7229

Author: Mark Brown

AuthorDate: Mon Mar 12 16:31:50 2012 +0000

Commit: Mark Brown

CommitDate: Mon Mar 12 18:12:09 2012 +0000

ASoC: wm8994: Prevent ABBA deadlock with CODEC and accdet mutexes

Currently we can the accdet mutex from within DAPM when updating the device

state which means we take accdet then the CODEC mutex but we also do the

locking the other way around when responding to the jackdet IRQ. Move all

the jackdet use of the CODEC mutex out of the accdet lock to avoid this.

Since all the DAPM interactions depend only on a single threaded IRQ this

is still serialised.

The locking improvements in 3.5 allow a better solution there.

Signed-off-by: Mark Brown

commit df77ee95c1a8782e1b0e78c917e390ff20e6d150

Author: Takashi Iwai

AuthorDate: Mon Mar 12 12:38:51 2012 +0100

Commit: Takashi Iwai

CommitDate: Mon Mar 12 14:52:43 2012 +0100

ALSA: hda - Add EAPD control to Conexnat auto-parser

Added the vmaster hook for controlling EAPD dynamically to Conexant

auto-parser. When the Master is muted, EAPDs are turned off as well.

This will fix the missing mute-LED control on some machines in

addition to the more power-saving in the auto-parser mode.

Signed-off-by: Takashi Iwai

commit 03f93d592e1ce0ee33c407b25d5029bbe0e18058

Author: Takashi Iwai

AuthorDate: Mon Mar 12 12:35:27 2012 +0100

Commit: Takashi Iwai

CommitDate: Mon Mar 12 14:52:43 2012 +0100

ALSA: hda - Rewrite the mute-LED control with vmaster hook for ALC269

We've had ugly static handling of the mute-LED with a powersave hook

for ALC269 HP laptops just like done in patch_sigmatel.c. This is now

rewritten with the new vmaster hook and a fixup code.

For that, the new fixup action, ALC_FIXUP_ACT_BUILD, is introduced.

It's called after build_controls is called. The reason of this new

action is that vmaster hook must be added at this stage (not in init

or probe).

Signed-off-by: Takashi Iwai

commit 76f2a6fa40dc8a5f38f8b6bd691dfc9b3d3b7f02

Author: Takashi Iwai

AuthorDate: Mon Mar 12 12:30:22 2012 +0100

Commit: Takashi Iwai

CommitDate: Mon Mar 12 14:52:42 2012 +0100

ALSA: hda - Rewrite the mute-LED hook with vmaster hook in patch_sigmatel.c

The mute-LED is controlled in patch_sigmatel.c by (ab-)using the

powersave hook. This can be now rewritten with the vmaster hook

instead, which is much simpler and can work even without

CONFIG_SND_HDA_POWER_SAVE kconfig.

A drawback is that the mute-LED corresponds _only_ to the Master mixer

switch instead of checking the whole DACs. But usually this shouldn't

be a big problem as PA enables the mixer elements accordingly.

Also, this patch changes the code to create vmaster always even on

STAC9200 and STAC925x. The former "Master" on these chips are renamed

as "PCM" now.

Signed-off-by: Takashi Iwai

commit 6a786cd743e3d1fd093759eb8ed3fbbad5bcbce8

Author: Takashi Iwai

AuthorDate: Mon Mar 12 12:25:03 2012 +0100

Commit: Takashi Iwai

CommitDate: Mon Mar 12 14:52:28 2012 +0100

ALSA: hda - Return the created kcontrol in __snd_hda_add_vmaster()

It'll be used for adding hooks in later patches.

Signed-off-by: Takashi Iwai

commit 934ba03567168d8bc7f469758544281a0362ac2e

Author: Takashi Iwai

AuthorDate: Mon Mar 12 12:18:37 2012 +0100

Commit: Takashi Iwai

CommitDate: Mon Mar 12 13:58:54 2012 +0100

ALSA: Add a hook capability to vmaster controls

This patch adds a hook to vmaster control to be called at each time

when the master value is changed. It'd be handy for an additional

mute LED control following the Master switch, for example.

Signed-off-by: Takashi Iwai

commit ff9aecb5b9127f95225cacd7c1b7fb92b797d27d

Author: Mark Brown

AuthorDate: Mon Mar 12 10:33:34 2012 +0000

Commit: Mark Brown

CommitDate: Mon Mar 12 10:37:23 2012 +0000

ASoC: Revert widget I/O locking for 3.4

The widget locking depends on some of the other locking changes which

are queued up for 3.5 not 3.4 so revert the locking changes and reapply

them in 3.5.

This reverts commit 66bf93212f19548f5ed221356b2d70189cc18254 and

96acc357bedad69fbc94d1b923a960af5a411c6f.

Signed-off-by: Mark Brown

Acked-by: Liam Girdwood

commit aa4b8d86a7ee6f24ff30ddf4b422c314d810be11

Author: Paul Gortmaker

AuthorDate: Sun Jan 22 11:23:42 2012 -0500

Commit: Paul Gortmaker

CommitDate: Sun Mar 11 14:27:37 2012 -0400

device.h: cleanup users outside of linux/include (C files)

For files that are actively using linux/device.h, make sure

that they call it out. This will allow us to clean up some

of the implicit uses of linux/device.h within include/*

without introducing build regressions.

Yes, this was created by "cheating" -- i.e. the headers were

cleaned up, and then the fallout was found and fixed, and then

the two commits were reordered. This ensures we don't introduce

build regressions into the git history.

Signed-off-by: Paul Gortmaker

commit 51d95579f4d86f7cc65ca4a29f2de75135949196

Author: Ashish Chavan

AuthorDate: Fri Mar 9 13:51:30 2012 +0530

Commit: Mark Brown

CommitDate: Fri Mar 9 11:50:28 2012 +0000

ASoC: da7210: Remove extra registers from defaults list

This patch removes following registers from reg map defaults,

- Registers which are currently not used by driver

- Non existing registers

- Volatile registers

Signed-off-by: Ashish Chavan

Signed-off-by: David Dajun Chen

Signed-off-by: Mark Brown

commit 767ab9aa714e970dcaadf158d730b48c88b8f1d6

Author: Shawn Guo

AuthorDate: Fri Mar 9 00:59:46 2012 +0800

Commit: Mark Brown

CommitDate: Fri Mar 9 11:38:12 2012 +0000

ASoC: fsl: check property 'compatible' for the machine name

Check /compatible rather than /model to determine the machine name.

The p1022ds older device trees get a different /model from the new

ones, while /compatible is consistent there, so checking /compatible

will save the bother of detecting older p1022ds device trees.

Signed-off-by: Shawn Guo

Acked-by: Timur Tabi

Signed-off-by: Mark Brown

commit 1487283b0822d6c207e09264a6d5a0c8bf592621

Author: Mark Brown

AuthorDate: Thu Mar 8 17:00:57 2012 +0000

Commit: Mark Brown

CommitDate: Thu Mar 8 18:24:27 2012 +0000

ASoC: wm8996: Remove separate output stage enable step

Marginally improve performance during startup.

Signed-off-by: Mark Brown

commit 19d34f23b097fbcf5395629f650e34c66536387d

Author: Mark Brown

AuthorDate: Thu Mar 8 15:59:50 2012 +0000

Commit: Mark Brown

CommitDate: Thu Mar 8 18:24:22 2012 +0000

ASoC: wm8996: Remove some volatile regisers from the defaults table

Signed-off-by: Mark Brown

commit 7e521409c89cd24a7df041ebfa3a316e2de10830

Author: Shawn Guo

AuthorDate: Fri Mar 9 00:59:40 2012 +0800

Commit: Mark Brown

CommitDate: Thu Mar 8 18:23:46 2012 +0000

ASoC: core: missing set_fmt should not be complaint

Not having a DAI link set_fmt operation is perfectly normal and

should not be complaint.

Signed-off-by: Shawn Guo

Signed-off-by: Mark Brown

commit dcba034be0641bd92c882dbd6a7c2a7e137baadc

Author: Ashish Chavan

AuthorDate: Thu Mar 8 19:04:56 2012 +0530

Commit: Mark Brown

CommitDate: Thu Mar 8 18:19:24 2012 +0000

ASoC: da7210: Update for using I2C regmap

Current DA7210 driver has I2C support using older register cache

methods. This patch updates it for latest regmap framework.

This has been tested on DA7210 EVB with Samsung SMDK6410 board.

Signed-off-by: Ashish Chavan

Signed-off-by: David Dajun Chen

Signed-off-by: Mark Brown

commit ad72dc672f6aa4002662ff4fa2fbe5de4d67a610

Author: Qiao Zhou

AuthorDate: Thu Mar 8 10:02:36 2012 +0800

Commit: Mark Brown

CommitDate: Thu Mar 8 18:15:43 2012 +0000

ASoC: add more sample rate for pxa-ssp

add more sample rate for pxa-ssp, which are supported, such as 32KHz,

64KHz.

Signed-off-by: Qiao Zhou

Signed-off-by: Mark Brown

commit 4a7c91e23a87eaa9a68de5ab540a2e2bbf6eef79

Author: Fabio Estevam

AuthorDate: Wed Mar 7 15:19:57 2012 -0300

Commit: Mark Brown

CommitDate: Wed Mar 7 19:32:39 2012 +0000

ASoC: imx: imx-audmux: Fix section mismatch

Fix the following section mismatch warning:

WARNING: vmlinux.o(.data+0x35be8): Section mismatch in reference from the variable imx_audmux_driver to the function .init.text:imx_audmux_probe()

The variable imx_audmux_driver references

the function __init imx_audmux_probe()

If the reference is valid then annotate the

variable with __init* or __refdata (see linux/init.h) or name the variable:

*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console

Signed-off-by: Fabio Estevam

Signed-off-by: Mark Brown

commit 02720b549d74b24d28529efc1b434df33a5fffdc

Author: Masanari Iida

AuthorDate: Sun Mar 4 23:16:11 2012 +0900

Commit: Jiri Kosina

CommitDate: Wed Mar 7 16:08:24 2012 +0100

Documentation: Fix multiple typo in Documentation

Signed-off-by: Masanari Iida

Acked-by: Randy Dunlap

Signed-off-by: Jiri Kosina

commit 0b2e98cb031635966f8f55ff58b8b0cc6fa3f3d8

Author: Mark Brown

AuthorDate: Tue Mar 6 23:58:22 2012 +0000

Commit: Mark Brown

CommitDate: Wed Mar 7 11:53:00 2012 +0000

ASoC: dapm: Only lock CODEC for I/O if not using regmap

If we do use regmap then regmap will take care of things for us. We

actually already have this check at a higher level for the current

users but this makes sure we do the right thing in the future too if

we need to.

Signed-off-by: Mark Brown

Acked-by: Liam Girdwood

commit 85fa73ac89efa68eb8c14604065e644da0d7316f

Author: Liam Girdwood

AuthorDate: Tue Mar 6 18:16:19 2012 +0000

Commit: Mark Brown

CommitDate: Tue Mar 6 20:07:03 2012 +0000

ASoC: DAPM: Make sure DAPM widget IO ops hold the component mutex

Currently not all DAPM widget IO ops are holding their component mutex

(codec or platform). Make sure this is now held for DAPM widget IO operations.

Signed-off-by: Liam Girdwood

Signed-off-by: Mark Brown

commit aac8581e0b3be1065b314beae10ede4f3a815aaa

Author: Liam Girdwood

AuthorDate: Tue Mar 6 18:16:18 2012 +0000

Commit: Mark Brown

CommitDate: Tue Mar 6 20:07:00 2012 +0000

ASoC: core: Add platform component mutex

Add mutex support for platform IO operations. e.g. can be used

for platform DAPM widget IO ops.

Signed-off-by: Liam Girdwood

Signed-off-by: Mark Brown

commit 29504a5d5c2aa96e1adeebc6ff107547e89e1b6a

Author: Stephen Warren

AuthorDate: Tue Mar 6 12:13:07 2012 -0700

Commit: Mark Brown

CommitDate: Tue Mar 6 20:06:59 2012 +0000

ASoC: tegra: Remove unused variable

Fixes the following warning:

sound/soc/tegra/tegra_alc5632.c: In function 'tegra_alc5632_asoc_init':

sound/soc/tegra/tegra_alc5632.c:118:6: warning: unused variable 'ret' [-Wunused-variable]

Signed-off-by: Stephen Warren

Signed-off-by: Mark Brown

commit 4baa02e503a82e42e8926b7a379e6a205ed5a134

Author: Liam Girdwood

AuthorDate: Tue Mar 6 18:13:25 2012 +0000

Commit: Mark Brown

CommitDate: Tue Mar 6 20:06:53 2012 +0000

ASoC: dapm: Use dev_warn for debugfs warning message

Remove printk(KERN_WARNING) and use dev_warn() instead.

Signed-off-by: Liam Girdwood

Signed-off-by: Mark Brown

commit 01fcaaa23b8e19219931333ce2993fd753424fb2

Author: Janusz Krzysztofik

AuthorDate: Mon Mar 5 17:05:12 2012 +0100

Commit: Tony Lindgren

CommitDate: Mon Mar 5 11:25:34 2012 -0800

ASoC: OMAP: ams-delta: drop .set_bias_level callback

This functionality has already been implemented in the cx20442 codec

driver (commit f75a8ff67d161b5166a2c2360bb2ffaefd5eb853, "ASoC: cx20442:

add bias control over a platform provided regulator"), no need to keep

it here duplicated.

Once done, remove the no longer used AMS_DELTA_LATCH2_MODEM_NRESET

symbol from the board header file and a call to the regulator_toggle()

helper function from the old API wrapper found in the board file. While

being at it, simplify the way the modem .pm callback handles the

regulator and drop that helper function and its related consumer setup

completely.

Depends on patches 1/3 and 2/3 for clean apply and keep things working.

Signed-off-by: Janusz Krzysztofik

Acked-by: Mark Brown

Cc: Tony Lindgren

Signed-off-by: Tony Lindgren

commit 97e7a45038053ceb37d4787ddef6a9873ca4d4a0

Author: Kukjin Kim

AuthorDate: Fri Feb 3 14:29:23 2012 +0900

Commit: Kukjin Kim

CommitDate: Sat Mar 3 07:44:51 2012 +0900

ARM: S3C24XX: change the ARCH_S3C2410 to ARCH_S3C24XX

This patch changes the ARCH name to "ARCH_S3C24XX" for Samsung

S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443,

and S3C2450 SoCs so that we can merge the mach-xxx directories

and plat-s3c24xx dir. to just one mach-s3c24xx for them.

I think this should be sent to upstream via samsung tree because

this touches many samsung stuff.

Cc: Dmitry Torokhov

Cc: Richard Purdie

Cc: Chris Ball

Cc: David Woodhouse

Cc: Alessandro Zummo

Cc: Grant Likely

Cc: Greg Kroah-Hartman

[for the gadget part:]

Acked-by: Felipe Balbi

[for the framebuffer (video) part:]

Acked-by: Florian Tobias Schandinat

[For the watchdog-part:]

Acked-by: Wim Van Sebroeck

Cc: Sangbeom Kim

Cc: Liam Girdwood

Cc: Mark Brown

Cc: Russell King

Signed-off-by: Kukjin Kim

commit 47eebee752d7fb493b9f4000a282bef94c61e67d

Author: Mark Brown

AuthorDate: Sat Jan 21 12:11:53 2012 +0000

Commit: Mark Brown

CommitDate: Wed Feb 22 13:57:03 2012 +0000

mfd/ASoC: Convert WM8994 driver to use regmap patches

Early revisions of several of the WM8994 variants have register updates

to improve performance. Move these over to using the regmap patch system

instead of open coding them in the audio driver. Since the regmap init

is done by the MFD the code is moved there.

Signed-off-by: Mark Brown

Acked-by: Samuel Ortiz

commit 47434f0b7f03c07c12f0fa915e0b52b4c6803113

Author: Viresh Kumar

AuthorDate: Wed Feb 1 16:12:27 2012 +0530

Commit: Vinod Koul

CommitDate: Wed Feb 22 18:15:39 2012 +0530

dmaengine/dw_dmac: Fix dw_dmac user drivers to adapt to slave_config changes

There are few existing user drivers of dw_dmac. They will break as soon as we

remove unused fields from struct dw_dma_slave. This patch focuses to fix these

user drivers to use dma_slave_config() routine.

Signed-off-by: Viresh Kumar

Signed-off-by: Vinod Koul

commit c7b12c89fbfa5a13ca004baf91a1cd17ed56cb48

Author: Justin P. Mattock

AuthorDate: Sat Feb 11 05:55:58 2012 -0800

Commit: Jiri Kosina

CommitDate: Tue Feb 21 11:40:36 2012 +0100

Typos: change aditional to additional.

The below patch fixes some typos "aditional" to "additional", and also fixes

a comment with another word mispelled.

Signed-off-by: Justin P. Mattock

Signed-off-by: Jiri Kosina

commit 3f5f1581d40bb9ae1ec0c859ed7624b1906e06dc

Author: Rob Herring

AuthorDate: Tue Jan 3 17:10:17 2012 -0600

Commit: Rob Herring

CommitDate: Wed Jan 25 20:37:42 2012 -0600

sound: pxa2xx-ac97: include mach/irqs.h directly

In preparation of removing mach/irqs.h include from asm/irq.h, include

mach/irqs.h directly.

Signed-off-by: Rob Herring

commit ff4f18dd3d4a71072322707d8ed57db2831e0176

Author: Stefan Richter

AuthorDate: Sat Aug 27 18:53:03 2011 +0200

Commit: Stefan Richter

CommitDate: Sun Jan 15 18:37:20 2012 +0100

firewire: move fw_device reference counting from drivers to core

fw_unit device drivers invariably need to talk to the fw_unit's parent

(an fw_device) and grandparent (an fw_card). firewire-core already

maintains an fw_card reference for the entire lifetime of an fw_device.

Likewise, let firewire-core maintain an fw_device reference for the

entire lifetime of an fw_unit so that fw_unit drivers don't have to.

Signed-off-by: Stefan Richter

commit 4c84801540084d4e8b9fa3de9ce9f3670910b63a

Author: Janusz Krzysztofik

AuthorDate: Tue Dec 20 22:54:18 2011 +0100

Commit: Tony Lindgren

CommitDate: Wed Dec 21 10:47:01 2011 -0800

ARM: OMAP1: ams-delta: register latch dependent devices later

In preparation to converting Amstrad Delta on-board latches to

basic_mmio_gpio devices, registration of platform devices which depend

on latches and will require initialization of their GPIO pins first,

should be moved out of .machine_init down to late_initcall level, as the

gpio-generic driver is not available until device_initcall time. The

latch reset operation, which will be replaced with GPIO initialization,

must also be moved to late_initcall for the same reason.

Since there was already another, separate arch_initcall function for

setting up one of those latch dependent devices, the on-board modem

device, reuse that function, i.e., rename it to a name that matches the

new purpose, extend with other device setup relocated from

.machine_init, and move down to the late_initcall level.

While being at it, add missing gpio_free() in case the modem platform

device registration fails.

Thanks to Tony Lindgren who suggested this approach

instead of shifting up the gpio-generic driver initialization.

In addition, defer registration of the Amstrad Delta ASoC and serio

devices, done from their device driver files, until late_initcall time,

as those drivers will depend on their GPIO pins already requested from

the board late_init() function until updated to register their GPIO pins

themselves.

Signed-off-by: Janusz Krzysztofik

Acked-by: Mark Brown

Signed-off-by: Tony Lindgren

-----------------------------------------------------------------------

Diffstat:

Documentation/ALSA-Configuration.txt | 12 +-

Documentation/Audiophile-Usb.txt | 4 +-

Documentation/HD-Audio-Models.txt | 4 +-

Documentation/MIXART.txt | 6 +-

Documentation/OSS-Emulation.txt | 2 +-

arm/aaci.c | 13 +-

arm/pxa2xx-ac97-lib.c | 3 +-

arm/pxa2xx-ac97.c | 1 +

atmel/abdac.c | 18 +-

atmel/ac97c.c | 41 ++-

core/init.c | 1 +

core/pcm.c | 1 +

core/pcm_lib.c | 3 +-

core/pcm_native.c | 15 +-

core/seq/seq.c | 1 +

core/seq/seq_dummy.c | 2 +-

core/timer.c | 1 +

core/vmaster.c | 47 +++-

drivers/Kconfig | 3 +-

firewire/isight.c | 4 +-

firewire/speakers.c | 4 -

i2c/other/tea575x-tuner.c | 169 +++++++----

include/compress_params.h | 2 +

include/control.h | 5 +

include/core.h | 15 +-

include/pcm.h | 5 +-

include/soc-dapm.h | 3 +-

include/soc.h | 1 +

include/tea575x-tuner.h | 6 +-

isa/opti9xx/opti92x-ad1848.c | 2 +-

isa/sscape.c | 6 +-

last.c | 2 +-

pci/Kconfig | 4 +-

pci/asihpi/hpi_internal.h | 2 +-

pci/asihpi/hpios.c | 8 +-

pci/asihpi/hpios.h | 1 -

pci/au88x0/au88x0_core.c | 2 +-

pci/aw2/aw2-saa7146.c | 1 -

pci/es1968.c | 15 +

pci/fm801.c | 20 ++-

pci/hda/hda_codec.c | 106 +++++++-

pci/hda/hda_codec.h | 3 +

pci/hda/hda_eld.c | 10 +-

pci/hda/hda_local.h | 29 ++-

pci/hda/hda_proc.c | 13 +-

pci/hda/patch_analog.c | 2 +-

pci/hda/patch_conexant.c | 187 +++++++-----

pci/hda/patch_hdmi.c | 9 +-

pci/hda/patch_realtek.c | 177 ++++++++----

pci/hda/patch_sigmatel.c | 153 ++++------

soc/codecs/Kconfig | 3 +-

soc/codecs/ak4642.c | 2 +-

soc/codecs/cs42l73.c | 2 +

soc/codecs/da7210.c | 146 +++++++---

soc/codecs/sgtl5000.c | 25 +-

soc/codecs/twl6040.c | 3 +-

soc/codecs/wm8994.c | 559 ++++++++++++++++++++++++---------

soc/codecs/wm8994.h | 8 +

soc/codecs/wm8996.c | 53 ++--

soc/codecs/wm_hubs.c | 16 +-

soc/ep93xx/Kconfig | 1 +

soc/ep93xx/ep93xx-pcm.c | 144 ++--------

soc/fsl/fsl_ssi.c | 6 +-

soc/fsl/mpc8610_hpcd.c | 10 +-

soc/fsl/p1022_ds.c | 66 ++---

soc/imx/imx-audmux.c | 29 +-

soc/imx/imx-pcm-dma-mx2.c | 3 +

soc/imx/mx27vis-aic32x4.c | 41 ++--

soc/mxs/mxs-pcm.c | 2 +-

soc/mxs/mxs-saif.c | 2 +-

soc/omap/Kconfig | 2 +-

soc/omap/ams-delta.c | 34 +--

soc/pxa/pxa-ssp.c | 64 +++--

soc/pxa/pxa2xx-ac97.c | 1 +

soc/pxa/pxa2xx-i2s.c | 1 +

soc/samsung/Kconfig | 12 +-

soc/samsung/i2s.c | 13 +-

soc/sh/fsi.c | 7 +-

soc/sh/siu_pcm.c | 4 +-

soc/soc-core.c | 31 +-

soc/soc-dapm.c | 20 +-

soc/soc-dmaengine-pcm.c | 3 +-

soc/tegra/tegra_alc5632.c | 1 -

soc/tegra/tegra_i2s.c | 6 +-

soc/tegra/tegra_spdif.c | 4 +

soc/txx9/txx9aclc.c | 2 +-

usb/pcm.c | 6 +-

87 files changed, 1529 insertions(+), 947 deletions(-)

Patch -------------- (max 1500 lines)

diff --git a/Documentation/ALSA-Configuration.txt b/Documentation/ALSA-Configuration.txt

index 9af64c5..8c16d50 100644

--- a/Documentation/ALSA-Configuration.txt

+++ b/Documentation/ALSA-Configuration.txt

@@ -1594,7 +1594,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.

Module supports autoprobe a chip.

- Note: the driver may have problems regarding endianess.

+ Note: the driver may have problems regarding endianness.

The power-management is supported.

@@ -2044,7 +2044,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.

Install the necessary firmware files in alsa-firmware package.

When no hotplug fw loader is available, you need to load the

firmware via vxloader utility in alsa-tools package. To invoke

- vxloader automatically, add the following to /etc/modprobe.conf

+ vxloader automatically, add the following to /etc/modprobe.d/alsa.conf

install snd-vx222 /sbin/modprobe --first-time -i snd-vx222 && /usr/bin/vxloader

@@ -2168,10 +2168,10 @@ corresponds to the card index of ALSA. Usually, define this

as the same card module.

An example configuration for a single emu10k1 card is like below:

------ /etc/modprobe.conf

+----- /etc/modprobe.d/alsa.conf

alias snd-card-0 snd-emu10k1

alias sound-slot-0 snd-emu10k1

------ /etc/modprobe.conf

+----- /etc/modprobe.d/alsa.conf

The available number of auto-loaded sound cards depends on the module

option "cards_limit" of snd module. As default it's set to 1.

@@ -2184,7 +2184,7 @@ cards is kept consistent.

An example configuration for two sound cards is like below:

------ /etc/modprobe.conf

+----- /etc/modprobe.d/alsa.conf

# ALSA portion

options snd cards_limit=2

alias snd-card-0 snd-interwave

@@ -2194,7 +2194,7 @@ options snd-ens1371 index=1

# OSS/Free portion

alias sound-slot-0 snd-interwave

alias sound-slot-1 snd-ens1371

------ /etc/modprobe.conf

+----- /etc/modprobe.d/alsa.conf

In this example, the interwave card is always loaded as the first card

(index 0) and ens1371 as the second (index 1).

diff --git a/Documentation/Audiophile-Usb.txt b/Documentation/Audiophile-Usb.txt

index a4c53d8..654dd3b 100644

--- a/Documentation/Audiophile-Usb.txt

+++ b/Documentation/Audiophile-Usb.txt

@@ -232,7 +232,7 @@ The parameter can be given:

# modprobe snd-usb-audio index=1 device_setup=0x09

* Or while configuring the modules options in your modules configuration file

- - For Fedora distributions, edit the /etc/modprobe.conf file:

+ (tipically a .conf file in /etc/modprobe.d/ directory:

alias snd-card-1 snd-usb-audio

options snd-usb-audio index=1 device_setup=0x09

@@ -253,7 +253,7 @@ CAUTION when initializing the device

- first turn off the device

- de-register the snd-usb-audio module (modprobe -r)

- change the device_setup parameter by changing the device_setup

- option in /etc/modprobe.conf

+ option in /etc/modprobe.d/*.conf

- turn on the device

* A workaround for this last issue has been applied to kernel 2.6.23, but it may not

be enough to ensure the 'stability' of the device initialization.

diff --git a/Documentation/HD-Audio-Models.txt b/Documentation/HD-Audio-Models.txt

index d97d992..03f7897 100644

--- a/Documentation/HD-Audio-Models.txt

+++ b/Documentation/HD-Audio-Models.txt

@@ -43,7 +43,9 @@ ALC680

ALC882/883/885/888/889

======================

- N/A

+ acer-aspire-4930gAcer Aspire 4930G/5930G/6530G/6930G/7730G

+ acer-aspire-8930gAcer Aspire 8330G/6935G

+ acer-aspireAcer Aspire others

ALC861/660

==========

diff --git a/Documentation/MIXART.txt b/Documentation/MIXART.txt

index ef42c44..4ee35b4 100644

--- a/Documentation/MIXART.txt

+++ b/Documentation/MIXART.txt

@@ -76,9 +76,9 @@ FIRMWARE

when CONFIG_FW_LOADER is set. The mixartloader is necessary only

for older versions or when you build the driver into kernel.]

-For loading the firmware automatically after the module is loaded, use

-the post-install command. For example, add the following entry to

-/etc/modprobe.conf for miXart driver:

+For loading the firmware automatically after the module is loaded, use a

+install command. For example, add the following entry to

+/etc/modprobe.d/mixart.conf for miXart driver:

install snd-mixart /sbin/modprobe --first-time -i snd-mixart && \

/usr/bin/mixartloader

diff --git a/Documentation/OSS-Emulation.txt b/Documentation/OSS-Emulation.txt

index 022aaeb..152ca2a 100644

--- a/Documentation/OSS-Emulation.txt

+++ b/Documentation/OSS-Emulation.txt

@@ -19,7 +19,7 @@ the card number and the minor unit number. Usually you don't have to

define these aliases by yourself.

Only necessary step for auto-loading of OSS modules is to define the

-card alias in /etc/modprobe.conf, such as

+card alias in /etc/modprobe.d/alsa.conf, such as

alias sound-slot-0 snd-emu10k1

diff --git a/arm/aaci.c b/arm/aaci.c

index b37b702..5119fda 100644

--- a/arm/aaci.c

+++ b/arm/aaci.c

@@ -1110,18 +1110,7 @@ static struct amba_driver aaci_driver = {

.id_table= aaci_ids,

};

-static int __init aaci_init(void)

-{

-return amba_driver_register(&aaci_driver);

-}

-

-static void __exit aaci_exit(void)

-{

-amba_driver_unregister(&aaci_driver);

-}

-

-module_init(aaci_init);

-module_exit(aaci_exit);

+module_amba_driver(aaci_driver);

MODULE_LICENSE("GPL");

MODULE_DESCRIPTION("ARM PrimeCell PL041 Advanced Audio CODEC Interface driver");

diff --git a/arm/pxa2xx-ac97-lib.c b/arm/pxa2xx-ac97-lib.c

index d1aa421..48d7c0a 100644

--- a/arm/pxa2xx-ac97-lib.c

+++ b/arm/pxa2xx-ac97-lib.c

@@ -17,11 +17,12 @@

#include

#include

#include

+#include

#include

#include

-#include

+#include

#include

#include

diff --git a/arm/pxa2xx-ac97.c b/arm/pxa2xx-ac97.c

index 3a39626..afef72c 100644

--- a/arm/pxa2xx-ac97.c

+++ b/arm/pxa2xx-ac97.c

@@ -11,6 +11,7 @@

*/

#include

+#include

#include

#include

diff --git a/atmel/abdac.c b/atmel/abdac.c

index 4fa1dbd..f7c2bb0 100644

--- a/atmel/abdac.c

+++ b/atmel/abdac.c

@@ -16,6 +16,7 @@

#include

#include

#include

+#include

#include

#include

@@ -467,15 +468,24 @@ static int __devinit atmel_abdac_probe(struct platform_device *pdev)

snd_card_set_dev(card, &pdev->dev);

if (pdata->dws.dma_dev) {

-struct dw_dma_slave *dws = &pdata->dws;

dma_cap_mask_t mask;

-dws->tx_reg = regs->start + DAC_DATA;

-

dma_cap_zero(mask);

dma_cap_set(DMA_SLAVE, mask);

-dac->dma.chan = dma_request_channel(mask, filter, dws);

+dac->dma.chan = dma_request_channel(mask, filter, &pdata->dws);

+if (dac->dma.chan) {

+struct dma_slave_config dma_conf = {

+.dst_addr = regs->start + DAC_DATA,

+.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES,

+.src_maxburst = 1,

+.dst_maxburst = 1,

+.direction = DMA_MEM_TO_DEV,

+.device_fc = false,

+};

+

+dmaengine_slave_config(dac->dma.chan, &dma_conf);

+}

}

if (!pdata->dws.dma_dev || !dac->dma.chan) {

dev_dbg(&pdev->dev, "DMA not available\n");

diff --git a/atmel/ac97c.c b/atmel/ac97c.c

index 61dade6..115313e 100644

--- a/atmel/ac97c.c

+++ b/atmel/ac97c.c

@@ -20,6 +20,7 @@

#include

#include

#include

+#include

#include

#include

@@ -1014,16 +1015,28 @@ static int __devinit atmel_ac97c_probe(struct platform_device *pdev)

if (cpu_is_at32ap7000()) {

if (pdata->rx_dws.dma_dev) {

-struct dw_dma_slave *dws = &pdata->rx_dws;

dma_cap_mask_t mask;

-dws->rx_reg = regs->start + AC97C_CARHR + 2;

-

dma_cap_zero(mask);

dma_cap_set(DMA_SLAVE, mask);

chip->dma.rx_chan = dma_request_channel(mask, filter,

-dws);

+&pdata->rx_dws);

+if (chip->dma.rx_chan) {

+struct dma_slave_config dma_conf = {

+.src_addr = regs->start + AC97C_CARHR +

+2,

+.src_addr_width =

+DMA_SLAVE_BUSWIDTH_2_BYTES,

+.src_maxburst = 1,

+.dst_maxburst = 1,

+.direction = DMA_DEV_TO_MEM,

+.device_fc = false,

+};

+

+dmaengine_slave_config(chip->dma.rx_chan,

+&dma_conf);

+}

dev_info(&chip->pdev->dev, "using %s for DMA RX\n",

dev_name(&chip->dma.rx_chan->dev->device));

@@ -1031,16 +1044,28 @@ static int __devinit atmel_ac97c_probe(struct platform_device *pdev)

}

if (pdata->tx_dws.dma_dev) {

-struct dw_dma_slave *dws = &pdata->tx_dws;

dma_cap_mask_t mask;

-dws->tx_reg = regs->start + AC97C_CATHR + 2;

-

dma_cap_zero(mask);

dma_cap_set(DMA_SLAVE, mask);

chip->dma.tx_chan = dma_request_channel(mask, filter,

-dws);

+&pdata->tx_dws);

+if (chip->dma.tx_chan) {

+struct dma_slave_config dma_conf = {

+.dst_addr = regs->start + AC97C_CATHR +

+2,

+.dst_addr_width =

+DMA_SLAVE_BUSWIDTH_2_BYTES,

+.src_maxburst = 1,

+.dst_maxburst = 1,

+.direction = DMA_MEM_TO_DEV,

+.device_fc = false,

+};

+

+dmaengine_slave_config(chip->dma.tx_chan,

+&dma_conf);

+}

dev_info(&chip->pdev->dev, "using %s for DMA TX\n",

dev_name(&chip->dma.tx_chan->dev->device));

diff --git a/core/init.c b/core/init.c

index 068cf08..d8ec849 100644

--- a/core/init.c

+++ b/core/init.c

@@ -22,6 +22,7 @@

#include

#include

#include

+#include

#include

#include

#include

diff --git a/core/pcm.c b/core/pcm.c

index 6e4bfcc..1a3070b 100644

--- a/core/pcm.c

+++ b/core/pcm.c

@@ -24,6 +24,7 @@

#include

#include

#include

+#include

#include

#include

#include

diff --git a/core/pcm_lib.c b/core/pcm_lib.c

index 3420bd3..4d18941 100644

--- a/core/pcm_lib.c

+++ b/core/pcm_lib.c

@@ -1029,7 +1029,8 @@ static int snd_interval_ratden(struct snd_interval *i,

*

* Returns non-zero if the value is changed, zero if not changed.

*/

-int snd_interval_list(struct snd_interval *i, unsigned int count, unsigned int *list, unsigned int mask)

+int snd_interval_list(struct snd_interval *i, unsigned int count,

+ const unsigned int *list, unsigned int mask)

{

unsigned int k;

struct snd_interval list_range;

diff --git a/core/pcm_native.c b/core/pcm_native.c

index 25ed9fe..3fe99e6 100644

--- a/core/pcm_native.c

+++ b/core/pcm_native.c

@@ -1586,12 +1586,18 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)

struct file *file;

struct snd_pcm_file *pcm_file;

struct snd_pcm_substream *substream1;

+struct snd_pcm_group *group;

file = snd_pcm_file_fd(fd);

if (!file)

return -EBADFD;

pcm_file = file->private_data;

substream1 = pcm_file->substream;

+group = kmalloc(sizeof(*group), GFP_KERNEL);

+if (!group) {

+res = -ENOMEM;

+goto _nolock;

+}

down_write(&snd_pcm_link_rwsem);

write_lock_irq(&snd_pcm_link_rwlock);

if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN ||

@@ -1604,11 +1610,7 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)

goto _end;

}

if (!snd_pcm_stream_linked(substream)) {

-substream->group = kmalloc(sizeof(struct snd_pcm_group), GFP_ATOMIC);

-if (substream->group == NULL) {

-res = -ENOMEM;

-goto _end;

-}

+substream->group = group;

spin_lock_init(&substream->group->lock);

INIT_LIST_HEAD(&substream->group->substreams);

list_add_tail(&substream->link_list, &substream->group->substreams);

@@ -1620,7 +1622,10 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)

_end:

write_unlock_irq(&snd_pcm_link_rwlock);

up_write(&snd_pcm_link_rwsem);

+ _nolock:

fput(file);

+if (res < 0)

+kfree(group);

return res;

}

diff --git a/core/seq/seq.c b/core/seq/seq.c

index 9d8379a..7121105 100644

--- a/core/seq/seq.c

+++ b/core/seq/seq.c

@@ -21,6 +21,7 @@

#include

#include

+#include

#include

#include

diff --git a/core/seq/seq_dummy.c b/core/seq/seq_dummy.c

index bbe32d2..dbc5507 100644

--- a/core/seq/seq_dummy.c

+++ b/core/seq/seq_dummy.c

@@ -46,7 +46,7 @@

The number of ports to be created can be specified via the module

parameter "ports". For example, to create four ports, add the

- following option in /etc/modprobe.conf:

+ following option in a configuration file under /etc/modprobe.d/:

option snd-seq-dummy ports=4

diff --git a/core/timer.c b/core/timer.c

index 8e7561d..6ddcf06 100644

--- a/core/timer.c

+++ b/core/timer.c

@@ -24,6 +24,7 @@

#include

#include

#include

+#include

#include

#include

#include

diff --git a/core/vmaster.c b/core/vmaster.c

index 130cfe6..8575861 100644

--- a/core/vmaster.c

+++ b/core/vmaster.c

@@ -37,6 +37,8 @@ struct link_master {

struct link_ctl_info info;

int val;/* the master value */

unsigned int tlv[4];

+void (*hook)(void *private_data, int);

+void *hook_private_data;

};

/*

@@ -126,7 +128,9 @@ static int master_init(struct link_master *master)

master->info.count = 1; /* always mono */

/* set full volume as default (= no attenuation) */

master->val = master->info.max_val;

-return 0;

+if (master->hook)

+master->hook(master->hook_private_data, master->val);

+return 1;

}

return -ENOENT;

}

@@ -329,6 +333,8 @@ static int master_put(struct snd_kcontrol *kcontrol,

slave_put_val(slave, uval);

}

kfree(uval);

+if (master->hook && !err)

+master->hook(master->hook_private_data, master->val);

return 1;

}

@@ -408,3 +414,42 @@ struct snd_kcontrol *snd_ctl_make_virtual_master(char *name,

return kctl;

}

EXPORT_SYMBOL(snd_ctl_make_virtual_master);

+

+/**

+ * snd_ctl_add_vmaster_hook - Add a hook to a vmaster control

+ * @kcontrol: vmaster kctl element

+ * @hook: the hook function

+ * @private_data: the private_data pointer to be saved

+ *

+ * Adds the given hook to the vmaster control element so that it's called

+ * at each time when the value is changed.

+ */

+int snd_ctl_add_vmaster_hook(struct snd_kcontrol *kcontrol,

+ void (*hook)(void *private_data, int),

+ void *private_data)

+{

+struct link_master *master = snd_kcontrol_chip(kcontrol);

+master->hook = hook;

+master->hook_private_data = private_data;

+return 0;

+}

+EXPORT_SYMBOL_GPL(snd_ctl_add_vmaster_hook);

+

+/**

+ * snd_ctl_sync_vmaster_hook - Sync the vmaster hook

+ * @kcontrol: vmaster kctl element

+ *

+ * Call the hook function to synchronize with the current value of the given

+ * vmaster element. NOP when NULL is passed to @kcontrol or the hook doesn't

+ * exist.

+ */

+void snd_ctl_sync_vmaster_hook(struct snd_kcontrol *kcontrol)

+{

+struct link_master *master;

+if (!kcontrol)

+return;

+master = snd_kcontrol_chip(kcontrol);

+if (master->hook)

+master->hook(master->hook_private_data, master->val);

+}

+EXPORT_SYMBOL_GPL(snd_ctl_sync_vmaster_hook);

diff --git a/drivers/Kconfig b/drivers/Kconfig

index c896116..fe5ae09 100644

--- a/drivers/Kconfig

+++ b/drivers/Kconfig

@@ -50,7 +50,8 @@ config SND_PCSP

before the other sound driver of yours, making the

pc-speaker a default sound device. Which is likely not

what you want. To make this driver play nicely with other

- sound driver, you can add this into your /etc/modprobe.conf:

+ sound driver, you can add this in a configuration file under

+ /etc/modprobe.d/ directory:

options snd-pcsp index=2

You don't need this driver if you only want your pc-speaker to beep.

diff --git a/firewire/isight.c b/firewire/isight.c

index cd094ec..d428ffe 100644

--- a/firewire/isight.c

+++ b/firewire/isight.c

@@ -611,7 +611,6 @@ static void isight_card_free(struct snd_card *card)

fw_iso_resources_destroy(&isight->resources);

fw_unit_put(isight->unit);

-fw_device_put(isight->device);

mutex_destroy(&isight->mutex);

}

@@ -644,7 +643,7 @@ static int isight_probe(struct device *unit_dev)

isight->card = card;

mutex_init(&isight->mutex);

isight->unit = fw_unit_get(unit);

-isight->device = fw_device_get(fw_dev);

+isight->device = fw_dev;

isight->audio_base = get_unit_base(unit);

if (!isight->audio_base) {

dev_err(&unit->device, "audio unit base not found\n");

@@ -681,7 +680,6 @@ static int isight_probe(struct device *unit_dev)

err_unit:

fw_unit_put(isight->unit);

-fw_device_put(isight->device);

mutex_destroy(&isight->mutex);

error:

snd_card_free(card);

diff --git a/firewire/speakers.c b/firewire/speakers.c

index cbe6bb9..297244e 100644

--- a/firewire/speakers.c

+++ b/firewire/speakers.c

@@ -656,12 +656,10 @@ static u32 fwspk_read_firmware_version(struct fw_unit *unit)

static void fwspk_card_free(struct snd_card *card)

{

struct fwspk *fwspk = card->private_data;

-struct fw_device *dev = fw_parent_device(fwspk->unit);

amdtp_out_stream_destroy(&fwspk->stream);

cmp_connection_destroy(&fwspk->connection);

fw_unit_put(fwspk->unit);

-fw_device_put(dev);

mutex_destroy(&fwspk->mutex);

}

@@ -718,7 +716,6 @@ static int __devinit fwspk_probe(struct device *unit_dev)

fwspk = card->private_data;

fwspk->card = card;

mutex_init(&fwspk->mutex);

-fw_device_get(fw_dev);

fwspk->unit = fw_unit_get(unit);

fwspk->device_info = fwspk_detect(fw_dev);

if (!fwspk->device_info) {

@@ -767,7 +764,6 @@ err_connection:

cmp_connection_destroy(&fwspk->connection);

err_unit:

fw_unit_put(fwspk->unit);

-fw_device_put(fw_dev);

mutex_destroy(&fwspk->mutex);

error:

snd_card_free(card);

diff --git a/i2c/other/tea575x-tuner.c b/i2c/other/tea575x-tuner.c

index 6b68c82..a63faec 100644

--- a/i2c/other/tea575x-tuner.c

+++ b/i2c/other/tea575x-tuner.c

@@ -25,21 +25,20 @@

#include

#include

#include

-#include

+#include

+#include

#include

+#include

#include

+#include

#include

MODULE_AUTHOR("Jaroslav Kysela ");

MODULE_DESCRIPTION("Routines for control of TEA5757/5759 Philips AM/FM radio tuner chips");

MODULE_LICENSE("GPL");

-static int radio_nr = -1;

-module_param(radio_nr, int, 0);

-

-#define RADIO_VERSION KERNEL_VERSION(0, 0, 2)

-#define FREQ_LO (50UL * 16000)

-#define FREQ_HI(150UL * 16000)

+#define FREQ_LO (76U * 16000)

+#define FREQ_HI(108U * 16000)

/*

* definitions

@@ -90,7 +89,7 @@ static void snd_tea575x_write(struct snd_tea575x *tea, unsigned int val)

tea->ops->set_pins(tea, 0);

}

-static unsigned int snd_tea575x_read(struct snd_tea575x *tea)

+static u32 snd_tea575x_read(struct snd_tea575x *tea)

{

u16 l, rdata;

u32 data = 0;

@@ -121,11 +120,13 @@ static unsigned int snd_tea575x_read(struct snd_tea575x *tea)

return data;

}

-static void snd_tea575x_get_freq(struct snd_tea575x *tea)

+static u32 snd_tea575x_get_freq(struct snd_tea575x *tea)

{

-unsigned long freq;

+u32 freq = snd_tea575x_read(tea) & TEA575X_BIT_FREQ_MASK;

+

+if (freq == 0)

+return freq;

-freq = snd_tea575x_read(tea) & TEA575X_BIT_FREQ_MASK;

/* freq *= 12.5 */

freq *= 125;

freq /= 10;

@@ -135,14 +136,13 @@ static void snd_tea575x_get_freq(struct snd_tea575x *tea)

else

freq -= TEA575X_FMIF;

-tea->freq = freq * 16;/* from kHz */

+return clamp(freq * 16, FREQ_LO, FREQ_HI); /* from kHz */

}

static void snd_tea575x_set_freq(struct snd_tea575x *tea)

{

-unsigned long freq;

+u32 freq = tea->freq;

-freq = clamp(tea->freq, FREQ_LO, FREQ_HI);

freq /= 16;/* to kHz */

/* crystal fixup */

if (tea->tea5759)

@@ -167,12 +167,14 @@ static int vidioc_querycap(struct file *file, void *priv,

{

struct snd_tea575x *tea = video_drvdata(file);

-strlcpy(v->driver, "tea575x-tuner", sizeof(v->driver));

+strlcpy(v->driver, tea->v4l2_dev->name, sizeof(v->driver));

strlcpy(v->card, tea->card, sizeof(v->card));

strlcat(v->card, tea->tea5759 ? " TEA5759" : " TEA5757", sizeof(v->card));

strlcpy(v->bus_info, tea->bus_info, sizeof(v->bus_info));

-v->version = RADIO_VERSION;

-v->capabilities = V4L2_CAP_TUNER | V4L2_CAP_RADIO;

+v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;

+if (!tea->cannot_read_data)

+v->device_caps |= V4L2_CAP_HW_FREQ_SEEK;

+v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;

return 0;

}

@@ -191,18 +193,24 @@ static int vidioc_g_tuner(struct file *file, void *priv,

v->capability = V4L2_TUNER_CAP_LOW | V4L2_TUNER_CAP_STEREO;

v->rangelow = FREQ_LO;

v->rangehigh = FREQ_HI;

-v->rxsubchans = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO;

-v->audmode = tea->stereo ? V4L2_TUNER_MODE_STEREO : V4L2_TUNER_MODE_MONO;

+v->rxsubchans = tea->stereo ? V4L2_TUNER_SUB_STEREO : V4L2_TUNER_SUB_MONO;

+v->audmode = (tea->val & TEA575X_BIT_MONO) ?

+V4L2_TUNER_MODE_MONO : V4L2_TUNER_MODE_STEREO;

v->signal = tea->tuned ? 0xffff : 0;

-

return 0;

}

static int vidioc_s_tuner(struct file *file, void *priv,

struct v4l2_tuner *v)

{

-if (v->index > 0)

+struct snd_tea575x *tea = video_drvdata(file);

+

+if (v->index)

return -EINVAL;

+tea->val &= ~TEA575X_BIT_MONO;

+if (v->audmode == V4L2_TUNER_MODE_MONO)

+tea->val |= TEA575X_BIT_MONO;

+snd_tea575x_write(tea, tea->val);

return 0;

}

@@ -214,7 +222,6 @@ static int vidioc_g_frequency(struct file *file, void *priv,

if (f->tuner != 0)

return -EINVAL;

f->type = V4L2_TUNER_RADIO;

-snd_tea575x_get_freq(tea);

f->frequency = tea->freq;

return 0;

}

@@ -227,33 +234,72 @@ static int vidioc_s_frequency(struct file *file, void *priv,

if (f->tuner != 0 || f->type != V4L2_TUNER_RADIO)

return -EINVAL;

-if (f->frequency < FREQ_LO || f->frequency > FREQ_HI)

-return -EINVAL;

-

-tea->freq = f->frequency;

-

+tea->val &= ~TEA575X_BIT_SEARCH;

+tea->freq = clamp(f->frequency, FREQ_LO, FREQ_HI);

snd_tea575x_set_freq(tea);

-

return 0;

}

-static int vidioc_g_audio(struct file *file, void *priv,

-struct v4l2_audio *a)

+static int vidioc_s_hw_freq_seek(struct file *file, void *fh,

+struct v4l2_hw_freq_seek *a)

{

-if (a->index > 1)

-return -EINVAL;

-

-strcpy(a->name, "Radio");

-a->capability = V4L2_AUDCAP_STEREO;

-return 0;

-}

+struct snd_tea575x *tea = video_drvdata(file);

+unsigned long timeout;

+int i;

-static int vidioc_s_audio(struct file *file, void *priv,

-struct v4l2_audio *a)

-{

-if (a->index != 0)

+if (tea->cannot_read_data)

+return -ENOTTY;

+if (a->tuner || a->wrap_around)

return -EINVAL;

-return 0;

+

+/* clear the frequency, HW will fill it in */

+tea->val &= ~TEA575X_BIT_FREQ_MASK;

+tea->val |= TEA575X_BIT_SEARCH;

+if (a->seek_upward)

+tea->val |= TEA575X_BIT_UPDOWN;

+else

+tea->val &= ~TEA575X_BIT_UPDOWN;

+snd_tea575x_write(tea, tea->val);

+timeout = jiffies + msecs_to_jiffies(10000);

+for (;;) {

+if (time_after(jiffies, timeout))

+break;

+if (schedule_timeout_interruptible(msecs_to_jiffies(10))) {

+/* some signal arrived, stop search */

+tea->val &= ~TEA575X_BIT_SEARCH;

+snd_tea575x_set_freq(tea);

+return -ERESTARTSYS;

+}

+if (!(snd_tea575x_read(tea) & TEA575X_BIT_SEARCH)) {

+u32 freq;

+

+/* Found a frequency, wait until it can be read */

+for (i = 0; i < 100; i++) {

+msleep(10);

+freq = snd_tea575x_get_freq(tea);

+if (freq) /* available */

+break;

+}

+if (freq == 0) /* shouldn't happen */

+break;

+/*

+ * if we moved by less than 50 kHz, or in the wrong

+ * direction, continue seeking

+ */

+if (abs(tea->freq - freq) < 16 * 50 ||

+(a->seek_upward && freq < tea->freq) ||

+(!a->seek_upward && freq > tea->freq)) {

+snd_tea575x_write(tea, tea->val);

+continue;

+}

+tea->freq = freq;

+tea->val &= ~TEA575X_BIT_SEARCH;

+return 0;

+}

+}

+tea->val &= ~TEA575X_BIT_SEARCH;

+snd_tea575x_set_freq(tea);

+return -EAGAIN;

}

static int tea575x_s_ctrl(struct v4l2_ctrl *ctrl)

@@ -273,23 +319,27 @@ static int tea575x_s_ctrl(struct v4l2_ctrl *ctrl)

static const struct v4l2_file_operations tea575x_fops = {

.owner= THIS_MODULE,

.unlocked_ioctl= video_ioctl2,

+.open = v4l2_fh_open,

+.release = v4l2_fh_release,

+.poll = v4l2_ctrl_poll,

};

static const struct v4l2_ioctl_ops tea575x_ioctl_ops = {

.vidioc_querycap = vidioc_querycap,

.vidioc_g_tuner = vidioc_g_tuner,

.vidioc_s_tuner = vidioc_s_tuner,

-.vidioc_g_audio = vidioc_g_audio,

-.vidioc_s_audio = vidioc_s_audio,

.vidioc_g_frequency = vidioc_g_frequency,

.vidioc_s_frequency = vidioc_s_frequency,

+.vidioc_s_hw_freq_seek = vidioc_s_hw_freq_seek,

+.vidioc_log_status = v4l2_ctrl_log_status,

+.vidioc_subscribe_event = v4l2_ctrl_subscribe_event,

+.vidioc_unsubscribe_event = v4l2_event_unsubscribe,

};

-static struct video_device tea575x_radio = {

-.name = "tea575x-tuner",

+static const struct video_device tea575x_radio = {

.fops = &tea575x_fops,

.ioctl_ops = &tea575x_ioctl_ops,

-.release= video_device_release_empty,

+.release = video_device_release_empty,

};

static const struct v4l2_ctrl_ops tea575x_ctrl_ops = {

@@ -303,27 +353,34 @@ int snd_tea575x_init(struct snd_tea575x *tea)

{

int retval;

-tea->mute = 1;

+tea->mute = true;

-snd_tea575x_write(tea, 0x55AA);

-if (snd_tea575x_read(tea) != 0x55AA)

-return -ENODEV;

+/* Not all devices can or know how to read the data back.

+ Such devices can set cannot_read_data to true. */

+if (!tea->cannot_read_data) {

+snd_tea575x_write(tea, 0x55AA);

+if (snd_tea575x_read(tea) != 0x55AA)

+return -ENODEV;

+}

-tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_10_40;

+tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_5_28;

tea->freq = 90500 * 16;/* 90.5Mhz default */

snd_tea575x_set_freq(tea);

tea->vd = tea575x_radio;

video_set_drvdata(&tea->vd, tea);

mutex_init(&tea->mutex);

+strlcpy(tea->vd.name, tea->v4l2_dev->name, sizeof(tea->vd.name));

tea->vd.lock = &tea->mutex;

+tea->vd.v4l2_dev = tea->v4l2_dev;

+tea->vd.ctrl_handler = &tea->ctrl_handler;

+set_bit(V4L2_FL_USE_FH_PRIO, &tea->vd.flags);

v4l2_ctrl_handler_init(&tea->ctrl_handler, 1);

-tea->vd.ctrl_handler = &tea->ctrl_handler;

v4l2_ctrl_new_std(&tea->ctrl_handler, &tea575x_ctrl_ops, V4L2_CID_AUDIO_MUTE, 0, 1, 1, 1);

retval = tea->ctrl_handler.error;

if (retval) {

-printk(KERN_ERR "tea575x-tuner: can't initialize controls\n");

+v4l2_err(tea->v4l2_dev, "can't initialize controls\n");

v4l2_ctrl_handler_free(&tea->ctrl_handler);

return retval;

}

@@ -338,9 +395,9 @@ int snd_tea575x_init(struct snd_tea575x *tea)

v4l2_ctrl_handler_setup(&tea->ctrl_handler);

-retval = video_register_device(&tea->vd, VFL_TYPE_RADIO, radio_nr);

+retval = video_register_device(&tea->vd, VFL_TYPE_RADIO, tea->radio_nr);

if (retval) {

-printk(KERN_ERR "tea575x-tuner: can't register video device!\n");

+v4l2_err(tea->v4l2_dev, "can't register video device!\n");

v4l2_ctrl_handler_free(&tea->ctrl_handler);

return retval;

}

diff --git a/include/compress_params.h b/include/compress_params.h

index d97d69f..da4a456 100644

--- a/include/compress_params.h

+++ b/include/compress_params.h

@@ -51,6 +51,8 @@

#ifndef __SND_COMPRESS_PARAMS_H

#define __SND_COMPRESS_PARAMS_H

+#include

+

/* AUDIO CODECS SUPPORTED */

#define MAX_NUM_CODECS 32

#define MAX_NUM_CODEC_DESCRIPTORS 32

diff --git a/include/control.h b/include/control.h

index 57815f6..8332e86 100644

--- a/include/control.h

+++ b/include/control.h

@@ -227,6 +227,11 @@ snd_ctl_add_slave_uncached(struct snd_kcontrol *master,

return _snd_ctl_add_slave(master, slave, SND_CTL_SLAVE_NEED_UPDATE);

}

+int snd_ctl_add_vmaster_hook(struct snd_kcontrol *kctl,

+ void (*hook)(void *private_data, int),

+ void *private_data);

+void snd_ctl_sync_vmaster_hook(struct snd_kcontrol *kctl);

+

/*

* Helper functions for jack-detection controls

*/

diff --git a/include/core.h b/include/core.h

index cea1b54..bc05668 100644

--- a/include/core.h

+++ b/include/core.h

@@ -26,7 +26,6 @@

#include /* struct mutex */

#include /* struct rw_semaphore */

#include /* pm_message_t */

-#include

#include

/* number of supported soundcards */

@@ -39,10 +38,10 @@

#define CONFIG_SND_MAJOR116/* standard configuration */

/* forward declarations */

-#ifdef CONFIG_PCI

struct pci_dev;

-#endif

struct module;

+struct device;

+struct device_attribute;

/* device allocation stuff */

@@ -326,6 +325,13 @@ void release_and_free_resource(struct resource *res);

/* --- */

+/* sound printk debug levels */

+enum {

+SND_PR_ALWAYS,

+SND_PR_DEBUG,

+SND_PR_VERBOSE,

+};

+

#if defined(CONFIG_SND_DEBUG) || defined(CONFIG_SND_VERBOSE_PRINTK)

__printf(4, 5)

void __snd_printk(unsigned int level, const char *file, int line,

@@ -355,6 +361,8 @@ void __snd_printk(unsigned int level, const char *file, int line,

*/

#define snd_printd(fmt, args...) \

__snd_printk(1, __FILE__, __LINE__, fmt, ##args)

+#define _snd_printd(level, fmt, args...) \

+__snd_printk(level, __FILE__, __LINE__, fmt, ##args)

/**

* snd_BUG - give a BUG warning message and stack trace

@@ -384,6 +392,7 @@ void __snd_printk(unsigned int level, const char *file, int line,

#else /* !CONFIG_SND_DEBUG */

#define snd_printd(fmt, args...)do { } while (0)

+#define _snd_printd(level, fmt, args...) do { } while (0)

#define snd_BUG()do { } while (0)

static inline int __snd_bug_on(int cond)

{

diff --git a/include/pcm.h b/include/pcm.h

index 1d58d79..0d11128 100644

--- a/include/pcm.h

+++ b/include/pcm.h

@@ -264,7 +264,7 @@ struct snd_pcm_hw_constraint_ratdens {

struct snd_pcm_hw_constraint_list {

unsigned int count;

-unsigned int *list;

+const unsigned int *list;

unsigned int mask;

};

@@ -785,7 +785,8 @@ void snd_interval_muldivk(const struct snd_interval *a, const struct snd_interva

unsigned int k, struct snd_interval *c);

void snd_interval_mulkdiv(const struct snd_interval *a, unsigned int k,

const struct snd_interval *b, struct snd_interval *c);

-int snd_interval_list(struct snd_interval *i, unsigned int count, unsigned int *list, unsigned int mask);

+int snd_interval_list(struct snd_interval *i, unsigned int count,

+ const unsigned int *list, unsigned int mask);

int snd_interval_ratnum(struct snd_interval *i,

unsigned int rats_count, struct snd_ratnum *rats,

unsigned int *nump, unsigned int *denp);

diff --git a/include/soc-dapm.h b/include/soc-dapm.h

index e46107f..8da3c24 100644

--- a/include/soc-dapm.h

+++ b/include/soc-dapm.h

@@ -13,10 +13,11 @@

#ifndef __LINUX_SND_SOC_DAPM_H

#define __LINUX_SND_SOC_DAPM_H

-#include

#include

#include

+struct device;

+

/* widget has no PM register bit */

#define SND_SOC_NOPM-1

diff --git a/include/soc.h b/include/soc.h

index 82bd773..2ebf787 100644

--- a/include/soc.h

+++ b/include/soc.h

@@ -718,6 +718,7 @@ struct snd_soc_platform {

int id;

struct device *dev;

struct snd_soc_platform_driver *driver;

+struct mutex mutex;

unsigned int suspended:1; /* platform is suspended */

unsigned int probed:1;

diff --git a/include/tea575x-tuner.h b/include/tea575x-tuner.h

index 726e947..ec3f910 100644

--- a/include/tea575x-tuner.h

+++ b/include/tea575x-tuner.h

@@ -25,6 +25,7 @@

#include

#include

#include

+#include

#define TEA575X_FMIF10700

@@ -42,13 +43,16 @@ struct snd_tea575x_ops {

};

struct snd_tea575x {

+struct v4l2_device *v4l2_dev;

struct video_device vd;/* video device */

+int radio_nr;/* radio_nr */

bool tea5759;/* 5759 chip is present */

+bool cannot_read_data;/* Device cannot read the data pin */

bool mute;/* Device is muted? */

bool stereo;/* receiving stereo */

bool tuned;/* tuned to a station */

unsigned int val;/* hw value */

-unsigned long freq;/* frequency */

+u32 freq;/* frequency */

struct mutex mutex;

struct snd_tea575x_ops *ops;

void *private_data;

diff --git a/isa/opti9xx/opti92x-ad1848.c b/isa/opti9xx/opti92x-ad1848.c

index babaedd..d7ccf28 100644

--- a/isa/opti9xx/opti92x-ad1848.c

+++ b/isa/opti9xx/opti92x-ad1848.c

@@ -65,7 +65,7 @@ static int index = SNDRV_DEFAULT_IDX1;/* Index 0-MAX */

static char *id = SNDRV_DEFAULT_STR1;/* ID for this card */

//static bool enable = SNDRV_DEFAULT_ENABLE1;/* Enable this card */

#ifdef CONFIG_PNP

-static int isapnp = 1;/* Enable ISA PnP detection */

+static bool isapnp = true;/* Enable ISA PnP detection */

#endif

static long port = SNDRV_DEFAULT_PORT1; /* 0x530,0xe80,0xf40,0x604 */

static long mpu_port = SNDRV_DEFAULT_PORT1;/* 0x300,0x310,0x320,0x330 */

diff --git a/isa/sscape.c b/isa/sscape.c

index b4a6aa9..8490f59 100644

--- a/isa/sscape.c

+++ b/isa/sscape.c

@@ -1019,13 +1019,15 @@ static int __devinit create_sscape(int dev, struct snd_card *card)

irq_cfg = get_irq_config(sscape->type, irq[dev]);

if (irq_cfg == INVALID_IRQ) {

snd_printk(KERN_ERR "sscape: Invalid IRQ %d\n", irq[dev]);

-return -ENXIO;

+err = -ENXIO;

+goto _release_dma;

}

mpu_irq_cfg = get_irq_config(sscape->type, mpu_irq[dev]);

if (mpu_irq_cfg == INVALID_IRQ) {

snd_printk(KERN_ERR "sscape: Invalid IRQ %d\n", mpu_irq[dev]);

-return -ENXIO;

+err = -ENXIO;

+goto _release_dma;

}

/*

diff --git a/last.c b/last.c

index bdd0857..7ffc182 100644

--- a/last.c

+++ b/last.c

@@ -38,4 +38,4 @@ static int __init alsa_sound_last_init(void)

return 0;

}

-__initcall(alsa_sound_last_init);

+late_initcall_sync(alsa_sound_last_init);

diff --git a/pci/Kconfig b/pci/Kconfig

index 8816804..5ca0939 100644

--- a/pci/Kconfig

+++ b/pci/Kconfig

@@ -2,8 +2,8 @@

config SND_TEA575X

tristate

-depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2

-default SND_FM801 || SND_ES1968 || RADIO_SF16FMR2

+depends on SND_FM801_TEA575X_BOOL || SND_ES1968_RADIO || RADIO_SF16FMR2 || RADIO_MAXIRADIO

+default SND_FM801 || SND_ES1968 || RADIO_SF16FMR2 || RADIO_MAXIRADIO

menuconfig SND_PCI

bool "PCI sound devices"

diff --git a/pci/asihpi/hpi_internal.h b/pci/asihpi/hpi_internal.h

index 4cc315d..bc86cb7 100644

--- a/pci/asihpi/hpi_internal.h

+++ b/pci/asihpi/hpi_internal.h

@@ -1,7 +1,7 @@

/******************************************************************************

AudioScience HPI driver

- Copyright (C) 1997-2011 AudioScience Inc.

+ Copyright (C) 1997-2012 AudioScience Inc.

This program is free software; you can redistribute it and/or modify

it under the terms of version 2 of the GNU General Public License as

diff --git a/pci/asihpi/hpios.c b/pci/asihpi/hpios.c

index 2d7d1c2..5ef4fe9 100644

--- a/pci/asihpi/hpios.c

+++ b/pci/asihpi/hpios.c

@@ -1,7 +1,7 @@

/******************************************************************************

AudioScience HPI driver

- Copyright (C) 1997-2011 AudioScience Inc.

+ Copyright (C) 1997-2012 AudioScience Inc.

This program is free software; you can redistribute it and/or modify

it under the terms of version 2 of the GNU General Public License as

@@ -39,9 +39,9 @@ void hpios_delay_micro_seconds(u32 num_micro_sec)

}

-/** Allocated an area of locked memory for bus master DMA operations.

+/** Allocate an area of locked memory for bus master DMA operations.

-On error, return -ENOMEM, and *pMemArea.size = 0

+If allocation fails, return 1, and *pMemArea.size = 0

*/

u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,

struct pci_dev *pdev)

@@ -62,7 +62,7 @@ u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,

HPI_DEBUG_LOG(WARNING,

"failed to allocate %d bytes locked memory\n", size);

p_mem_area->size = 0;

-return -ENOMEM;

+return 1;

}

}

diff --git a/pci/asihpi/hpios.h b/pci/asihpi/hpios.h

index c5cef11..d3fbd0d 100644

--- a/pci/asihpi/hpios.h

+++ b/pci/asihpi/hpios.h

@@ -30,7 +30,6 @@ HPI Operating System Specific macros for Linux Kernel driver

#define HPI_BUILD_KERNEL_MODE

#include

-#include

#include

#include

#include

diff --git a/pci/au88x0/au88x0_core.c b/pci/au88x0/au88x0_core.c

index 1181c5e..525f881 100644

--- a/pci/au88x0/au88x0_core.c

+++ b/pci/au88x0/au88x0_core.c

@@ -2477,7 +2477,7 @@ static irqreturn_t vortex_interrupt(int irq, void *dev_id)

hwread(vortex->mmio, VORTEX_IRQ_STAT);

handled = 1;

}

-if (source & IRQ_MIDI) {

+if ((source & IRQ_MIDI) && vortex->rmidi) {

snd_mpu401_uart_interrupt(vortex->irq,

vortex->rmidi->private_data);

handled = 1;

diff --git a/pci/aw2/aw2-saa7146.c b/pci/aw2/aw2-saa7146.c

index 8afd8b5..4439636 100644

--- a/pci/aw2/aw2-saa7146.c

+++ b/pci/aw2/aw2-saa7146.c

@@ -27,7 +27,6 @@

#include

#include

#include

-#include

#include

#include

#include

diff --git a/pci/es1968.c b/pci/es1968.c

index cb557c6..a8faae1 100644

--- a/pci/es1968.c

+++ b/pci/es1968.c

@@ -142,6 +142,7 @@ static int enable_mpu[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};

#ifdef SUPPORT_JOYSTICK

static bool joystick[SNDRV_CARDS];

#endif

+static int radio_nr[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -1};

module_param_array(index, int, NULL, 0444);

MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");

@@ -165,6 +166,9 @@ MODULE_PARM_DESC(enable_mpu, "Enable MPU401. (0 = off, 1 = on, 2 = auto)");

module_param_array(joystick, bool, NULL, 0444);

MODULE_PARM_DESC(joystick, "Enable joystick.");

#endif

+module_param_array(radio_nr, int, NULL, 0444);

+MODULE_PARM_DESC(radio_nr, "Radio device numbers");

+

#define NR_APUS64

@@ -558,6 +562,7 @@ struct es1968 {

struct work_struct hwvol_work;

#ifdef CONFIG_SND_ES1968_RADIO

+struct v4l2_device v4l2_dev;

struct snd_tea575x tea;

#endif

};

@@ -2613,6 +2618,7 @@ static int snd_es1968_free(struct es1968 *chip)

#ifdef CONFIG_SND_ES1968_RADIO

snd_tea575x_exit(&chip->tea);

+v4l2_device_unregister(&chip->v4l2_dev);

#endif

if (chip->irq >= 0)

@@ -2655,6 +2661,7 @@ static int __devinit snd_es1968_create(struct snd_card *card,

int capt_streams,

int chip_type,

int do_pm,

+ int radio_nr,

struct es1968 **chip_ret)

{

static struct snd_device_ops ops = {

@@ -2751,7 +2758,14 @@ static int __devinit snd_es1968_create(struct snd_card *card,

snd_card_set_dev(card, &pci->dev);

#ifdef CONFIG_SND_ES1968_RADIO

+err = v4l2_device_register(&pci->dev, &chip->v4l2_dev);

+if (err < 0) {

+snd_es1968_free(chip);

+return err;

+}

+chip->tea.v4l2_dev = &chip->v4l2_dev;

chip->tea.private_data = chip;

+chip->tea.radio_nr = radio_nr;

chip->tea.ops = &snd_es1968_tea_ops;

strlcpy(chip->tea.card, "SF64-PCE2", sizeof(chip->tea.card));

sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci));

@@ -2797,6 +2811,7 @@ static int __devinit snd_es1968_probe(struct pci_dev *pci,

pcm_substreams_c[dev],

pci_id->driver_data,

use_pm[dev],

+ radio_nr[dev],

&chip)) < 0) {

snd_card_free(card);

return err;

diff --git a/pci/fm801.c b/pci/fm801.c

index 9597ef1..a416ea8 100644

--- a/pci/fm801.c

+++ b/pci/fm801.c

@@ -58,6 +58,7 @@ static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;/* Enable this card

* High 16-bits are video (radio) device number + 1

*/

static int tea575x_tuner[SNDRV_CARDS];

+static int radio_nr[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -1};

module_param_array(index, int, NULL, 0444);

MODULE_PARM_DESC(index, "Index value for the FM801 soundcard.");

@@ -67,6 +68,9 @@ module_param_array(enable, bool, NULL, 0444);

MODULE_PARM_DESC(enable, "Enable FM801 soundcard.");

module_param_array(tea575x_tuner, int, NULL, 0444);

MODULE_PARM_DESC(tea575x_tuner, "TEA575x tuner access method (0 = auto, 1 = SF256-PCS, 2=SF256-PCP, 3=SF64-PCR, 8=disable, +16=tuner-only).");

+module_param_array(radio_nr, int, NULL, 0444);

+MODULE_PARM_DESC(radio_nr, "Radio device numbers");

+

#define TUNER_DISABLED(1<<3)

#define TUNER_ONLY(1<<4)

@@ -197,6 +201,7 @@ struct fm801 {

struct snd_info_entry *proc_entry;

#ifdef CONFIG_SND_FM801_TEA575X_BOOL

+struct v4l2_device v4l2_dev;

struct snd_tea575x tea;

#endif

@@ -1154,8 +1159,10 @@ static int snd_fm801_free(struct fm801 *chip)

__end_hw:

#ifdef CONFIG_SND_FM801_TEA575X_BOOL

-if (!(chip->tea575x_tuner & TUNER_DISABLED))

+if (!(chip->tea575x_tuner & TUNER_DISABLED)) {

snd_tea575x_exit(&chip->tea);

+v4l2_device_unregister(&chip->v4l2_dev);

+}

#endif

if (chip->irq >= 0)

free_irq(chip->irq, chip);

@@ -1175,6 +1182,7 @@ static int snd_fm801_dev_free(struct snd_device *device)

static int __devinit snd_fm801_create(struct snd_card *card,

struct pci_dev * pci,

int tea575x_tuner,

+ int radio_nr,

struct fm801 ** rchip)

{

struct fm801 *chip;

@@ -1234,6 +1242,13 @@ static int __devinit snd_fm801_create(struct snd_card *card,

snd_card_set_dev(card, &pci->dev);

#ifdef CONFIG_SND_FM801_TEA575X_BOOL

+err = v4l2_device_register(&pci->dev, &chip->v4l2_dev);

+if (err < 0) {

+snd_fm801_free(chip);

+return err;

+}

+chip->tea.v4l2_dev = &chip->v4l2_dev;

+chip->tea.radio_nr = radio_nr;

chip->tea.private_data = chip;

chip->tea.ops = &snd_fm801_tea_ops;

sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci));

@@ -1241,6 +1256,7 @@ static int __devinit snd_fm801_create(struct snd_card *card,

(tea575x_tuner & TUNER_TYPE_MASK) < 4) {

if (snd_tea575x_init(&chip->tea)) {

snd_printk(KERN_ERR "TEA575x radio not found\n");

+snd_fm801_free(chip);

return -ENODEV;

}

} else if ((tea575x_tuner & TUNER_TYPE_MASK) == 0) {

@@ -1287,7 +1303,7 @@ static int __devinit snd_card_fm801_probe(struct pci_dev *pci,

err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);

if (err < 0)

return err;

-if ((err = snd_fm801_create(card, pci, tea575x_tuner[dev], &chip)) < 0) {

+if ((err = snd_fm801_create(card, pci, tea575x_tuner[dev], radio_nr[dev], &chip)) < 0) {

snd_card_free(card);

return err;

}

diff --git a/pci/hda/hda_codec.c b/pci/hda/hda_codec.c

index 0c0ac0e..7a8fcc4 100644

--- a/pci/hda/hda_codec.c

+++ b/pci/hda/hda_codec.c

@@ -2399,6 +2399,7 @@ static int init_slave_unmute(void *data, struct snd_kcontrol *slave)

* @slaves: slave control names (optional)

* @suffix: suffix string to each slave name (optional)

* @init_slave_vol: initialize slaves to unmute/0dB

+ * @ctl_ret: store the vmaster kcontrol in return

*

* Create a virtual master control with the given name. The TLV data

* must be either NULL or a valid data.

@@ -2411,11 +2412,15 @@ static int init_slave_unmute(void *data, struct snd_kcontrol *slave)

*/

int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,

unsigned int *tlv, const char * const *slaves,

-const char *suffix, bool init_slave_vol)

+ const char *suffix, bool init_slave_vol,

+ struct snd_kcontrol **ctl_ret)

{

struct snd_kcontrol *kctl;

int err;

+if (ctl_ret)

+*ctl_ret = NULL;

+

err = map_slaves(codec, slaves, suffix, check_slave_present, NULL);

if (err != 1) {

snd_printdd("No slave found for %s\n", name);

@@ -2439,10 +2444,109 @@ int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,

map_slaves(codec, slaves, suffix,

tlv ? init_slave_0dB : init_slave_unmute, kctl);

+if (ctl_ret)

+*ctl_ret = kctl;

return 0;

}

EXPORT_SYMBOL_HDA(__snd_hda_add_vmaster);

+/*

+ * mute-LED control using vmaster

+ */

+static int vmaster_mute_mode_info(struct snd_kcontrol *kcontrol,

+ struct snd_ctl_elem_info *uinfo)

+{

+static const char * const texts[] = {

+"Off", "On", "Follow Master"

+};

+unsigned int index;

+

+uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;

+uinfo->count = 1;

+uinfo->value.enumerated.items = 3;

+index = uinfo->value.enumerated.item;

+if (index >= 3)

+index = 2;

+strcpy(uinfo->value.enumerated.name, texts[index]);

+return 0;

+}

+

+static int vmaster_mute_mode_get(struct snd_kcontrol *kcontrol,

+ struct snd_ctl_elem_value *ucontrol)

+{

+struct hda_vmaster_mute_hook *hook = snd_kcontrol_chip(kcontrol);

+ucontrol->value.enumerated.item[0] = hook->mute_mode;

+return 0;

+}

+

+static int vmaster_mute_mode_put(struct snd_kcontrol *kcontrol,

+ struct snd_ctl_elem_value *ucontrol)

+{

+struct hda_vmaster_mute_hook *hook = snd_kcontrol_chip(kcontrol);

+unsigned int old_mode = hook->mute_mode;

+

+hook->mute_mode = ucontrol->value.enumerated.item[0];

+if (hook->mute_mode > HDA_VMUTE_FOLLOW_MASTER)

+hook->mute_mode = HDA_VMUTE_FOLLOW_MASTER;

+if (old_mode == hook->mute_mode)

+return 0;

+snd_hda_sync_vmaster_hook(hook);

+return 1;

+}

+

+static struct snd_kcontrol_new vmaster_mute_mode = {

+.iface = SNDRV_CTL_ELEM_IFACE_MIXER,

+.name = "Mute-LED Mode",

+.info = vmaster_mute_mode_info,

+.get = vmaster_mute_mode_get,

+.put = vmaster_mute_mode_put,

+};

+

+/*

+ * Add a mute-LED hook with the given vmaster switch kctl

+ * "Mute-LED Mode" control is automatically created and associated with

+ * the given hook.

+ */

+int snd_hda_add_vmaster_hook(struct hda_codec *codec,

+ struct hda_vmaster_mute_hook *hook,

+ bool expose_enum_ctl)

+{

+struct snd_kcontrol *kctl;

+

+if (!hook->hook || !hook->sw_kctl)

+return 0;

+snd_ctl_add_vmaster_hook(hook->sw_kctl, hook->hook, codec);

+hook->codec = codec;

+hook->mute_mode = HDA_VMUTE_FOLLOW_MASTER;

+if (!expose_enum_ctl)

+return 0;

+kctl = snd_ctl_new1(&vmaster_mute_mode, hook);

+if (!kctl)

+return -ENOMEM;

+return snd_hda_ctl_add(codec, 0, kctl);

+}

+EXPORT_SYMBOL_HDA(snd_hda_add_vmaster_hook);

+

+/*

+ * Call the hook with the current value for synchronization

+ * Should be called in init callback

+ */

+void snd_hda_sync_vmaster_hook(struct hda_vmaster_mute_hook *hook)

+{

+if (!hook->hook || !hook->codec)

+return;

+switch (hook->mute_mode) {

+case HDA_VMUTE_FOLLOW_MASTER:

+snd_ctl_sync_vmaster_hook(hook->sw_kctl);

+break;

+default:

+hook->hook(hook->codec, hook->mute_mode);

+break;

+}

+}

+EXPORT_SYMBOL_HDA(snd_hda_sync_vmaster_hook);

+

+

/**

* snd_hda_mixer_amp_switch_info - Info callback for a standard AMP mixer switch

*

diff --git a/pci/hda/hda_codec.h b/pci/hda/hda_codec.h

index 9a9f372..56b4f74 100644

--- a/pci/hda/hda_codec.h

+++ b/pci/hda/hda_codec.h

@@ -851,6 +851,9 @@ struct hda_codec {

unsigned int pin_amp_workaround:1; /* pin out-amp takes index

* (e.g. Conexant codecs)

*/

+unsigned int single_adc_amp:1; /* adc in-amp takes no index

+* (e.g. CX20549 codec)

+*/

unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */

unsigned int pins_shutup:1;/* pins are shut up */

unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */

diff --git a/pci/hda/hda_eld.c b/pci/hda/hda_eld.c

index c1da422..4c054f4 100644

--- a/pci/hda/hda_eld.c

+++ b/pci/hda/hda_eld.c

@@ -385,8 +385,8 @@ error:

static void hdmi_print_pcm_rates(int pcm, char *buf, int buflen)

{

static unsigned int alsa_rates[] = {

-5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200,

------- End of patch

hooks/update

---

Git Source Code Management System

hooks/update refs/heads/master \

d03aee24a6627de642c4839a0014b22ea106ddd3 \

1904ae448061e9edc6dcb26b441ab60c294c5e45

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值