Commit Graph

4828 Commits

Author SHA1 Message Date
Takashi Iwai fbabc24619 ALSA: hda/realtek - Create "Bass Speaker" for two speaker pins
On systems with two speaker pins, the secondary speaker pin is mostly
assigned to a bass speaker instead of a surround.  Thus it makes more
sense to rename the control properly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-07 17:32:24 +01:00
Takashi Iwai 766ddee68b ALSA: hda/realtek - Don't create extra controls with channel suffix
The multiple headphone or speaker pins are usually provided to
output the same stream unlike line-out jacks (which are supposed
to be multi-channel surrounds).  Thus giving a mixer name like
"Headphone Surround" is rather confusing.  Instead, when multiple
headphone volumes are available, use index with the same "Headphone"
name.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-07 17:32:24 +01:00
Thomas Meyer 6d2d431369 ALSA: asihp: Use kcalloc instead of kzalloc to allocate array
The advantage of kcalloc is, that will prevent integer overflows which could
result from the multiplication of number of elements and size and it is also
a bit nicer to read.

The semantic patch that makes this change is available
in https://lkml.org/lkml/2011/11/25/107

Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-06 13:27:32 +01:00
Thomas Meyer 1d5d37f408 ALSA: ctxf: Use kcalloc instead of kzalloc to allocate array
The advantage of kcalloc is, that will prevent integer overflows which could
result from the multiplication of number of elements and size and it is also
a bit nicer to read.

The semantic patch that makes this change is available
in https://lkml.org/lkml/2011/11/25/107

Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-06 13:27:22 +01:00
Takashi Iwai a020428364 ALSA: hda - Fix remaining VREF mute-LED NID check in post-3.1 changes
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-06 13:21:43 +01:00
Takashi Iwai b5212878ab Merge branch 'fix/hda-idt-fix' into fix/hda 2011-12-06 13:19:25 +01:00
Takashi Iwai f1a73746c6 ALSA: hda - Fix GPIO LED setup for IDT 92HD75 codecs
Some HP laptops with IDT 92HD75 codecs may use a GPIO > 4 for the mute
LED, but currently the driver doesn't check this properly, and confuses
the mute LED behavior.  This ended up with the silent output  on some
HP laptops due to  having another GPIO used as external amp control.

This patch fixes the problem by checking the max GPIO count and
comparing with the given value from DMI entry instead of magic fixed
value 4 and 8, and adding a new field to indicate the VREF mute-LED
behavior.

Reported-and-tested-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Cc: <stable@kernel.org> [v3.1]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-06 13:18:46 +01:00
Takashi Iwai cce4aa378a ALSA: hda/realtek - Fix Oops in alc_mux_select()
When no imux is available (e.g. a single capture source),
alc_auto_init_input_src() may trigger an Oops due to the access to -1.
Add a proper zero-check to avoid it.

Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-02 15:29:12 +01:00
David Dillow 705978516f ALSA: sis7019 - convert to dev_*() logging
Signed-off-by: David Dillow <dave@thedillows.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-02 10:44:01 +01:00
David Dillow fc084e0b93 ALSA: sis7019 - give slow codecs more time to reset
There are some AC97 codec and board combinations that have been observed
to take a very long time to respond after the cold reset has completed.
In one case, more than 350 ms was required. To allow users to have sound
on those platforms, we'll wait up to 500ms for the codec to become
ready.

As a board may have multiple codecs, with some faster than others to
reset, we add a module parameter to inform the driver which codecs
should be present.

Reported-by: KotCzarny <tjosko@yahoo.com>
Signed-off-by: David Dillow <dave@thedillows.org>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-02 10:43:06 +01:00
Takashi Iwai 31ef225793 ALSA: hda - Integrate input-jack stuff into kctl-jack
Instead of managing input-jack stuff separately, call all stuff inside
the kctl-jack creation, deletion and report.  The caller no longer needs
to care about input-jack.

The better integration between input-jack and kctl-jack should be done
in the upper layer in near future, but for now, it's implemented locally
for more tests.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-01 17:47:54 +01:00
Takashi Iwai 9eb6e9b16f Merge branch 'fix/hda' into topic/hda 2011-12-01 13:51:18 +01:00
Charles Chin 88d686027b ALSA: hda - Fix S3/S4 problem on machines with VREF-pin mute-LED
The verb command in stac92xx_post_suspend caused the audio to stop
working after resuming from S3 mode on HP laptops with the VREF-pin
mute-LED control.  Removing relevant post_suspend registering.

Although removing D3 on AFG is no optimal solution, the impact should
be small in comparison with the broken S3/S4.

Signed-off-by: Charles Chin <Charles.Chin@idt.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-12-01 11:27:43 +01:00
Marc Vertes 4f8b6c7dc8 ALSA: hda_intel - revert a quirk that affect VIA chipsets
This quirk sould be reverted. It has the following probems:

1) The quirk was intended to "ASUS MV2-MX SE" motherboards only, but the
ID used matches a much broader range, potentially all boards containing a
VIA chipset model in the family of vendor VIA 0x1106 and audio device ID
0x3288, which encompasses VIA-VT82xx, VIA-VT1xx and VIA-VT20xx chipsets.

2) VIA chipsets rely on azx_via_get_position() to handle correctly dma
transfers during capture. Using POS_FIX_LPIB instead of POS_FIX_VIACOMBO
leads to partially corrupted input buffers during capture. The effects
of this bug are not immediately visible, it took strong DSP expertise,
some expensive signal generator and a spectrum analyzer to identify it
and verify correct behaviour using original default.

3) It's almost certain that the quirk did not fix the real problem,
if there was one. Refer to original submission:
http://mailman.alsa-project.org/pipermail/alsa-devel/2010-February/025109.html

Signed-of-by: Marc Vertes <mvertes@sigfox.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-29 13:04:03 +01:00
Takashi Iwai 542c9a0a2f ALSA: hda - Avoid touching mute-VREF pin for IDT codecs
Some HP laptops use a pin VREF for controlling the mute LED, and such a
pin shouldn't be powered off.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-29 13:01:30 +01:00
Takashi Iwai 187d333edc ALSA: hda - Fix jack-detection control of VT1708
VT1708 has no support for unsolicited events per jack-plug, the driver
implements the workq for polling the jack-detection.  The mixer element
"Jack Detect" was supposed to control this behavior on/off, but this
doesn't work properly as is now.  The workq is always started and the
HP automute is always enabled.

This patch fixes the jack-detect control behavior by triggering / stopping
the work appropriately at the state change.  Also the work checks the
internal state to continue scheduling or not.

