Commit Graph

14050 Commits

Author SHA1 Message Date
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
Mark Brown 22849e45ff Merge remote-tracking branch 'asoc/topic/davinci' into asoc-next 2012-12-02 13:35:02 +09:00
Mark Brown 994f2f9ed6 Merge remote-tracking branch 'asoc/topic/da9055' into asoc-next 2012-12-02 13:35:01 +09:00
Mark Brown 5d1aab9687 Merge remote-tracking branch 'asoc/topic/da7210' into asoc-next 2012-12-02 13:35:01 +09:00