summaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_auto_parser.c
Commit message (Collapse)AuthorAgeFilesLines
* ALSA: hda: move hda_codec.h to include/soundPierre-Louis Bossart2018-08-301-1/+1
| | | | | | | | As suggested by Takashi, move this header file to make it easier to include from e.g. the Intel Skylake driver in follow-up patches Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ALSA: hda - Use a macro for snd_array iteration loopsTakashi Iwai2018-04-241-5/+5
| | | | | | | | | | | | Introduce a new helper macro, snd_array_for_each(), to iterate for each snd_array element. It slightly improves the readability than lengthy open codes at each place. Along with it, add const prefix to some obvious places. There should be no functional changes by this. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - A new flag to enforce prefix to each pinTakashi Iwai2017-04-101-0/+1
| | | | | | | | | | | | | This is a preliminary patch for a smooth multi-codec support, and it introduces a new flag, force_pin_prefix, to struct hda_codec. This flag is used to force to add the pin location prefix to each input pin. For example, when there is only one microphone pin, usually the auto-parser assigns the string "Mic". With this flag on, it'll be like "Front Mic". Also, the creation of "Master" or "PCM" playback volume for a single pin is suppressed, too. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195305 Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda: when comparing pin configurations, ignore assoc in addition to seqKai-Heng Feng2016-12-061-1/+3
| | | | | | | | | | | | | | | | | Commit [64047d7f4912 ALSA: hda - ignore the assoc and seq when comparing pin configurations] intented to ignore both seq and assoc at pin comparing, but it only ignored seq. So that commit may still fail to match pins on some machines. Change the bitmask to also ignore assoc. v2: Use macro to do bit masking. Thanks to Hui Wang for the analysis. Fixes: 64047d7f4912 ("ALSA: hda - ignore the assoc and seq when comparing...") Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - ignore the assoc and seq when comparing pin configurationsHui Wang2016-11-241-1/+1
| | | | | | | | | | | | | | | More and more pin configurations have been adding to the pin quirk table, lots of them are only different from assoc and seq, but they all apply to the same QUIRK_FIXUP, if we don't compare assoc and seq when matching pin configurations, it will greatly reduce the pin quirk table size. We have tested this change on a couple of Dell laptops, it worked well. Cc: <stable@vger.kernel.org> Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - remove no physical connection pins from pin_quirk tableHui Wang2015-08-031-3/+24
| | | | | | | | | | | | To cleanup the pin_quirk table: - rewrite the pin_config_match(), comparing all pins on the machine with the corresponding pins in the quirk table. - remove all 0x4xxxxxxx pin configurations from pin_quirk table - after removing the 0x4xxxxxxx pin configurations, some pin tables are exactly same, so removing the redudant pin tables. Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Move a part of hda_codec stuff into hdac_deviceTakashi Iwai2015-03-231-17/+16
| | | | | | | | | | Now some codes and functionalities of hda_codec struct are moved to hdac_device struct. A few basic attributes like the codec address, vendor ID number, FG numbers, etc are moved to hdac_device, and they are accessed like codec->core.addr. The basic verb exec functions are moved, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Debug output which type of fixup was selectedDavid Henningsson2015-01-071-0/+10
| | | | | | | | | | Our fixup system is becoming increasingly complex, so it's becoming time consuming to figure out which way the fix was applied. This patch adds a few debug prints to aid when debugging why a specific fixup was selected. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Print codec->chip_name in autoconfigDavid Henningsson2015-01-071-4/+4
| | | | | | | This will help end users figure out what HDA codec they have. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - More kerneldoc commentsTakashi Iwai2014-10-291-1/+50
| | | | | | | | Put more kerneldoc comments to the exported functions. Still the generic parser code and the HD-audio controller code aren't covered yet, though. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Correct kerneldoc commentsTakashi Iwai2014-10-291-1/+14
| | | | | | | Complete the missing parameters and fix anything wrong there. Just comment changes. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Sort input pins depending on amp capsDavid Henningsson2014-09-231-7/+14
| | | | | | | | | | | | If one input has a boost and another one has not, and they're equal otherwise, it's more likely you want to use the input with the boost as your primary input. See hda-emu.git/codecs/canonical/cx20590-lenovo-20b2z00bus-ccert-201305-13496 for an example. 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-221-7/+8
| | | | | | | | | | | | 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 - Remove obsoleted SFX definitionsTakashi Iwai2014-06-261-2/+0
| | | | | | | It's no longer referred by anyone after standardizing with dev_*() macros. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix usage of "model" module parameterDavid Henningsson2014-06-231-0/+1
| | | | | | | | | | | A recent refactoring broke the possibility to manually specify model name as a module parameter. This patch restores the desired functionality. Fixes: c21c8cf77f47 ('ALSA: hda - Add fixup_forced flag') Reported-by: Kent Baxley <kent.baxley@canonical.com> Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Revert "ALSA: hda - drop def association and sequence from pinconf comparing"Hui Wang2014-05-291-2/+1
| | | | | | | | | | | | | | | | This reverts commit c687200b9d4ef60042a50f7d942cfef120cc7bf1. Dropping the def association and sequence from pinconf comparing is a bit risky, It will introduce a greater risk of catching unwanted machines. And in addition, so far no BIOS experts give us an explicit answer whether it makes senses to compare these two fields or not. For safety reason, we revert this commit. Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - drop def association and sequence from pinconf comparingHui Wang2014-05-261-1/+2
| | | | | | | | | | | A lot a machine have the same codec, but they have different default pinconf setting just because the def association and sequence is different, as a result they can't share a hda_pintbl[], to overcome it, we don't compare def association and sequence in the pinconf matching. Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - get subvendor from codec rather than pci_devHui Wang2014-05-261-1/+1
| | | | | | | It is safer for non-pci situation. Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add a new quirk match based on default pin configurationDavid Henningsson2014-05-261-0/+37
| | | | | | | | | | | | | | | | Normally, we match on pci ssid only. This works but needs new code for every machine. To catch more machines in the same quirk, let's add a new type of quirk, where we match on 1) PCI Subvendor ID (i e, not device, just vendor) 2) Codec ID 3) Pin configuration default If all these three match, we could be reasonably certain that the quirk should apply to the machine even though it might not be the exact same device. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add fixup_forced flagDavid Henningsson2014-05-261-3/+6
| | | | | | | | | | The "fixup_forced" flag will indicate whether a specific fixup (or nofixup) has been set by the user, to override the driver's default. This flag will help future patches. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Inform the unexpectedly ignored pins by auto-parserTakashi Iwai2014-03-251-5/+25
| | | | | | | | | | The auto-parser may ignore some pins that could be valid when they don't match with the assumption or if there are way too many pins assigned to the same output type. So far, such a pin has been silently ignored, but it's better to leave a message, which would help for debugging and understanding the problem. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Replace with standard printkTakashi Iwai2014-02-251-20/+15
| | | | | | | | | | | | Use dev_err() and co for messages from HD-audio controller and codec drivers. The codec drivers are mostly bound with codec objects, so some helper macros, codec_err(), codec_info(), etc, are provided. They merely wrap the corresponding dev_xxx(). There are a few places still calling snd_printk() and its variants as they are called without the codec or device context. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Kill EXPORT_SYMBOL_HDA()Takashi Iwai2013-12-191-9/+9
| | | | | | Replace all with the standard EXPORT_SYMBOL_GPL(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix possible NULL dereference in snd_hda_get_pin_label()Takashi Iwai2013-10-291-1/+1
| | | | | | | | | Fix a possible NULL access of indexp in fill_audio_out_name() called from snd_hda_get_pin_label(). Spotted by coverity CID 402035. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix missing fixup for Mac Mini with STAC9221Takashi Iwai2013-08-021-1/+1
| | | | | | | | | | | | | | | | A fixup for Apple Mac Mini was lost during the adaption to the generic parser because the fallback for the generic ID 8384:7680 was dropped, and it resulted in the silence output (and maybe other problems). Unfortunately, just adding the missing subsystem ID wasn't enough, in this case. The subsystem ID of this machine is 0000:0100 (what Apple thought...?), and since snd_hda_pick_fixup() doesn't take the vendor id zero into account, the driver ignored this entry. Now it's fixed to regard the vendor id zero as a valid value. Reported-and-tested-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: <stable@vger.kernel.org> [v3.9+] Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - allow "Headphone Mic" parser flagDavid Henningsson2013-04-111-12/+56
| | | | | | | | | | | | This allows a specific mic to get the "Headphone Mic" name, in addition to the existing "Headset Mic" name. Also, it allows for a special mark: if the sequence number is set to 0xc, that's an indication to prefer it for headset mic, and if it's set to 0xd, that's an indication to prefer it for headphone mic. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Introduce "Headset Mic" nameDavid Henningsson2013-03-211-2/+22
| | | | | | | | | | | | | | | | | Headset mic jacks, i e TRRS style jacks with Headphone Left, Headphone Right, Mic and GND signals, are becoming increasingly common and are now being shipped by several manufacturers. Unfortunately, the HDA specification does not give us any hint of whether a Mic pin belongs to such a jack or not, but it would still be helpful for the user to know (especially if there is one TRS Mic jack and one TRRS headset jack). This new fixup causes the first (non-dock, non-internal) mic to be a headset mic jack. The algorithm can be later refined if needed. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: Make snd_printd() and snd_printdd() inlineTakashi Iwai2013-01-251-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | Because currently snd_printd() and snd_printdd() macros are expanded to empty when CONFIG_SND_DEBUG=n, a compile warning like below appears sometimes, and we had to covert it by ugly ifdefs: sound/pci/hda/patch_sigmatel.c: In function ‘stac92hd71bxx_fixup_hp’: sound/pci/hda/patch_sigmatel.c:2434:24: warning: unused variable ‘spec’ [-Wunused-variable] For "fixing" these issues better, this patch replaces snd_printd() and snd_printdd() definitions with empty inline functions instead of macros. This should have the same effect but shut up warnings like above. But since we had already put ifdefs, changing to inline functions would trigger compile errors. So, such ifdefs is removed in this patch. In addition, snd_pci_quirk name field is defined only when CONFIG_SND_DEBUG_VERBOSE is set, and the reference to it in snd_printdd() argument triggers the build errors, too. For avoiding these errors, introduce a new macro snd_pci_quirk_name() that is defined no matter how the debug option is set. Reported-by: Stratos Karafotis <stratosk@semaphore.gr> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add chained_before flag to the fixup entryTakashi Iwai2013-01-231-7/+11
| | | | | | | | | | Sometimes we want to call a fixup after applying other existing fixups, but currently the fixup chain mechanism allows only the call the others after the target fixup. This patch adds a new flag, chained_before, to struct hda_fixup, for allowing the chained call before the current execution. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Don't add unnecessary indices on HDMI and SPDIFDavid Henningsson2013-01-181-10/+16
| | | | | | | | | | If there's one each of HDMI and SPDIF, we should not add an index on the one that comes second. [slight code refactoring by tiwai] Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Check pincap while parsing the configurationTakashi Iwai2013-01-151-0/+25
| | | | | | | | | | | | | | | Sometimes (or rather often) BIOS sets the pin default configurations obviously wrongly. Looking through these failures, one common pattern is to enable some dead pins that are usually marked as speaker pins. In such a case, we can skip them if the pins don't have the output capability. In this patch, add a check for the valid pin cap bit for each parsed pin, and filter out when it's invalid. The fix was originally suggested by Raymond Yau. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Allow user to give hints for codec parser behaviorTakashi Iwai2013-01-121-0/+3
| | | | | | | Through the hints via sysfs or patch, user can set specific behavior flags for the generic parser now. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add a new fixup type to override pinctl valuesTakashi Iwai2013-01-121-0/+15
| | | | | | | | | | | | | Add a new fixup type, HDA_FIXUP_PINCTLS, for overriding the pinctl values of the given pins. It takes the same array of struct pintbl like HDA_FIXUP_PINS, but each entry contains the pinctl value instead of the pin default config value. This patch also replaces the corresponding codes in patch_realtek.c. Without this change, the direct call of verbs may be overridden again by the later call of pinctl restoration by the driver. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Return "Headphone Mic" from hda_get_autocfg_input_label()Takashi Iwai2013-01-121-0/+2
| | | | | | | | Instead of handling special cases in the caller side, give a proper name string "Headphone Mic" from hda_get_autocfg_input_label() when the headhpone jack pin is specified as an input. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Handle BOTH jack port as a fixed outputTakashi Iwai2013-01-121-1/+2
| | | | | | | | | | | When the default config value shows the connection AC_JACK_PORT_BOTH, it's better to handle it as a speaker pin. This makes the behavior consistent in snd_hda_get_pin_label() and snd_hda_parse_pin_defcfg(). There are only few old machines showing this attribute, and all of them are actually fixed speaker pins, as far as I know. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Rearrange INPUT_PIN_ATTR_*Takashi Iwai2013-01-121-1/+1
| | | | | | | | | | | | Put INPUT_PIN_ATTR_FRONT after INPUT_PIN_ATTR_REAR, and define INPUT_PIN_ATTR_LAST to point to the last element. This is a preliminary work for cleaning up Realtek auto-mic parser. In the auto-mic implementation, the front panel is preferred over the rear panel. By arranging the attr definitions like in this commit, we can simply use sort() for figuring out the priority order. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Move fixup code into struct hda_codecTakashi Iwai2013-01-121-21/+18
| | | | | | | Since the fixup code is used commonly, it's worth to move it to the common place, struct hda_codec, instead of keeping in hda_gen_spec. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Use standard sort function in hda_auto_parser.cTakashi Iwai2012-11-301-59/+47
| | | | | | Just refactoring, no functional changes. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - avoid unneccesary indices on "Headphone Jack" controlsDavid Henningsson2012-10-061-12/+37
| | | | | | | | | | In case there is one "Headphone Jack" and one "Dock Headphone Jack", one of them will get an index, even though that is not needed. This patch fixes that issue. BugLink: https://bugs.launchpad.net/bugs/1060729 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Check bit mask for codec SSID in snd_hda_pick_fixup()Takashi Iwai2012-09-111-1/+2
| | | | | | | snd_hda_pick_fixup() didn't check the case where the device mask bits are set, typically used for SND_PCI_QUIRK_VENDOR() entries. Fix this. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Remove ignore_misc_bitDavid Henningsson2012-09-071-4/+0
| | | | | | | | | | | | | | The purpose of this flag is unclear. If the problem is that some machines have broken misc/NO_PRESENCE bits, they should be fixed by pin fixups. In addition, this causes jack detection functionality to be flawed on the M31EI, where there are two jacks without jack detection (which is properly marked as NO_PRESENCE), but due to ignore_misc_bit, these jacks are instead being reported as being present but always unplugged. BugLink: https://bugs.launchpad.net/bugs/939161 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix ugly debug prints with CONFIG_SND_VERBOSE_PRINTK=yTakashi Iwai2012-08-071-3/+2
| | | | | | | | | | | | | | | | When CONFIG_SND_VERBOSE_PRINTK=y is set, the debug print in hda_auto_parser.c looks really ugly like: ALSA sound/pci/hda/hda_auto_parser.c:331 mono: mono_out=0x0 ALSA sound/pci/hda/hda_auto_parser.c:334 dig-out=0x12/0x0 ALSA sound/pci/hda/hda_auto_parser.c:335 inputs: ALSA sound/pci/hda/hda_auto_parser.c:339 Mic=0x11ALSA sound/pci/hda/hda_auto_parser.c:339 Line=0x10 ALSA sound/pci/hda/hda_auto_parser.c:341 ALSA sound/pci/hda/hda_auto_parser.c:343 dig-in=0x13 Better to put one item at each line. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - make sure alc268 does not OOPS on codec parseDavid Henningsson2012-07-181-2/+2
| | | | | | | | A recent commit made patch_alc268 call snd_hda_pick_fixup with NULL quirk pointer. Make sure we do not reference that NULL pointer. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix memory leaks in Realtek & Conexant codec parsersTakashi Iwai2012-06-261-1/+0
| | | | | | When moved to the helper code, forgot to release the verb arrays. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Move BIOS pin-parser code to hda_auto_parser.cTakashi Iwai2012-05-081-0/+597
| | | | | | Just code shuffles. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Move up the fixup helper functions to the library moduleTakashi Iwai2012-05-081-0/+163
Move the fixup helper functions in patch_realtek.c to hda_auto_parser.c so that they can be used in other codec drivers like patch_conexant.c. Signed-off-by: Takashi Iwai <tiwai@suse.de>