Cc: <stable@kernel.org> [v3.1]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-27 17:56:17 +01:00
Dan Carpenter 92bb43e6aa ALSA: hda - cut and paste typo in cs420x_models[]
The CS420X_IMAC27 was copied from the line before but CS420X_APPLE
was clearly intented.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-27 17:56:07 +01:00
Takashi Iwai a4567cb389 ALSA: hda - Increase the max number of coverters/pins in patch_hdmi.c
The new hardware tends to have more and more.  As a temporary fix, just
increase the number for now.

For a long-term solution, we should assign the cvts/pins dynamically.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-26 10:19:48 +01:00
Takashi Iwai 01b65bfb4f ALSA: hda - Supports more audio streams
So far, the driver supports up to 10 streams.  This is a restriction in
hda_intel.c and hda_codec.c: in the former, the fixed array size limits
the amount, and in the latter, the fixed device-number assignment table
(in get_empty_pcm_device()) limits the possibility.

This patch reduces the restriction by
- using linked list for managing PCM instances in hda_intel.c, and
- assigning non-fixed device numbers for the extra devices

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-26 10:19:44 +01:00
Takashi Iwai b37c0096b4 Merge branch 'fix/hda' into topic/hda
Conflicts:
	sound/pci/hda/patch_realtek.c
2011-11-23 17:08:42 +01:00
Takashi Iwai 61071594f6 ALSA: hda/realtek - Minor cleanup
Use an inline function for the common pattern for assigning a capsrc.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-23 07:52:15 +01:00
Takashi Iwai 6759dc3238 ALSA: hda/realtek - Fix missing inits of item indices for auto-mic
When the imux entries are rebuilt in alc_rebuild_imux_for_auto_mic(),
the initialization of index field is missing.  It may work without it
casually when the original imux was created by the auto-parser, but
it's definitely broken in the case of static configs where no imux was
parsed beforehand.  Because of this, the auto-mic switching doesn't
work properly on some model options.

This patch adds the missing initialization of index field.

Reported-by: Dmitry Nezhevenko <dion@inhex.net>
Cc: <stable@kernel.org> [v3.1]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-23 07:45:21 +01:00
Takashi Iwai 6dfeb703e3 ALSA: hda - Fix invalid pin and GPIO for Apple laptops with CS codecs
The PCI SSID 8086:7270 is commonly used for multiple Apple machines,
thus we can't use it as identifier for a unique model.  Because of this
conflict, some machines show weird behavior.  For example, MacBook Air
shows Front and Surround speakers although only Surround works due to
the wrongly overridden pin-configuration for imac27.

This patch fixes two things:
- Stop the wrong pin-config override of imac27 by removing PCI SSID
  entry for avoiding the wrong mappings,
- Add the generic GPIO setup for Apple machines by checking the codec
  SSID vendor bits

Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Tested-by: Dirk Hohndel <hohndel@infradead.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-23 07:31:49 +01:00
Takashi Iwai e2301a4de2 ALSA: hda - Check subdevice mask in snd_hda_check_board_codec_sid_config()
In snd_hda_check_board_codec_sid_config(), not only comparing with the
exact value but allow the bit-mask comparison for vendor-only, etc.

Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Tested-by: Dirk Hohndel <hohndel@infradead.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-23 07:31:36 +01:00
Wu Fengguang a370fc62b9 ALSA: hda - fail ELD reading early
With the ELD repoll mechanism, we can (and should) fail the ELD reading
immediately when find something obviously wrong and let the caller retry
after some delay.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-22 12:09:45 +01:00
Tim Blechmann a29878553a ALSA: lx6464es - fix device communication via command bus
commit 6175ddf06b optimized the mem*io
functions that have been used to send commands to the device. these
optimizations somehow corrupted the communication with the lx6464es,
that resulted the device to be unusable with kernels after 2.6.33.

this patch emulates the memcpy_*_io functions via a loop to avoid these
problems.

Signed-off-by: Tim Blechmann <tim@klingt.org>
LKML-Reference: <4ECB5257.4040600@ladisch.de>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-22 11:53:11 +01:00
Tim Blechmann afd00d7235 ALSA: lx6464es - command buffer API cleanup
the command buffer is only accessed from one file, so we can declare the
specific functions as static in that file

Signed-off-by: Tim Blechmann <tim@klingt.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-22 11:52:53 +01:00
Wu Fengguang c6e8453e75 ALSA: hda - repoll ELD content for multiple times
Improve the one-shot ELD repoll to up to 6 retries.

Up to now the 300ms looks sufficient for the test boxes. However
I'm a bit worried about how well it can fit the wider user base.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-22 11:35:58 +01:00
Adrian Knoth 05c7cc9cca ALSA: hdspm - Fix PCI ID for PCIe RME MADI cards
Commit c09403dcc5 has introduced a
regression: PCIe versions of RME MADI were no longer detected, because
the MADIface ID (0xd5) was used instead of the correct 0xd2.

This commit fixes the problem.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-22 08:34:36 +01:00
Takashi Iwai 358b6e62b8 ALSA: hda - Don't add channel suffix for headphone pin labels
The multiple headphone pins are usually handled as copied from the same
source, not as individual channels like front and surround.  Thus it'd
be more correct to avoid the channel suffix for "Headphone" pin labels
in snd_hda_get_pin_label() but give an index number instead.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-21 14:34:20 +01:00
Takashi Iwai d6018bb566 ALSA: hda - Fix a typo
Reported-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-21 14:19:00 +01:00
Dan Carpenter 27533df80e ALSA: cs5535 - Fix an endianness conversion
desc->size is supposed to be a le16 type.  On a big endian system the
current code will set ->size to zero.  We fixed a similar bug
on the next line but missed this one.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-21 12:03:55 +01:00
Takashi Iwai dbd1b5473c ALSA: hda - Add pin fix for Alienware M17x R3
Reported-by: Albert Pool <albertpool@solcon.nl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-19 11:41:30 +01:00
Takashi Iwai 05ee7964a4 ALSA: hda - Fix the connection selection of ADCs on Cirrus codecs
spec->cur_adc isn't set until cs_capture_pcm_prepare() is called although
the driver tries to select the connection at init time and at auto-mic
switch.  This results in the access to the widget NID 0, which is
obviously invalid, also a wrong capture source.

This patch fixes the issue by issuing the connect-select verb conditionally
at appropriate places.

Reported-and-tested-by: Dylan Reid <dgreid@chromium.org>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 18:05:11 +01:00
Takashi Iwai 201e06ffa9 ALSA: hda - Give more unique names by snd_hda_get_pin_label()
The function now gives more unique names for the output pins by adding
some prefix and suffix for the location and the channels.  Otherwise, it
can pass the index number.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 15:48:23 +01:00
Takashi Iwai bf815bf0a3 ALSA: hda - Add missing inclusion of linux/export.h
This is needed newly since 3.2...

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 14:28:33 +01:00
Takashi Iwai fc5b15f138 ALSA: hda - Add missing initialization of kctl jack status
Otherwise the jack kctls will report invalid values until the jack
is re-plugged.

