Commit Graph

336358 Commits

Author SHA1 Message Date
Daniel J Blueman
445a51b353 ALSA: hda: Add PCI device prefix for clarity
When printing, use a prefix of the PCI domain, bus, device and function
as in other drivers, to differentiate multiple devices.

Important for reporting and debugging. A future step is to tidy this up with
dev_printk et al.

v2: Move conversion specifier into call site, preventing build issues
v3: Refactor for Takashi's for-next branch

Signed-off-by: Daniel J Blueman <daniel@quora.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-05 16:09:49 +01:00
Takashi Iwai
f4c482a4d0 ALSA: hda - Fix yet another race of vga_switcheroo registration
The recent fix for vga switcheroo race in commit 128960a9 opened yet
another race.  At the time the audio driver starts probing, user may
turn off D-GPU off.  But at this moment, the audio driver still
doesn't register the vga switcheroo client, thus the switching isn't
notified.  Then the hardware gets off out of sudden, resulting in
invalid reads and lots of "spurious response" error messages.

For solving this situation, the following changes have been done in
this patch:
- Move again vga switcheroo registration to the very early stage of
  the probing; this also requires to set pci drvdata properly before
  registration
- Introduce the completion to synchronize the driver probe at vga
  switcheroo callbacks; this assures that the whole probing finished
  before executing the callbacks

Reported-by: Daniel J Blueman <daniel@quora.org>
Tested-by: Daniel J Blueman <daniel@quora.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-04 16:00:40 +01:00
Eldad Zack
0d9741c0e0 ALSA: usb-audio: sync ep init fix for audioformat mismatch
Commit 947d299686 , "ALSA: snd-usb:
properly initialize the sync endpoint", while correcting the
initialization of the sync endpoint when opening just the data
endpoint, prevents devices that has a sync endpoint, with a channel
number different than that of the data endpoint, from functioning.
Due to a different channel and period bytes count, attempting to
initialize the sync endpoint will fail at the usb host driver.
For example, when using xhci:

 cannot submit urb 0, error -90: internal error

With this patch, if a sync endpoint has multiple audioformats, a
matching audioformat is preferred. An audioformat must be found
with at least one channel and support the requested sample rate
and PCM format, otherwise the stream will not be opened.

If the number of channels differ between the selected audioformat
and the requested format, adjust the period bytes count accordingly.
It is safe to perform the calculation on the basis of the channel
count, since the requested PCM audio format and the rate must be
supported by the selected audioformat.

Cc: Jeffrey Barish <jeff_barish@earthlink.net>
Cc: Daniel Mack <zonque@gmail.com>
Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-04 08:14:31 +01:00
Takashi Iwai
f5f165418c ALSA: usb-audio: Fix missing autopm for MIDI input
The commit [88a8516a: ALSA: usbaudio: implement USB autosuspend] added
the support of autopm for USB MIDI output, but it didn't take the MIDI
input into account.

This patch adds the following for fixing the autopm:
- Manage the URB start at the first MIDI input stream open, instead of
  the time of instance creation
- Move autopm code to the common substream_open()
- Make snd_usbmidi_input_start/_stop() more robust and add the running
  state check

Reviewd-by: Clemens Ladisch <clemens@ladisch.de>
Tested-by: Clemens Ladisch <clemens@ladisch.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-04 07:27:44 +01:00
Takashi Iwai
59866da9e4 ALSA: usb-audio: Avoid autopm calls after disconnection
Add a similar protection against the disconnection race and the
invalid use of usb instance after disconnection, as well as we've done
for the USB audio PCM.

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

Reviewd-by: Clemens Ladisch <clemens@ladisch.de>
Tested-by: Clemens Ladisch <clemens@ladisch.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-04 07:27:27 +01:00
Adrian Knoth
467b103505 ALSA: hdspm - Remove obsolete settings functions
With HDSPM_TOGGLE_SETTING in place, these functions are no longer
required. Removing them makes the code DRY and considerably shorter.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-03 15:30:01 +01:00
Adrian Knoth
c9e1668c68 ALSA: hdspm - Use HDSPM_TOGGLE_SETTING to alter settings
HDSPM_TOGGLE_SETTING and its corresponding functions allow to change
settings in the control register. Instead of using the specialised
functions, use the generic code to make the code DRY.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-03 15:29:54 +01:00
Adrian Knoth
bf0ff87bef ALSA: hdspm - Implement generic function to toggle settings
The driver contains at least six similar functions that change only a
single bit in the control register, only the bit position varies.

