Commit Graph

4644 Commits

Author SHA1 Message Date
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
Takashi Iwai a597310331 ALSA: hda:via - Skip creations of empty PCM streams
If no analog I/O is defined, skip creating the corresponding PCM stream.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-28 16:43:36 +02:00
Takashi Iwai 218264ae9a ALSA: hda - Avoid unnecessary verbs to clear PCM formats
Since really_cleanup_stream() is called from both purity_inactive_streams()
and hda_cleanup_all_streams(), the verbs to clear the PCM channel and
format may be called multiple times unnecessarily.

This patch adds checks to skip these unneeded verbs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-27 17:33:45 +02:00
Takashi Iwai 5ec02a1cfa Merge branch 'fix/hda' into topic/hda 2011-09-26 15:27:10 +02:00
Takashi Iwai e0d32e335f ALSA: hda/realtek - Don't detect LO jack when identical with HP
The spec->autocfg.line_out_pins[] may contain the same pins as hp_pins[]
depending on the configuration.  When they are identical, detecting the
line_jack_present flag screws up the auto-mute because alc_line_automute()
is called unconditionally at initialization while it won't be triggered
by unsol events, thus the old line_jack_present flag is kept for the
whole run.

For fixing this buggy behavior, the driver needs to check whether the
line-outs are really individual, and skip if same as headphone jacks.

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

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-26 15:24:57 +02:00
Takashi Iwai 5fe6e0151d ALSA: hda/realtek - Avoid bogus HP-pin assignment
When the headphone pin is assigned as primary output to line_out_pins[],
the automatic HP-pin assignment by ASSID must be suppressed.  Otherwise
a wrong pin might be assigned to the headphone and breaks the auto-mute.

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

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Cc: <stable@kernel.org>
2011-09-26 11:13:43 +02:00
David Henningsson 6656b15d67 ALSA: HDA: No power nids on 92HD93
This patch is necessary to make internal speakers work on this chip.

Cc: stable@kernel.org
BugLink: http://bugs.launchpad.net/bugs/854468
Tested-by: Alex Wolfson <alex.wolfson@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-24 09:56:59 +02:00
Raymond Yau 34588709af ALSA: HDA - Add Independent Headphone for all models of ad1988/ad1989
- Add "AD198x Headphone" playback device for independent headphone playback
  while playing 7.1 surround using rear panel audio jacks.

- Remove "6stack-dig-fp" model since "Headphone Playback Volume" control using
  DAC0 instead of DAC1 (HDA_FRONT) was already added to all models.

- Add "Independent HP" switch to enable/disable this playback device.
  When the switch is OFF, headphone use "copy front" mode to get the front
  channel as the green jack.
  When the switch is ON, you can play stereo sound through "AD198x Headphone"
  device to headphone while playing 7.1 surround sound through "AD198x Analog"
  device.
  The switch cannot be changed when either "AD198x Headphone" or "AD198X Analog"
  is open.

Signed-off-by: Raymond Yau <superquad.vortex2@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-23 15:21:29 +02:00
Dan Carpenter 2ca595ab7a ALSA: hdspm - cleanup __user tags in ioctl()
This makes the code cleaner and silences a Sparse complaint:
sound/pci/rme9652/hdspm.c:6341:23: warning: incorrect type in assignment (incompatible argument 4 (different address spaces))
sound/pci/rme9652/hdspm.c:6341:23:    expected int ( *ioctl )( ... )
sound/pci/rme9652/hdspm.c:6341:23:    got int ( static [toplevel] *<noident> )( ... )
sound/pci/rme9652/hdspm.c:6102:44: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6225:50: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6264:50: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6283:50: warning: dereference of noderef expression
sound/pci/rme9652/hdspm.c:6289:59: warning: dereference of noderef expression

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-23 08:29:08 +02:00
Dan Carpenter 643d6bbb96 ALSA: hdspm - potential info leak in snd_hdspm_hwdep_ioctl()
Smatch has a new check for Rosenberg type information leaks where
structs are copied to the user with uninitialized stack data in them.

The status struct has a hole in it, and on some paths not all the
members were initialized.