Reported-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:14:04 +01:00
Takashi Iwai 344b01aecd ALSA: hda/jack - Fix the assignment of input jack-type
The type field was lost during the transition.  Restored.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:14:04 +01:00
Takashi Iwai cfc7c9d307 ALSA: hda/jack - Fix NULL-dereference at probing
At probing time, the elements that aren't assigned to kctl or jack may
be called.  Need proper NULL-checks.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:14:04 +01:00
David Henningsson d1cb620081 ALSA: HDA: Jack: Export required functions from hda_jack.c
These two functions are being used by the codec-idt and codec-hdmi
modules, so they need to be exported properly.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:14:04 +01:00
Takashi Iwai aad37dbd56 ALSA: hda - Merge input-jack helpers to hda_jack.c
We can use the very same table in hda_jack.c for managing the list for
input-jack elements, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:14:04 +01:00
Takashi Iwai 35be544af3 ALSA: Introduce common helper functions for jack-detection control
Now move the helper function for creating and reporting the jack-detection
to the common place.  The driver that needs this functionality should
select CONFIG_SND_KCTL_JACK kconfig.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:14:03 +01:00
Takashi Iwai 3a93897ea3 ALSA: hda - Manage unsol tags in hda_jack.c
Manage the tags assigned for unsolicited events dynamically together
with the jack-detection routines.  Basically this is almost same as what
we've done in patch_sigmatel.c.  Assign the new tag number for each new
unsol event, associate with the given NID and the action type, etc.

With this change, now all pins looked over in snd_hda_jack_add_kctls()
are actually enabled for detection now even if the pins aren't used for
jack-retasking by the driver.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:14:03 +01:00
Takashi Iwai 01a61e12b4 ALSA: hda - Create jack-detection kcontrols
Create kcontrols for pin jack-detections, which work similarly like
jack-input layer.  Each control will notify when the jack is plugged or
unplugged, and also user can read the value at any time via the normal
control API.

The control elements are created with iface=CARD, so that they won't
appear in the mixer apps.

So far, only the pins that enabled the jack-detection are registered.
For covering all pins, the transition of the common unsol-tag handling
would be needed.  Stay tuned.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:12:17 +01:00
Takashi Iwai 1835a0f9a2 ALSA: hda - Cache the jack-detection value
Introduce a table containing the pins and their jack-detection states
for avoiding the unnecessary verbs to check the pin status at each time.

When the unsol event is enabled via snd_hda_jack_detect_enable(), it
automatically adds the given NID to the table.  Then the driver supposes
that the codec driver will set the dirty flag appropariately when an
unsolicited event is invoked for that pin.

The behavior for reading other pins that aren't registered in the table
doesn't change.  Only the pins assigned to the table are cached, so far.

In near futre, this table can be extended to use the central place for
the unsolicited events of all pins, etc, and eventually include the
jack-detect kcontrols that replace the current input-jack stuff.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:11:15 +01:00
Takashi Iwai 04f5ade6af ALSA: hda - Introduce snd_hda_get_pin_label()
Create a new helper function snd_hda_get_pin_label() for getting a label
string for both input and output pins.  hda_get_input_pin_label() is
obsoleted by this function, and the callers are replaced appropriately
now by this patch.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 11:10:16 +01:00
Takashi Iwai 8b940fc457 Merge branch 'fix/hda' into topic/hda 2011-11-16 11:05:55 +01:00
Wu Fengguang 2d1b439bdb ALSA: hda - move eld->spk_alloc fixup to hdmi_update_eld()
It looks more natural and saves two lines of code.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 10:44:58 +01:00
Wu Fengguang 744626dada ALSA: hda - delayed ELD repoll
The Intel HDMI chips (ironlake at least) are found to have ~250ms delay
between the ELD_Valid=1 hotplug event is send and the ELD buffer becomes
actually readable. During the time the ELD buffer is mysteriously all 0.

Fix it by scheduling a delayed work to re-read ELD buffer after 300ms.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 10:44:42 +01:00
Wu Fengguang b95d68b817 ALSA: hda - fix ELD memory leak
memset(eld) clears eld->proc_entry which will leak the struct
snd_info_entry when unloading module.

Fix it by
- memset only the fields before eld->eld_buffer
- set eld->eld_valid to true _after_ all eld fields have been filled

Cc: <stable@kernel.org>
Cc: Pierre-louis Bossart <pierre-louis.bossart@intel.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-16 10:44:21 +01:00
Takashi Iwai 19723079db ALSA: hda/realtek - Move ALC880 model=lg-lw to auto-parser
ALC880 model=lg-lw works fine with the auto-parser as is.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-15 14:46:25 +01:00
Takashi Iwai ee3b29693c ALSA: hda/realtek - Move ALC880 model=medion-rim to auto-parser
Translate ALC880 medion-rim static configs to the auto-parser with the
additional GPIO2 verb and COEF setup.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-15 14:26:54 +01:00
Takashi Iwai 5671087ffa ALSA: hda/realtek - Move ALC885 macpro and imac24 models to auto-parser
The ALC882 macpro and imac24 static configs can be transferred to the
auto-parser with the additional GPIO setup.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-14 17:43:17 +01:00
Takashi Iwai b25396994b ALSA: hda/realtek - Re-add the model string selection for ALC88x
In the commit [c3e837bb: ALSA: hda/realtek - Rewrite ALC882 acer-aspire-*
models with the auto-parser], the check of the model option got removed
mistakenly.  Re-added the board_config check again.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-14 17:32:17 +01:00
Takashi Iwai 3ccbf1c376 ALSA: hda/realtek - Remove left-over chunks in alc882_quirks.c
Remove unused variables.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-14 17:20:49 +01:00
Takashi Iwai e29d377814 ALSA: hda/realtek - Create mono volume controls for mono-outputs
When the pin or the DAC doesn't support the stereo, create a mono
control instead of creating a stereo control blindly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-14 17:13:23 +01:00
Jesper Juhl e53de8f00c ALSA: hda/realtek: remove redundant semicolon
Having just one semicolon after a break statement is enough.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-14 10:41:46 +01:00
Charles Chin afef2cfa0e ALSA: hda - pwr_nids cleanup for IDT codecs
Clean up and fix pwr_nids for 92HD71 / 73 / 83 family codecs; remove
pwr_mapping which was incorrect.