This patch implements a generic function to toggle a certain bit
position that will be used to replace the old code.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-03 15:29:45 +01:00
Takashi Iwai
b6adb57df1 ALSA: hda/realtek - Keep the channel count for multiple speakers
The current Realtek driver reconfigures the max PCM channels
dynamically according to the value of Channel Mode enum if the
multi-io retasking is available.  It works fine for multi-io pins.
But when multiple speaker pins are available, the channels of speakers
also have to obey to the channel mode, which isn't nice.
(That is, when you select "2ch" in Channel Mode so that the line-in
 and mic jack behave as input, you can't play surrounds properly from
 the built-in speaker.)

This patch fixes the problem by taking the channel number for multiple
speakers into account in the channel-mode setup code.
Also it fixes the wrongly set up max_channels value in the case of
multi-io extension.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-12-03 10:39:36 +01:00
Takashi Iwai
eb10149d17 ASoC: Updates for v3.8
Very quiet release for ASoC really:
 
 - Standardisation of the logging.
 - DT and dmaengine support for Atmel.
 - Support for Wolfson ADSP cores.
 - New drivers for Freescale/iVeia P1022 and Maxim MAX98090.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAABAgAGBQJQutrLAAoJELSic+t+oim9NVUP/3Y1YJjUADTy3w1d6L7zKaQb
 dGVg2cdDBNgXCrIuyb3zUA9yNGrR1c7gzDGjTuiBrJKx917/DrF08pmgHAUv5e9B
 +//xoy2lSwYgnPiWY7p6092+pYNI1hs4PDkV3zucrkkgQovIZOlebUM3MOrSf50+
 abe9uPA11EyqPtmy8HrhtL2iJ3kUOq1y6YNbrDQaaWTL/lwBPS+LzxFAIE36LjN6
 fIUOb8jtSE0rjOVo+jmuytdCnlugaEFfQzOebKMVYpB9LNv6hqISai/baaKFO1Fc
 Jtkjv2xGuUuxP0kY6Fkbjabut7mS8oiVZfGmNUKbYoKStsk1t//xjay/2F0HsNgg
 O7PsK6y1HD/iB87YNaO8Go/6lLSszeQ2WU7Fvynv/CTOpjO/8gjaQz3zDi3HsF5O
 gyh/WYnj9jwnUJkaMDeEyjKBbKDxLuBeXBETVhNIWNgCwnj48TSYQwmGhtefNnS1
 AM/CUrfXVsgCxPn8z/ep/hbkat8+PHENuPR9v81mUyQvVX9jTALVIYioTdxkc8Ul
 y0p5UmgM/TsmnINGVUeFp5LkmfdyOhUhBtwovDhzDjR4RC1/otty1/9l4VHqw1ym
 ETwqu7pl7bb9aDNsOEV9Z21kOMuTDbApHIT6crptNBllUvR0jDYfD4xOAs3zQLO5
 JWOX2fPUHzFusINuA6fS
 =2irt
 -----END PGP SIGNATURE-----

Merge tag 'asoc-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next

ASoC: Updates for v3.8

Very quiet release for ASoC really:

