Commit Graph

2705 Commits

Author SHA1 Message Date
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
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
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
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
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
Wang Shaoyan
96b6359779 ALSA: hda - Add CONFIG_SND_HDA_POWER_SAVE to stac_vrefout_set()
In commit 45eebda7, it add new function stac_vrefout_set, but it
is only used in code between CONFIG_SND_HDA_POWER_SAVE macro, so
add the macro to avoid such warning:

  sound/pci/hda/patch_sigmatel.c:676:12: warning: 'stac_vrefout_set' defined but not used

Signed-off-by: Wang Shaoyan <wangshaoyan.pt@taobao.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-10 11:22:08 +02:00
Takashi Iwai
ecf726f541 ALSA: hda - Add tracepoint for unsolicited events
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-09 14:24:17 +02:00
Wang Shaoyan
81c0a78b64 ALSA: hda - Fix a complile warning in patch_via.c
sound/pci/hda/patch_via.c:2087: warning: 'dac' may be used uninitialized in this function

Signed-off-by: Wang Shaoyan <wangshaoyan.pt@taobao.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-05 12:51:01 +02:00
Pierre-Louis Bossart
2ae66c2655 ALSA: hda: option to enable arbitrary buffer/period sizes
Add new parameter to disable rounding of buffer/period sizes to
multiples of 128 bytes. This is more efficient in terms of memory
access but isn't required by the HDA spec and prevents users from
specifying exact period/buffer sizes. For example for 44.1kHz, a
period size set to 20ms will be rounded to 19.59ms.

Tested and enabled on Intel HDA controllers. Option is disabled by
default for other controllers.

Tested-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-04 17:44:36 +02:00
Takashi Iwai
d66fee5d65 ALSA: hda - Add basic tracepoints
Add a few tracepoints to HD-audio driver.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-04 17:02:37 +02:00
Takashi Iwai
c3540b81ee ALSA: hda - Use auto-parser for ASUS UX50, Eee PC P901, S101 and P1005
It works fine with auto-parser and now the digital mic workaround was
implemented in auto-parser fixup, let's drop the static model quirks for
these models.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-04 15:21:19 +02:00
Takashi Iwai
adabb3ec8b ALSA: hda - Fix digital-mic mono recording on ASUS Eee PC
The digital-mic unit on ASUS Eee PC gives PDM signals instead of the
normal stereo PCM, thus you can't record a mono stream from the stereo
stream as is; the summed stereo signal results in almost zero level, and
you'll hear only soft noise.

As a workaround, use ALC269-specific COEF to manipulate the dmic route
for mono, like used for ALC271x.  This is implemented as a fix-up, thus
it works only with model=auto or without REALTEK_QUIRKS Kconfig.

Reported-and-tested-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-08-04 15:21:13 +02:00
Takashi Iwai
c48a8fb0d3 ALSA: hda - Fix duplicated DAC assignments for Realtek
Copying hp_pins and speaker_pins from line_out_pins may confuse the
parser, and it can lead to duplicated initializations for the same pin
with a wrong DAC assignment.  The problem appears in 3.0 kernel code.

Cc: <stable@kernel.org> (for 3.0)
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-27 16:44:40 +02:00
Takashi Iwai
60a6a8425a ALSA: hda - Fix Oops with Realtek quirks with NULL adc_nids
Somce quirk models don't set adc_nids but let the parser filling it.
But the recent code has unnecessary NULL-checks of spec->input_mux,
and it resulted in NULL dereferences.
This patch fixes that regression.

Reported-and-tested-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-27 16:05:30 +02:00
Vitaliy Kulikov
45eebda7b4 ALSA: hda - Add support for vref-out based mute LED control on IDT codecs
This patch also registers all necessary callbacks to support mute LED
only when such control is enabled. And it keeps codec AFG in D0 or D1
state all the time when aggressive power managemnt is enabled for vref-out
control (and mute LED) work correctly.

Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-27 08:51:10 +02:00
Tim Howe
56487c279f ALSA: hda - Cirrus Logic CS421x support
This update includes the changes necessary for supporting the
CS421x family of codecs.  Previously this file only supported
the CS420x family of codecs.

This file also contains init verbs to correct several issues in
the CS421x hardware.

Behavior between the CS421x and CS420x codec families is similar,
so several functions have been reused with "if" statements to
determine which codec family (CS421x or CS420x) is present.