The original pwr_nids support of 92HD83xxx was incorrect and never
actually worked before.  Now we should have things working correctly
without having to hack by DID anymore.

It is also not necessary to explicitly turn on all the pins near the
beginning of patch_stac92hd83xxx() now, the pins will go though
initialization properly.

Tested on 92HD66 / 71 / 73 / 75 / 83 / 89 / 91 demo boards.

Signed-off-by: Charles Chin <Charles.Chin@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-11 08:05:28 +01:00
Takashi Iwai c3e837bbcc ALSA: hda/realtek - Rewrite ALC882 acer-aspire-* models with the auto-parser
Now we can move the big acer-aspire-* static quirks to the auto-paresr
with some additional pin-configs and verbs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-10 16:01:47 +01:00
Takashi Iwai 07b18f69a7 ALSA: hda/realtek - Create multi-io jacks more aggresively
So far the driver creates the multi-io jacks only when a single output
jack, i.e. no multiple speakers are assigned.  This patch adds the
similar multi-io detection even with multiple speakers are assigned
primarily, so that 5.1-speakers + HP/mic/LI combination can work.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-10 15:42:54 +01:00
Takashi Iwai da691064d1 Merge branch 'fix/hda' into topic/hda 2011-11-10 12:41:37 +01:00
Takashi Iwai 2f451d2a2a ALSA: hda - Re-enable the check NO_PRESENCE misc bit
We disabled the check of NO_PRESENCE bit of the default pin-config
in commit f4419172 temporarily.  One problem was that the first
implementation was wrong -- the bit after the shift must be checked.
However, this would still give many regressions on machines with broken
BIOS.  They set this bit wrongly even on active pins.

A workaround is to check whether all pins contain this bit.  As far as
I've checked, broken BIOSen set this bit on all pins, no matter whether
active or not.  In such a case, the driver should ignore this bit check.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-10 12:36:46 +01:00
Takashi Iwai aeb4b88ec0 ALSA: hda - Don't add elements of other codecs to vmaster slave
When a virtual mater control is created, the driver looks for slave
elements from the assigned card instance.  But this may include the
elements of other codecs when multiple codecs are on the same HD-audio
bus.  This works at the first time, but it'll give Oops when it's once
freed and re-created via reconfig sysfs.

This patch changes the element-look-up strategy to limit only to the
mixer elements of the same codec.

Reported-by: David Henningsson <david.henningsson@canonical.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-10 12:32:08 +01:00
Konstantin Ozerkov 7fb4f392bd ALSA: intel8x0: improve virtual environment detection
Detection code improved by PCI SSID usage. VM optimization
now enabled only for known devcices (skip host devices forwarded
to VM by VT-d or same kind of technology).
For debug/troubleshooting purposes optimization can be
forced (on/off) by module parameter: "inside_vm" (boolean).

Known devices (PCI SSID):
1af4:1100: Reserved for KVM devices. Note this is not yet
           implemented for KVM's ICH/AC'97 emulation.
1ab8:xxxx: Parallels ICH/AC'97 emulated sound.

[ fixed a minor coding-style issue by tiwai]

Signed-off-by: Konstantin Ozerkov <kozerkov@parallels.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 18:34:28 +01:00
Konstantin Ozerkov 65c397d6b5 ALSA: intel8x0: move virtual environment detection code into one place
This is refactoring patch: preparation for add improved detection code.
Now all detection code placed in one place.

Signed-off-by: Konstantin Ozerkov <kozerkov@parallels.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 18:33:07 +01:00
Takashi Iwai 68ef0561ef ALSA: hda/realtek - Drop ALC882 desktop model quirks
Now we're touching the desktop static configs for ALC88x codecs.
These are mostly OK with the auto-parser, but some models need careful
handling; ALC889 intel mobo requires the COEF setup, and W2JC needs
GPIO1 and COEF.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 18:28:35 +01:00
Takashi Iwai eb844d51cc ALSA: hda/realtek - Remove ALC882 targa-* models
All ALC882 targa-* models can be replaced with the auto-parser just
with the additional GPIO3 setup.  And it's generically applied to all
MSI boards unless other quirks are present.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 18:03:07 +01:00
Takashi Iwai ac9b1cddf1 ALSA: hda/realtek - Reorder alc882_fixup_tbl[]
No, I'm not Mr. Monk, but can't resist...

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 17:58:32 +01:00
Takashi Iwai 8812c4f961 ALSA: hda/realtek - Move ALC882 model=acer-aspire to auto-parser
The ALC882 model=acer-aspire requires the additional COEF setup.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 17:58:30 +01:00
Takashi Iwai 25da1f86b4 ALSA: hda/realtek - Drop ALC882 model=acer quirk
This quirk is anyway not used any more, so no problem to remove.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 17:57:52 +01:00
Takashi Iwai b3ca3bf5e8 ALSA: hda/realtek - Drop ALC882 model=clevo-m720 quirk
This works well without any special handling with the auto-parser.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 17:57:51 +01:00
Takashi Iwai 145fa008a2 ALSA: hda/realtek - Drop ALC882 3stack-hp, 6stack-dell and clevo-m540r models
These static configs are no longer needed by replacement with the
auto-parser.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 17:57:50 +01:00
Takashi Iwai 7a6069bf64 ALSA: hda/realtek - Replace ALC882 arima, medion and laptop-eapd quirks
Move these quitks to the auto-parser.  They just need some EAPD setups
in addition.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 17:57:45 +01:00
Takashi Iwai ed63a88775 ALSA: hda/realtek - Drop ALC882 mitac and fujitsu-xa3530 static configs
These are working well with the auto-parser although they have
relatively complex setup.  Let's go forward.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 15:12:20 +01:00
Takashi Iwai f01f587bb7 ALSA: hda/realtek - Drop ALC882 lenovo and haier-w66 static configs
Remove all ALC882 static configurations for all Lenovo and Haier-w66
quirks.  They work fine with the auto-parser now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 15:12:19 +01:00
Takashi Iwai 8af2d066d1 ALSA: hda/realtek - Drop lenovo-sky, asus-m90v, fujitsu-pi2515 quirks
These machines are working well with the auto-parser without static
configurations.  More diet.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 15:12:18 +01:00
Takashi Iwai 177943a39a ALSA: hda/realtek - Drop ALC882 asus-a7j and asus-a7m models
These models work fine with the auto-parser with the additional COEF
setup.  The iMac 7,1 (106b:3200) also uses the same quirk, so remove it
too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 15:11:16 +01:00
Takashi Iwai 596830ee1d ALSA: hda/realtek - Look through codec SSID for fix-up lists
Not only PCI SSIDs but also look through codec SSIDs for fix-up table
entries.  MacBook tend to give the same PCI SSID but unique codec SSIDs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 15:08:41 +01:00
Takashi Iwai 0e7cc2e745 ALSA: hda/realtek - Move ALC888 ASUS EEE1601 config to auto-parser
The ASUS EEE1601 works almost fine with the auto-parser but the static
configuration has a certain specific COEF verb.  Add this to the fix-up
list so that we can drop the whole EEE1601 static config from
alc882_quirks.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 12:42:48 +01:00
Takashi Iwai 6fdfa36128 ALSA: hda/realtek - Drop ALC882 model=asus-p5q static config
It works well with the auto-parser and the default BIOS setup.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 12:32:50 +01:00
Takashi Iwai 4586b2b583 Merge branch 'fix/hda' into topic/hda 2011-11-09 12:28:12 +01:00
Julian Wollrath f7f9bdfadf ALSA: hda - fix internal mic on Dell Vostro 3500 laptop
Fix the not working internal mic on Dell Vostro 3500 laptop by introducing the
new model dell-vostro-3500.

