aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
Commit message (Collapse)AuthorAge
...
* | ALSA: hda - Create own device struct for each codecTakashi Iwai2014-02-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As the HD-audio is treated individually in each codec driver, it's more convenient to assign an own struct device to each codec object. Then we'll be able to use dev_err() more easily for each codec, for example. For achieving it, this patch just creates an object "hdaudioCxDy". It belongs to sound class instead of creating a new bus, just for simplicity, at this stage. No pm ops is implemented in the device struct level but currently it's merely a container. The PCM and hwdep devices are now children of this codec device. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Manage each codec instance individuallyTakashi Iwai2014-02-25
| | | | | | | | | | | | | | | | Now each snd_hda_codec instance is managed via the device chain, the registration and release are done by its callback instead of calling from bus. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hwdep: Take private_data as drvdata for sysfsTakashi Iwai2014-02-25
| | | | | | | | | | | | | | | | | | For referring to a different object from sysfs ops, take hwdep private_data as stored via dev_set_drvdata() at creating the device object. In that way, the same sysfs ops can be used by different device types. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: Create sysfs attribute files via groupsTakashi Iwai2014-02-25
| | | | | | | | | | | | | | | | | | | | | | | | Instead of calling each time device_create_file(), create the groups of sysfs attribute files at once in a normal way. Add a new helper function, snd_get_device(), to return the associated device object, so that we can handle the sysfs addition locally. Since the sysfs file addition is done differently now, snd_add_device_sysfs_file() helper function is removed. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'for-linus' into HEADTakashi Iwai2014-02-25
|\|
| * ALSA: hda - Add a fixup for HP Folio 13 mute LEDTakashi Iwai2014-02-25
| | | | | | | | | | | | | | | | | | | | HP Folio 13 may have a broken BIOS that doesn't set up the mute LED GPIO properly, and the driver guesses it wrongly, too. Add a new fixup entry for setting the GPIO pin statically for this laptop. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70991 Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/realtek - Add more entry for enable HP mute ledKailang Yang2014-02-21
| | | | | | | | | | | | | | More HP machine need mute led support. Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Enable front audio jacks on one HP desktop modelHui Wang2014-02-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The front headphone and mic jackes on a HP desktop model (Vendor Id: 0x111d76c7 Subsystem Id: 0x103c2b17) can not work, the codec on this machine has 8 physical ports, 6 of them are routed to rear jackes and all of them work very well, while the remaining 2 ports are routed to front headphone and mic jackes, but the corresponding pin complex node are not defined correctly. After apply this fix, the front audio jackes can work very well. [trivial fix of enum definition by tiwai] BugLink: https://bugs.launchpad.net/bugs/1282369 Cc: David Henningsson <david.henningsson@canonical.com> Tested-by: Gerald Yang <gerald.yang@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/ca0132 - Fix recording from mode id 0x8Hsin-Yu Chao2014-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Incorrect ADC is picked in ca0132_capture_pcm_prepare(), where it assumes multiple streams while there is one stream per ADC. Note that ca0132_capture_pcm_cleanup() already does the right thing. The Chromebook Pixel has a microphone under the keyboard that is attached to node id 0x8. Before this fix, recording would always go to the main internal mic (node id 0x7). Signed-off-by: Hsin-Yu Chao <hychao@chromium.org> Reviewed-by: Dylan Reid <dgreid@chromium.org> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/ca0132 - setup/cleanup streamsHsin-Yu Chao2014-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a HDMI stream is opened with the same stream tag as a following opened stream to ca0132, audio will be heard from two ports simultaneously. Fix this issue by change to use snd_hda_codec_setup_stream and snd_hda_codec_cleanup_stream instead, so that an inactive stream can be marked as 'dirty' when found with a conflict stream tag, and then get purified. Signed-off-by: Hsin-Yu Chao <hychao@chromium.org> Reviewed-by: Chih-Chung Chang <chihchung@chromium.org> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - add headset mic detect quirks for two Dell laptopsHui Wang2014-02-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When we plug a 3-ring headset on the Dell machines (Vendor ID: 0x10ec0255, Subsystem ID: 0x10280657; Vendor ID: 0x10ec0255, Subsystem ID: 0x1028065f), the headset mic can't be detected, after apply this patch, the headset mic can work well. BugLink: https://bugs.launchpad.net/bugs/1260303 Cc: David Henningsson <david.henningsson@canonical.com> Tested-by: Cyrus Lien <cyrus.lien@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: Revert "ALSA: hda/realtek - Avoid invalid COEFs for ALC271X"Martin Kepplinger2014-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d3c56568f43807135f2c2a09582a69f809f0d8b7. The reverted commit breaks audio through headphone line out on the Acer TravelMate B113 (Type1Sku0) Notebook, my main work machine. I don't know much about it but this fixes my problem. Bisected and tested. Fixes: d3c56568f438 ('ALSA: hda/realtek - Avoid invalid COEFs for ALC271X') Cc: <stable@vger.kernel.org> Tested-by: Martin Kepplinger <martink@posteo.de> Signed-off-by: Martin Kepplinger <martink@posteo.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Avoid codec D3 for keeping mute LED up on Lenovo Yxx0Takashi Iwai2014-02-25
| | | | | | | | | | | | | | | | | | The GPIO line used for the mute LED control on Lenovo Yxx0 laptops is cleared unexpectedly when the codec goes to D3, typically by power-saving. For avoiding it, add a power filter in the fixup. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16373 Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add QEMU codec vendor IDTakashi Iwai2014-02-19
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Remove superfluous inclusion of linux/pci.hTakashi Iwai2014-02-15
| | | | | | | | | | | | Some codec drivers still have it since using PCI_VENDOR_ID_*. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/realtek - Allow NULL bus->pciTakashi Iwai2014-02-15
| | | | | | | | | | | | | | | | | | Realtek codec driver contains some codes referring to the PCI subdevice IDs, but most of them are optional, typically for checking the codec name variants. Add NULL checks appropriately so that it can work without PCI assignment. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Remove dependency on bus->pci in hda_beep.cTakashi Iwai2014-02-15
| | | | | | | | | | | | | | | | The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: pci: Convert to snd_card_new() with a device pointerTakashi Iwai2014-02-12
| | | | | | | | | | | | Also remove superfluous snd_card_set_dev() calls. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'for-linus' into for-nextTakashi Iwai2014-02-12
|\|
| * ALSA: hda - Fix undefined symbol due to builtin/module mixupTakashi Iwai2014-02-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Even after the fix for leftover kconfig handling (commit f8f1becf), the current code still doesn't handle properly the builtin/module mixup case between the core snd-hda-codec and other codec drivers. For example, when CONFIG_SND_HDA_INTEL=y and CONFIG_SND_HDA_CODEC_HDMI=m, it'll end up with an unresolved symbol snd_hda_parse_hdmi_codec. This patch fixes the issue. Now codec->parser points to the parser object *only* when a module (either generic or HDMI parser) is loaded and bound. When a builtin symbol is used, codec->parser still points to NULL. This is the difference from the previous versions. Fixes: f8f1becfa4ac ('ALSA: hda - Fix leftover ifdef checks after modularization') Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix mic capture on Sony VAIO Pro 11Takashi Iwai2014-02-07
| | | | | | | | | | | | | | | | | | The very same fixup is needed to make the mic on Sony VAIO Pro 11 working as well as VAIO Pro 13 model. Reported-and-tested-by: Hendrik-Jan Heins <hjheins@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Add a headset quirk for Dell XPS 13David Henningsson2014-02-07
| | | | | | | | | | | | | | | | | | | | | | This quirk is needed for the headset microphone to work. Alsa-info at http://www.alsa-project.org/db/?f=8c7dfe857ceff462ca2de133e67023c0f68de9cb Cc: stable@vger.kernel.org (3.10+) Reported-by: Po-Hsu Lin <po-hsu.lin@canonical.com> Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix inconsistent Mic mute LEDTakashi Iwai2014-02-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The current code for controlling mic mute LED in patch_sigmatel.c blindly assumes that there is a single capture switch. But, there can be multiple multiple ones, and each of them flips the state, ended up in an inconsistent state. For fixing this problem, this patch adds kcontrol to be passed to the hook function so that the callee can check which switch is being accessed. In stac_capture_led_hook(), the state is checked as a bitmask, and turns on the LED when all capture switches are off. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix leftover ifdef checks after modularizationTakashi Iwai2014-02-07
| | | | | | | | | | | | | | | | | | | | | | | | | | Since the commit [595fe1b702c3: ALSA: hda - Make CONFIG_SND_HDA_CODEC_* tristate], the kconfig variables for the generic parser and codec drivers can be "m" instead of boolean, but some codes are left unchanged to check only #ifdef CONFIG_SND_HDA_CODEC_XXX, which is no longer true for modules. This patch fixes them by replacing with IS_ENABLED() macros. Fixes: 595fe1b702c3 ('ALSA: hda - Make CONFIG_SND_HDA_CODEC_* tristate') Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70161 Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Improve loopback path lookups for AD1983Takashi Iwai2014-02-05
| | | | | | | | | | | | | | | | | | | | | | | | AD1983 has flexible loopback routes and the generic parser would take wrong path confusingly instead of taking individual paths via NID 0x0c and 0x0d. For avoiding it, limit the connections at these widgets so that the parser can think more straightforwardly. This fixes the regression of the missing line-in loopback on Dell machine. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70011 Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix missing VREF setup for Mac Pro 1,1Takashi Iwai2014-02-05
| | | | | | | | | | | | | | | | | | | | Mac Pro 1,1 with ALC889A codec needs the VREF setup on NID 0x18 to VREF50, in order to make the speaker working. The same fixup was already needed for MacBook Air 1,1, so we can reuse it. Reported-by: Nicolai Beuermann <mail@nico-beuermann.de> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Add missing mixer widget for AD1983Takashi Iwai2014-02-05
| | | | | | | | | | | | | | | | | | The mixer widget on AD1983 at NID 0x0e was missing in the commit [f2f8be43c5c9: ALSA: hda - Add aamix NID to AD codecs]. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70011 Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/realtek - Avoid invalid COEFs for ALC271XTakashi Iwai2014-02-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We've seen often problems after suspend/resume on Acer Aspire One AO725 with ALC271X codec as reported in kernel bugzilla, and it turned out that some COEFs doesn't work and triggers the codec communication stall. Since these magic COEF setups are specific to ALC269VB for some PLL configurations, the machine works even without these manual adjustment. So, let's simply avoid applying them for ALC271X. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=52181 Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix silent output on Toshiba Satellite L40Takashi Iwai2014-02-04
| | | | | | | | | | | | | | | | | | | | | | | | Toshiba Satellite L40 with AD1986A codec requires the EAPD of NID 0x1b to be constantly on, otherwise the output doesn't work. Unlike most of other AD1986A machines, EAPD is correctly implemented in HD-audio manner (that is, bit set = amp on), so we need to clear the inv_eapd flag in the fixup, too. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=67481 Cc: <stable@vger.kernel.org> [v3.11+] Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Make snd_hda_gen_spec_free() staticTakashi Iwai2014-02-10
| | | | | | | | | | | | | | | | The last user of snd_hda_gen_spec_free() is patch_via.c, and we can rewrite it safely with snd_hda_gen_free(), so that snd_hda_gen_spec_free() can be a local function in hda_generic.c. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Disable static quirks for C-Media codecsTakashi Iwai2014-02-10
| | | | | | | | | | | | | | | | | | According to alsa-info.sh outputs, all three entries with static quirks have the correct pin configs, so it's safe to remove static quirks. For now, turn the static quirks off via ifdef. The dead codes will be removed in later release. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Move HDA_FIXUP_ACT_FREE call in snd_hda_gen_free()Takashi Iwai2014-02-10
| | | | | | | | | | | | Now Realtek and Conexant codec parsers just call snd_hda_gen_free(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: Replace with IS_ENABLED()Takashi Iwai2014-02-10
| | | | | | | | | | | | | | | | | | | | | | | | Replace the lengthy #if defined(XXX) || defined(XXX_MODULE) with the new IS_ENABLED() macro. The patch still doesn't cover all ifdefs. For example, the dependency on CONFIG_GAMEPORT is still open-coded because this also has an extra dependency on MODULE. Similarly, an open-coded ifdef in pcm_oss.c and some sequencer-related stuff are left untouched. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add subwoofer quirks for Asus UX51VZH and N55SFDavid Henningsson2014-02-07
| | | | | | | | | | | | | | | | | | | | Bug reporter report that the -mode4 makes the subwoofer work. I have simplified the quirk a bit to avoid possible regressions with the microphones. BugLink: https://bugs.launchpad.net/bugs/871808 Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Rename ASUS subwoofer quirksDavid Henningsson2014-02-07
| | | | | | | | | | | | | | Just a small refactoring to make the next patch slightly simpler. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add mute LED support to Lenovo IdeapadTakashi Iwai2014-02-03
| | | | | | | | | | | | | | | | Lenovo Ideapad with ALC272 has a mute LED that is controlled via GPIO1. Add a simple vmaster hook for it. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16373 Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'topic/hda' into for-nextTakashi Iwai2014-02-03
|\ \ | |/ |/| | | The updates of HD-audio drivers for 3.15
| * ALSA: hda - Do not accept responses from non-existing codecsDavid Henningsson2014-01-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | While looking into some spurious responses, I found that the addr value was treated a bit inconsistent: values 8..0xf will be treated as codec 0 and values 0..7 will be treated as no error regardless of whether there is a codec there, or not. With this patch, all non-existing codecs will be treated equally. In addition, printing rp and wp could help figuring out if the wp value is reported wrongly from the controller or if something else is wrong. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Disable static quirksTakashi Iwai2014-01-30
| | | | | | | | | | | | | | | | | | | | Now all weird setups have been converted to fixups for the generic parser, and we can disable the static quirks. This commit just turns the build off. The bulky static quirk code still remains for a while, in case we get an overlooked regression. It'll be removed at the next kernel version. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Enable stereo mix input for CX20549 and CX20551Takashi Iwai2014-01-30
| | | | | | | | | | | | | | | | Both CX20549 and CX20551 codecs have a mixer widget and it can be connected as the ADC source. Like AD and VIA codecs, enable the add_stereo_mix_input flag for these codecs. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Add analog loopback mixing to CX20549Takashi Iwai2014-01-30
| | | | | | | | | | | | CX20549 has an aamixer widget at NID 0x17. Let's enable it. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Apply cap of mix amp volume on CX20551 codecTakashi Iwai2014-01-30
| | | | | | | | | | | | For the generic parser, use the standard fixup matching. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Use generic parser for HP 530Takashi Iwai2014-01-30
| | | | | | | | | | | | This laptop with CX20549 codec misses the internal mic at NID 0x12. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Use generic parser for Toshiba P105Takashi Iwai2014-01-30
| | | | | | | | | | | | We need to fix bogus pincfgs on this machine, but it works well else. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Apply the amp cap override for CX20549 mixerTakashi Iwai2014-01-30
| | | | | | | | | | | | | | Apply the amp cap override for CX20549 mixer widget in case where the generic parser is used, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda/conexant - Re-implement OLPC XO workarounds via fixupTakashi Iwai2014-01-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OLPC XO needs a few special handling. Now these are implemented as a fixup to the generic parser. Obviously, the DC BIAS mode had to be added manually. This is mainly implemented in the mic_autoswitch hook, where the mic pins are overwritten depending on the DC bias mode. This also required the override of the mic boost control, since the mic boost is applied only when the DC mode is disabled. In addition, the mic pins must be set dynamically at recording time because these also control the LED. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Avoid unnecessary verbs write in snd_hda_activate_path()Takashi Iwai2014-01-30
| | | | | | | | | | | | | | | | ... by using snd_Hda_codec_update_cache() instead of *_write_cache(). Since all path elements should have been updated by this function, we are safe to assume that the cache contents are consistent. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Add fixup name lookup for CX5051 and 5066 codecsTakashi Iwai2014-01-30
| | | | | | | | | | | | Like other codecs, apply a specific fixup given by a model string. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda/hdmi - allow PIN_OUT to be dynamically enabledStephen Warren2014-01-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 384a48d71520 "ALSA: hda: HDMI: Support codecs with fewer cvts than pins" dynamically enabled each pin widget's PIN_OUT only when the pin was actively in use. This was required on certain NVIDIA CODECs for correct operation. Specifically, if multiple pin widgets each had their mux input select the same audio converter widget and each pin widget had PIN_OUT enabled, then only one of the pin widgets would actually receive the audio, and often not the one the user wanted! However, this apparently broke some Intel systems, and commit 6169b673618b "ALSA: hda - Always turn on pins for HDMI/DP" reverted the dynamic setting of PIN_OUT. This in turn broke the afore-mentioned NVIDIA CODECs. This change supports either dynamic or static handling of PIN_OUT, selected by a flag set up during CODEC initialization. This flag is enabled for all recent NVIDIA GPUs. Reported-by: Uosis <uosisl@gmail.com> Cc: <stable@vger.kernel.org> # v3.13 Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - add headset mic detect quirks for another Dell laptopHui Wang2014-01-30
| | | | | | | | | | | | | | | | | | | | | | | | | | When we plug a 3-ring headset on the Dell machine (Vendor ID: 0x10ec0255, Subsystem ID: 0x1028064d), the headset mic can't be detected, after apply this patch, the headset mic can work well. BugLink: https://bugs.launchpad.net/bugs/1260303 Cc: David Henningsson <david.henningsson@canonical.com> Tested-by: Doro Wu <fan-cheng.wu@canonical.com> Cc: stable@vger.kernel.org Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>