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>
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>
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>
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>
During the cleanup by commit 6727b12669f255dbf65b3d63c32cce1e3e967398,
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>
... 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>