Signed-off-by: Julian Wollrath <jwollrath@web.de>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 11:03:29 +01:00
David Henningsson 8d1c963a2e ALSA: HDA: Remove quirk for Toshiba T110
According to the bug reporter, model=auto is needed to make the
internal microphone work.

BugLink: https://bugs.launchpad.net/bugs/819699
Reported-by: Andrej (agno01)
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-09 08:51:28 +01:00
Takashi Iwai 5c0ebfbe56 ALSA: hda/realtek - Rewrite ALC882 model=vaio-tt with auto-parser
Providing a pincfg fix for VAIO-TT with ALC889 codec to work with the
auto-parser, and drop the static configuration.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:37 +01:00
Takashi Iwai 42399f7a71 ALSA: hda/realtek - Remove all ALC262-quirk codes
Now that model=ultra is supported well by the auto-parser, we can get rid
of the whole alc262_quirks.c and its related codes.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:36 +01:00
Takashi Iwai 24de183ed0 ALSA: hda/realtek - Add the support of shared HP/Mic
A machine like Q1-ultra which has only a single HP but no mic-jack, we
can re-task the headhpone as an external mic jack.  This was done formerly
in ALC262 model=ultra quirk, and now the auto-parser supports this mode.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:36 +01:00
Takashi Iwai 82e14a4754 ALSA: hda/realtek - Drop ALC262 model=basic static configs
Now most of ALC262 stuff has been moved to the auto-parser, and no longer
need for keeping model=basic.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:36 +01:00
Takashi Iwai 46900b5c55 ALSA: hda/realtek - Drop ALC262 model=hippo static quirks
Both entries for ALC262 model=hippo work well with the auto-parser and
the default BIOS setup.  No static configs are needed, so drop them.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:36 +01:00
Takashi Iwai 6fb9c82c47 ALSA: hda/realtek - Drop ALC262 model=hippo static quirks
This model (actually BenQ Joybook) works fine with the default auto-parser
and the BIOS setup.  Just drop the static quirks.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:35 +01:00
Takashi Iwai 3dcd3be330 ALSA: hda/realtek - Convert ALC262 model=fujitsu to auto-parser
It works well with the auto-parse and the default BIOS setup when an
additional COEF setup (for benq) is used.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:35 +01:00
Takashi Iwai b42590b865 ALSA: hda/realtek - Convert ALC262 benq and benq-t31 to fixup-lists
The conversion from ALC262 model=benq and model=benq-t31 static configs
to auto-parser requires the manual COEF setups for corresponding models.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:35 +01:00
Takashi Iwai c470150c53 ALSA: hda/realtek - Convert ALC262 lenovo-3000 quirks to fixup-list
The static quirks for ALC262 Lenovo 3000 can be covered by the auto-
parser with a fixup of the mic-pin to VREF50 and the additional COEF
verb.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:35 +01:00
Takashi Iwai 80f6b77366 ALSA: hda/realtek - Drop ALC262 model=nec quirk
This laptop works also fine with the auto-parser and the BIOS setup.
A good boy.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:35 +01:00
Takashi Iwai ee0eb25119 ALSA: hda/realtek - Drop ALC262 model=toshiba-s06
This laptop works fine with the current auto-parser and the BIOS setup,
so let's drop the static configuration.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:34 +01:00
Takashi Iwai 12837c983d ALSA: hda/realtek - Convert ALC262 model=toshiba-rx1 to a fixup-list
Use the auto-parser for ALC262 model=toshiba-rx1 with the fixed pin-
configs.  The BIOS table seems incorrect, so many pin entries are
overwritten to match with the former quirk.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:34 +01:00
Takashi Iwai ea4e7af122 ALSA: hda/realtek - Convert alc262 model=tyan to a fixup-list
Use the auto-parser for ALC262 model=tyan with a pin-config fix-up and
drop the static configuration.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 08:59:34 +01:00
Takashi Iwai dccc1810f4 ALSA: hda - Mute unused capture sources for Realtek codecs
When a Realtek codec has a matrix-style capture-source selection, we
need to scan all connections instead of only imux items.  Otherwise some
input might be kept unmuted.  Although the corresponding input must be
dead so there should be no input from it, it's still safer to mute the
route completely.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 07:52:19 +01:00
Denis V. Lunev 5a9a51799b ALSA: intel8x0: Improve comments for VM optimization
The recently merged 228cf79376 looks a bit hackish while it is not.
The change was quite simple. In a virtualized environment the
patch unhacks old kludge introduced for old broken AC97 hardware.

This patch adds proper comment to "unkludge" code.

Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: Konstantin Ozerkov <kozerkov@parallels.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-08 07:51:21 +01:00
Linus Torvalds 32aaeffbd4 Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
* 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
  Revert "tracing: Include module.h in define_trace.h"
  irq: don't put module.h into irq.h for tracking irqgen modules.
  bluetooth: macroize two small inlines to avoid module.h
  ip_vs.h: fix implicit use of module_get/module_put from module.h
  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
  include: replace linux/module.h with "struct module" wherever possible
  include: convert various register fcns to macros to avoid include chaining
  crypto.h: remove unused crypto_tfm_alg_modname() inline
  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
  pm_runtime.h: explicitly requires notifier.h
  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
  miscdevice.h: fix up implicit use of lists and types
  stop_machine.h: fix implicit use of smp.h for smp_processor_id
  of: fix implicit use of errno.h in include/linux/of.h
  of_platform.h: delete needless include <linux/module.h>
  acpi: remove module.h include from platform/aclinux.h
  miscdevice.h: delete unnecessary inclusion of module.h
  device_cgroup.h: delete needless include <linux/module.h>
  net: sch_generic remove redundant use of <linux/module.h>
  net: inet_timewait_sock doesnt need <linux/module.h>
  ...