struct hdspm_status {
        unsigned char              card_type;            /*     0     1 */
        /* XXX 3 bytes hole, try to pack */
        enum hdspm_syncsource      autosync_source;      /*     4     4 */
        long long unsigned int     card_clock;           /*     8     8 */

The hdspm_version struct had holes in it as well.

struct hdspm_version {
        unsigned char              card_type;            /*     0     1 */
        char                       cardname[20];         /*     1    20 */
        /* XXX 3 bytes hole, try to pack */
        unsigned int               serial;               /*    24     4 */
        short unsigned int         firmware_rev;         /*    28     2 */
        /* XXX 2 bytes hole, try to pack */
        int                        addons;               /*    32     4 */

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-23 08:28:56 +02:00
Takashi Iwai 8e699d2cc2 ALSA: fm801 - Clean up redundant reference to snd_fm801_tea575x_gpios[]
Use macro to improve readability.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-23 07:18:22 +02:00
Takashi Iwai 272a487056 Merge branch 'fix/misc' into topic/misc 2011-09-22 16:41:52 +02:00
Ben Hutchings c37279b92a ALSA: fm801: Gracefully handle failure of tuner auto-detect
Commit 9676001559
("ALSA: fm801: add error handling if auto-detect fails") seems to
break systems that were previously working without a tuner.

As a bonus, this should fix init and cleanup for the case where the
tuner is explicitly disabled.

Reported-and-tested-by: Hor Jiun Shyong <jiunshyong@gmail.com>
References: http://bugs.debian.org/641946
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: stable@kernel.org [v3.0+]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-22 15:52:52 +02:00
Ben Hutchings 2ba34e43ba ALSA: fm801: Fix double free in case of error in tuner detection
Commit 9676001559
("ALSA: fm801: add error handling if auto-detect fails") added
incorrect error handling.

Once we have successfully called snd_device_new(), the cleanup
function fm801_free() will automatically be called by snd_card_free()
and we must *not* also call fm801_free() directly.

Reported-by: Hor Jiun Shyong <jiunshyong@gmail.com>
References: http://bugs.debian.org/641946
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: stable@kernel.org [v3.0+]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-22 15:51:46 +02:00
Yong Zhang 88e24c3a4b sound: irq: Remove IRQF_DISABLED
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).

So now this flag is a NOOP and can be removed.

Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-22 11:19:20 +02:00
David Henningsson 0b6c49b59f ALSA: hda: hdmi: Hint matching between input devices and pcm devices
Since modern HDMI cards often have more than one output pin and thus
input device, we need to know which one has actually been plugged in.

This patch adds a name hint that indicates which PCM device is connected
to which pin.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-21 10:31:00 +02:00
David Henningsson 42cf0d0155 ALSA: HDA: Refactor Realtek's automute
Increase readability and understandability in the automute code.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-20 18:22:33 +02:00
Takashi Iwai 290b421f69 Merge branch 'fix/hda' into topic/hda 2011-09-20 09:14:04 +02:00
David Henningsson 46724c2e02 ALSA: HDA: Add support for IDT 92HD93
Cc: stable@kernel.org
BugLink: http://bugs.launchpad.net/bugs/854468
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-20 09:13:18 +02:00
Clemens Ladisch 5495ffbd7b ALSA: via82xx: allow to disable the SRC
Add the PCM rule to allow disabling the PCM playback SRC.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-20 08:57:00 +02:00
Clemens Ladisch 57e5c63007 ALSA: emu10k1: allow to disable the SRC
Add the PCM rule to allow disabling the PCM playback SRC.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-20 08:56:58 +02:00
Clemens Ladisch 5b0416a3c2 ALSA: ymfpci: allow to disable the SRC
Add the PCM rules to allow disabling the PCM playback and capture SRCs.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-20 08:56:56 +02:00
Clemens Ladisch 84f9df159d ALSA: ymfpci: fix PCM open error handling
The installation of the minimum period size constraint in the PCM open
callbacks was not checked for errors.  Add this check, and move the call
to the beginning of the function to avoid having to do any cleanups in
the error case.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-20 08:56:34 +02:00
Takashi Iwai 8974bd51a7 ALSA: hda/realtek - Fix auto-mute with HP+LO configuration
When the system has only the headphone and the line-out jacks without
speakers, the current auto-mute code doesn't work.  It's because the
spec->automute_lines flag is wrongly referred in update_speakers().
This flag must be meaningless when spec->automute_hp_lo isn't set, thus
they should be always coupled.

The patch fixes the problem and add a comment to indicate the
relationship briefly.

BugLink: http://bugs.launchpad.net/bugs/851697

Reported-by: David Henningsson <david.henningsson@canonical.com>
Tested-By: Jayne Han <jayne.han@canonical.com>
Cc: stable@kernel.org (3.0)
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-19 11:31:34 +02:00
Takashi Iwai 0308110615 Merge branch 'fix/misc' into topic/misc 2011-09-16 08:29:04 +02:00
David Henningsson 2e1210bc3d ALSA: HDA: Cirrus - fix "Surround Speaker" volume control name
This patch fixes "Surround Speaker Playback Volume" being cut off.
(Commit b4dabfc452 was probably meant to fix this, but it fixed
only the "Switch" name, not the "Volume" name.)

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-14 13:45:12 +02:00
Clemens Ladisch dba8b46992 ALSA: mpu401: clean up interrupt specification
The semantics of snd_mpu401_uart_new()'s interrupt parameters are
somewhat counterintuitive:  To prevent the function from allocating its
own interrupt, either the irq number must be invalid, or the irq_flags
parameter must be zero.  At the same time, the irq parameter being
invalid specifies that the mpu401 code has to work without an interrupt
allocated by the caller.  This implies that, if there is an interrupt
and it is allocated by the caller, the irq parameter must be set to
a valid-looking number which then isn't actually used.

With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
which forces us to handle the parameters differently.

This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
device interrupt is handled by the caller, and makes the allocation of
the interrupt to depend only on the irq parameter.  As suggested by
Takashi, the irq_flags parameter was dropped because, when used, it had
the constant value IRQF_DISABLED.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-14 11:00:51 +02:00
Takashi Iwai 99e14c9d41 ALSA: hda - Terminate the recursive connection search properly
The recursive search of widget connections in snd_hda_get_conn_index()
must be terminated at the pin and the audio-out widgets.  Otherwise
you'll get "too deep connection" warnings unnecessarily.

Reported-by: Francis Moreau <francis.moro@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-13 10:33:16 +02:00
Raymond Yau 356aab7d41 ALSA: hda - Add Headphone Playback Volume control for ad1988/ad1989
- use DAC0 instead of DAC1 for Port-A Headphone
- assign 0x03 to spec->multiout.hp_nid except model="6stack-dig-fp"

Signed-off-by: Raymond Yau <superquad.vortex2@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-12 10:34:48 +02:00
Raymond Yau 89f3325a6e ALSA: ymfpci: add "Playback" to FM Legacy Volume control
YDSXGR_LEGACYOUTVOL is a Playback Volume control for OPL3 FM Synth.

Signed-off-by: Raymond Yau <superquad.vortex2@gmail.com>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-12 10:30:28 +02:00
David Henningsson 468c545885 ALSA: hda: Conexant: Allow different output types to share DAC
Headphones has stopped working for the original reported (a regression
compared to 2.6.38). This is because Speaker and Headphones share the
same DAC, in which case no Headphones volume control was created.
This patch fixes so that both Speaker and Headphones volume
controls are created in such scenario.

BugLink: http://bugs.launchpad.net/bugs/817943
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-25 15:08:03 +02:00
Takashi Iwai b9c5106cd2 ALSA: hda - Remove the rest of ALC662 quirks
The rest of ALC662 quirks are only for desktops, and they should work
with the auto-parser.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 18:08:07 +02:00
Takashi Iwai a9b36153a4 ALSA: hda - Remove ALC662 ASUS eeepc-ep20 model quirk
Since the recent fixes, this device works with the auto-parser well.
Let's kill it.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 18:05:06 +02:00
Takashi Iwai c267468e98 ALSA: hda - Prefer multi-io to speakers for realtek auto-parser
When the multi-io jacks are available, parse them first and assign DACs
before parsing speakers and headphones.  This allows a better chance of
surround I/O in some desktops and laptops with limited DACs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 17:57:44 +02:00
Takashi Iwai 9c4e84d3b8 ALSA: hda - Fix Center/LFE mixer element creations for Realtek
The commit 23c09b0090
    ALSA: hda - Support multiple speakers by Realtek auto-parser
changes the return value from alc_get_line_out_pfx(), and it breaks
the center/LFE mixer split check.  The caller must test with a string
"CLFE" now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 17:27:52 +02:00
Takashi Iwai e92d4b08d7 ALSA: hda - Rewrite Lenovo X200 quirk with pincfg-fix using auto-parser
Introduce the pincfg table to patch_conexant.c for fixing up the extra
pin-configuration for auto-parser.  As an example, Lenovo X200 model is
replaced with this new mechanism.  (This also fixes the wrong mixer
elements for docking-station I/O in the previous model quirk
automagically.)

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 16:24:04 +02:00
Takashi Iwai a301fed4b9 Merge branch 'fix/hda' into topic/hda 2011-08-24 10:56:06 +02:00
Takashi Iwai 7675535958 ALSA: hda/conexant - Enable ADC-switching for auto-mic mode, too
The ADC-switching can work also in the auto-mic mode, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 10:53:10 +02:00
Takashi Iwai 5e8e1a9b05 ALSA: hda - Remove ALC662 ASUS M51VA, G71V, H13 and G50V model quirks
These models work now with the BIOS auto-parser, so let's drop them.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 10:43:36 +02:00
Maarten Lankhorst 391e69143d ALSA: ctxfi: Bump playback substreams to 256
There are references in the code to 256 sources, so I tested it with 256 aplays,
of which the first and last with real data and the rest playing /dev/zero .

Also increase amount of page tables, so the default aplay size works.

Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-24 10:39:44 +02:00
Takashi Iwai a4297b5db0 ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&co quirks with fixups
Similarly like ALC662 asus-mode* models, rewrite the laptop-amic and
dmic models with the static pin-config tables.

Now we can get rid of all alc269_quirks.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 18:40:12 +02:00
Takashi Iwai 53c334add1 ALSA: hda - Rewrite ALC662 asus-mode* models with fixups
Re-implement the asus-mode[1-8] quirks with the pin-config tables.
They are provided in case where BIOS is broken on the device, so it's
not enabled in PCI SSID lookup table.  User needs to specify it via model
option explicitly if the driver doesn't work with the BIOS setup as is.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 18:27:14 +02:00
Takashi Iwai e23832ac15 ALSA: hda - Support multiple headphones in Realtek auto-parser
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 18:16:56 +02:00
Takashi Iwai a06dbfc2cf ALSA: hda - Add multi-headphone NIDs in multiout struct
For supporting both the multiple headphones and the multiple speakers,
add the new field in struct hda_multi_out, and evaluate in the standard
setup functions.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 18:16:13 +02:00
Takashi Iwai cb4e482415 ALSA: hda - Remove all ALC861 and ALC861-VD quirks
Let's remove the rest of ALC861 and ALC861-VD quirks.
If any breakage is found, it can be fixed easily via the pin-config
table update.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 17:34:25 +02:00
Takashi Iwai 8fdcb6fe42 ALSA: hda - Restore VREF50 setup for ALC861-VD dallas/hp models
During the cleanup by commit 6727b12669,
the specific setups for dallas and hp models, using VREF50 for mic pins,
were lost.  Fixed now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 17:28:55 +02:00
Takashi Iwai d025febcd8 ALSA: hda - Rename to snd_hda_parse_pin_defcfg()
... and add a new bit-flags argument to specify the behavior of the
function.  The older function is kept as is (as a wrapper).

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 15:24:39 +02:00
Takashi Iwai 8cd0775da2 ALSA: hda - Fix initialization of multi-speaker output paths for Realtek
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 15:16:22 +02:00
Takashi Iwai 5fa9b15112 Merge branch 'fix/hda' into topic/hda
Conflicts:
	sound/pci/hda/patch_realtek.c
2011-08-23 15:02:36 +02:00
Takashi Iwai 1f015f5fdc ALSA: hda - Fix double-headphone/speaker paths for Cxt auto-parser
When multiple headphones or speakers are assigned but no individual
DACs are available, the driver should take the first HP/SPK DAC instead
of another primary output.  The patch adds a bit-flag to dac field of
struct pin_dac_pair indicating that it's a slave DAC.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 14:57:08 +02:00
Takashi Iwai 3c715a9884 ALSA: hda - Update jack-sense info even when no automute is set
The internal states, jack_present and line_jack_present should be
updated upon unsolicited events even if no automute is set.
Otherwise the wrong state is referred when the automute behavior is
changed by the mixer control.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 12:41:09 +02:00
Takashi Iwai 675c1aa3c4 ALSA: hda - Fix output-path initialization for Realtek auto-parser
When the headphone or speaker output has no own DAC, initialize the path
using the primary DAC.  Otherwise the path won't be set properly and
can result in the silence.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-23 12:36:28 +02:00
Takashi Iwai 1b004d03d8 ALSA: hda - Fix error check from snd_hda_get_conn_index() in patch_cirrus.c
snd_hda_get_conn_index() returns a negative value while the current code
stores it in an unsigned int.  It must be stored in a signed integer.

Reported-by: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-20 09:24:54 +02:00
Takashi Iwai b6acf013bd ALSA: hda - Don't spew too many ELD errors
Currently HD-audio driver shows the all error ELD byte as an error
in the kernel message.  This is annoying when the video driver doesn't
set the correct ELD from the beginning. e.g. radeon sends a zero-byte
data, but we still check ELD with the fixed 128 byte as a workaround
for some broken devices, it spews 128-times errors.

For avoiding this, the driver aborts reading when the first byte is
invalid.  In such a case, the whole data is certainly invalid.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-20 09:23:10 +02:00
Takashi Iwai 188cd2b5c6 ALSA: hda - Remove ALC662 model=levono-101e model quirk
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-19 09:23:26 +02:00
Takashi Iwai 965f1b2e19 ALSA: hda - Allow different assoc numbers for multiple speakers
In snd_hda_parse_pin_def_config(), we checked the associated number
of speaker pins and accepts only one number exclusively.  But many BIOS
seem to give different assoc number for surround speakers, thus we'd
better to accept all speaker pins no matter which assoc number, and sort
like done for the headphone pins.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-19 09:10:29 +02:00
Takashi Iwai 23c09b0090 ALSA: hda - Support multiple speakers by Realtek auto-parser
Add the support of multiple speakers by Realtek auto-parser.
When all speaker pins have individual DACs, create each speaker volume
control.  Otherwise, create a bind-volume control for all speaker outs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-19 09:05:35 +02:00
Takashi Iwai b55ac2a116 Merge branch 'fix/misc' into topic/misc 2011-08-19 08:30:38 +02:00
Takashi Iwai 2996bdbaa4 ALSA: hda - Remove ALC662 eeepc-p701 and ecs models
These are confirmed to work with the auto-parser with pincfg fixups.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-18 16:02:24 +02:00
Takashi Iwai 91baa2c717 ALSA: hda - Get rid of left-over chunks by previous cleanups
Also update the model description, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-18 15:48:03 +02:00
Takashi Iwai 9fbbc94fe0 ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models
These are confirmed to work with the auto-parser.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-18 15:43:38 +02:00
Takashi Iwai 3fe45aeaf2 ALSA: hda - Add "PCM" volume to vmaster slave list
The new parser may use "PCM" volume, but it was missing the vmaster
slave list, thus "Master" volume didn't control it.

Reference: https://bugzilla.kernel.org/show_bug.cgi?id=41342

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-18 15:13:17 +02:00
Takashi Iwai 6ebb80530b ALSA: hda - Remove ALC268 model quirks
Get rid of the rest of ALC268 model quirks.  They are all confirmed to
work with the auto-parser, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-16 15:15:40 +02:00
Takashi Iwai 2451991167 ALSA: hda - Replace ALC269 quanta and lifebook models with fixups
Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook
specific COEF and pin configurations.  Removed the model entries
from alc269_quirks.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-16 15:08:49 +02:00
Takashi Iwai d62f50dc7c ALSA: hda - Remove ALC269 model=futjisu and Acer
Both are supported by the auto-parser.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-16 14:50:58 +02:00
Takashi Iwai 46e11ac794 ALSA: hda - Remove acer, acer-aspire and acer-dmic models for ALC268
Moved some code to alc269_quirks.c for dependency, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-16 14:30:50 +02:00
Takashi Iwai 497979262f Merge branch 'fix/hda' into topic/hda
Conflicts:
	sound/pci/hda/alc268_quirks.c
2011-08-16 14:25:22 +02:00
Takashi Iwai c503ad466d ALSA: hda - Fix duplicated capture-volume creation for ALC268 models
Fix the duplicated creation of capture-mixer elements for some static
ALC268 configurations.  The capture mixers must be put to cap_mixer field
instead of mixers array.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-16 14:23:20 +02:00
Takashi Iwai 082632e235 ALSA: hda - Remove dell, dell-zm1 and samsung-nc10 models for ALC272
The auto-parser works for these models.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-16 14:09:28 +02:00
Takashi Iwai d877681d2e ALSA: hdspm - Simplify with snd_pcm_hw_constraint_pow2()
Refactoring the code using snd_pcm_hw_constraint_pow2() helper function.

Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:37:03 +02:00
Takashi Iwai 3fa9e3d230 ALSA: hdspm - Add missing KNOT flag for AES32 rate restriction
AES32 supports the non-standard 128kHZ, and this is enabled only when
SNDRV_PCM_RATE_KNOT is set in hw.rates field.

Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:36:49 +02:00
Takashi Iwai 52e6fb4812 ALSA: hdspm - Correct max buffer size limit
Some modesl can support up to 8192 frames per period.

Tested-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:36:18 +02:00
Clemens Ladisch dc3fcd1655 ALSA: virtuoso: fix Essence ST(X) S/PDIF input
On the Xonar Essence ST/STX, the connector J14 has been confirmed to be
a digital input, so enable it in the driver.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:35:14 +02:00
Takashi Iwai 6727b12669 ALSA: hda - Remove ALC861VD Lenovo, Dallas, HP and V1S model quirks
These are covered by the auto-parser well enough.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:30:41 +02:00
Takashi Iwai 1ebec5f2a2 ALSA: hda - Remove ALC680 model quirks
The auto-parser works fine.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:25:21 +02:00
Takashi Iwai d8897da379 ALSA: hda - Remove ALC268 Dell, Toshiba and Zapto model quirks
These models work fine with the BIOS auto-parser.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:15:17 +02:00
Takashi Iwai 0d8cb303a9 ALSA: hda - Remove ALC260 HP model quirks
ALC260 HP models work with the BIOS auto-parser.  Let's cut them off.
Also move alc260_hp_master_*() to alc262_quirks.c as these are still
referred from there.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 13:10:18 +02:00
Takashi Iwai 3823328d55 ALSA: hda - Remove ALC262 HP and sony-assamd quirks
HP and sony-assamd models work with the BIOS auto-parser nowadays,
so let's reduce the unnecessary code.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 12:58:13 +02:00
Takashi Iwai f57c25650b ALSA: hda - Add snd_hda_override_pin_caps() helper function
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 12:49:07 +02:00
Takashi Iwai 2d9f8a6e73 Merge branch 'fix/hda' into topic/hda 2011-08-15 12:47:19 +02:00
Daniel T Chen eade7b281c ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist
BugLink: https://bugs.launchpad.net/bugs/826081

The original reporter needs 'Headphone Jack Sense' enabled to have
audible audio, so add his PCI SSID to the whitelist.

Reported-and-tested-by: Muhammad Khurram Khan
Cc: <stable@kernel.org>
Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 10:26:37 +02:00
Adrian Knoth 2e61027079 ALSA: hdspm - Enable 32 samples/period on RME RayDAT/AIO
Newer RME cards like RayDAT and AIO support 32 samples per period. This
value is encoded as {1,1,1} in the HDSP_LatencyMask bits in the control
register.

Since {1,1,1} is also the representation for 8192 samples/period on
older RME cards, we have to special case 32 samples and 32768 bytes
according to the actual card.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 10:25:39 +02:00
Adrian Knoth 7cb155ff3e ALSA: hdspm - Introduce hdspm_get_latency() to harmonize latency calculation
Currently, hdspm_decode_latency is called several times, violating the
DRY principle. Given that we need to distinguish between old and new
cards when decoding the latency bits in the control register, introduce
hdspm_get_latency() to provide the required functionality.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 10:25:32 +02:00
Adrian Knoth 1ad5972f71 ALSA: hdspm - Reorder period sizes according to their bit representation
On newer RME cards like RayDAT and AIO, the 8192 samples per period size
are no longer supported. Instead, setting all three bits of
HDSP_LatencyMask to one ({1,1,1}) now corresponds to 32 samples per
period.

To make this more obvious to future developers, let's reorder the array
according to their bit representation, starting at 64 ({0,0,0}) up to
4096 ({1,1,0}) and finally 32 ({1,1,1}).

Note that this patch doesn't change semantics.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 10:25:23 +02:00
Adrian Knoth 1b6fa108b3 ALSA: hdspm - Set period_bytes_min to 32 * 4 for new RME cards
On newer RME cards like RayDAT and AIO, the lower bound is 32 samples
per period in contrast to 64 samples as seen on older cards.

We hence lower period_bytes_min to 32 * 4. Four bytes per sample.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-15 10:24:42 +02:00