Also, this file will be updated sometime in the near future in
order to add support for a system using CS421x that requires
mono mix on the speaker output only.

[Fix const usages and adaption for new APIs by tiwai]

Signed-off-by: Tim Howe <tim.howe@cirrus.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-26 17:21:25 +02:00
Takashi Iwai
4d7fbdbcb1 ALSA: hda - Allow codec-specific set_power_state ops
The procedure for codec D-state change may have exceptional cases
depending on the codec chip, such as a longer delay or suppressing D3.

This patch adds a new codec ops, set_power_state() to override the system
default function.  For ease of porting, snd_hda_codec_set_power_to_all()
helper function is extracted from the default set_power_state() function.

As an example, the Conexant codec-specific delay is removed from the
default routine but moved to patch_conexant.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-26 17:21:24 +02:00
Takashi Iwai
e581f3dba5 ALSA: hda - Add post_suspend patch ops
Add a new ops, post_suspend(), which is called after suspend() ops is
performed.  This is called only in the case of the real PM suspend, and
the codec driver can use this for further changing of D-state or
clearing the LED, etc.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-26 17:21:23 +02:00
Takashi Iwai
2a43952a99 ALSA: hda - Make CONFIG_SND_HDA_POWER_SAVE depending on CONFIG_PM
It makes little sense to enable power-saving without PM.
This removes SND_HDA_NEEDS_RESUME define so that we can use CONFIG_PM
in all places.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-26 17:21:18 +02:00
Vitaliy Kulikov
7df1ce1a81 ALSA: hda - Make sure mute led reflects master mute state
This patch adds checking of mute state on all outputs besides just
speakers to calculate the master mute state for mute led support.
It also renames and splits the function that does it for better code
clarity.

Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-26 09:39:31 +02:00
Vitaliy Kulikov
d02667e620 ALSA: hda - Fix invalid mute led state on resume of IDT codecs
Codec state is not restored immediately on resume but on the first
access when power-save is enabled.  That leads to an invalid mute led
state after resume until either sound is played or some control is
changed.  This patch adds a possibility for a vendor specific patch to
restore codec state immediately after resume if required.  And it adds
code to restore IDT codecs state immediately on resume on HP systems
with mute led support.

Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-26 09:38:36 +02:00
Vitaliy Kulikov
0c27c18052 ALSA: hda - Add support of the 4 internal speakers on certain HP laptops
Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-24 13:36:24 +02:00
Takashi Iwai
8f398ae72f ALSA: hda - Fix DAC filling for multi-connection pins in Realtek parser
Fix a regression in the DAC filling code in patch_realtek.c.  The already
filled DACs in multiout.dac_nids[] were ignored because of num_dacs=0,
thus always pointed to the first DAC.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-23 18:57:11 +02:00
Takashi Iwai
76531d4166 Merge branch 'topic/hda' into for-linus 2011-07-22 08:43:27 +02:00
Takashi Iwai
7d339ae997 Merge branch 'topic/misc' into for-linus 2011-07-22 08:43:24 +02:00
Takashi Iwai
a353fbb179 ALSA: hda - Remove a superfluous argument of via_auto_init_output()
"force" argument is always true, so let's strip it off.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-21 14:24:25 +02:00
Takashi Iwai
020066d1ec ALSA: hda - Fix indep-HP path (de-)activation for VT1708* codecs
This patch fixes non-working indep-HP control on VT1708* codecs.
The problems are that via_independent_hp_put() wasn't fixed to follow
the recent change of three HP paths, and hp_indep_path didn't contain
the amp nids of mixer elements.

Together with the fixes, a few code clean-ups are done.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-21 13:55:10 +02:00
Takashi Iwai
3b607e3d3a ALSA: hda - Switch HP DAC dynamically with indep-HP switch for VIA
This patch changes the behavior of independent-HP enum switch.  Now
instead of returning a busy error, the driver switches dynamically the
stream of the HP (and shared) DACs according to the current mode.
The logic is similar like the dual-mic ADC switch, but a bit more
complicated because of the presence of shared DAC.

Together with the change, a mutex is introduced to protect against the
possible races for the indep-HP mode setting.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-18 16:54:40 +02:00
Takashi Iwai
3214b9665c ALSA: hda - Implement dynamic loopback control for VIA codecs
This patch adds the dynamic control of analog-loopback for VIA codecs.

