aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_codec.h
Commit message (Collapse)AuthorAge
* ALSA: hda - Limit codec-verb retry to limited hardwaresTakashi Iwai2009-06-01
| | | | | | | | | | | The reset of a BUS controller during operations is somehow risky and shouldn't be done inevitably for devices that have apparently no such codec-communication problems. This patch adds the check of the hardware and limits the bus-reset capability. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add codec bus reset and verb-retry at critical errorsTakashi Iwai2009-06-01
| | | | | | | | | | | | Some machines machine cause a severe CORB/RIRB stall in certain weird conditions, such as PA access at the start up together with fglrx driver. This seems unable to be recovered without the controller reset. This patch allows the bus controller reset at critical errors so that the communication gets recovered again. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Split codec->name to vendor and chip name stringsTakashi Iwai2009-05-16
| | | | | | | | | Split the name string in hda_codec struct to vendor_name and chip_name strings to be stored directly from the preset name. Since mostly only the chip name is referred in many patch_*.c, this results in the reduction of many codes in the end. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Retry codec-verbs at errorsTakashi Iwai2009-04-21
| | | | | | | | | | | | | The current error-recovery scheme for the codec communication errors doesn't work always well. Especially falling back to the single-command mode causes the fatal problem on many systems. In this patch, the problematic verb is re-issued again after the error (even with polling mode) instead of the single-cmd mode. The single-cmd mode will be used only when specified via the command option explicitly, mainly just for testing. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add function id to proc outputPascal de Bruijn2009-03-23
| | | | | | | | | | | | | | | | | | | | | | This patch does two things: Output Intel HDA Function Id in /proc/asound/cardX/codec#X Align Vendor/Subsystem/Revision Ids to 8 characters, front-padded with zeros Before: Vendor Id: 0x11d41884 Subsystem Id: 0x103c281a Revision Id: 0x100100 After: Function Id: 0x1 Vendor Id: 0x11d41884 Subsystem Id: 0x103c281a Revision Id: 0x0100100 As report on the Kernel Bugzilla #12888 Signed-off-by: Pascal de Bruijn <pascal@unilogicnetworks.net> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Print multiple out-amp values of pin widgets on Conext codecsTakashi Iwai2009-03-12
| | | | | | | Add a flag to work around the non-standard amp-value handling on Conexant codecs. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Rename {override,cur}_pin with {user,driver}_pinTakashi Iwai2009-02-23
| | | | | | | Rename from override_pin and cur_pin with user_pin and driver_pin, respectively, to be a bit more intuitive. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add generic pincfg initializationTakashi Iwai2009-02-20
| | | | | | | Added the generic pincfg cache and save/restore functions. Also introduced the pin-overriding via hwdep sysfs. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix misc workqueue issuesTakashi Iwai2009-02-05
| | | | | | | | | | Some fixes regarding snd-hda-intel workqueue: - Use create_singlethread_workqueue() instead of create_workqueue() as per-CPU work isn't required. - Allocate workq name string properly - Renamed the workq name to "hd-audio*" to be more obvious. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Use own workqueueTakashi Iwai2009-01-12
| | | | | | | | | | | | | | snd-hda-intel driver used schedule_work() fot the delayed DMA pointer updates, but this has several potential problems: - it may block other eventsd works longer - it may deadlock when probing fails and flush_scheduled_work() is called during probe callback (as probe callback itself could be invoked from eventd) This patch adds an own workq for each driver instance to solve these problems. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - create hda_codec.control_mutex for kcontrol->private_valueWu Fengguang2009-01-09
| | | | | | | | | | | | | | | | | | | | | Fix the following lockdep warning by not reusing the hda_codec.spdif_mutex. ALSA sound/pci/hda/hda_codec.c:882: hda_codec_cleanup_stream: NID=0x2 ======================================================= [ INFO: possible circular locking dependency detected ] 2.6.28-next-20090102 #33 ------------------------------------------------------- mplayer/3151 is trying to acquire lock: (&pcm->open_mutex){--..}, at: [<ffffffffa004ced3>] snd_pcm_release+0x43/0xd0 [snd_pcm] but task is already holding lock: (&mm->mmap_sem){----}, at: [<ffffffff810c0252>] sys_munmap+0x42/0x80 which lock already depends on the new lock. Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add probe_only optionTakashi Iwai2008-12-19
| | | | | | | | | | | | | Added probe_only module option to hd-audio driver. This option specifies whether the driver creates and initializes the codec-parser after probing. When this option is set, the driver skips the codec parsing and initialization but gives you proc and other accesses. It's useful to see the initial codec state for debugging. The default of this value is off, so the default behavior is as same as before. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'topic/hda-modularize' into topic/hdaTakashi Iwai2008-12-03
|\
| * ALSA: hda - Don't export symbols when built-in kernelTakashi Iwai2008-11-28
| | | | | | | | | | | | | | | | | | | | | | | | The global functions in hda_codec.c and other core parts are only for HD-audio codec and controller drivers. When the HD-audio driver is built in kernel, all stuff have to be statically linked, thus we don't need any exports. This patch introduces a conditional macro to do export only when needed. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: hda - Modularize HD-audio driverTakashi Iwai2008-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Split the monolithc HD-audio driver into several pieces: - snd-hda-intel HD-audio PCI controller driver; loaded via udev - snd-hda-codec HD-audio codec bus driver - snd-hda-codec-* Specific HD-audio codec drivers When built as modules, snd-hda-codec (that is invoked by snd-hda-intel) looks up the codec vendor ID and loads the corresponding codec module automatically via request_module(). When built in a kernel, each codec drivers are statically hooked up before probing the PCI. This patch adds appropriate EXPORT_SYMBOL_GPL()'s and the module information for each driver, and driver-linking codes between codec-bus and codec drivers. TODO: - Avoid EXPORT_SYMBOL*() when built-in kernel - Restore __devinit appropriately depending on the condition Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Remove unused proc entry in hda_bus structTakashi Iwai2008-11-28
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: hda - Add codec-specific proc hookTakashi Iwai2008-11-28
|/ | | | | | | | Added a hook for proc outputs of codec-specific stuff. Moved realtek-specific coeff output into patch_realtek.c as well. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix PCM reconfigureTakashi Iwai2008-11-27
| | | | | | | | | | | | | The reconfiguration of PCM affected all PCM streams on the bus, but this this should be done rather only for the target codec. This patch does the following: - introduce bitmap indicating the PCM device usages on a hda_bus - refactor the PCM build functions - fix __devinit prefix in some fucntions - add a proper ifdef around HDA-reconfig-specific functions Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Move power_save option to hda_intel.cTakashi Iwai2008-11-27
| | | | | | | Move power_save option into hda_intel.c, and make a field in hda_bus, instead of keeping module parameters in separate files. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - make some functions staticTakashi Iwai2008-11-27
| | | | | | | | Minor clean ups: move snd_hda_codecs_inuse() into hda_intel.c and make static. Also, make snd_hda_query_supported_pcm() static as it's used only in hda_codec.c. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix double free of jack instancesTakashi Iwai2008-11-21
| | | | | | | | | | | | | | | The jack instances created in patch_sigmatel.c may be double-freed. The device management code checks the invalid element, and thus there is no real breakage, but it spews annoying warning messages. But, we can't simply remove the release calls of these jack instances because they have to be freed when the codec is re-configured. Now, a new flag, bus->shutdown is introduced to indicate that the bus is really being unloaded, i.e. the objects managed by the device manager will be automatically deleted. We release these objects only when this flag isn't set. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Fix another cache list managementTakashi Iwai2008-11-10
| | | | | | Fix another silly bug in the amp cache list management. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - simplify hda_bus ops callbacksTakashi Iwai2008-11-06
| | | | | | | | The hda_bus ops callback take struct hda_bus pointer. Also, the command callback takes the composed command word, instead of each small bits in arguments. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda: add snd_hda_get_jack* functionsMatthew Ranostay2008-10-27
| | | | | | | | This patch adds snd_hda_get_jack* functions for reporting jack location, device, and connectivity type. Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add hints for reconfigTakashi Iwai2008-10-12
| | | | | | | | This patch adds the "hints" for reconfiguring codecs. The hints are simply string arrays and can be freely used/parsed by the codec patch. The hints can be input via hwdep sysfs files. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add init_verbs entriesTakashi Iwai2008-10-12
| | | | | | | | | This patch enables the additional init verbs for each codec. The verbs can be entered via hwdep sysfs file. These verbs are executed at reconfiguring the codec for non-standard setups like overriding the pin-defcfg. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add codec reconfiguration featureTakashi Iwai2008-10-12
| | | | | | | | | Added the reconfiguration feature of any individual codec. Via the reconfiguration, the old resources are released and the patch is called again to recreate the PCM and mixers in addition to the re-initialization. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Manage kcontrol listsTakashi Iwai2008-10-12
| | | | | | | | Manage all kcontrol elements created in the hda-intel driver. This makes it possible to remove and reconfigure the controls of each codec. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Allocate name string of each codecTakashi Iwai2008-10-12
| | | | | | | Allocate dynamically the name string of each codec instead of pointing to a static string. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Use generic array helpersTakashi Iwai2008-10-12
| | | | | | Use generic array helpers to simplify array handling in snd-hda-intel. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add generic arraysTakashi Iwai2008-10-12
| | | | | | Added helper functions to handle generic arrays. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda - Add infrastructure for dynamic stream allocationTakashi Iwai2008-10-12
| | | | | | Added the infrastructure for dynamic stream allocation on HD-audio. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: hda: slave digital out supportMatthew Ranostay2008-09-09
| | | | | | | | | | Added support for playing a stream on multiple digital outs. This is done by defining codec->slave_dig_outs as array of hda_nid_t with a null-terminated entry to set the slave SPDIF outs, in which the slave outs have cloned settings of the master out (e.g. dig_out_nid). Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* ALSA: hda - Add definitions of HDMI-related verbsTakashi Iwai2008-08-25
| | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* ALSA: hda - Don't reset SPDIF in each status changeTakashi Iwai2008-08-13
| | | | | | | | | | | The SPDIF output is toggled at each time any SPDIF status bits are changed because of the known problems on some codecs. But, this also results in loosing the sync, and the problem is more obvious on HDMI output over SPDIF. Since the toggle is necessary only for some codecs, we should check whether this workaround is needed and skip if unnecessary. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* ALSA: hda: added 92HD81/83 supportMatthew Ranostay2008-07-28
| | | | | | | | | | Added support for 92HD81/83 family of codecs. This also includes a pwr_mapping array for pins that have more than one amp to power down. Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* ALSA: hda: digital pc-beep support hd-audio codecsMatthew Ranostay2008-07-20
| | | | | | | | | Added digital pc-beep support using linear tone generation for hd-codecs along with initial support for several IDT codecs. Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* ALSA: hda - Fix digital converter proc outputTakashi Iwai2008-06-20
| | | | | | | | AC_VERB_GET_DIGI_CONVERT_2 isn't actually implemented but reserved. The whole SIC bits are returned from DIGI_CONVERT_1. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] hda-codec - keep the format verb at closing PCM streamsTakashi Iwai2008-04-24
| | | | | | | Keep the format verb at closing PCM streams. Introduced snd_hda_codec_cleanup_stream() for the parcicular purpose. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] hda-intel - Fix PCM device number assignmentTakashi Iwai2008-04-24
| | | | | | | | | | | | | | | | | In the current scheme, PCM device numbers are assigned incrementally in the order of codecs. This causes problems when the codec number is irregular, e.g. codec #0 for HDMI and codec #1 for analog. Then the HDMI becomes the first PCM, which is picked up as the default output device. Unfortuantely this doesn't work well with normal setups. This patch introduced the fixed device numbers for the PCM types, namely, analog, SPDIF, HDMI and modem. The PCM devices are assigned according to the corresponding PCM type. After this patch, HDMI will be always assigned to PCM #3, SPDIF to PCM #1, and the first analog to PCM #0, etc. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* [ALSA] hda-codec - Add afg and mfg preset maskMarc Boucher2008-01-31
| | | | | | | | Added afg and mfg preset masks for more finer codec-preset selection. Signed-off-by: Marc Boucher <marc@linuxant.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] hda_proc - Add a number of new settings to proc codec outputAndrew Paprocki2008-01-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds additional output to the /proc codec#X info. The following pieces of information are added to the output: - Balanced, L/R swap, trigger, impedance sense pin capabilities - Vref pin capabilities - Current Vref pin widget control setting - Default configuration association, sequence, and misc bit test - EAPD/BTL bits conveying balanced mode, EAPD, and L/R swap - Power state modified to show state name as well as setting vs actual value - GPIO parameter output on Audio Function Group, including enumeration of IO pins which are indicated present (Any I and O pins are not output at this time) - Stripe and L/R swap widget capabilities - All digital converter bits: enable, validity, validity config, preemphasis, copyright, non-audio, professional, generation level, and content category - Converter stream and channel values for in/out widgets - SDI select value for in widgets - Unsolicited response widget capability tag and enabled bit - Delay widget capability value - Processing widget capability benign bit and number of coefficients - Realtek Define Registers: processing coefficient, coefficient index [Also, fixed space/tab issues and make codes a bit more readable -- Takashi] Signed-off-by: Andrew Paprocki <andrew@ishiboo.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] hda-intel - Add workarounds for STAC codecsTakashi Iwai2008-01-31
| | | | | | | | | | | Some machines with STAC codecs seem to have problems (e.g. no audible playback) when the delay in codec-read routine is too short. I still don't figure out which command sequence causes this problem (due to lack of test hardware), but it's known that increasing the delay fixes. So, added a stupid workaround here temporarily... Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] hda-codec - Add missing #defines (and 1 rename) in hda_codec.hAndrew Paprocki2008-01-31
| | | | | | | | | | | | Added AC_VERB_GET_DIGI_CONVERT_2 and renamed AC_VERB_GET_DIGI_CONVERT to AC_VERB_GET_DIGI_CONVERT_1 to stay consistent with the SET variants. Added AC_VERB_GET_GPIO_UNSOLICITED_RSP_MASK, AC_VERB_SET_GPIO_UNSOLICITED_RSP_MASK, and AC_PINCAP_LR_SWAP. The missing fields were listed in the ALC883 datasheet rev 1.3. Signed-off-by: Andrew Paprocki <andrew@ishiboo.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] sound/: Spelling fixesJoe Perches2008-01-31
| | | | | | Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] hda-codec - Fix definition of AC_KNBCAP_DELTA to match specAndrew Paprocki2008-01-31
| | | | | | | | | AC_KNBCAP_DELTA is incorrectly defined as (1<<8). According to the Intel HDA spec, this is bit 7 after AC_KNBCAP_NUM_STEPS which is a 0x7f mask. Signed-off-by: Andrew Paprocki <andrew@ishiboo.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] hda-intel - Show more volume-knob attributesTakashi Iwai2008-01-31
| | | | | | | | Show more attributs of volume-knob widgets. Also don't put empty lines when no connection list is found. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* [ALSA] hda-intel - Fix resume logic, when dynamic power managment is onMaxim Levitsky2007-10-16
| | | | | | | | | | | | | | | Comment in hda_intel.c states that 'the explicit resume is needed only when POWER_SAVE isn't set', but this is not true. There is no code that will automaticly power up the codec on resume, but only code that powers it up when user accesses it. So if user leaves a sound playing, codec will not be powered To fix that I check if there are any codecs that should be powered codec->power_count, and if so I power them up together with main controller. Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
* [ALSA] hda-intel - Avoid unnecessary work schedulingTakashi Iwai2007-10-16
| | | | | | | Avoid unnecessary work scheduling for power-off. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
* [ALSA] hda-intel - Add POWER_SAVE optionTakashi Iwai2007-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | Added CONFIG_SND_HDA_POWER_SAVE kconfig. It's an experimental option to achieve an aggressive power-saving. With this option, the driver will turn on/off the power of each codec and controller chip dynamically on demand. The patch introduces a new module option 'power_save'. It specifies the second of time-out for automatic power-down. As default, it's 10 seconds. Setting 0 means to suppress the power-saving feature. The codec may have analog-input loopbacks, which are usually represented by mixer elements such as 'Mic Playback Switch' or 'CD Playback Switch'. When these are on, we cannot turn off the mixer and the codec chip has to be kept on. For bookkeeping these states, a new codec-callback is introduced. For the bus-controller side, a new callback pm_notify is introduced, which can be used to turn on/off the contoller appropriately. Note that this power-saving might cause slight click-noise at power-on/off. Also, it might take some time to wake up the codec, and might even drop some tones at the very beginning. This seems to be the side-effect of turning off the controller chip. This turn-off of the controller can be disabled by undefining HDA_POWER_SAVE_RESET_CONTOLLER in hda_intel.c. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>