Fix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in
 - drivers/media/dvb/frontends/dibx000_common.c
 - drivers/media/video/{mt9m111.c,ov6650.c}
 - drivers/mfd/ab3550-core.c
 - include/linux/dmaengine.h
2011-11-06 19:44:47 -08:00
Takashi Iwai f441917256 ALSA: hda - Revert the check of NO_PRESENCE pincfg default bit
The implementation on commit [08a1f5eb: ALSA: hda - Check NO_PRESENCE
pincfg default bit] seems like a mis-interpretation of specification.
The spec gives the reversed bit definition.  But, following the spec
also causes to change so many existing device configurations, thus we
can't change it so easily for now.  For 3.2-rc1, it's safer to revert
this check (actually this patch comments out the code).

We may re-introduced the fixed version once after the wider test-case
coverages are done.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-06 14:07:37 +01:00
Takashi Iwai 69f9ba9b0c ALSA: hda - Fix a regression for DMA-position check with CA0110
The regression-fix in 3.1 for the check of DMA-position validity caused
yet another regression for CA0110.  As usual, this hardware seems working
only with LPIB properly.  Adding the appropriate driver-caps bit to force
LPIB fixes the problem.

Reported-and-tested-by: Andres Freund <andres@anarazel.de>
Cc: <stable@kernel.org> [v3.1]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-06 13:49:13 +01:00
Takashi Iwai 43dea228a3 ALSA: hda - Fix silent output regression with ALC861
The 3.1 kernel has a regression for ALC861 codec where no sound output
is heard with the default setup.  It's because the amps in DACs aren't
properly unmuted while the output mixers are assigned only to pins.

This patch fixes the missing initialization of DACs when no mixer is
assigned to them.

Tested-by: Andrea Iob <andrea_iob@yahoo.it>
Cc: <stable@kernel.org> [v3.1+]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-06 11:25:34 +01:00
Takashi Iwai 51e4152a96 ALSA: hda/realtek - Skip invalid digital out pins
Some BIOS report invalid pins as digital output pins.  The driver checks
the connection but it doesn't do it fully correctly, and it leaves some
undefined value as the audio-out widget, which makes the driver spewing
warnings.  This patch fixes the issue.

Reference: https://bugzilla.novell.com/show_bug.cgi?id=727348

Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-03 17:00:27 +01:00
Charles Chin 9009b0e41c ALSA: hda/sigmatel - Automatically retrieve digital I/O widgets
Revise stac92xx_parse_auto_config to automatically scan for digital input
and output converters.

Signed-off-by: Charles Chin <Charles.Chin@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-03 10:28:17 +01:00
Takashi Iwai 112daa7a4c ALSA: hda - Remove unused variables
Just clean-up what GCC caught.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-02 21:40:06 +01:00
Takashi Iwai 1fa1757366 ALSA: hda/realtek - Don't create alt-stream for capture when unnecessary
When the driver finds multiple ADCs, it tries to create an alternative
capture PCM stream.  However, these secondary ADCs might be useless or
in uncontrolled paths in some cases, e.g. when auto-mic or dynamic
ADC-switching is enabled.  Also, when only a single capture source is
available, the multi-streams don't make sense, too.

With this patch, the driver checks such condition and skips the alt
stream appropriately.

Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-02 21:30:51 +01:00
Charles Chin ad5d875511 ALSA: hda - Add support for 92HD65 / 92HD66 family of codecs
These codecs have SPDIF-in, which is new to the 92HD83xxx compatible
families, so a bit of logic is added to support them.

Signed-off-by: Charles Chin <Charles.Chin@idt.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-02 07:56:58 +01:00
Charles Chin 35c11777b9 ALSA: hda - Disable power-widget control for IDT 92HD83/93 as default
The power-widget control in patch_stac92hd83xxx() never worked properly,
thus it's safer to turn it off as default for now.

Signed-off-by: Charles Chin <Charles.Chin@idt.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-02 07:53:30 +01:00
Takashi Iwai 08a1f5eb43 ALSA: hda - Check NO_PRESENCE pincfg default bit
HD-audio spec defines a bit in pin default configuration for indicating
that the pin isn't used for jack-detection although the codec is capable
of it.  Better to check this bit as well in jack_is_detectable() helper
function.

Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-02 07:46:19 +01:00
Takashi Iwai 700cc5c94f ALSA: intel8x0 - Fix inclusion of kvm_para.h
<linux/kvm_para.h> should be included instead of <asm/...>

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-01 10:40:50 +01:00
Alexander Stein 359f90982c ALSA: hda_hwdep: Fix possible buffer overflow
If a line in the firmware file is larger than the given buffer size (and
so the firmware file size), size is set to a value larger than the actual
buffer size. This results in an overflow in the buffer passed.

Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-01 09:46:39 +01:00
Paul Gortmaker d81a6d7176 sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed
These aren't modules, but they do make use of these macros, so
they will need export.h to get that definition.  Previously,
they got it via the implicit module.h inclusion.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2011-10-31 19:31:22 -04:00
Paul Gortmaker da155d5b40 sound: Add module.h to the previously silent sound users
Lots of sound drivers were getting module.h via the implicit presence
of it in <linux/device.h> but we are going to clean that up.  So
fix up those users now.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2011-10-31 19:31:21 -04:00
Paul Gortmaker 65a772172b sound: fix drivers needing module.h not moduleparam.h
The implicit presence of module.h lured several users into
incorrectly thinking that they only needed/used modparam.h
but once we clean up the module.h presence, these will show
up as build failures, so fix 'em now.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2011-10-31 19:31:19 -04:00
Konstantin Ozerkov 228cf79376 ALSA: intel8x0: Improve performance in virtual environment
v3: detection code is x86 and KVM specific, hide it under ifdef
v2: add detection for virtual environments (KVM and Parallels)

This patch is intended to improve performance in virtualized environments
like Parallels Desktop or KVM/VirtualBox/QEMU (virtual ICH/AC97 audio).

I/O access is very time-expensive operation in virtual world: VCPU
can be rescheduled and in the worst case we get more than 10ms delay on
each I/O access.

In the virtual environment loop exit rule
(old_civ == current_civ && old_picb == current_picb) is never satisfied,
because old_picb is never the same as current_picb due to delay inspired
by reading current_civ. As a result loop ended by timeout and we get 10x
more I/O operations.

Experimental data from Prallels Desktop 7, RHEL6 guest (I/O ops per
second):

Original code:
In Port    Counter         Callback
   f014      41550         fffff00000179d00 ac97_bm_read_civ+0x000
   f018      41387         fffff0000017a580 ac97_bm_read_picb+0x000

