aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
Commit message (Collapse)AuthorAge
* Merge branch 'for-linus' into for-nextTakashi Iwai2012-11-08
|\
| * ALSA: hda - support Teradici 2200 host card audioLars R. Damerow2012-11-04
| | | | | | | | | | | | | | | | The audio chipset used in Teradici's Tera2 host cards is the same as that in the 1200 host cards. This patch allows ALSA to recognize the Tera2 cards. Signed-off-by: Lars R. Damerow <lars@pixar.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'for-linus' into for-nextTakashi Iwai2012-10-30
|\| | | | | | | ... for migrating the core changes for USB-audio disconnection fixes
| * ALSA: hda - Stop LPIB delay counting on broken hardwareTakashi Iwai2012-10-16
| | | | | | | | | | | | | | | | | | | | | | If LPIB reports a pretty bad value, we can't trust such hardware for calculating the PCM delay. Automatically turn off the delay counting when such a problem is encountered. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=48911 Cc: <stable@vger.kernel.org> [v3.6] Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add tracepoints to HD-audio controller driverTakashi Iwai2012-10-30
| | | | | | | | | | | | | | Add a couple of tracepoints to snd-hda-intel for tracing the position and the trigger timings. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda: support for wallclock timestampsPierre-Louis Bossart2012-10-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reuse code from clocksource to handle wall clock counter. Since wrapparound occurs, the audio timestamp is reinitialized to zero on a trigger. Synchronized linked devices will start counting from same reference to avoid any drift. Max buffer time is limited to 178 seconds to make sure wall clock counter does not overflow Wallclock timestamps are disabled on capture streams until we figure out how to handle digital inputs. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - remove unused variable in azx_position_ok()Wei Yongjun2012-10-22
| | | | | | | | | | | | | | | | | | | | | | The variable stream is initialized but never used otherwise, so remove the unused variable. dpatch engine is used to auto generate this patch. (https://github.com/weiyj/dpatch) Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Print PCI device name at "spurious message" warningsTakashi Iwai2012-10-17
| | | | | | | | | | | | ... to make it clear to see from which device it comes. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Implement a poll loop for jacks as a module parameterDavid Henningsson2012-10-15
|/ | | | | | | | | Now that we have a generic unsol mechanism, we can implement a generic poll loop, which can be used for debugging, or if a codec's unsol mechanism is broken. Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix registration race of VGA switcherooTakashi Iwai2012-10-15
| | | | | | | | | | | | Delay the registration of VGA switcheroo client to the end of the probing. Otherwise a too quick switching may result in Oops during probing. Also add the check of the return value from snd_hda_lock_devices(). Reported-and-tested-by: Daniel J Blueman <daniel@quora.org> Cc: <stable@vger.kernel.org> [v3.5+] Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Clean up superfluous position_fix list entriesTakashi Iwai2012-10-15
| | | | | | | | The white-list entries of position_fix for ASUS laptops have been added just as a workaround for broken COMBO mode. Now the combo mode itself is disabled, we can safely remove these entries. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Remove AZX_DCAPS_POSFIX_COMBOTakashi Iwai2012-10-10
| | | | | | | | | | | | It turned out that the COMBO position fix mode is rather more harmful, and it got reverted (with the replacement of runtime->delay calculation) recently. Hence we can get rid of AZX_DCAPS_POSFIX_COMBO as well. It's still possible to pass this mode via position_fix module option, in case where this really helps on weird machines (who knows). Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge tag 'asoc-3.7' of ↵Takashi Iwai2012-09-22
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next ASoC: Updates for v3.7 Lots and lots of driver specific cleanups and enhancements but the only substantial framework feature this time round is the compressed API binding: - Addition of ASoC bindings for the compressed API, used by the mid-x86 drivers. - Lots of cleanups and API refreshes for CODEC drivers and DaVinci. - Conversion of OMAP to dmaengine. - New machine driver for Wolfson Microelectronics Bells. - New CODEC driver for Wolfson Microelectronics WM0010.
| * ALSA: hda - Yet another position_fix quirk for ASUS machinesTakashi Iwai2012-09-13
| | | | | | | | | | | | | | | | | | ASUS X53S also suffers from the same issue as in commit c302d6133. Use POS_FIX_POSBUF for this hardware, too. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47461 Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - add PCI identifier for Intel 5 Series/3400Pierre-Louis Bossart2012-09-22
| | | | | | | | | | | | | | Tested with LPIB delay without any issues. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - use LPIB for delay estimationPierre-Louis Bossart2012-09-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DMA Position in Buffer (DPIB) should be used for ring buffer management, while LPIB register provides information on the number of samples transfered on the link. The difference between the two pieces of information corresponds to hardware/DMA buffering. This patch reports this difference in runtime->delay, and removes the use of the COMBO mode on recent Intel hardware. Credits to Takashi Iwai for an initial patch. [rebased to for-next branch and replaced snd_printk() with snd_printdd() by tiwai] Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - force use of SSYNC bitsPierre-Louis Bossart2012-09-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SSYNC bits are typically used to start multiple streams synchronously. It makes sense to use them for a single stream for a more predictable startup sequence. The transfers only start once the DMA and FIFOs are ready. This results in a better correlation between timestamps and number of samples played. Credits to Kar Leong Wang for suggesting this improvement. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add another pci id for Haswell boardWang Xingchao2012-09-17
| | | | | | | | | | | | | | | | | | | | | | A new PCI id 0x0d0c for Haswell HDA Controller. [root@SKBM04SDP ~]# lspci |grep Audio 00:03.0 Audio device: Intel Corporation Device 0d0c (rev 02) 00:1b.0 Audio device: Intel Corporation Lynx Point HD Audio Controller Signed-off-by: Wang Xingchao <xingchao.wang@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Allow to pass position_fix=0 explicitlyTakashi Iwai2012-09-13
| | | | | | | | | | | | | | | | | | | | | | | | Set the default value of position_fix -1, and allow user passing position_fix=0 explicitly to set the "auto" position-fix mode. Otherwise the auto mode may be switched to others like COMBO of VIACOMBO when the controller prefers it, thus user can't set the auto mode any longer. Also updated the documentation appropriately, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'for-linus' into for-nextTakashi Iwai2012-09-11
|\| | | | | | | To merge HD-audio fixes back to 3.7 development line
| * ALSA: hda_intel: add position_fix quirk for Asus K53ECatalin Iacob2012-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit c20c5a841cbe47f5b7812b57bd25397497e5fbc0 changed some chipsets to default to POS_FIX_COMBO so they now use POS_FIX_LPIB instead of POS_FIX_POSBUF. Since then I've been getting artifacts on playback, including repeated sounds on my Asus laptop. My hardware is Cougar Point which the commit log of c20c5a841cbe47f5b7812b57bd25397497e5fbc0 mentions as tested so POS_FIX_COMBO probably works in general but apparently it doesn't on Asus K53E therefore the need for the quirk. Signed-off-by: Catalin Iacob <iacobcatalin@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Avoid BDL position workaround when no_period_wakeup is setTakashi Iwai2012-09-11
| | | | | | | | | | | | | | | | | | | | Originally the bogus period at BDL head was introduced as a workaround for the mismatching position update at the period boundary, typically seen on dmix. However, for applications like PulseAudio that don't require period wake ups, this workaround is just superfluous. Thus better to disable it when no_period_wakeup is given in hw_params. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Clean up CONFIG_SND_HDA_POWER_SAVETakashi Iwai2012-08-30
| | | | | | | | | | | | | | | | CONFIG_SND_HDA_POWER_SAVE is no longer an experimental feature and its behavior can be well controlled via the default value and module parameter. Let's just replace it with the standard CONFIG_PM. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Fix runtime PM leftover refcountsTakashi Iwai2012-08-30
| | | | | | | | | | | | | | | | | | | | | | | | | | When the HD-audio is removed, it leaves the refcounts when codecs are powered up (usually yes) in the destructor. For fixing the unbalance, and cleaning up the code mess, this patch changes the following: - change pm_notify callback to take the explicit power on/off state, - check of D3 stop-clock and keep_link_on flags is moved to the caller side, - call pm_notify callback in snd_hda_codec_new() and snd_hda_codec_free() so that the refcounts are proprely updated. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - bug fix on references without checking CONFIG_SND_HDA_POWER_SAVEMengdong Lin2012-08-24
| | | | | | | | | | | | | | | | | | | | | | | | The patch to support runtime PM introduced a bug: Module parameter 'power_save_controller', and the codec flag 'd3_stop_clk' 'd3_stop_clk_ok' are defined only when HDA power save is enabled in config. But there are references to them without checking macro CONFIG_SND_HDA_POWER_SAVE. This patch is to fix the bug. Signed-off-by: Mengdong Lin <mengdong.lin@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - add runtime PM supportMengdong Lin2012-08-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Runtime PM can bring more power saving: - When the controller is suspended, its parent device will also have a chance to suspend. - PCI subsystem can choose the lowest power state the controller can signal wake up from. This state can be D3cold on platforms with ACPI PM support. And runtime PM can provide a gerneral sysfs interface for a system policy manager. Runtime PM support is based on current HDA power saving implementation. The user can enable runtime PM on platfroms that provide acceptable latency on transition from D3 to D0. Details: - When both power saving and runtime PM are enabled: -- If a codec supports 'stop-clock' in D3, it will request suspending the controller after it enters D3 and request resuming the controller before back to D0. Thus the controller will be suspended only when all codecs are suspended and support stop-clock in D3. -- User IO operations and HW wakeup signal can resume the controller back to D0. - If runtime PM is disabled, power saving just works as before. - If power saving is disabled, the controller won't be suspended because the power usage counter can never be 0. More about 'stop-clock' feature: If a codec can support targeted pass-through operations in D3 state when there is no BCLK present on the link, it will set CLKSTOP flag in the supported power states and report PS-ClkStopOk when entering D3 state. Please refer to HDA spec section 7.3.3.10 Power state and 7.3.4.12 Supported Power State. [Fixed CONFIG_PM_RUNTIME dependency in hda_intel.c by tiwai] Signed-off-by: Mengdong Lin <mengdong.lin@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'for-linus' into for-nextTakashi Iwai2012-08-20
|\| | | | | | | | | | | | | Conflicts: sound/pci/hda/hda_codec.c Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda_intel: Add Device IDs for Intel Lynx Point-LP PCHJames Ralston2012-08-09
| | | | | | | | | | | | | | This patch adds the Intel HD Audio Device IDs for the Intel Lynx Point-LP PCH Signed-off-by: James Ralston <james.d.ralston@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Check the power state when power_save option is changedTakashi Iwai2012-08-20
| | | | | | | | | | | | | | | | | | | | ... by calling the newly introduced snd_hda_power_sync(). I had to reimplement a wheel for adding the trigger at changing the parameter -- the parameter set ops is overwritten to pass the integer parameter, then trigger the power-state sync. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Fix possible compile warnings regarding CONFIG_PMTakashi Iwai2012-08-14
| | | | | | | | | | | | | | | | | | Replace with a proper ifdef check of CONFIG_PM_SLEEP in hda_intel.c. But other places in HD-audio driver are still marked with CONFIG_PM, since these can be called for power-saving even without CONFIG_PM_SLEEP. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Fix forgotten ifdef CONFIG_SND_HDA_PATCH_LOADERTakashi Iwai2012-08-09
| | | | | | | | | | | | The firmware callback must be protected by that ifdef. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Deferred probing with request_firmware_nowait()Takashi Iwai2012-08-09
| | | | | | | | | | | | | | | | | | | | | | For processing the firmware handling properly for built-in kernels, implement an asynchronous firmware loading with request_firmware_nowait(). This means that the codec probing is deferred when the patch option is specified. Tested-by: Thierry Reding <thierry.reding@avionic-design.de> Reviewed-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Load firmware in hda_intel.cTakashi Iwai2012-08-09
|/ | | | | | | | | | | | | This is a preliminary work for the deferred probing for request_firmware() errors at init. This patch moves the call of request_firmware() to hda_intel.c, and call it in the earlier stage of probing rather than azx_probe_continue(). Tested-by: Thierry Reding <thierry.reding@avionic-design.de> Reviewed-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'topic/pm-convert' into for-nextTakashi Iwai2012-07-19
|\ | | | | | | | | | | | | This merges the changes for converting to new PM ops for platform and some other drivers. Also move some header files to local places from the public include/sound.
| * ALSA: Convert to new pm_ops for PCI driversTakashi Iwai2012-07-03
| | | | | | | | | | | | | | | | | | | | Straightforward conversion to the new pm_ops from the legacy suspend/resume ops. Since we change vx222, vx_core and vxpocket have to be converted, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Fix driver type of Haswell controller to AZX_DRIVER_SCHTakashi Iwai2012-07-16
| | | | | | | | | | | | | | According to Xingchao, This works for HDMI audio, otherwise there's blocking issue. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add DeviceID for Haswell HDAWang Xingchao2012-07-16
| | | | | | | | | | | | | | | | | | | | this patch add proper id for Haswell HDA Controller. [Added AZX_DCAPS_POSFIX_COMBO flag by tiwai] Signed-off-by: Wang Xingchao <xingchao.wang@intel.com> Acked-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'topic/hda-beep' into topic/hdaTakashi Iwai2012-07-04
|\ \
| * | ALSA: hda - Remove beep_mode=2Takashi Iwai2012-07-03
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The beep_mode=2 option was introduced to make the beep mixer controlling the beep input allocation/deallocation dynamically, so that a user can switch between HD-audio codec digital beep and the system beep only via mixer API. This was necessary because the keyboard driver took only the first input beep instance at that time. However, the recent keyboard driver already processes the multiple input instances, thus there is no point to keep this mode. Let's remove it. Acked-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'fix/hda' into topic/hdaTakashi Iwai2012-06-20
|\| | | | | | | The fix for power sequence needs to be merged back to topic branch.
| * ALSA: hda - Handle open while transitioning to D3.Dylan Reid2012-06-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This addresses an issue encountered when a pcm is opened while transitioning to low power state (codec->power_on == 1 && codec->power_transition == -1). Add snd_pcm_power_up_d3wait to hda_codec. This function is used to power up from azx_open as opposed to snd_hda_power_up used from codec_exec_verb. When powering up from azx_open, wait for pending power downs to complete, avoiding the power up continuing in parallel with the power down on the work queue. The specific issue seen was with the CS4210 codec, it powers off the ADC and DAC nid in its suspend handler. If it is re-opened before the ~100ms power down process completes, the ADC and DAC nid are initialized while powered down and audio is lost until another suspend/resume cycle. Signed-off-by: Dylan Reid <dgreid@chromium.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix detection of Creative SoundCore3D controllersTakashi Iwai2012-06-11
| | | | | | | | | | | | | | The PCI ID entries of Creative SoundCore3D HD-audio controllers should be before the wildcard for vendor = Creative. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - HDMI Audio init all connectors when VGA-switcheroo is offSteven Newbury2012-06-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When VGA_SWITCHEROO support is enabled hda_intel initialises the HDMI audio device on the current VGA device. When it's not enabled it only initialises the HDMI device on the default VGA adaptor, this means secondary cards get no audio support which is very unhelpful for multi-seat! With this patch, when SUPPORT_VGA_SWITCHEROO is disabled hda_intel initialises all HDMI audio devices, not just the default VGA. [minor optimizations by tiwai] Signed-off-by: Steven Newbury <steve@snewbury.org.uk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Fix uninitialized HDMI controllers with VGA-switcherooTakashi Iwai2012-06-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When VGA-switcheroo is built in but unused on systems with multiple graphics cards, the initializations of non-default graphics cards are skipped and never enabled (because the switcheroo is activated only when the controller supports). The current behavior is for avoiding the system lockup by accessing the disabled GPU, but due to the recent change in VGA-switcheroo, it determines the state simply by checking with the default VGA device. This is the culprit. Now with the new vga_switcheroo_get_client_state(), we can know the initial state of the bound GPU, thus can determine the initial audio client state more correctly. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda_intel: activate COMBO mode for Intel client chipsetsSeth Heasley2012-06-15
| | | | | | | | | | | | | | | | | | | | This patch activates the COMBO position_fix for recent Intel client chipsets. COMBO mode is the recommended setting for Intel chipsets and eliminates HD audio warnings in dmesg. This patch has been tested on Lynx Point, Panther Point, and Cougar Pont. Signed-off-by: Seth Heasley <seth.heasley@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - add support for HD-Audio of VIA HDMI GFX CardsAnnie Liu2012-06-11
|/ | | | | | | | | This is patch supporting HD-Audio function of VIA GFX cards which support HDMI. Those are integrated graphics of chipsets VX900 and VX11 separately. Signed-off-by: Annie Liu <annieliu@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge tag 'hda-switcheroo' of ↵Linus Torvalds2012-05-25
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull VGA-switcheroo audio client support for HD-audio from Takashi Iwai. This depended on the recent drm pull. * tag 'hda-switcheroo' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda - unlock on error in azx_interrupt() ALSA: hda - Support VGA-switcheroo ALSA: hda - Export snd_hda_lock_devices() ALSA: hda - Check the dead HDMI audio controller by vga-switcheroo
| * ALSA: hda - unlock on error in azx_interrupt()Dan Carpenter2012-05-18
| | | | | | | | | | | | | | There is an spin_unlock() missing on this error path. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Support VGA-switcherooTakashi Iwai2012-05-14
| | | | | | | | | | | | | | | | | | | | Add the support for VGA-switcheroo in the HD-audio controller side. When the graphics controller is disabled, the HD-audio driver also delays the initialization until it's activated by VGA-switcheroo. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43155 Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Check the dead HDMI audio controller by vga-switcherooTakashi Iwai2012-05-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a discrete-GPU is disabled by the VGA switcheroo, the corresponding HD-audio controller for HDMI output is also disabled. Such a dead controller still appears in the PCI device list, but you can't access properly any longer (even calling pci_read_config_*() triggers Oops!) which leads the stall of the whole communication of the driver. This patch adds a check of graphics controller at the probe time to see whether it's disabled by vga-switcheroo. If disabled, skip the whole initialization of this controller. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43155 Signed-off-by: Takashi Iwai <tiwai@suse.de>