When the loopback is enabled, the inputs from line-ins and mics are
mixed with the front DAC, and sent to the front outputs.  The very same
input is routed to the headhpones and speakers in loopback mode.
However, since the loopback mix can't take other than the front DAC,
there is no longer individual volume controls for headphones and
speakers.  Once when the loopback control is off, these volumes take
effect.

Since the individual volumes are more desired in general use caess, the
loopback mode is set to off as default for now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-18 16:47:33 +02:00
Takashi Iwai
00ef9610ac ALSA: hda - Fix krealloc() replacement in hda_codec.c
It was obviously wrong, grr....

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-14 15:58:02 +02:00
Takashi Iwai
7b1655f5f2 ALSA: hda - Re-add need_dac_fix check for multi-io jacks of Realtek codecs
During the rewrite, the check of spec->need_dac_fix and the corresponding
num_dacs change was dropped from the channel-mode control.

This patch re-adds it, and also enables need_dac_fix for ALC880 as default,
as this feature was originally introduced to fix h/w bugs of this chip.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-14 15:33:59 +02:00
Paul Menzel
cf01b73e26 ALSA: hda - fix up typos in Kconfig help for default buffer size introduced in acfa634f
This commit is a fix up for commit acfa634f.

	commit acfa634f7e
	Author: Takashi Iwai <tiwai@suse.de>
	Date:   Tue Jul 12 17:27:46 2011 +0200

		  ALSA: hda - Add Kconfig for the default buffer size

Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-12 20:17:23 +02:00
Takashi Iwai
acfa634f7e ALSA: hda - Add Kconfig for the default buffer size
Add a Kconfig entry to specify the default buffer size.
Distros using PulseAudio can choose a larger value here.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-12 17:31:46 +02:00
Takashi Iwai
3101ba035c ALSA: Use krealloc() in possible places
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-12 08:05:16 +02:00
Takashi Iwai
30b4503378 ALSA: hda - Expose secret DAC-AA connection of some VIA codecs
VT1718S and co have a secret connection from DAC to AA-mix, which
doesn't appear in the connection list obtained from the h/w.
Currently the driver fixes the connection index locally at init, but
now we can expose it statically via snd_hda_override_connections()
so that this conection can be checked better by the parser in future.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-12 07:45:02 +02:00
Takashi Iwai
9e7717c9eb ALSA: hda - Always read raw connections for proc output
In the codec proc outputs, read the raw connections instead of the
cached connection list, i.e. proc files contain only raw values.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-12 07:45:01 +02:00
Takashi Iwai
b2f934a0df ALSA: hda - Add snd_hda_override_conn_list() helper function
Add a function to add/modify the connection-list cache entry.
It'll be useful to fix a buggy hardware result.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-12 07:44:46 +02:00
Takashi Iwai
19110595c8 ALSA: hda - Turn on extra EAPDs on Conexant codecs
Some machines seem to use EAPD control of the unused pin for controlling
the overall EAPD.  Since the driver currently doesn't check the EAPD of
unused pins, the EAPD isn't enabled.  For avoiding such a problem, turn
all extra EAPDs on as default.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-11 14:46:44 +02:00
Takashi Iwai
9499473463 ALSA: hda - Preserve input pin-ctl bits in HP-automute for VIA codec
For smart51 pins, we need to preserve the input pin-control bits at
auto-mute controls instead of overwriting zero or pin-out-only.
Otherwise the VREF won't be set properly when smart51 is disabled
again.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-11 11:36:44 +02:00
Takashi Iwai
6e969d9155 ALSA: hda - Set line-out pin-ctls properly when indep-HP mode changes
When Independent-HP mode is changed for VIA, the driver needs to
re-issue the auto-mute check so that the line-out pins are set properly
without influence of HP pin state.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-11 11:28:13 +02:00
Takashi Iwai
21ce0b6527 ALSA: hda - Via Fix speaker-mute checks in VIA driver
When the line-jack is plugged/unplugged, the driver must check also
the headphone jack state in addition to the line-out jack.  Currently
it checks only the line-out state and ignores the headphone.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-11 10:33:47 +02:00
Takashi Iwai
017f2a104c ALSA: hda - Implement 44kHz workaround for IdeadPad as fixup
Instead of checking the model quirk, use a fixup table for workaround
of 44kHz-fixed PCM for Lenovo IdeaPad with ALC269.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-09 14:42:25 +02:00
Takashi Iwai
abaead6ac5 ALSA: hda - Fix a copmile warning
It's harmless but annyoing.
  sound/pci/hda/patch_realtek.c: In function ‘alc_cap_getput_caller’:
  sound/pci/hda/patch_realtek.c:2722:9: warning: ‘err’ may be used uninitialized in this function

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-09 11:55:28 +02:00
Takashi Iwai
3e6179b844 ALSA: hda - Merge alc*_parse_auto_config() functions in patch_realtek.c
Now all alc*_parse_auto_config() do almost same thing except for the
NID list to ignore and the PINs for SSID-check, we can merge all these
to a single function.  A good amount of code reduction.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 16:55:13 +02:00
Takashi Iwai
8452a982fb ALSA: hda - Merge ALC260 auto-parser code
Finally the last one.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 16:19:48 +02:00
Takashi Iwai
4c11398edc ALSA: hda - Merge ALC269 parser code
One more code reduction.  This codec has less DACs, thus the wiring
to DAC can't be filled uniquely for all output pins, i.e. some outputs
share the same volume control.
Except for that, all seems working fine.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 16:12:05 +02:00
Takashi Iwai
be9bc37bcc ALSA: hda - Merge ALC268/269 auto-parser codes
Now coming to ALC268/269 parser codes.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 16:01:47 +02:00
Takashi Iwai
72dcd8e76b ALSA: hda - Merge ALC861 auto-parser code
Merge more auto-parser code in patch_realtek.c, now for ALC861.
The topology of this codec is pretty simple, and can be parsed well
by the current starndard parser.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 15:16:55 +02:00
Takashi Iwai
44c0240052 ALSA: hda - Fix amp-cap checks in patch_realtek.c
query_amp_caps() may return non-zero if the amp cap isn't supported
by the codec.  Thus one needs to check widget-caps first, then check
the corresponding amp-caps.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 15:14:19 +02:00
Takashi Iwai
a1f649d547 ALSA: hda - Merge ALC861-VD auto-parse to the standard parser
The existing standard auto-parser can work well with this codec, too.
Let's merge.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 14:39:03 +02:00
Takashi Iwai
268ff6fbe7 ALSA: hda - Fix auto-mic detection in Realtek codec-parser
A regression fix from commit 21268961d3
  ALSA: hda - More flexible dynamic-ADC switching for Realtek codecs