With patch:
In Port    Counter         Callback
   f014       4090         fffff00000179d00 ac97_bm_read_civ+0x000
   f018       1964         fffff0000017a580 ac97_bm_read_picb+0x000

Signed-off-by: Konstantin Ozerkov <kozerkov@parallels.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-31 10:03:28 +01:00
Adrian Knoth c09403dcc5 ALSA: hdspm - Enable all firmware ranges for PCI MADI/AES cards
From the Windows INF file, we know the firmware ranges for all RME
cards. For PCIe, a single revision ID per device (RayDAT, MADI, AIO,
AES) is used. Contrary, the older PCI versions use ranges, that is,
one revision ID per firmware version.

Instead of listing all possible revisions individually, match the range.

This commit enables all MADI and AES PCI versions ever shipped.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-31 09:53:54 +01:00
Adrian Knoth a346686568 ALSA: hdsp - Correct HDSP_VERSION_BIT constant, thus partly fixing RPM detection
HDSP_VERSION_BIT has to be ORed with HDSP_S_LOAD. This fixes the detection
of at least some RME RPM boxes.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-31 09:53:41 +01:00
Adrian Knoth 9e6ff52088 ALSA: hdspm - Fix MADI channel format in the status ioctl
SNDRV_HDSPM_IOCTL_GET_STATUS is supposed to query the current card
status, so we have to return what we receive on the MADI wire (RX), not
what we transmit (TX) to others. The latter is a config item to be
queried via SNDRV_HDSPM_IOCTL_GET_CONFIG.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-31 09:53:25 +01:00
Takashi Iwai 8128c9f215 Merge branch 'topic/hda' into for-linus 2011-10-27 17:06:43 +02:00
Takashi Iwai 6b45214277 ALSA: hda - Fix ADC input-amp handling for Cx20549 codec
It seems that Conexant CX20549 chip handle only a single input-amp even
though the audio-input widget has multiple sources.  This has been never
clear, and I implemented in the current way based on the debug information
I got at the early time -- the device reacts individual input-amp values
for different sources.  This is true for another Conexant codec, but it's
not applied to CX20549 actually.

This patch changes the auto-parser code to handle a single input-amp
per audio-in widget for CX20549.  After applying this, you'll see only a
single "Capture" volume control instead of separate "Mic" or "Line"
captures when the device is set up to use a single ADC.

We haven't tested 20551 and 20561 codecs yet.  If these show the similar
behavior like 20549, they need to set spec->single_adc_amp=1, too.

Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-27 16:58:11 +02:00
Takashi Iwai 254f296840 ALSA: hda - Keep EAPD turned on for old Conexant chips
In the old Conexant chips (5045, 5047, 5051 and 5066), a single EAPD
may handle both headphone and speaker outputs while it's assigned only
to one of them.  Turning off dynamically leads to the unexpected silent
output in such a configuration with the auto-mute function.

Since it's difficult to know how the EAPD is handled in the actual h/w
implementation, better to keep EAPD on while running for such codecs.

Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-27 16:58:10 +02:00
Takashi Iwai 527e4d73af ALSA: hda/realtek - Fix missing volume controls with ALC260
ALC260 has multiple mixer widgets connected to the shared DAC, but the
driver currently doesn't check this possibility and ignores when the DAC
is shared with others.  This resulted in the silent output from some
routes because of lack of the amp setup.

This patch adds the workaround for it by checking the route even with the
shared DAC, but also checking the conflict with the existing control for
the very same widget NID.

Reference: https://bugzilla.novell.com/show_bug.cgi?id=726812

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-27 16:58:00 +02:00
Takashi Iwai 9430148d80 Merge branch 'topic/remove-irqf_disable' into for-linus 2011-10-26 23:51:48 +02:00
Takashi Iwai d226657022 Merge branch 'topic/misc' into for-linus 2011-10-26 23:51:43 +02:00
Takashi Iwai 5cdf745eba ALSA: hda - Fix pin-config for ASUS W90V
The association numbers of surround/CLFE speaker pins aren't correctly
mapped by the auto-parser.  This patch fixes the CLFE speaker pin to the
right assoc value (from 3 to 1).

Tested-by: Nika Topolchanskaya <nanodesuu@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-26 23:05:46 +02:00
Takashi Iwai 8fa7ab48ac ALSA: hda - Fix surround/CLFE headphone and speaker pins order
When 5.1 or more headphone or speaker pins are provided, the parser still
takes as is without fixing the order of channel mapping, which leads in
the unexpected strange channel order by surround outputs.

This patch fixes the issue by applying the same fix-up not only to
line_out_pins[] but also hp_pins[] and speaker_pins[].

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-26 16:26:18 +02:00
David Henningsson cc667a72d4 ALSA: HDA: Add new revision for ALC662
The revision 0x100300 was found for ALC662. It seems to work well
with patch_alc662.

Cc: stable@kernel.org
BugLink: http://bugs.launchpad.net/bugs/877373
Tested-by: Shengyao Xue <Shengyao.xue@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Acked-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-24 13:23:04 +02:00
Takashi Iwai 716eef032c ALSA: hda/realtek - Fix DAC assignments of multiple speakers
When a device has multiple speakers and still has the auto-mute support,
the driver copies line_outs[] to speaker_outs[].  And then it tries to
assign DACs for both.  This ended up with the assignment only to the
primary DAC to all speakers.

This patch fixes the situation by checking the duplicated LO/SPK case
appropriately.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-21 15:07:42 +02:00
Takashi Iwai c146623884 Merge branch 'fix/hda' into topic/hda 2011-10-19 17:20:08 +02:00
Daniel Suchy ca201c0962 ALSA: HDA: conexant support for Lenovo T520/W520
This is patch for Conexant codec of Intel HDA driver, adding new quirk
for Lenovo Thinkpad T520 and W520. Conexant autodetection works fine for
T520 (similar subsystem ID is used also in W520 model) and detects more
mixer features compared to generic (fallback) Lenovo quirk with
hardcoded options in Conexant codec.

Patch was activelly tested with Linux 3.0.4, 3.0.6 and 3.0.7 without any
problems.

Signed-off-by: Daniel Suchy <danny@danysek.cz>
Cc: <stable@kernel.org> [3.0+]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-18 11:09:44 +02:00
Takashi Iwai 051a8cb655 ALSA: hda - Add position_fix quirk for Dell Inspiron 1010
The previous fix for the position-buffer check gives yet another
regression on a Dell laptop.  The safest fix right now is to add a
static quirk for this device (and better to apply it for stable
kernels too).

