In snd_hda_parse_def_config(), some unused values may remain in hp_pins[]
array during the headphone-reassignment workaround. This patch clears
the unused array members.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
snd_hda_parse_pin_def_config() has some workaround for re-assigning
some pins declared as headphones to line-outs. This didn't work properly
for some cases because it used memmove() stupidly wrongly.
Reference: Novell bnc#637263
https://bugzilla.novell.com/show_bug.cgi?id=637263
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added snd_hda_get_input_pin_label() helper function to return the
string that can be used for control or capture-source ids.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added the new fields to contain all input-pins to struct auto_pin_cfg.
Unlike the existing input_pins[], this array contains all input pins
even if the multiple pins are assigned for a single role (i.e. two
front mics). The former input_pins[] still remains for a while, but
will be removed in near future.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The new sticky PCM parameter introduced the delayed clean-ups of
stream- and channel-id tags. In the current implementation, this check
(adding dirty flag) and actual clean-ups are done only for the codec
chip. However, with HD-audio architecture, multiple codecs can be
on a single bus, and the controller assign stream- and channel-ids in
the bus-wide.
In this patch, the stream-id and channel-id are checked over all codecs
connected to the corresponding bus. Together with it, the mutex is
moved to struct hda_bus, as this becomes also bus-wide.
Reported-and-tested-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The commit eb541337b7
ALSA: hda - Make converter setups sticky
changes the semantics of snd_hda_codec_cleanup_stream() not to clean up
the stream at that moment but delay the action. This broke the codes
expecting that the clean-up is done immediately, such as dynamic ADC
changes in some codec drivers.
This patch fixes the issue by introducing a lower helper,
__snd_hda_codec_cleanup_stream(), to allow the immediate clean up.
The original snd_hda_codec_cleanup_stream() is kept as is now.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
So far, we reset the converter setups like the stream-tag, the
channel-id and format-id in prepare callbacks, and clear them in
cleanup callbacks. This often causes a silence of the digital
receiver for a couple of seconds.
This patch tries to delay the converter setup changes as much as
possible. The converter setups are cached and aren't reset as long
as the same values are used. At suspend/resume, they are cleared
to be recovered properly, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Set bit 15 (Stream Type) of HDA Stream Format to 1 (Non-PCM) when IEC958
channel status bit 1 (AES0 & 0x02) is set to 1 (non-audio).
This is a prequisite for HDMI HBR passthrough.
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The commit afbd9b8448
ALSA: hda - Limit the amp value to write
introduced a regression for codec setups with amp offsets like IDT/STAC
codecs. The limit value should be a raw value without offset calculation.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The function IDs are different for audio and modem. Do not mix them.
Also, show the unsolicited bit in the function_id register.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Check the amp max value at put callbacks and set the upper limit
so that the driver won't write any invalid value over the defined
range.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Many codecs now clear the pin controls at suspend via snd_hda_shutup_pins()
for reducing the click noise at power-off. But this leaves some pins
uninitialized, and they'll be never recovered after resume.
This patch adds the proper recovery of cleared pin controls on resume.
Also it adds a check of bus->shutdown so that pins won't be cleared at
module unloading.
Reference: Kernel bug 16339
http://bugzilla.kernel.org/show_bug.cgi?id=16339
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add a new helper, snd_hda_codec_update_cache(), for reducing the unneeded
verbs. This function checks the cached value and skips if it's identical
with the given one. Otherwise it works like snd_hda_codec_write_cache().
The alc269 code uses this function as an example.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add new check for MIC. Do the internal DMIC as the Front MIC.
It could solve the default record source index issue.
[Fix the check properly using the bitmask by tiwai]
Signed-off-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add an error message to snd_hda_add_nid() for invalid mapping NID to make
easier to hunt the buggy code.
Also added a missing space to the error message in snd_hda_build_controls()
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This will save ~15ms boot time.
The first 10ms sleep was introduced in commit d2595d86e5 for (buggy)
Cxt codecs, so better to limit the sleep to the problem hardware.
For the second 10ms sleep, the HDA spec says:
Power State[1:0]:
00: Node Power state (D0) is fully on.
01: Node Power state (D1) allows for (does not require) the lowest possible power consuming state from which it
can return to the "fully on" state (D0) within 10 ms, excepting analog pass through circuits (e.g., CD analog
playback) which must remain fully on.
10: Node Power state (D2) allows for (does not require) the lowest possible power consuming state from which it
can return to the "fully on" state (D0) within 10 ms. For modems, this is the "wake on ring" power state.
11: Node Power state (D3) allows for (does not require) lowest possible power consuming state under software
control. Note that any low power state set by software must retain sufficient operational capability to properly
respond to subsequent software Power State command.
So 10ms is actually the max wait time. It should be safe to
remove/reduce it and rely on the loop of 1ms-sleeps.
CC: Marc Boucher <marc@linuxant.com>
CC: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add a common helper function for clearing pin controls before suspend.
Use the pincfg array instead of looking through all widget tree.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Analog Device codecs seem to have problems with the triggering of
pin-sensing although their pincaps give the trigger requirements.
Some reported that constant CPU load on HP laptops with AD codecs.
For avoiding this regression, add a flag to codec struct to notify
explicitly that the codec doesn't suppot the trigger at pin-sensing.
Tested-by: Maciej Rutecki <maciej.rutecki@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Postpone the mixer name setup after the codec patch since the codec
patch may change the codec name string in itself.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Fix the wrong implementation of NID <-> kctl mapping for capture mixers
introduced by the ocmmit 5b0cb1d850.
So far, the driver returns an error at probe.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The HDA_SUBDEV_NID_FLAG is duplicate for amplifier control elements. Move
get_amp_nid_() call to the snd_hda_ctl_add() function.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The purpose of this changeset is to show information about amplifier
setting in the codec proc file. Something like:
Control: name="Front Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Control: name="Front Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=2, ofs=0
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This set of changes add missing NID values to some static control
elemenents. Also, it handles all "Capture Source" or "Input Source"
controls.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This patch adds support for dynamically created controls to proc codec file
(Control: lines).
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This is an initial patch to show universal control<->NID assigment in
proc codec file. The change helps to debug codec related problems.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Original implementation was keeping registered input device for SND_BEEP
and SND_TONE events all time. This patch changes this behaviour:
If digital PC Beep is turned off using universal control switch,
the input device is unregistered.
Explanation: The kd_mksound() send SND_BEEP and SND_TONE only to last
registered device acceping those events. It means that the HDA Intel
audio driver blocks also the internal PC Speaker device (pcspkr.c
driver) even if the HDA Beep is muted. The user can easy disable
all beeps using 'setterm -blength 0' or 'xset b off' command.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added the power on/off counter and expose via sysfs files.
The sysfs files, power_on_acct and power_off_acct, are created under
each codec hwdep sysfs directory (e.g. /sys/class/sound/hwC0D0).
The files show the msec length of the codec power-on and power-off,
respectively.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add reboot notifier to each codec so that it can do some workarounds
needed for reboot.
So far, patch_sigmatel.c calls its shutup routine for avoiding noises
at reboot on some HP machines.
References: Novell bnc#544779
http://bugzilla.novell.com/show_bug.cgi?id=544779
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The new Intel HDMI codec supports 2 independant HDMI/DisplayPort pipes.
We'll be exporting them as 2 pcm devices. So bump up the allowed number
of HDMI devices.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This unifies the code and data structure,
and makes it easy to add more HDMI devices.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Recently we hit a bug in our dev board, whose HDMI codec#3 may emit
redundant/spurious responses, which were then taken as responses to
command for another onboard Realtek codec#2, and mess up both codecs.
Extend the azx_rb.cmds and azx_rb.res to array and track each codec's
commands/responses separately. This helps keep good codec safe from
broken ones.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Volume-knob widgets may have connections even if they have no CONN_LIST
cap bit. Allow the query exceptionally in snd_hda_get_connections().
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This patch adds a check to snd_hda_get_connections() routine for
presence of AC_WCAP_CONN_LIST. Also, make sure that negative error
codes from noted route are handled on all places as errors.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add some tricks to reduce the click noise at powering down to D3
in the power saving mode on STAC/IDT codecs.
The key seems to be to reset PINs before the power-down, and some
delay before entering D3. The needed delay is significantly long,
but I don't know why.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
To prevent "Too many connections" message and the error path for some HDMI
codecs (which makes onboard audio unusable), check for invalid zero
connections for CONNECT_LIST verb.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The newly added sanity-check for a codec verb can be better written
with logical ORs. Also, the parameter can be more than 8bit.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
A recent bug involves passing auto detected >0x7f NID to codec command,
creating an invalid codec addr field, and finally lead to cmd timeout
and fall back into single command mode. Jaroslav fixed that bug in
alc880_parse_auto_config().
It would be safer to further check the bounds of all cmd fields.
Cc: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The codec read errors in snd_hda_get_connections() are ignored so far,
and it causes a problem like the bug in the commit
9d30937acc
ALSA: hda_intel: more strict alc880_parse_auto_config dig_nid checking
Better to check errors in the function and returns a proper error code
rather than passing bogus NID values.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
When FLOAT PCM format is available but together with other linear
PCM formats, don't override maxbps value. For FLOAT format, it's always
32, thus it can be better checked in snd_hda_calc_stream_format().
Otherwise the maxbps 32 might be used wrongly even if the linear PCM
doesn't support it.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Check whether formats and rates don't result in zero due to the
restriction of SPDIF sharing. If any of them can be zero, disable
the SPDIF sharing mode instead. Otherwise it will lead to a PCM
configuration error.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
So far, the FLOAT PCM format is used only exclusivley set. But
this can be a combination with other formats.
This patch changes the parser to allow the FLOAT format in addition
to other PCM formats.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The codec setup call via snd_hda_codec_configure() isn't necessarily
called in snd_hda_codec_new(). For the later added feature, it's better
to change the code flow like:
- create all codec instances
- configure each codec
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>
This patch adds a debug mode to make the codec communication
synchronous. Define SND_HDA_SUPPORT_SYNC_WRITE in hda_codec.c,
and the call of snd_hda_codec_write*() will become synchronous,
i.e. wait for the reply from the codec at each time issuing a verb.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>
Cache quries for PCM and STREAM parameters as well as ampcap and
pincap sharing the hash table. This will reduce the superfluous
access of the same codec verbs.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
(Re)set function_id only from the value on FG nodes.
The current code overrides the value with the last widget.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Check the length to copy via strlen() beforehand to avoid the stack
corruption, or use strlcpy() to be safe in HD-audio codes.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added the support for Creative SB X-Fi boards with UAA (HD-audio) mode.
In the HD-audio mode, no multiple streams are supported by just it
behaves like a normal HD-audio device.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Fix the key value generation for get/set amp verbs. The upper bits of
the parameter have to be combined with the verb value to be unique for
each direction/index of amp access.
This fixes the resume problem on some hardwares like Macbook after
the channel mode is changed.
Tested-by: Johannes Berg <johannes@sipsolutions.net>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Replace with the standard function calls to use caches for reading
the widget caps and pin caps.
hda_proc.c is still using the direct verbs to get raw values as
much as possible.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added snd_hda_query_pin_caps() to read and cache pin-cap values
to avoid too frequently issuing the same verbs.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
If ratesp or formatsp values are zero, wrong values are passed to ALSA's
the PCM midlevel code. The bug is showed more later than expected.
Also, clean a bit the code.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Change the power state of each widget before starting the initialization
work so that all verbs are executed properly.
Also, keep power-up during hwdep reconfiguration.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
It's false positive, but annoying.
sound/pci/hda/hda_codec.c: In function ‘get_empty_pcm_device’:
sound/pci/hda/hda_codec.c:2772: warning: ‘dev’ may be used uninitialized in this function
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Don't return a fatal error to the driver but continue to probe when
any error occurs at creating PCM streams for each codec.
It's often non-fatal and keeping it would help debugging.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Revert the codec probe instead of returning the error to the driver
when any error occurs at creating the control elements.
The control element conflict can be non-fatal in many cases,
especially if it comes from the digital-only codec.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added the pseudo device-locking using card->shutdown flag to avoid
the crash via clear/reconfig during operations.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Make user_pin overriding even the driver pincfg, e.g. the static / fixed
pin config table in patch_sigmatel.c.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>
Added the helper function snd_hda_multi_out_dig_cleanup() to clean up
the digital outputs with multi setup. This call is needed in cases
the codec supports multiple digital outputs as slaves. Otherwise the
slave widgets aren't properly cleaned up.
For a single digital output (e.g. in patch_conexant.c), this call isn't
needed.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Detect multiple digital-out pins in snd_hda_parse_pin_defconfig().
The dig_out_pin and dig_out_type fields become arrays.
The codec parser still doesn't use this multiple pins detection, though.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
Add dig_out_type and dig_in_type fields to autocfg struct.
A proper HDA_PCM_TYPE_* value is assigned to these fields according
to the pin-jack location type value.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Don't break the loop in snd_hda_codec_build_pcms() even if the item
has no substreams.
It's possible that it's an empty item and the next item containing
the valid substreams (e.g. realtek codecs may create the analog
and alt-analog but no digitl streams).
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Added the volume offset to base for the standard volume controls
to handle elements with too big volume scales like -96dB..0dB.
For such elements, you can set the base volume to reduce the range.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>
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>
The re-initializations of codec amp and verb caches are missing
at reconfig, which may cause Oops occasionally.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Gateway notebooks have their ID inside codec vendor ID, not at PCI ID. Due to
that, model auto-detection were not possible with the standard seek method.
This is what is found at lspci -vnn:
00:14.2 Audio device [0403]: ATI Technologies Inc SB450 HDA Audio [1002:437b] (rev 01)
Subsystem: ATI Technologies Inc SB450 HDA Audio [1002:437b]
Yet, autodetection is possible, since the codec properly reflects the vendor at
the Subsystem ID:
$ cat /proc/asound/card0/codec#0 |head -4
Codec: SigmaTel STAC9250
Address: 0
Vendor Id: 0x83847634
Subsystem Id: 0x107b0367
This patch adds a new autodetection function that seeks for codec subsystem ID.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>
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>
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>
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>
There is no argument named @state in snd_hda_resume,
remove its' comment.
Signed-off-by: Qinghuang Feng <qhfeng.kernel@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
SPDIF status bits controls are written via snd_hda_codec_write()
without caching. This causes a regression at resume that the bits
are lost.
Simply replacing it with the cached version fixes the problem.
Reference:
http://lkml.org/lkml/2008/11/24/324
Signed-off-by: Takashi Iwai <tiwai@suse.de>
snd_print_pcm_rates() and snd_print_pcm_bits() are used by both
hda_proc.c and hda_eld.c, thus they have to be defined in the common
place.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>
Due to the hda-reconfiguration patches, the check of empty stream
is gone, and this results in an error with the codec setup with empty
streams.
This patch adds the check again to avoid the error at probing.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add NULL-check of the return value of snd_kctl_new1() before
accessing it. Also, make a sanity NULL check to snd_BUG_ON()
for debugging only.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Add Wolfson Microelectronics to the HDA vendor ID table.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>
Added the sysfs entries to hwdep devices so that the new features
like reconfiguration can be done via sysfs.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
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>