- Standardisation of the logging.
- DT and dmaengine support for Atmel.
- Support for Wolfson ADSP cores.
- New drivers for Freescale/iVeia P1022 and Maxim MAX98090.
2012-12-03 09:55:44 +01:00
Mark Brown
854ea639bb Merge remote-tracking branch 'asoc/topic/wm9090' into asoc-next 2012-12-02 13:35:31 +09:00
Mark Brown
d88c7dd20c Merge remote-tracking branch 'asoc/topic/wm9081' into asoc-next 2012-12-02 13:35:31 +09:00
Mark Brown
d7ba2556a0 Merge remote-tracking branch 'asoc/topic/wm8995' into asoc-next 2012-12-02 13:35:30 +09:00
Mark Brown
faa9c2a798 Merge remote-tracking branch 'asoc/topic/wm8994' into asoc-next 2012-12-02 13:35:29 +09:00
Mark Brown
e041e46907 Merge remote-tracking branch 'asoc/topic/wm8993' into asoc-next 2012-12-02 13:35:28 +09:00
Mark Brown
84b043d549 Merge remote-tracking branch 'asoc/topic/wm8988' into asoc-next 2012-12-02 13:35:28 +09:00
Mark Brown
76cadae7e0 Merge remote-tracking branch 'asoc/topic/wm8985' into asoc-next 2012-12-02 13:35:27 +09:00
Mark Brown
e110850468 Merge remote-tracking branch 'asoc/topic/wm8978' into asoc-next 2012-12-02 13:35:27 +09:00
Mark Brown
efffa4e21b Merge remote-tracking branch 'asoc/topic/wm8971' into asoc-next 2012-12-02 13:35:26 +09:00
Mark Brown
28ff2f8296 Merge remote-tracking branch 'asoc/topic/wm8962' into asoc-next 2012-12-02 13:35:25 +09:00
Mark Brown
a275ddf7b5 Merge remote-tracking branch 'asoc/topic/wm8960' into asoc-next 2012-12-02 13:35:25 +09:00
Mark Brown
f5a1345be7 Merge remote-tracking branch 'asoc/topic/wm8955' into asoc-next 2012-12-02 13:35:24 +09:00
Mark Brown
7f90af5231 Merge remote-tracking branch 'asoc/topic/wm8804' into asoc-next 2012-12-02 13:35:23 +09:00
Mark Brown
66195b1528 Merge remote-tracking branch 'asoc/topic/wm8770' into asoc-next 2012-12-02 13:35:23 +09:00
Mark Brown
1a9d299db8 Merge remote-tracking branch 'asoc/topic/wm8753' into asoc-next 2012-12-02 13:35:22 +09:00
Mark Brown
fdb7f6d20f Merge remote-tracking branch 'asoc/topic/wm8750' into asoc-next 2012-12-02 13:35:22 +09:00
Mark Brown
0187ec842f Merge remote-tracking branch 'asoc/topic/wm8741' into asoc-next 2012-12-02 13:35:21 +09:00
Mark Brown
2dfbba6694 Merge remote-tracking branch 'asoc/topic/wm8510' into asoc-next 2012-12-02 13:35:20 +09:00
Mark Brown
f5fa83cc62 Merge remote-tracking branch 'asoc/topic/wm8400' into asoc-next 2012-12-02 13:35:20 +09:00
Mark Brown
39a329b14e Merge remote-tracking branch 'asoc/topic/wm8350' into asoc-next 2012-12-02 13:35:19 +09:00
Mark Brown
54fc5a1ad8 Merge remote-tracking branch 'asoc/topic/wm2200' into asoc-next 2012-12-02 13:35:18 +09:00
Mark Brown
9f07f658c4 Merge remote-tracking branch 'asoc/topic/wm2000' into asoc-next 2012-12-02 13:35:17 +09:00
Mark Brown
33a8415fbf Merge remote-tracking branch 'asoc/topic/wm0010' into asoc-next 2012-12-02 13:35:16 +09:00
Mark Brown
fa3800dd33 Merge remote-tracking branch 'asoc/topic/ux500' into asoc-next 2012-12-02 13:35:15 +09:00
Mark Brown
9f82b0440e Merge remote-tracking branch 'asoc/topic/tlv320aic32x4' into asoc-next 2012-12-02 13:35:14 +09:00
Mark Brown
cc43b45684 Merge remote-tracking branch 'asoc/topic/si476x' into asoc-next 2012-12-02 13:35:13 +09:00
Mark Brown
05cf9dd84b Merge remote-tracking branch 'asoc/topic/samsung' into asoc-next 2012-12-02 13:35:12 +09:00
Mark Brown
897074d89b Merge remote-tracking branch 'asoc/topic/rt5631' into asoc-next 2012-12-02 13:35:12 +09:00
Mark Brown
6a441c5c60 Merge remote-tracking branch 'asoc/topic/omap' into asoc-next 2012-12-02 13:35:11 +09:00
Mark Brown
d0f3ea4252 Merge remote-tracking branch 'asoc/topic/max98090' into asoc-next 2012-12-02 13:35:10 +09:00
Mark Brown
6058868543 Merge remote-tracking branch 'asoc/topic/max9768' into asoc-next 2012-12-02 13:35:10 +09:00
Mark Brown
674b366350 Merge remote-tracking branch 'asoc/topic/log' into asoc-next 2012-12-02 13:35:09 +09:00
Mark Brown
ca7e5cb223 Merge remote-tracking branch 'asoc/topic/lm49453' into asoc-next 2012-12-02 13:35:09 +09:00
Mark Brown
686378497f Merge remote-tracking branch 'asoc/topic/kirkwood' into asoc-next 2012-12-02 13:35:08 +09:00
Mark Brown
81e2c0da11 Merge remote-tracking branch 'asoc/topic/jz4740' into asoc-next 2012-12-02 13:35:07 +09:00
Mark Brown
81467c3325 Merge remote-tracking branch 'asoc/topic/jack' into asoc-next 2012-12-02 13:35:06 +09:00
Mark Brown
d7174db6d1 Merge remote-tracking branch 'asoc/topic/hotplug' into asoc-next 2012-12-02 13:35:06 +09:00
Mark Brown
723b4cb5d1 Merge remote-tracking branch 'asoc/topic/fsl' into asoc-next 2012-12-02 13:35:05 +09:00
Mark Brown
546694bc42 Merge remote-tracking branch 'asoc/topic/fsi' into asoc-next 2012-12-02 13:35:04 +09:00
Mark Brown
9557656200 Merge remote-tracking branch 'asoc/topic/dmaengine' into asoc-next 2012-12-02 13:35:03 +09:00