Reported-by: Éric Piel <Eric.Piel@tremplin-utc.net>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-18 10:44:05 +02:00
Takashi Iwai 1bb7e43e22 ALSA: hda/realtek - Cache COEF 0 value
The COEF #0 value represents a sort of device id, so it's supposedly
constant while operation.  Better to use the cached value instead of
reading it at each time from the performance POV.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-17 23:39:33 +02:00
Takashi Iwai e16fb6d140 ALSA: hda/realtek - Clean up codec renames
Use a static table for detecting the codec renames.
Also clean up the error paths in each patch_*() function.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-17 23:39:32 +02:00
Takashi Iwai 84db9150b6 ALSA: hda/realtek - Use alc_codec_rename()
Replaced with alc_codec_rename() in all possible places.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-17 23:39:31 +02:00
Kailang Yang 801f49d3b8 ALSA: hda - ALC888S-VC remark to ALC886
Signed-off-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-17 23:39:12 +02:00
Takashi Iwai 20ca0c350d ALSA: hda/realtek - Check the error from alc_codec_rename()
Should be a rare case, but...

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-17 16:00:35 +02:00
David Henningsson 636030e90e ALSA: HDA: Fixup Realtek headphone pin initialization
This typo caused headphone pins not to be initialized correctly.

BugLink: https://bugs.launchpad.net/bugs/871582
Reported-by: Effenberg
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-13 08:06:01 +02:00
Charles Chin 6c5c04e509 ALSA: hda - Remove bad code for IDT 92HD83 family patch
The purpose of this patch is to remove a section of "bad" code that
assigns the last DAC to ports E or F in order to support notebooks
with docking in earlier days, around ALSA 1.0.19 - 21.  This is not
necessary now and actually breaks some configurations that use these
ports as other devices.  This have been tested on several different
configurations to make sure that it is working for different combinations.

Signed-off-by: Charles Chin <Charles.Chin@idt.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-13 08:05:30 +02:00
Takashi Iwai d5cf991198 ALSA: hda - Distinguish each substream for better sticky assignment
The commit ef18beded8 introduced a
mechanism to assign the previously used slot for the next reopen of a
PCM stream.  But the PCM device number isn't always unique (it may
have multiple substreams), and also the code doesn't check the stream
direction, thus both playback and capture streams share the same
device number.

For avoiding this conflict, make a unique key for each substream and
store/check this value at reopening.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-06 10:11:11 +02:00
Takashi Iwai 97999e28c7 Merge branch 'fix/hda' into topic/hda 2011-10-06 10:04:30 +02:00
Takashi Iwai 06503670af ALSA: hda/realtek - Choose more cleverly the primary outputs
When the speaker outputs are more than the headphone outputs, it implies
that the system has surround speakers while the headphones are only for
monitoring the front.  In such a case, it's better to put speakers as
the primary outputs so that the driver can build up and keep the
surround setup.  Otherwise the system will pick up the headphone as
primary, and offers less channels than the speakers do support.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-06 08:30:45 +02:00
Takashi Iwai f71ff0d713 ALSA: hda - Moved snd_print_pcm_rates() back into hda_proc.c
Since hda_proc.c is now the only user of snd_print_pcm_rates(), better to
put it back locally to hda_proc.c and revert to the old style.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-06 08:21:15 +02:00
Pierre-Louis Bossart af65cbf296 ALSA: hdmi: fix printout of SAD sampling rates
SAD sampling rate information reported in
/proc/asound/cardX/eldX is incorrect due to a mismatch
between HDA and HDMI frequencies. Add new routine to provide
relevant values.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-06 08:08:53 +02:00
David Henningsson 7c2f8e4009 ALSA: jack - Add "Line In" input jack constants
Similar to Line Out, these constants form the base for future
patches enabling input jack reporting for Line in jacks.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-05 17:22:04 +02:00
David Henningsson 48718eab5a ALSA: HDA: Fix DAC assignment for secondary headphone on Sigmatel/IDT
If we run out of DACs when trying to assign a DAC to a secondary
headphone, prefer the DAC of the first headphone to the primary
(usually line out) DAC.

BugLink: http://bugs.launchpad.net/bugs/845275
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-05 12:56:40 +02:00
David Henningsson eb335a40ca ALSA: HDA: Fix naming of input jacks for IDT parser
The Sigmatel/IDT parser should have the same naming convention
for input jacks as the other codecs have.

BugLink: http://bugs.launchpad.net/bugs/859704
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-03 17:25:38 +02:00
Pierre-Louis Bossart 14bc52b8fe ALSA: hda/hdmi: expose ELD control
Applications may want to read ELD information to
understand what codecs are supported on the HDMI
receiver and handle the a-v delay for better lip-sync.

ELD information is exposed in a device-specific
IFACE_PCM kcontrol. Tested both with amixer and
PulseAudio; with a corresponding patch passthrough modes
are enabled automagically.

ELD control size is set to zero in case of errors or
wrong configurations. No notifications are implemented
for now, it is expected that jack detection is used to
reconfigure the audio outputs.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-03 15:48:12 +02:00
Takashi Iwai 798cb7e897 ALSA: hda - Fix a regression of the position-buffer check
The commit a810364a04
    ALSA: hda - Handle -1 as invalid position, too
caused a regression on some machines that require the position-buffer
instead of LPIB, e.g. resulting in noises with mic recording with
PulseAudio.

This patch fixes the detection by delaying the test at the timing as
same as 3.0, i.e. doing the position check only when requested in
azx_position_ok().

Reported-and-tested-by: Rocko Requin <rockorequin@hotmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-30 08:57:15 +02:00
Takashi Iwai ef940b0403 ALSA: hda - Allow patching with any vendor/subsystem ids
In the ugly real world, there area really broken devices that don't set
codec SSID correctly.  In such a case, the ID can be random, thus the
patching won't work reliably.

For applying the patch forcibly to such a device, the driver will skip
the vendor and/or subsystem ID checks when zero or a negative number is
given in [codec] section.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-28 20:19:16 +02:00
Takashi Iwai 27fe48d972 ALSA: hda - Add snoop option
Added a new option "snoop" for the traffic control of the HD-audio
controller chip.  When set to 0, the non-snooping mode is used with
the traffic control bit is set in each stream control register.
This may allow better operations in the low power mode, but the actual
implementation is depending pretty much on the chipset.

As already implemented, more or less each chipset has own snoop-control
register bit.  Now this setup refers to the snoop option, too.

Also, a new VIA chipset may require the non-snooping mode when set so
in BIOS.  In such a case, the option value is overridden.

As default, it's still set to snoop=1 for keeping the same behavior as
before.  In near future, it'll be set to 0 as default after checking
it works in every system well.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-28 20:11:36 +02:00