aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
Commit message (Collapse)AuthorAge
...
| * | ALSA: hda - Remove superfluous callbacks from STAC/IDT codecsTakashi Iwai2014-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now we can register multiple callbacks to each jack, most of hooks used in STAC/IDT codecs can be removed by enabling the powermap update callback for all relevant pins. Along with this, the call of stac_init_power_map() can be moved back to stac_parse_auto_config() and the own build_controls callback can be removed, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | ALSA: hda - Allow multiple callbacks for jackTakashi Iwai2014-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far, hda_jack infrastructure allows only one callback per jack, and this makes things slightly complicated when a driver wants to assign multiple tasks to a jack, e.g. the standard auto-mute with a power up/down sequence. This can be simplified if the hda_jack accepts multiple callbacks. This patch is such an extension: the callback-specific part (the function and private_data) is split to another struct from hda_jack_tbl, and multiple such objects can be assigned to a single hda_jack_tbl entry. The new struct hda_jack_callback is passed to each callback function now, thus the patch became bigger than expected. But these changes are mostly trivial. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | ALSA: hda - Make snd_hda_jack_detect_enable_callback() returning the jack objectTakashi Iwai2014-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | STAC/IDT driver calls snd_hda_jack_tbl_get() again after calling snd_hda_jack_detect_enable_callback(). For simplifying this, let's make snd_hda_jack_detect_enable_callback() returning the pointer while handling the error with the standard IS_ERR() & co. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | ALSA: hda - Make snd_hda_jack_tbl_new() staticTakashi Iwai2014-09-11
| | | | | | | | | | | | | | | | | | It's called only in hda_jack.c, so make it local. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | ALSA: hda - Get rid of action field from struct hda_jack_tblTakashi Iwai2014-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The action value assigned to each hda_jack_tbl entry is mostly superfluous. The actually used values are either the widget NID or a value specific to the callback. The former case can be simply replaced by a reference to widget NID itself. The only place doing the latter is STAC/IDT codec driver for the powermap handling. But, the code doesn't need to check the action field at all -- the function jack_update_power() is called either with a specific pin or with NULL. So the check of jack->action can be removed completely there, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | Merge branch 'for-linus' into for-nextTakashi Iwai2014-09-11
| |\| | | | | | | | | | | | | Merging for-linus branch for syncing the latest STAC/IDT codec changes to be affected by the upcoming hda-jack rewrites.
| | * ALSA: hda - Fix invalid pin powermap without jack detectionTakashi Iwai2014-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a driver is set up without the jack detection explicitly (either by passing a model option or via a specific fixup), the pin powermap of IDT/STAC codecs is set up wrongly, resulting in the silence output. It's because of a logic failure in stac_init_power_map(). It tries to avoid creating a callback for the pins that have other auto-hp and auto-mic callbacks, but the check is done in a wrong way at a wrong time. The stac_init_power_map() should be called after creating other jack detection ctls, and the jack callback should be created only for jack-detectable widgets. This patch fixes the check in stac_init_power_map() and its callee at the right place, after snd_hda_gen_build_controls(). Reported-by: Adam Richter <adam_richter2004@yahoo.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: hda - Fix COEF setups for ALC1150 codecTakashi Iwai2014-09-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ALC1150 codec seems to need the COEF- and PLL-setups just like its compatible ALC882 codec. Some machines (e.g. SunMicro X10SAT) show the problem like too low output volumes unless the COEF setup is applied. Reported-and-tested-by: Dana Goyette <danagoyette@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: hda - Fix digital mic on Acer Aspire 3830TGTakashi Iwai2014-09-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | Acer Aspire 3830TG with CX20588 codec has a digital built-in mic that has the same problem like many others, the inverted signal in stereo. Apply the same fixup to this machine, too. Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: hda - Set up initial pins for Acer Aspire V5Takashi Iwai2014-08-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Acer Aspire V5 doesn't set up the pins correctly at the cold boot while the pins are corrected after the warm reboot. This patch gives the proper pin configs statically in the driver as a workaround. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81561 Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: hda: ca0132_regs.h: Fix typo in include guardRasmus Villemoes2014-08-22
| | | | | | | | | | | | | | | Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | | ALSA: hda - Replace strnicmp with strncasecmpRasmus Villemoes2014-09-17
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | The kernel used to contain two functions for length-delimited, case-insensitive string comparison, strnicmp with correct semantics and a slightly buggy strncasecmp. The latter is the POSIX name, so strnicmp was renamed to strncasecmp, and strnicmp made into a wrapper for the new strncasecmp to avoid breaking existing users. To allow the compat wrapper strnicmp to be removed at some point in the future, and to avoid the extra indirection cost, do s/strnicmp/strncasecmp/g. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'topic/pcm-nonatomic' into for-nextTakashi Iwai2014-09-08
|\| | | | | | | This is a merge for exending PCM ops to be non-atomic.
| * ALSA: hda/hdmi - apply Valleyview fix-ups to Cherryview display codecLibin Yang2014-08-19
| | | | | | | | | | | | | | | | | | Valleyview and Cherryview have the same behavior on display audio. So this patch defines is_valleyview_plus() to include codecs for both Valleyview and its successor Cherryview, and apply Valleyview fix-ups to Cherryview. Signed-off-by: Libin Yang <libin.yang@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/hdmi - set depop_delay for haswell plusLibin Yang2014-08-19
| | | | | | | | | | | | | | | | Both Haswell and Broadwell need set depop_delay to 0. So apply this setting to haswell plus. Signed-off-by: Libin Yang <libin.yang@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add TLV_DB_SCALE_MUTE bit for relevant controlsTakashi Iwai2014-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DACs on Sigmatel/IDT codecs do mute at the lowest volume level, and in the earlier drivers, we passed TLV_DB_SCALE_MUTE bit for each volume control element like Speaker and Headphone as well as Master. Along with the translation to the generic parser, however, the TLV bit was lost for the slave controls (e.g. Speaker) but set only to Master. In theory this should have sufficed, but apps, particularly PA, do care the slave volume bits, so we seem to see a regression in the volume controls. This patch adds a flag to hda_gen_spec to specify the DAC mute feature, and adds the TLV bit properly for all relevant volume controls. Also, the TLV bit for vmaster is set in hda_generic.c, so that we can get rid of all tricks from the codec driver side. As the similar hack is applied to Conexant 5051 stuff, we can get rid of it as well. BugLink: https://bugs.launchpad.net/bugs/1357928 Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Make the ALC269 pin quirk table shorterDavid Henningsson2014-09-03
| | | | | | | | | | | | | | ...by factoring out common parts to the just added pin macros. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add common pin macros for ALC269 familyDavid Henningsson2014-09-03
| | | | | | | | | | | | | | This will be used in a later patch to make the pin quirk table shorter. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move HP_GPIO_MIC1_LED quirk for alc280Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move HP_LINE1_MIC1_LED quirk for alc282Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move HP_MUTE_LED_MIC1 quirk for alc290Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move HP_MUTE_LED_MIC1 quirk for alc282Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move DELL2_MIC_NO_PRESENCE quirk for alc255Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move DELL1_MIC_NO_PRESENCE quirk for alc255Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move DELL1_MIC_NO_PRESENCE quirk for alc283Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - move DELL2_MIC_NO_PRESENCE quirk for alc292Hui Wang2014-09-03
| | | | | | | | | | | | Cc: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - Use tables for batch COEF writes/updtesTakashi Iwai2014-08-19
| | | | | | | | | | | | | | There are many codes doing writes or updates COEF verbs sequentially in a batch. Rewrite such open codes with tables for optimization. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - Add alc_update_coef*_idx() helperTakashi Iwai2014-08-19
| | | | | | | | | | | | ... and rewrite a few open codes with them. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - Use alc_write_coef_idx() in alc269_quanta_automake()Takashi Iwai2014-08-19
| | | | | | | | | | | | Just a refactoring. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - Optimize alc888_coef_init()Takashi Iwai2014-08-19
| | | | | | | | | | | | Just a refactoring using the existing helper functions. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Remove obsoleted EXPORT_SYMBOL_HDA() macroTakashi Iwai2014-08-19
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Remove obsoleted snd_hda_check_board_config() & coTakashi Iwai2014-08-19
|/ | | | | | | | | The helper functions snd_hda_check_board_config() and snd_hda_check_board_codec_sid_config() are no longer used since the transition to the generic parser and all quirks have been replaced with fixups. Let's kill these dead codes. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - restore the gpio led after resumeHui Wang2014-08-19
| | | | | | | | | | | | | | | | | | | | | | | On some HP laptops, the mute led is controlled by codec gpio. When some machine resume from s3/s4, the codec gpio data will be cleared to 0 by BIOS: Before suspend: IO[3]: enable=1, dir=1, wake=0, sticky=0, data=1, unsol=0 After resume: IO[3]: enable=1, dir=1, wake=0, sticky=0, data=0, unsol=0 To skip the AFG node to enter D3 can't fix this problem. A workaround is to restore the gpio data when the system resume back from s3/s4. It is safe even on the machines without this problem. BugLink: https://bugs.launchpad.net/bugs/1358116 Tested-by: Franz Hsieh <franz.hsieh@canonical.com> Cc: stable@vger.kernel.org Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda/realtek - Avoid setting wrong COEF on ALC269 & coTakashi Iwai2014-08-16
| | | | | | | | | | | | | | | | | | ALC269 & co have many vendor-specific setups with COEF verbs. However, some verbs seem specific to some codec versions and they result in the codec stalling. Typically, such a case can be avoided by checking the return value from reading a COEF. If the return value is -1, it implies that the COEF is invalid, thus it shouldn't be written. This patch adds the invalid COEF checks in appropriate places accessing ALC269 and its variants. The patch actually fixes the resume problem on Acer AO725 laptop. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=52181 Tested-by: Francesco Muzio <muziofg@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Set TLV_DB_SCALE_MUTE bit for cx5051 vmasterTakashi Iwai2014-08-14
| | | | | | | | | | | | | Conexnat HD-audio driver has a workaround for cx5051 (aka CX20561) chip to add fake mute controls to each amp (commit 3868137e). This implies the minimum-as-mute TLV bit in TLV for each corresponding control. Meanwhile we build the virtual master from these, but the TLV bit is missing, even though the slaves have it. This patch simply adds the missing TLV_DB_SCALE_MUTE bit for vmaster, as already done in patch_sigmatel.c. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda/ca0132 - Don't try loading firmware at resume when already failedTakashi Iwai2014-08-10
| | | | | | | | | | | | | | | | | CA0132 driver tries to reload the firmware at resume. Usually this works since the firmware loader core caches the firmware contents by itself. However, if the driver failed to load the firmwares (e.g. missing files), reloading the firmware at resume goes through the actual file loading code path, and triggers a kernel WARNING like: WARNING: CPU: 10 PID:11371 at drivers/base/firmware_class.c:1105 _request_firmware+0x9ab/0x9d0() For avoiding this situation, this patch makes CA0132 skipping the f/w loading at resume when it failed at probe time. Reported-and-tested-by: Janek Kozicki <cosurgi@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix pop noises on reboot for Dell XPS 13 9333Gabriele Mazzotta2014-08-10
| | | | | | | | | | If nid 0x15 (Headphone Playback Switch) is in D3 and headphones are plugged in when the laptop reboots, a pop noise is generated. Prevent this by keeping nid 0x15 in D0 when headphones are plugged in. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=76611 Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Set internal mic as default input source on Dell XPS 13 9333Gabriele Mazzotta2014-08-10
| | | | | | | | | | | | | | If the laptop is powered on with a jack plugged in, independently on what is plugged, the jack is treated as a microphone jack. Initialize the capture source so that by default jacks are treated as headphones jacks. This will also prevent pop noises on boot in case headphones are plugged in since setting/unsetting mic-in as input source causes a pop noise. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=76611 Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix parsing of CMI8888 codecTakashi Iwai2014-08-07
| | | | | | | | | | | | | | | | | | CMI8888 codec chip has a boost amp (only) on the headphone pin, and this confuses the generic parser, which tends to pick up the most outside amp. This results in the wrong volume setup, as the driver complains like: hda_codec: Mismatching dB step for vmaster slave (-100!=1000) For avoiding this problem, rule out the amp on NID 0x10 and create "Headphone Amp" volume control manually instead. Note that this patch still doesn't fix all problems yet. The sound output from the line out seems still too low. It will be fixed in another patch (hopefully). Reported-and-tested-by: Vincent Lejeune <vljn@ovi.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix probing and stuttering on CMI8888 HD-audio controllerTakashi Iwai2014-08-07
| | | | | | | | | | | | | | | | ASUS Phoebus with CMI8888 HD-audio chip (PCI id 13f6:5011) doesn't work with HD-audio driver as is because of some weird nature. For making DMA properly working, we need to disable MSI. The position report buffer doesn't work, thus we need to force reading LPIB instead. And yet, the codec CORB/RIRB communication gives errors unless we disable the snooping (caching). In this patch, all these workarounds are added as a quirk for the device. The HD-audio *codec* chip needs yet another workaround, but it'll be provided in the succeeding patch. Reported-and-tested-by: Vincent Lejeune <vljn@ovi.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda/realtek - Fixed ALC286/ALC288 recording delay for Headset MicKailang Yang2014-08-07
| | | | | | | | | | | It will be recording voice delay for resume back recording for Headset Mic. This alc286 will quickly open Headset Mic, to prevent avoid recording files are missing. The issue was fixed. This is follow ALC286 programing guide. [fix build error, add static and renamed the function by tiwai] Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - add codec ID for Braswell display audio codecLibin Yang2014-08-04
| | | | | | | | This patch adds codec ID (0x80862883) and module alias for Braswell display codec. Signed-off-by: Libin Yang <libin.yang@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - add PCI IDs for Intel BraswellLibin Yang2014-08-04
| | | | | | | | | | Add HD Audio Device PCI ID for the Intel Braswell platform. It is an HDA Intel PCH controller. AZX_DCAPS_ALIGN_BUFSIZE is not necessary for this controller. Signed-off-by: Libin Yang <libin.yang@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'for-next' into for-linusTakashi Iwai2014-08-04
|\
| * ALSA: hda - add mic mute led hook for dell machinesHui Wang2014-07-31
| | | | | | | | | | | | | | | | | | | | The mic mute led on dell laptops is controlled by the wmi driver. Followed this part being merged to the kernel, we add the mic mute led hook in the hda driver. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix loopback noise on Dell XPS 15Takashi Iwai2014-07-22
| | | | | | | | | | | | | | | | | | | | | | Dell XPS 15 (1028:05fe) gives the bad feedback noise from analog loopback line even if the channels are muted. The similar problem has been seen on XPS 13, and it was fixed by simply disabling loopback. The same fixup was confirmed to be applicable and fix the problem on XPS 15, too. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=80821 Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Make vendor quirks lowest prio for ALC2xxDavid Henningsson2014-07-22
| | | | | | | | | | | | | | | | Add a new quirk table to make sure that pin quirks have a higher priority than quirks that apply to an entire vendor. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Refactor quirk picking and change quirk priorityDavid Henningsson2014-07-22
| | | | | | | | | | | | | | | | | | | | | | | | Previously, calling one quirk function first and another later would make the latter one take priority, this is now changed to make the former take priority. By adding two special values for fixup_id we can also get rid of the fixup_forced flag. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Add mic fixup for Gigabyte BXBT-2807Daniel Drake2014-07-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Gigabyte BRIX BXBT-2707 is a mini-PC with Realtek ALC283 HDA, exposing a single headset jack. However, the default pin config information only suggests that one pin is connected: a HP out jack (pin 0x21, default config 0x04211010). The microphone input is behind pin 0x19, which has default config 0x411111f0 (i.e. unused), so it does not show up in userspace, and no microphone input is possible via the headset. Override the pin config so that the headset mic can be used. [rearranged the fixup entry position by tiwai] Signed-off-by: Daniel Drake <drake@endlessm.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Add mute LED pin quirk for HP 15 touchsmartDavid Henningsson2014-07-22
| | | | | | | | | | | | | | | | This makes the mute LED work on a HP 15 touchsmart machine. BugLink: https://bugs.launchpad.net/bugs/1334950 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>