The auto-mic wasn't detected properly when no ADC-switch is needed.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 14:37:35 +02:00
Lydia Wang
28dc10a5f1 ALSA: hda - Fix output-path of VT1812 codec
For VT1812, add dac_mixer_idx for initialization.

Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 12:37:19 +02:00
Takashi Iwai
21d45d2ba9 ALSA: hda - Fix Oops in smart51 parsing in VIA codec
Typical off-by-one thinko.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 11:35:11 +02:00
Takashi Iwai
e477062958 ALSA: hda - Provide the standard auto_init for Realtek codecs
Remove redundant definitions.  Ideally, all init functions should be
identical in future.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 11:12:09 +02:00
Takashi Iwai
afcd551508 ALSA: hda - Merge ALC680 auto-parser to the standard parser
Improved the standard Realtek auto-parser to support the codec topology
like ALC680.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 11:07:59 +02:00
Takashi Iwai
e59ea3ed9f ALSA: hda - Add a fix-up for HP RP5800
The BIOS provides bogus pin configs, and also invalid SSID.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 10:20:18 +02:00
Lydia Wang
a2a870c827 ALSA: hda - Fix Independent-HP detection on VT2002P/1802/1812 codecs
For VT2002P, VT1802 and VT1812 codecs, to create Independent HP
control.

Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 08:20:05 +02:00
Lydia Wang
5c9a5615de ALSA: hda - Fix DAC checks for VT2002P/1802/1812 codecs
For VT2002P, VT1802 and VT1812 codecs, there're only two DACs. So smart51
control shouldn't be created.

Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 08:19:28 +02:00
Lydia Wang
d69607b3c3 ALSA: hda - Fix VIA output-path init for VT2002P/1802/1812
For VT2002P, VT1802 and VT1812 codecs, the original activate_output_path()
function can't initialize output and hp path correctly, since mixers connected to
output pin widgets are not considered. So modify the activate_output_path()
function to satisify this kind of codec.

Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-08 08:18:29 +02:00