Detailed HDA changes v1.0.24 v1.0.25: Difference between revisions
Jump to navigation
Jump to search
m (1 revision(s)) |
No edit summary |
||
Line 1: | Line 1: | ||
{| align="right" | {| align="right" | ||
| __TOC__ | | __TOC__ | ||
|} | |} | ||
=Detailed HDA changelog between 1.0. | =Detailed HDA changelog between 1.0.24 and 1.0.25 releases= | ||
==alsa-driver== | ==alsa-driver== |
Latest revision as of 09:20, 25 January 2012
Detailed HDA changelog between 1.0.24 and 1.0.25 releases
alsa-driver
HDA Codec driver
- - Add the build-stub for patch_ca0132.c
- - ALSA: hda - Fix a unused variable warning
- Just overlooked.
- sound/pci/hda/patch_realtek.c: In function ‘alc_sku_unsol_event’:
- sound/pci/hda/patch_realtek.c:643:19: warning: unused variable ‘spec’ [-Wunused-variable]
- - sound: snd-hda-intel: better Alienware M17x R3 quirk
- I have been told that this way the rear headphone connector is
- working as well; with model=alienware only laptop speakers work.
- The subsystem of both controller and codec is 1028:0490.
- - ALSA: hda/realtek - Remove use_jack_tbl field
- Now that all quirks have the own unsol handlers, we don't need to check
- use_jack_tbl flag any more. Let's kill it.
- - ALSA: hda/realtek - Avoid conflict of unsol-events with static quirks
- The recently added jack-kctl support sets the unsol event tags
- dynamically, while static quirks usually set the fixed tags in the
- init_verbs array. Due to this conflict, the own unsol event handler
- can't retrieve the tag and handle it properly any more.
- For fixing this, avoid calling snd_hda_jack_add_kctls() for static
- quirks, and always let them use own handlers instead of the standard
- one for the auto-pareser.
- Reported-by: David Henningsson <david.henningsson@canonical.com>
- - ALSA: hda/realtek - Avoid multi-ios conflicting with multi-speakers
- When a machine has multiple speakers, we don't need to create the
- controls for multi-ios. Check the number of primary outputs beforehand.
- Note that this workaround might not work always with new codecs in
- future; this assumes that both speakers and multi-io jacks share the
- same mixers/DACs. If they are routed with different mixers, the
- individual mixer controls should be needed. But, so far, this doesn't
- happen with the existing ALC codecs.
- - ALSA: HDA: Fix internal microphone on Dell Studio 16 XPS 1645
- More than one user reports that changing the model from "both" to
- "dmic" makes their Internal Mic work.
- Tested-by: Martin Ling <martin-launchpad@earth.li>
- BugLink: https://bugs.launchpad.net/bugs/795823
- - ALSA: hda - Fix the lost power-setup of seconary pins after PM resume
- When multiple headphone or other detectable output pins are present,
- the power-map has to be updated after resume appropriately, but the
- current driver doesn't check all pins but only the first pin (since
- it's enough to check it for the mute-behavior). This resulted in the
- silent output from the secondary outputs after PM resume.
- This patch fixes the problem by checking all pins at (re-)init time.
- Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740347
- - ALSA: hda - Fix the detection of "Loopback Mixing" control for VIA codecs
- Currently the driver checks only the out_mix_path[] for the primary
- output route for judging whether to create the loopback-mixing control
- or not. But, there are cases where aamix-routing is available only on
- headphone or speaker paths but not on the primary output path. So, the
- driver ignores such cases inappropriately.
- This patch fixes the check of the loopback-mixing control by testing
- all mix-routing paths.
- - ALSA: hda - Use auto-parser for HP laptops with cx20459 codec
- These laptops can work well with the auto-parser and their BIOS setups,
- and in addition, the auto-parser fixes the problem with S3/S4 where
- the unsol event handling is killed after resume due to fallback to the
- single-cmd mode.
- Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740115
- - ALSA: hda/cirrus - support for iMac12,2 model
- This early 2011 model just need to have headphones on GPI02
- instead of GPI01, and use BIOS pincfgs.
- It is detected by codec SSID.
- The iMac12,1 model is known to work the same way, although maybe
- not with the same codec SSID.
- - ALSA: HDA: Fix typo for ALC269VB_FIXUP_DMIC
- This fixup is not actually used, so in practice this is just a
- cosmetic fix.
- - ALSA: HDA: Add support for Cirrus Logic 4213
- The CS4213 chip is similar to the CS4210, but it does not have
- SPDIF capabilities. Also, it has fewer pins, and the vendor specific
- nid is different. With this patch, we have working inputs and outputs
- (and automute/autoswitch). However, we don't know anything about
- the vendor specific processing coefficients, so we don't read or write
- to that node in this patch.
- BugLink: https://bugs.launchpad.net/bugs/910792
- Tested-by: Hsin-Yi Chen <hychen@canonical.com>
- - ALSA: HDA: Fix automute for Cirrus Logic 421x
- There was a bug in the automute logic causing speakers not to
- mute when headphones were plugged in.
- Tested-by: Hsin-Yi Chen <hychen@canonical.com>
- - ALSA: HDA: Fix master control for Cirrus Logic 421X
- The control name "HP/Speakers" is non-standard, and since there is
- only one DAC on this chip there is no need for a virtual master
- anyway.
- - Merge all missing things from upstream.
- - ALSA: hda - Manage unsol tags in hda_jack.c
- Manage the tags assigned for unsolicited events dynamically together
- with the jack-detection routines. Basically this is almost same as what
- we've done in patch_sigmatel.c. Assign the new tag number for each new
- unsol event, associate with the given NID and the action type, etc.
- With this change, now all pins looked over in snd_hda_jack_add_kctls()
- are actually enabled for detection now even if the pins aren't used for
- jack-retasking by the driver.
- - ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
- With the auto-parser we can choose the dac nid for vmaster from
- the DACs we already know, instead of hard-coding it. This is more
- future-proof and was actually wrong on one machine.
- - ALSA: hda - Integrate input-jack stuff into kctl-jack
- Instead of managing input-jack stuff separately, call all stuff inside
- the kctl-jack creation, deletion and report. The caller no longer needs
- to care about input-jack.
- The better integration between input-jack and kctl-jack should be done
- in the upper layer in near future, but for now, it's implemented locally
- for more tests.
- - ALSA: hda - Don't add channel suffix for headphone pin labels
- The multiple headphone pins are usually handled as copied from the same
- source, not as individual channels like front and surround. Thus it'd
- be more correct to avoid the channel suffix for "Headphone" pin labels
- in snd_hda_get_pin_label() but give an index number instead.
- - ALSA: hda - Fix a typo
- Reported-by: David Henningsson <david.henningsson@canonical.com>
- - ALSA: hda - Give more unique names by snd_hda_get_pin_label()
- The function now gives more unique names for the output pins by adding
- some prefix and suffix for the location and the channels. Otherwise, it
- can pass the index number.
- - ALSA: hda - Merge input-jack helpers to hda_jack.c
- We can use the very same table in hda_jack.c for managing the list for
- input-jack elements, too.
- - ALSA: hda - Manage unsol tags in hda_jack.c
- Manage the tags assigned for unsolicited events dynamically together
- with the jack-detection routines. Basically this is almost same as what
- we've done in patch_sigmatel.c. Assign the new tag number for each new
- unsol event, associate with the given NID and the action type, etc.
- With this change, now all pins looked over in snd_hda_jack_add_kctls()
- are actually enabled for detection now even if the pins aren't used for
- jack-retasking by the driver.
- - ALSA: hda/realtek - Fix lost speaker volume controls
- When there are the same or more number of HP pins are available, HP pins
- are used as the primary outputs instead of the speaker pins. But, in
- some cases (especially with ALC663 & co), some DACs are available only
- with a later pin and it's assigned to a speaker, and since the driver
- parses the pins from the lower NID, such a DAC was skipped eventually
- without assignments. This resulted in a regression, the missing speaker
- volume control in the new parser.
- As a workaround for this, now the driver retries the pin->DAC mapping
- again after restoring the speaker-pins as primary. This is still an ad
- hoc fix, but it works so far for most of Realtek codecs.
- - ALSA: hda/realtek - Minor cleanup
- Use an inline function for the common pattern for assigning a capsrc.
- - ALSA: hda - Create jack-detection kcontrols
- Create kcontrols for pin jack-detections, which work similarly like
- jack-input layer. Each control will notify when the jack is plugged or
- unplugged, and also user can read the value at any time via the normal
- control API.
- The control elements are created with iface=CARD, so that they won't
- appear in the mixer apps.
- So far, only the pins that enabled the jack-detection are registered.
- For covering all pins, the transition of the common unsol-tag handling
- would be needed. Stay tuned.
- - ALSA: hda - Cache the jack-detection value
- Introduce a table containing the pins and their jack-detection states
- for avoiding the unnecessary verbs to check the pin status at each time.
- When the unsol event is enabled via snd_hda_jack_detect_enable(), it
- automatically adds the given NID to the table. Then the driver supposes
- that the codec driver will set the dirty flag appropariately when an
- unsolicited event is invoked for that pin.
- The behavior for reading other pins that aren't registered in the table
- doesn't change. Only the pins assigned to the table are cached, so far.
- In near futre, this table can be extended to use the central place for
- the unsolicited events of all pins, etc, and eventually include the
- jack-detect kcontrols that replace the current input-jack stuff.
- - ALSA: hda: remove unused quirk for inverted mute led
- Commit b99a776d0b17ae0f3a54e86009887a00ac4889d0 removed all effects of
- the STAC92HD83* model quirk "hp". However, it left the model selection
- and documentation behind, confusing users with inverted mute
- leds. Completely remove this quirk and its documentation.
- - ALSA: hda - GPIO to control mute LED may be enabled on HP systems with no such HW
- This may lead to problems (like loss of sound) as GPIO pin may be used
- for different function (SPDIF OUT, EAPD etc) on those systems. This patch
- disables default mute LED GPIO configuration on all new codecs as all new
- HP systems are expected to provide explicit mute LED configuration in SMBIOS.
- - ALSA: hda - Increase the max number of coverters/pins in patch_hdmi.c
- The new hardware tends to have more and more. As a temporary fix, just
- increase the number for now.
- For a long-term solution, we should assign the cvts/pins dynamically.
- - ALSA: hda - Supports more audio streams
- So far, the driver supports up to 10 streams. This is a restriction in
- hda_intel.c and hda_codec.c: in the former, the fixed array size limits
- the amount, and in the latter, the fixed device-number assignment table
- (in get_empty_pcm_device()) limits the possibility.
- This patch reduces the restriction by
- - using linked list for managing PCM instances in hda_intel.c, and
- - assigning non-fixed device numbers for the extra devices
- - ALSA: hda - Introduce snd_hda_get_pin_label()
- Create a new helper function snd_hda_get_pin_label() for getting a label
- string for both input and output pins. hda_get_input_pin_label() is
- obsoleted by this function, and the callers are replaced appropriately
- now by this patch.
- - ALSA: hda/realtek - Move ALC880 model=medion-rim to auto-parser
- Translate ALC880 medion-rim static configs to the auto-parser with the
- additional GPIO2 verb and COEF setup.
- - ALSA: hda: fix mute led polarity for HP laptops with buggy BIOS
- Some HP laptop models do not have a properly filled OEM string used
- to set the gpio and polarity of the mute led. Make the mute led
- configuration work for this case.
- - ALSA: hda/realtek - Create "Bass Speaker" for two speaker pins
- On systems with two speaker pins, the secondary speaker pin is mostly
- assigned to a bass speaker instead of a surround. Thus it makes more
- sense to rename the control properly.
- - ALSA: hda/realtek - Don't create extra controls with channel suffix
- The multiple headphone or speaker pins are usually provided to
- output the same stream unlike line-out jacks (which are supposed
- to be multi-channel surrounds). Thus giving a mixer name like
- "Headphone Surround" is rather confusing. Instead, when multiple
- headphone volumes are available, use index with the same "Headphone"
- name.
- - ALSA: hda - Fix remaining VREF mute-LED NID check in post-3.1 changes
- - ALSA: hda - Fix GPIO LED setup for IDT 92HD75 codecs
- Some HP laptops with IDT 92HD75 codecs may use a GPIO > 4 for the mute
- LED, but currently the driver doesn't check this properly, and confuses
- the mute LED behavior. This ended up with the silent output on some
- HP laptops due to having another GPIO used as external amp control.
- This patch fixes the problem by checking the max GPIO count and
- comparing with the given value from DMI entry instead of magic fixed
- value 4 and 8, and adding a new field to indicate the VREF mute-LED
- behavior.
- Reported-and-tested-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
- - ALSA: hda/realtek - Fix Oops in alc_mux_select()
- When no imux is available (e.g. a single capture source),
- alc_auto_init_input_src() may trigger an Oops due to the access to -1.
- Add a proper zero-check to avoid it.
- - ALSA: hda - Fix S3/S4 problem on machines with VREF-pin mute-LED
- The verb command in stac92xx_post_suspend caused the audio to stop
- working after resuming from S3 mode on HP laptops with the VREF-pin
- mute-LED control. Removing relevant post_suspend registering.
- Although removing D3 on AFG is no optimal solution, the impact should
- be small in comparison with the broken S3/S4.
- - ALSA: hda - Avoid touching mute-VREF pin for IDT codecs
- Some HP laptops use a pin VREF for controlling the mute LED, and such a
- pin shouldn't be powered off.
- - ALSA: hda - Fix jack-detection control of VT1708
- VT1708 has no support for unsolicited events per jack-plug, the driver
- implements the workq for polling the jack-detection. The mixer element
- "Jack Detect" was supposed to control this behavior on/off, but this
- doesn't work properly as is now. The workq is always started and the
- HP automute is always enabled.
- This patch fixes the jack-detect control behavior by triggering / stopping
- the work appropriately at the state change. Also the work checks the
- internal state to continue scheduling or not.
- - ALSA: hda - cut and paste typo in cs420x_models[]
- The CS420X_IMAC27 was copied from the line before but CS420X_APPLE
- was clearly intented.
- - ALSA: hda/realtek - Fix missing inits of item indices for auto-mic
- When the imux entries are rebuilt in alc_rebuild_imux_for_auto_mic(),
- the initialization of index field is missing. It may work without it
- casually when the original imux was created by the auto-parser, but
- it's definitely broken in the case of static configs where no imux was
- parsed beforehand. Because of this, the auto-mic switching doesn't
- work properly on some model options.
- This patch adds the missing initialization of index field.
- Reported-by: Dmitry Nezhevenko <dion@inhex.net>
- - ALSA: hda - Fix invalid pin and GPIO for Apple laptops with CS codecs
- The PCI SSID 8086:7270 is commonly used for multiple Apple machines,
- thus we can't use it as identifier for a unique model. Because of this
- conflict, some machines show weird behavior. For example, MacBook Air
- shows Front and Surround speakers although only Surround works due to
- the wrongly overridden pin-configuration for imac27.
- This patch fixes two things:
- - Stop the wrong pin-config override of imac27 by removing PCI SSID
- entry for avoiding the wrong mappings,
- - Add the generic GPIO setup for Apple machines by checking the codec
- SSID vendor bits
- Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
- Tested-by: Dirk Hohndel <hohndel@infradead.org>
- - ALSA: hda - Check subdevice mask in snd_hda_check_board_codec_sid_config()
- In snd_hda_check_board_codec_sid_config(), not only comparing with the
- exact value but allow the bit-mask comparison for vendor-only, etc.
- Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
- Tested-by: Dirk Hohndel <hohndel@infradead.org>
- - ALSA: hda - repoll ELD content for multiple times
- Improve the one-shot ELD repoll to up to 6 retries.
- Up to now the 300ms looks sufficient for the test boxes. However
- I'm a bit worried about how well it can fit the wider user base.
- - ALSA: hda - Add pin fix for Alienware M17x R3
- Reported-by: Albert Pool <albertpool@solcon.nl>
- - ALSA: hda - Fix the connection selection of ADCs on Cirrus codecs
- spec->cur_adc isn't set until cs_capture_pcm_prepare() is called although
- the driver tries to select the connection at init time and at auto-mic
- switch. This results in the access to the widget NID 0, which is
- obviously invalid, also a wrong capture source.
- This patch fixes the issue by issuing the connect-select verb conditionally
- at appropriate places.
- Reported-and-tested-by: Dylan Reid <dgreid@chromium.org>
- - ALSA: hda - move eld->spk_alloc fixup to hdmi_update_eld()
- It looks more natural and saves two lines of code.
- - ALSA: hda - delayed ELD repoll
- The Intel HDMI chips (ironlake at least) are found to have ~250ms delay
- between the ELD_Valid=1 hotplug event is send and the ELD buffer becomes
- actually readable. During the time the ELD buffer is mysteriously all 0.
- Fix it by scheduling a delayed work to re-read ELD buffer after 300ms.
- - ALSA: hda - fix ELD memory leak
- memset(eld) clears eld->proc_entry which will leak the struct
- snd_info_entry when unloading module.
- Fix it by
- - memset only the fields before eld->eld_buffer
- - set eld->eld_valid to true _after_ all eld fields have been filled
- - ALSA: hda/realtek: remove redundant semicolon
- Having just one semicolon after a break statement is enough.
- - ALSA: hda/realtek - Move ALC885 macpro and imac24 models to auto-parser
- The ALC882 macpro and imac24 static configs can be transferred to the
- auto-parser with the additional GPIO setup.
- - ALSA: hda/realtek - Re-add the model string selection for ALC88x
- In the commit [c3e837bb: ALSA: hda/realtek - Rewrite ALC882 acer-aspire-*
- models with the auto-parser], the check of the model option got removed
- mistakenly. Re-added the board_config check again.
- - ALSA: hda/realtek - Create mono volume controls for mono-outputs
- When the pin or the DAC doesn't support the stereo, create a mono
- control instead of creating a stereo control blindly.
- - ALSA: hda - pwr_nids cleanup for IDT codecs
- Clean up and fix pwr_nids for 92HD71 / 73 / 83 family codecs; remove
- pwr_mapping which was incorrect.
- The original pwr_nids support of 92HD83xxx was incorrect and never
- actually worked before. Now we should have things working correctly
- without having to hack by DID anymore.
- It is also not necessary to explicitly turn on all the pins near the
- beginning of patch_stac92hd83xxx() now, the pins will go though
- initialization properly.
- Tested on 92HD66 / 71 / 73 / 75 / 83 / 89 / 91 demo boards.
- - ALSA: hda/realtek - Rewrite ALC882 acer-aspire-* models with the auto-parser
- Now we can move the big acer-aspire-* static quirks to the auto-paresr
- with some additional pin-configs and verbs.
- - ALSA: hda/realtek - Create multi-io jacks more aggresively
- So far the driver creates the multi-io jacks only when a single output
- jack, i.e. no multiple speakers are assigned. This patch adds the
- similar multi-io detection even with multiple speakers are assigned
- primarily, so that 5.1-speakers + HP/mic/LI combination can work.
- - ALSA: hda/realtek - Drop ALC882 desktop model quirks
- Now we're touching the desktop static configs for ALC88x codecs.
- These are mostly OK with the auto-parser, but some models need careful
- handling; ALC889 intel mobo requires the COEF setup, and W2JC needs
- GPIO1 and COEF.
- - ALSA: hda/realtek - Remove ALC882 targa-* models
- All ALC882 targa-* models can be replaced with the auto-parser just
- with the additional GPIO3 setup. And it's generically applied to all
- MSI boards unless other quirks are present.
- - ALSA: hda/realtek - Reorder alc882_fixup_tbl[]
- No, I'm not Mr. Monk, but can't resist...
- - ALSA: hda/realtek - Move ALC882 model=acer-aspire to auto-parser
- The ALC882 model=acer-aspire requires the additional COEF setup.
- - ALSA: hda/realtek - Replace ALC882 arima, medion and laptop-eapd quirks
- Move these quitks to the auto-parser. They just need some EAPD setups
- in addition.
- - ALSA: hda/realtek - Drop ALC882 asus-a7j and asus-a7m models
- These models work fine with the auto-parser with the additional COEF
- setup. The iMac 7,1 (106b:3200) also uses the same quirk, so remove it
- too.
- - ALSA: hda/realtek - Look through codec SSID for fix-up lists
- Not only PCI SSIDs but also look through codec SSIDs for fix-up table
- entries. MacBook tend to give the same PCI SSID but unique codec SSIDs.
- - ALSA: hda/realtek - Move ALC888 ASUS EEE1601 config to auto-parser
- The ASUS EEE1601 works almost fine with the auto-parser but the static
- configuration has a certain specific COEF verb. Add this to the fix-up
- list so that we can drop the whole EEE1601 static config from
- alc882_quirks.c.
- - ALSA: hda/realtek - Rewrite ALC882 model=vaio-tt with auto-parser
- Providing a pincfg fix for VAIO-TT with ALC889 codec to work with the
- auto-parser, and drop the static configuration.
- - ALSA: hda/realtek - Remove all ALC262-quirk codes
- Now that model=ultra is supported well by the auto-parser, we can get rid
- of the whole alc262_quirks.c and its related codes.
- - ALSA: hda/realtek - Add the support of shared HP/Mic
- A machine like Q1-ultra which has only a single HP but no mic-jack, we
- can re-task the headhpone as an external mic jack. This was done formerly
- in ALC262 model=ultra quirk, and now the auto-parser supports this mode.
- - ALSA: hda/realtek - Drop ALC262 model=basic static configs
- Now most of ALC262 stuff has been moved to the auto-parser, and no longer
- need for keeping model=basic.
- - ALSA: hda/realtek - Convert ALC262 model=fujitsu to auto-parser
- It works well with the auto-parse and the default BIOS setup when an
- additional COEF setup (for benq) is used.
- - ALSA: hda/realtek - Convert ALC262 benq and benq-t31 to fixup-lists
- The conversion from ALC262 model=benq and model=benq-t31 static configs
- to auto-parser requires the manual COEF setups for corresponding models.
- - ALSA: hda/realtek - Convert ALC262 lenovo-3000 quirks to fixup-list
- The static quirks for ALC262 Lenovo 3000 can be covered by the auto-
- parser with a fixup of the mic-pin to VREF50 and the additional COEF
- verb.
- - ALSA: hda/realtek - Convert ALC262 model=toshiba-rx1 to a fixup-list
- Use the auto-parser for ALC262 model=toshiba-rx1 with the fixed pin-
- configs. The BIOS table seems incorrect, so many pin entries are
- overwritten to match with the former quirk.
- - ALSA: hda/realtek - Convert alc262 model=tyan to a fixup-list
- Use the auto-parser for ALC262 model=tyan with a pin-config fix-up and
- drop the static configuration.
- - ALSA: hda - Re-enable the check NO_PRESENCE misc bit
- We disabled the check of NO_PRESENCE bit of the default pin-config
- in commit f4419172 temporarily. One problem was that the first
- implementation was wrong -- the bit after the shift must be checked.
- However, this would still give many regressions on machines with broken
- BIOS. They set this bit wrongly even on active pins.
- A workaround is to check whether all pins contain this bit. As far as
- I've checked, broken BIOSen set this bit on all pins, no matter whether
- active or not. In such a case, the driver should ignore this bit check.
- - ALSA: hda - Don't add elements of other codecs to vmaster slave
- When a virtual mater control is created, the driver looks for slave
- elements from the assigned card instance. But this may include the
- elements of other codecs when multiple codecs are on the same HD-audio
- bus. This works at the first time, but it'll give Oops when it's once
- freed and re-created via reconfig sysfs.
- This patch changes the element-look-up strategy to limit only to the
- mixer elements of the same codec.
- Reported-by: David Henningsson <david.henningsson@canonical.com>
- - ALSA: hda - fix internal mic on Dell Vostro 3500 laptop
- Fix the not working internal mic on Dell Vostro 3500 laptop by introducing the
- new model dell-vostro-3500.
- - ALSA: HDA: Remove quirk for Toshiba T110
- According to the bug reporter, model=auto is needed to make the
- internal microphone work.
- BugLink: https://bugs.launchpad.net/bugs/819699
- Reported-by: Andrej (agno01)
- - ALSA: hda - Mute unused capture sources for Realtek codecs
- When a Realtek codec has a matrix-style capture-source selection, we
- need to scan all connections instead of only imux items. Otherwise some
- input might be kept unmuted. Although the corresponding input must be
- dead so there should be no input from it, it's still safer to mute the
- route completely.
- - ALSA: hda - Fix silent output regression with ALC861
- The 3.1 kernel has a regression for ALC861 codec where no sound output
- is heard with the default setup. It's because the amps in DACs aren't
- properly unmuted while the output mixers are assigned only to pins.
- This patch fixes the missing initialization of DACs when no mixer is
- assigned to them.
- Tested-by: Andrea Iob <andrea_iob@yahoo.it>
- - ALSA: hda/realtek - Don't detect LO jack when identical with HP
- The spec->autocfg.line_out_pins[] may contain the same pins as hp_pins[]
- depending on the configuration. When they are identical, detecting the
- line_jack_present flag screws up the auto-mute because alc_line_automute()
- is called unconditionally at initialization while it won't be triggered
- by unsol events, thus the old line_jack_present flag is kept for the
- whole run.
- For fixing this buggy behavior, the driver needs to check whether the
- line-outs are really individual, and skip if same as headphone jacks.
- Reference: https://bugzilla.novell.com/show_bug.cgi?id=716104
- - ALSA: HDA: Refactor Realtek's automute
- Increase readability and understandability in the automute code.
- - ALSA: hda - Update jack-sense info even when no automute is set
- The internal states, jack_present and line_jack_present should be
- updated upon unsolicited events even if no automute is set.
- Otherwise the wrong state is referred when the automute behavior is
- changed by the mixer control.
- - ALSA: hda/realtek - Skip invalid digital out pins
- Some BIOS report invalid pins as digital output pins. The driver checks
- the connection but it doesn't do it fully correctly, and it leaves some
- undefined value as the audio-out widget, which makes the driver spewing
- warnings. This patch fixes the issue.
- Reference: https://bugzilla.novell.com/show_bug.cgi?id=727348
- - ALSA: hda/sigmatel - Automatically retrieve digital I/O widgets
- Revise stac92xx_parse_auto_config to automatically scan for digital input
- and output converters.
- - ALSA: hda - Remove unused variables
- Just clean-up what GCC caught.
- - ALSA: hda/realtek - Don't create alt-stream for capture when unnecessary
- When the driver finds multiple ADCs, it tries to create an alternative
- capture PCM stream. However, these secondary ADCs might be useless or
- in uncontrolled paths in some cases, e.g. when auto-mic or dynamic
- ADC-switching is enabled. Also, when only a single capture source is
- available, the multi-streams don't make sense, too.
- With this patch, the driver checks such condition and skips the alt
- stream appropriately.
- - ALSA: hda - Add support for 92HD65 / 92HD66 family of codecs
- These codecs have SPDIF-in, which is new to the 92HD83xxx compatible
- families, so a bit of logic is added to support them.
- - ALSA: hda - Disable power-widget control for IDT 92HD83/93 as default
- The power-widget control in patch_stac92hd83xxx() never worked properly,
- thus it's safer to turn it off as default for now.
- - ALSA: hda - Fix ADC input-amp handling for Cx20549 codec
- It seems that Conexant CX20549 chip handle only a single input-amp even
- though the audio-input widget has multiple sources. This has been never
- clear, and I implemented in the current way based on the debug information
- I got at the early time -- the device reacts individual input-amp values
- for different sources. This is true for another Conexant codec, but it's
- not applied to CX20549 actually.
- This patch changes the auto-parser code to handle a single input-amp
- per audio-in widget for CX20549. After applying this, you'll see only a
- single "Capture" volume control instead of separate "Mic" or "Line"
- captures when the device is set up to use a single ADC.
- We haven't tested 20551 and 20561 codecs yet. If these show the similar
- behavior like 20549, they need to set spec->single_adc_amp=1, too.
- - ALSA: hda - Keep EAPD turned on for old Conexant chips
- In the old Conexant chips (5045, 5047, 5051 and 5066), a single EAPD
- may handle both headphone and speaker outputs while it's assigned only
- to one of them. Turning off dynamically leads to the unexpected silent
- output in such a configuration with the auto-mute function.
- Since it's difficult to know how the EAPD is handled in the actual h/w
- implementation, better to keep EAPD on while running for such codecs.
- - ALSA: hda/realtek - Fix missing volume controls with ALC260
- ALC260 has multiple mixer widgets connected to the shared DAC, but the
- driver currently doesn't check this possibility and ignores when the DAC
- is shared with others. This resulted in the silent output from some
- routes because of lack of the amp setup.
- This patch adds the workaround for it by checking the route even with the
- shared DAC, but also checking the conflict with the existing control for
- the very same widget NID.
- Reference: https://bugzilla.novell.com/show_bug.cgi?id=726812
- - ALSA: hda - Fix pin-config for ASUS W90V
- The association numbers of surround/CLFE speaker pins aren't correctly
- mapped by the auto-parser. This patch fixes the CLFE speaker pin to the
- right assoc value (from 3 to 1).
- Tested-by: Nika Topolchanskaya <nanodesuu@gmail.com>
- - ALSA: hda - Fix surround/CLFE headphone and speaker pins order
- When 5.1 or more headphone or speaker pins are provided, the parser still
- takes as is without fixing the order of channel mapping, which leads in
- the unexpected strange channel order by surround outputs.
- This patch fixes the issue by applying the same fix-up not only to
- line_out_pins[] but also hp_pins[] and speaker_pins[].
- - ALSA: HDA: Add new revision for ALC662
- The revision 0x100300 was found for ALC662. It seems to work well
- with patch_alc662.
- BugLink: http://bugs.launchpad.net/bugs/877373
- Tested-by: Shengyao Xue <Shengyao.xue@canonical.com>
- - ALSA: hda/realtek - Fix DAC assignments of multiple speakers
- When a device has multiple speakers and still has the auto-mute support,
- the driver copies line_outs[] to speaker_outs[]. And then it tries to
- assign DACs for both. This ended up with the assignment only to the
- primary DAC to all speakers.
- This patch fixes the situation by checking the duplicated LO/SPK case
- appropriately.
- - ALSA: HDA: conexant support for Lenovo T520/W520
- This is patch for Conexant codec of Intel HDA driver, adding new quirk
- for Lenovo Thinkpad T520 and W520. Conexant autodetection works fine for
- T520 (similar subsystem ID is used also in W520 model) and detects more
- mixer features compared to generic (fallback) Lenovo quirk with
- hardcoded options in Conexant codec.
- Patch was activelly tested with Linux 3.0.4, 3.0.6 and 3.0.7 without any
- problems.
- - ALSA: hda/realtek - Cache COEF 0 value
- The COEF #0 value represents a sort of device id, so it's supposedly
- constant while operation. Better to use the cached value instead of
- reading it at each time from the performance POV.
- - ALSA: hda/realtek - Clean up codec renames
- Use a static table for detecting the codec renames.
- Also clean up the error paths in each patch_*() function.
- - ALSA: hda/realtek - Use alc_codec_rename()
- Replaced with alc_codec_rename() in all possible places.
- - ALSA: hda - ALC888S-VC remark to ALC886
- - ALSA: hda/realtek - Check the error from alc_codec_rename()
- Should be a rare case, but...
- - ALSA: HDA: Fixup Realtek headphone pin initialization
- This typo caused headphone pins not to be initialized correctly.
- BugLink: https://bugs.launchpad.net/bugs/871582
- Reported-by: Effenberg
- - ALSA: hda - Remove bad code for IDT 92HD83 family patch
- The purpose of this patch is to remove a section of "bad" code that
- assigns the last DAC to ports E or F in order to support notebooks
- with docking in earlier days, around ALSA 1.0.19 - 21. This is not
- necessary now and actually breaks some configurations that use these
- ports as other devices. This have been tested on several different
- configurations to make sure that it is working for different combinations.
- - ALSA: hda/realtek - Choose more cleverly the primary outputs
- When the speaker outputs are more than the headphone outputs, it implies
- that the system has surround speakers while the headphones are only for
- monitoring the front. In such a case, it's better to put speakers as
- the primary outputs so that the driver can build up and keep the
- surround setup. Otherwise the system will pick up the headphone as
- primary, and offers less channels than the speakers do support.
- - ALSA: hda - Moved snd_print_pcm_rates() back into hda_proc.c
- Since hda_proc.c is now the only user of snd_print_pcm_rates(), better to
- put it back locally to hda_proc.c and revert to the old style.
- - ALSA: hdmi: fix printout of SAD sampling rates
- SAD sampling rate information reported in
- /proc/asound/cardX/eldX is incorrect due to a mismatch
- between HDA and HDMI frequencies. Add new routine to provide
- relevant values.
- - ALSA: jack - Add "Line In" input jack constants
- Similar to Line Out, these constants form the base for future
- patches enabling input jack reporting for Line in jacks.
- - ALSA: HDA: Fix DAC assignment for secondary headphone on Sigmatel/IDT
- If we run out of DACs when trying to assign a DAC to a secondary
- headphone, prefer the DAC of the first headphone to the primary
- (usually line out) DAC.
- BugLink: http://bugs.launchpad.net/bugs/845275
- - ALSA: HDA: Fix naming of input jacks for IDT parser
- The Sigmatel/IDT parser should have the same naming convention
- for input jacks as the other codecs have.
- BugLink: http://bugs.launchpad.net/bugs/859704
- - ALSA: hda/hdmi: expose ELD control
- Applications may want to read ELD information to
- understand what codecs are supported on the HDMI
- receiver and handle the a-v delay for better lip-sync.
- ELD information is exposed in a device-specific
- IFACE_PCM kcontrol. Tested both with amixer and
- PulseAudio; with a corresponding patch passthrough modes
- are enabled automagically.
- ELD control size is set to zero in case of errors or
- wrong configurations. No notifications are implemented
- for now, it is expected that jack detection is used to
- reconfigure the audio outputs.
- - ALSA: hda:via - Skip creations of empty PCM streams
- If no analog I/O is defined, skip creating the corresponding PCM stream.
- - ALSA: hda - Avoid unnecessary verbs to clear PCM formats
- Since really_cleanup_stream() is called from both purity_inactive_streams()
- and hda_cleanup_all_streams(), the verbs to clear the PCM channel and
- format may be called multiple times unnecessarily.
- This patch adds checks to skip these unneeded verbs.
- - ALSA: hda/realtek - Avoid bogus HP-pin assignment
- When the headphone pin is assigned as primary output to line_out_pins[],
- the automatic HP-pin assignment by ASSID must be suppressed. Otherwise
- a wrong pin might be assigned to the headphone and breaks the auto-mute.
- Reference: https://bugzilla.novell.com/show_bug.cgi?id=716104
- - ALSA: HDA: No power nids on 92HD93
- This patch is necessary to make internal speakers work on this chip.
- BugLink: http://bugs.launchpad.net/bugs/854468
- Tested-by: Alex Wolfson <alex.wolfson@canonical.com>
- - ALSA: HDA - Add Independent Headphone for all models of ad1988/ad1989
- - Add "AD198x Headphone" playback device for independent headphone playback
- while playing 7.1 surround using rear panel audio jacks.
- - Remove "6stack-dig-fp" model since "Headphone Playback Volume" control using
- DAC0 instead of DAC1 (HDA_FRONT) was already added to all models.
- - Add "Independent HP" switch to enable/disable this playback device.
- When the switch is OFF, headphone use "copy front" mode to get the front
- channel as the green jack.
- When the switch is ON, you can play stereo sound through "AD198x Headphone"
- device to headphone while playing 7.1 surround sound through "AD198x Analog"
- device.
- The switch cannot be changed when either "AD198x Headphone" or "AD198X Analog"
- is open.
- - ALSA: hda: hdmi: Hint matching between input devices and pcm devices
- Since modern HDMI cards often have more than one output pin and thus
- input device, we need to know which one has actually been plugged in.
- This patch adds a name hint that indicates which PCM device is connected
- to which pin.
- - ALSA: HDA: Add support for IDT 92HD93
- BugLink: http://bugs.launchpad.net/bugs/854468
- - ALSA: hda/realtek - Fix auto-mute with HP+LO configuration
- When the system has only the headphone and the line-out jacks without
- speakers, the current auto-mute code doesn't work. It's because the
- spec->automute_lines flag is wrongly referred in update_speakers().
- This flag must be meaningless when spec->automute_hp_lo isn't set, thus
- they should be always coupled.
- The patch fixes the problem and add a comment to indicate the
- relationship briefly.
- BugLink: http://bugs.launchpad.net/bugs/851697
- Reported-by: David Henningsson <david.henningsson@canonical.com>
- Tested-By: Jayne Han <jayne.han@canonical.com>
- - ALSA: HDA: Cirrus - fix "Surround Speaker" volume control name
- This patch fixes "Surround Speaker Playback Volume" being cut off.
- (Commit b4dabfc452a10 was probably meant to fix this, but it fixed
- only the "Switch" name, not the "Volume" name.)
- - ALSA: hda - Terminate the recursive connection search properly
- The recursive search of widget connections in snd_hda_get_conn_index()
- must be terminated at the pin and the audio-out widgets. Otherwise
- you'll get "too deep connection" warnings unnecessarily.
- Reported-by: Francis Moreau <francis.moro@gmail.com>
- - ALSA: hda - Add Headphone Playback Volume control for ad1988/ad1989
- - use DAC0 instead of DAC1 for Port-A Headphone
- - assign 0x03 to spec->multiout.hp_nid except model="6stack-dig-fp"
- - ALSA: hda: Conexant: Allow different output types to share DAC
- Headphones has stopped working for the original reported (a regression
- compared to 2.6.38). This is because Speaker and Headphones share the
- same DAC, in which case no Headphones volume control was created.
- This patch fixes so that both Speaker and Headphones volume
- controls are created in such scenario.
- BugLink: http://bugs.launchpad.net/bugs/817943
- - ALSA: hda - Remove the rest of ALC662 quirks
- The rest of ALC662 quirks are only for desktops, and they should work
- with the auto-parser.
- - ALSA: hda - Prefer multi-io to speakers for realtek auto-parser
- When the multi-io jacks are available, parse them first and assign DACs
- before parsing speakers and headphones. This allows a better chance of
- surround I/O in some desktops and laptops with limited DACs.
- - ALSA: hda - Fix Center/LFE mixer element creations for Realtek
- The commit 23c09b00900c3fa6672148738cad29d6fc6ded7c
- ALSA: hda - Support multiple speakers by Realtek auto-parser
- changes the return value from alc_get_line_out_pfx(), and it breaks
- the center/LFE mixer split check. The caller must test with a string
- "CLFE" now.
- - ALSA: hda - Rewrite Lenovo X200 quirk with pincfg-fix using auto-parser
- Introduce the pincfg table to patch_conexant.c for fixing up the extra
- pin-configuration for auto-parser. As an example, Lenovo X200 model is
- replaced with this new mechanism. (This also fixes the wrong mixer
- elements for docking-station I/O in the previous model quirk
- automagically.)
- - ALSA: hda/conexant - Enable ADC-switching for auto-mic mode, too
- The ADC-switching can work also in the auto-mic mode, too.
- - ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&co quirks with fixups
- Similarly like ALC662 asus-mode* models, rewrite the laptop-amic and
- dmic models with the static pin-config tables.
- Now we can get rid of all alc269_quirks.c.
- - ALSA: hda - Rewrite ALC662 asus-mode* models with fixups
- Re-implement the asus-mode[1-8] quirks with the pin-config tables.
- They are provided in case where BIOS is broken on the device, so it's
- not enabled in PCI SSID lookup table. User needs to specify it via model
- option explicitly if the driver doesn't work with the BIOS setup as is.
- - ALSA: hda - Support multiple headphones in Realtek auto-parser
- - ALSA: hda - Add multi-headphone NIDs in multiout struct
- For supporting both the multiple headphones and the multiple speakers,
- add the new field in struct hda_multi_out, and evaluate in the standard
- setup functions.
- - ALSA: hda - Remove all ALC861 and ALC861-VD quirks
- Let's remove the rest of ALC861 and ALC861-VD quirks.
- If any breakage is found, it can be fixed easily via the pin-config
- table update.
- - ALSA: hda - Restore VREF50 setup for ALC861-VD dallas/hp models
- During the cleanup by commit 6727b12669f255dbf65b3d63c32cce1e3e967398,
- the specific setups for dallas and hp models, using VREF50 for mic pins,
- were lost. Fixed now.
- - ALSA: hda - Rename to snd_hda_parse_pin_defcfg()
- ... and add a new bit-flags argument to specify the behavior of the
- function. The older function is kept as is (as a wrapper).
- - ALSA: hda - Fix initialization of multi-speaker output paths for Realtek
- - ALSA: hda - Fix double-headphone/speaker paths for Cxt auto-parser
- When multiple headphones or speakers are assigned but no individual
- DACs are available, the driver should take the first HP/SPK DAC instead
- of another primary output. The patch adds a bit-flag to dac field of
- struct pin_dac_pair indicating that it's a slave DAC.
- - ALSA: hda - Fix output-path initialization for Realtek auto-parser
- When the headphone or speaker output has no own DAC, initialize the path
- using the primary DAC. Otherwise the path won't be set properly and
- can result in the silence.
- - ALSA: hda - Fix error check from snd_hda_get_conn_index() in patch_cirrus.c
- snd_hda_get_conn_index() returns a negative value while the current code
- stores it in an unsigned int. It must be stored in a signed integer.
- Reported-by: Jesper Juhl <jj@chaosbits.net>
- - ALSA: hda - Allow different assoc numbers for multiple speakers
- In snd_hda_parse_pin_def_config(), we checked the associated number
- of speaker pins and accepts only one number exclusively. But many BIOS
- seem to give different assoc number for surround speakers, thus we'd
- better to accept all speaker pins no matter which assoc number, and sort
- like done for the headphone pins.
- - ALSA: hda - Support multiple speakers by Realtek auto-parser
- Add the support of multiple speakers by Realtek auto-parser.
- When all speaker pins have individual DACs, create each speaker volume
- control. Otherwise, create a bind-volume control for all speaker outs.
- - ALSA: hda - Remove ALC662 eeepc-p701 and ecs models
- These are confirmed to work with the auto-parser with pincfg fixups.
- - ALSA: hda - Remove ALC268 model quirks
- Get rid of the rest of ALC268 model quirks. They are all confirmed to
- work with the auto-parser, too.
- - ALSA: hda - Replace ALC269 quanta and lifebook models with fixups
- Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook
- specific COEF and pin configurations. Removed the model entries
- from alc269_quirks.c.
- - ALSA: hda - Add "PCM" volume to vmaster slave list
- The new parser may use "PCM" volume, but it was missing the vmaster
- slave list, thus "Master" volume didn't control it.
- Reference: https://bugzilla.kernel.org/show_bug.cgi?id=41342
- - ALSA: hda - Remove ALC680 model quirks
- The auto-parser works fine.
- - ALSA: hda - Remove ALC268 Dell, Toshiba and Zapto model quirks
- These models work fine with the BIOS auto-parser.
- - ALSA: hda - Add snd_hda_override_pin_caps() helper function
- - ALSA: hda - Add tracepoint for unsolicited events
- - ALSA: hda - Add basic tracepoints
- Add a few tracepoints to HD-audio driver.
- - ALSA: hda - Add CONFIG_SND_HDA_POWER_SAVE to stac_vrefout_set()
- In commit 45eebda7, it add new function stac_vrefout_set, but it
- is only used in code between CONFIG_SND_HDA_POWER_SAVE macro, so
- add the macro to avoid such warning:
- sound/pci/hda/patch_sigmatel.c:676:12: warning: 'stac_vrefout_set' defined but not used
- - ALSA: hda - Fix a complile warning in patch_via.c
- sound/pci/hda/patch_via.c:2087: warning: 'dac' may be used uninitialized in this function
- - ALSA: hda - Fix digital-mic mono recording on ASUS Eee PC
- The digital-mic unit on ASUS Eee PC gives PDM signals instead of the
- normal stereo PCM, thus you can't record a mono stream from the stereo
- stream as is; the summed stereo signal results in almost zero level, and
- you'll hear only soft noise.
- As a workaround, use ALC269-specific COEF to manipulate the dmic route
- for mono, like used for ALC271x. This is implemented as a fix-up, thus
- it works only with model=auto or without REALTEK_QUIRKS Kconfig.
- Reported-and-tested-by: Pavel Roskin <proski@gnu.org>
- - ALSA: hda - Fix duplicated DAC assignments for Realtek
- Copying hp_pins and speaker_pins from line_out_pins may confuse the
- parser, and it can lead to duplicated initializations for the same pin
- with a wrong DAC assignment. The problem appears in 3.0 kernel code.
- - ALSA: hda - Fix Oops with Realtek quirks with NULL adc_nids
- Somce quirk models don't set adc_nids but let the parser filling it.
- But the recent code has unnecessary NULL-checks of spec->input_mux,
- and it resulted in NULL dereferences.
- This patch fixes that regression.
- Reported-and-tested-by: Oliver Neukum <oneukum@suse.de>
- - ALSA: hda - Add support for vref-out based mute LED control on IDT codecs
- This patch also registers all necessary callbacks to support mute LED
- only when such control is enabled. And it keeps codec AFG in D0 or D1
- state all the time when aggressive power managemnt is enabled for vref-out
- control (and mute LED) work correctly.
- - ALSA: hda - Cirrus Logic CS421x support
- This update includes the changes necessary for supporting the
- CS421x family of codecs. Previously this file only supported
- the CS420x family of codecs.
- This file also contains init verbs to correct several issues in
- the CS421x hardware.
- Behavior between the CS421x and CS420x codec families is similar,
- so several functions have been reused with "if" statements to
- determine which codec family (CS421x or CS420x) is present.
- Also, this file will be updated sometime in the near future in
- order to add support for a system using CS421x that requires
- mono mix on the speaker output only.
- [Fix const usages and adaption for new APIs by tiwai]
- - ALSA: hda - Allow codec-specific set_power_state ops
- The procedure for codec D-state change may have exceptional cases
- depending on the codec chip, such as a longer delay or suppressing D3.
- This patch adds a new codec ops, set_power_state() to override the system
- default function. For ease of porting, snd_hda_codec_set_power_to_all()
- helper function is extracted from the default set_power_state() function.
- As an example, the Conexant codec-specific delay is removed from the
- default routine but moved to patch_conexant.c.
- - ALSA: hda - Add post_suspend patch ops
- Add a new ops, post_suspend(), which is called after suspend() ops is
- performed. This is called only in the case of the real PM suspend, and
- the codec driver can use this for further changing of D-state or
- clearing the LED, etc.
- - ALSA: hda - Make CONFIG_SND_HDA_POWER_SAVE depending on CONFIG_PM
- It makes little sense to enable power-saving without PM.
- This removes SND_HDA_NEEDS_RESUME define so that we can use CONFIG_PM
- in all places.
- - ALSA: hda - Make sure mute led reflects master mute state
- This patch adds checking of mute state on all outputs besides just
- speakers to calculate the master mute state for mute led support.
- It also renames and splits the function that does it for better code
- clarity.
- - ALSA: hda - Fix invalid mute led state on resume of IDT codecs
- Codec state is not restored immediately on resume but on the first
- access when power-save is enabled. That leads to an invalid mute led
- state after resume until either sound is played or some control is
- changed. This patch adds a possibility for a vendor specific patch to
- restore codec state immediately after resume if required. And it adds
- code to restore IDT codecs state immediately on resume on HP systems
- with mute led support.
- - ALSA: hda - Add support of the 4 internal speakers on certain HP laptops
- - ALSA: hda - Fix DAC filling for multi-connection pins in Realtek parser
- Fix a regression in the DAC filling code in patch_realtek.c. The already
- filled DACs in multiout.dac_nids[] were ignored because of num_dacs=0,
- thus always pointed to the first DAC.
- - ALSA: hda - Remove a superfluous argument of via_auto_init_output()
- "force" argument is always true, so let's strip it off.
- - ALSA: hda - Fix indep-HP path (de-)activation for VT1708* codecs
- This patch fixes non-working indep-HP control on VT1708* codecs.
- The problems are that via_independent_hp_put() wasn't fixed to follow
- the recent change of three HP paths, and hp_indep_path didn't contain
- the amp nids of mixer elements.
- Together with the fixes, a few code clean-ups are done.
- - ALSA: hda - Fix a compile error in patch_ca0132.c for the recent SPDIF change
- - ALSA: hda - Switch HP DAC dynamically with indep-HP switch for VIA
- This patch changes the behavior of independent-HP enum switch. Now
- instead of returning a busy error, the driver switches dynamically the
- stream of the HP (and shared) DACs according to the current mode.
- The logic is similar like the dual-mic ADC switch, but a bit more
- complicated because of the presence of shared DAC.
- Together with the change, a mutex is introduced to protect against the
- possible races for the indep-HP mode setting.
- - ALSA: hda - Implement dynamic loopback control for VIA codecs
- This patch adds the dynamic control of analog-loopback for VIA codecs.
- When the loopback is enabled, the inputs from line-ins and mics are
- mixed with the front DAC, and sent to the front outputs. The very same
- input is routed to the headhpones and speakers in loopback mode.
- However, since the loopback mix can't take other than the front DAC,
- there is no longer individual volume controls for headphones and
- speakers. Once when the loopback control is off, these volumes take
- effect.
- Since the individual volumes are more desired in general use caess, the
- loopback mode is set to off as default for now.
- - ALSA: hda - Fix krealloc() replacement in hda_codec.c
- It was obviously wrong, grr....
- - ALSA: hda - Re-add need_dac_fix check for multi-io jacks of Realtek codecs
- During the rewrite, the check of spec->need_dac_fix and the corresponding
- num_dacs change was dropped from the channel-mode control.
- This patch re-adds it, and also enables need_dac_fix for ALC880 as default,
- as this feature was originally introduced to fix h/w bugs of this chip.
- - ALSA: Use krealloc() in possible places
- - ALSA: hda - Expose secret DAC-AA connection of some VIA codecs
- VT1718S and co have a secret connection from DAC to AA-mix, which
- doesn't appear in the connection list obtained from the h/w.
- Currently the driver fixes the connection index locally at init, but
- now we can expose it statically via snd_hda_override_connections()
- so that this conection can be checked better by the parser in future.
- - ALSA: hda - Always read raw connections for proc output
- In the codec proc outputs, read the raw connections instead of the
- cached connection list, i.e. proc files contain only raw values.
- - ALSA: hda - Add snd_hda_override_conn_list() helper function
- Add a function to add/modify the connection-list cache entry.
- It'll be useful to fix a buggy hardware result.
- - ALSA: hda - Turn on extra EAPDs on Conexant codecs
- Some machines seem to use EAPD control of the unused pin for controlling
- the overall EAPD. Since the driver currently doesn't check the EAPD of
- unused pins, the EAPD isn't enabled. For avoiding such a problem, turn
- all extra EAPDs on as default.
- - ALSA: hda - Preserve input pin-ctl bits in HP-automute for VIA codec
- For smart51 pins, we need to preserve the input pin-control bits at
- auto-mute controls instead of overwriting zero or pin-out-only.
- Otherwise the VREF won't be set properly when smart51 is disabled
- again.
- - ALSA: hda - Set line-out pin-ctls properly when indep-HP mode changes
- When Independent-HP mode is changed for VIA, the driver needs to
- re-issue the auto-mute check so that the line-out pins are set properly
- without influence of HP pin state.
- - ALSA: hda - Via Fix speaker-mute checks in VIA driver
- When the line-jack is plugged/unplugged, the driver must check also
- the headphone jack state in addition to the line-out jack. Currently
- it checks only the line-out state and ignores the headphone.
- - ALSA: hda - Implement 44kHz workaround for IdeadPad as fixup
- Instead of checking the model quirk, use a fixup table for workaround
- of 44kHz-fixed PCM for Lenovo IdeaPad with ALC269.
- - ALSA: hda - Merge alc*_parse_auto_config() functions in patch_realtek.c
- Now all alc*_parse_auto_config() do almost same thing except for the
- NID list to ignore and the PINs for SSID-check, we can merge all these
- to a single function. A good amount of code reduction.
- - ALSA: hda - Merge ALC260 auto-parser code
- Finally the last one.
- - ALSA: hda - Merge ALC269 parser code
- One more code reduction. This codec has less DACs, thus the wiring
- to DAC can't be filled uniquely for all output pins, i.e. some outputs
- share the same volume control.
- Except for that, all seems working fine.
- - ALSA: hda - Merge ALC268/269 auto-parser codes
- Now coming to ALC268/269 parser codes.
- - ALSA: hda - Merge ALC861 auto-parser code
- Merge more auto-parser code in patch_realtek.c, now for ALC861.
- The topology of this codec is pretty simple, and can be parsed well
- by the current starndard parser.
- - ALSA: hda - Fix amp-cap checks in patch_realtek.c
- query_amp_caps() may return non-zero if the amp cap isn't supported
- by the codec. Thus one needs to check widget-caps first, then check
- the corresponding amp-caps.
- - ALSA: hda - Merge ALC861-VD auto-parse to the standard parser
- The existing standard auto-parser can work well with this codec, too.
- Let's merge.
- - ALSA: hda - Fix auto-mic detection in Realtek codec-parser
- A regression fix from commit 21268961d3d1bbdd22a19b68adb80119e8c72dcd
- ALSA: hda - More flexible dynamic-ADC switching for Realtek codecs
- The auto-mic wasn't detected properly when no ADC-switch is needed.
- - ALSA: hda - Fix output-path of VT1812 codec
- For VT1812, add dac_mixer_idx for initialization.
- - ALSA: hda - Fix Oops in smart51 parsing in VIA codec
- Typical off-by-one thinko.
- - ALSA: hda - Provide the standard auto_init for Realtek codecs
- Remove redundant definitions. Ideally, all init functions should be
- identical in future.
- - ALSA: hda - Merge ALC680 auto-parser to the standard parser
- Improved the standard Realtek auto-parser to support the codec topology
- like ALC680.
- - ALSA: hda - Add a fix-up for HP RP5800
- The BIOS provides bogus pin configs, and also invalid SSID.
- - ALSA: hda - Fix Independent-HP detection on VT2002P/1802/1812 codecs
- For VT2002P, VT1802 and VT1812 codecs, to create Independent HP
- control.
- - ALSA: hda - Fix DAC checks for VT2002P/1802/1812 codecs
- For VT2002P, VT1802 and VT1812 codecs, there're only two DACs. So smart51
- control shouldn't be created.
- - ALSA: hda - Fix VIA output-path init for VT2002P/1802/1812
- For VT2002P, VT1802 and VT1812 codecs, the original activate_output_path()
- function can't initialize output and hp path correctly, since mixers connected to
- output pin widgets are not considered. So modify the activate_output_path()
- function to satisify this kind of codec.
- - ALSA: hda - Split quirk codes from patch_realtek.c
- Put the all static quirk codes out of patch_realtek.c, split into the
- file for each codec model. For controlling the build of quirk codes,
- a new Kconfig, CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS is introduced.
- By setting this off, all quirk codes won't be built, thus you can save
- lots of memory.
- The codes in patch_realtek.c are also shuffled and more comments are
- given, but the contents aren't changed. This is just a refactoring.
- - ALSA: hda - Use common paser for digital I/O for ALC260
- Avoid open-codes.
- - ALSA: hda - More flexible dynamic-ADC switching for Realtek codecs
- This patch changes the auto-parser and the auto-mic handling codes to
- allow more flexible dynamic ADC-switching with Realtek codecs.
- In the new code, the following strategy is taken:
- - When a cap-src can't handle all input-sources, either skip it, or
- switch to the ADC-switching mode. In ADC-switching mode, like the
- former dual-ADC mode for ALC275, it changes ADC on the fly according
- to the current input source.
- - When auto-mic is possible, always assign imux. If the mic pins are
- set statically via a quirk, rebuild imux according to the pins.
- In the auto-mic mode, the driver always changes the imux (although
- the imux isn't exposed as a mixer element).
- - ALSA: hda - Fix warning with ALC882 digital-out detection
- The digital out pin on ALC882 may have multiple connections.
- - ALSA: hda - Clean-up PCM assignments in patch_realtek.c
- Instead of assigning each default hda_pcm_stream pointers, do NULL-checks
- and assign default values in alc_build_pcms().
- - ALSA: hda - Unify alc*_auto_init_input_src() in patch_realtek.c
- The only different implmentation was alc880_auto_init_input_src(),
- and now it covers this variant, and we can use the single function
- for all codecs.
- - ALSA: hda - Parse ADCs and CAPSRCs dynamically for Realtek auto-parser
- Now with the new code for looking for ADCs and MUXs, we can replace
- the whole ADC assignment with the parsed results.
- - ALSA: hda - Unify alc_auto_init_analog_input() calls
- All alc*_auto_init_analog_input() calls are identical, so let's use
- the same function more clearly without aliases.
- - ALSA: hda - Parse ADCs in alc_auto_create_input_ctls()
- Parse ADCs and cap-srcs in alc_auto_create_input_ctls() by itself
- instead of passing explicitly from the caller. By this change, all
- alc*_auto_create_input_ctls() can be unified to the same calls.
- - ALSA: hda - Code consolidation for ALC88x and ALC662 auto-parsers
- Use the same common code for auto-parsing the output paths and their
- initializations, based on the existing ALC662 code, which is smarter
- than the old ALC880/2 code.
- - ALSA: hda - Create bind-mutes appropriately for ALC662 auto-parser
- When multiple inputs are present on the mixer widget (typically a DAC
- and a loopback), mute/unmute both inputs with the corresponding mixer
- element.
- - ALSA: hda - Initialize DACs in ALC662 auto-parser mode
- The initialization of DACs was missing in ALC662 parser code.
- - ALSA: hda - Parse HP and speaker DACs even for multi connections for ALC662
- In alc662_auto_fill_dac_nids(), the HP and speaker DACs aren't parsed
- when the corresponding pins aren't fixed with single DACs.
- Now check these DACs even for non-fixed pins.
- - ALSA: hda - Add Realtek ALC269VC codec support
- Add the support of ALC269VC codec.
- Also delete the unnecessary codec_variant type enum list:
- now only three variants (ALC269VA ALC269VB ALC269VC) are needed.
- In addition, added some aliases:
- - Add ALC269VB alias name ALC277
- - Add ALC269VC alias name ALC259 ALC281X
- - Add ALC269VC for Lenovo device 0x21f3 name ALC3202
- - ALSA: hda - Don't add aa-mix for VIA surrounds
- Since we now route the front DAC via aa-mix widget, adding the aa-mix
- to surrounds will result in a mix-up of both front and surround PCM
- signals. For avoiding this, the aa-mix routes have to be disabled
- for surround paths.
- - ALSA: hda - Create HP-vol control properly for VIA codecs
- When the individual DAC is available for the headphone output, the driver
- should create the DAC for its volume control.
- - ALSA: hda - Define some constants in patch_via.c
- - ALSA: hda - Fix invalid multi-channel amplifiers for VT1718S
- For VT1718S, the multi-channel path should be like following:
- DAC 0-->Mixer 9(index 5)-->Mixer 0(index 1)-->Front Pin;
- DAC 1-->Mixer 1(index 0)-->Surround Pin;
- DAC 2-->C/LFE Pin;
- DAC 3-->Mixer 2(index 0)-->Side Pin;
- But current code built Surround and Side path through index 1 of
- Mixer 1 and 2. So Adjusting Surround and Side channel amplifier is
- invalid. This patch fixes the issue.
- - ALSA: hda - Fix issue that front can't output sound for VT1718S
- For VT1718S, Mixer 9 doesn't expose the connection to DAC 0. So when
- building up a 'PCM Playback' amplifier control, it will fail since
- getting DAC 0 index of Mixer 9 returned -1. So I added a dac_mixer_idx
- to indicated the actual index of DAC 0 to Mixer 9. Following is the
- patch and next mail is another.
- - ALSA: hda - Fix the silent front with independent-HP for VIA codecs
- Unmute DAC on front speaker path when Independent HP is enabled.
- When to enable Independent HP, the front speaker won't output any sound
- for VT1708, VT1708B, VT1708S and VT1702.
- I find the via_independent_hp_put() routine will mute DAC 0 path in Mixer 0.
- For these codecs, when using Independent HP, there could have two
- independent streams, one is from DAC0-->Mixer0-->Front Pin, the other is
- from DAC3-->GainSW3-->Side Pin.
- So I added a check for DAC-->Mixer path in activate_output_path().
- If current path is DAC-->Mixer, no need to mute DAC index in Mixer.
- In fact, to change connection of Headphone pin or Mux connected with HP
- is enough.
- - ALSA: hda - Fix missing initialization in alc662 auto-parser
- A missing initialization resulted in wrong DAC assignments in
- ALC662 (and other) auto-parsers.
- - ALSA: hda - Re-implementation of VIA Independent-HP sharing with side stream
- This patch adds the re-implementation of Independent-HP mode in the
- case where the DAC is shared between HP and side-channel streams.
- Now the driver tries to parse the output-path using the pre-parsed
- side-channel DAC for the independent HP output, too.
- When a playback PCM stream is opened with this shared mode, the
- Independent-HP mixer switch can't be changed for avoiding the conflict,
- thus it returns -EBUSY error.
- One remaining unintuitive issue is that the DAC volume is still
- controlled as "Side" volume although it's shared by both independent-HP
- and side streams.
- - ALSA: hda - Fix jack-detection on non-VT1708 VIA codecs
- Move codec init verb which is only applicatable for VT1708.
- I've found the root cause that jack plugged in can't be detected.
- The verb in vt1708_init_verbs is used to power down jack detect circuit.
- This verb is only applicable to VT1708. vt1708 didn't implement jack
- detect function in hardware, so we should shut down this function to
- avoid noise. But for other codecs, hardware implement jack detect
- function. If sending this verb during initialization, jack detect will
- be invalid. So I move this verb from via_parse_auto_config() to
- patch_vt1708().
- - ALSA: hda - Fix unused variable warning
- sound/pci/hda/patch_cmedia.c: In function ‘cmi9880_fill_multi_init’:
- sound/pci/hda/patch_cmedia.c:401:15: warning: unused variable ‘len’
- - ALSA: hda - Enable auto-parser as default for Conexant codecs
- Let's use auto-parser as default now.
- - ALSA: hda - Create snd_hda_get_conn_index() helper function
- Create snd_hda_get_conn_index() helper function for obtaining the
- connection index of the widget. Replaced the similar codes used in
- several codec-drivers with this common helper.
- - ALSA: hda - Fix unsol event initializations for VIA codecs
- Fix a issue to enable unsolicited response to line-out pins.
- - ALSA: hda - Fix warnings with CONFIG_SND_POWER_SAVE=n
- Use static inline for dummy function to fix the warnings like below
- sound/pci/hda/patch_sigmatel.c: In function ‘stac92xx_init’:
- sound/pci/hda/patch_sigmatel.c:4387:3: warning: statement with no effect
- sound/pci/hda/patch_sigmatel.c: In function ‘stac92xx_resume’:
- sound/pci/hda/patch_sigmatel.c:4927:3: warning: statement with no effect
- - ALSA: hda - More volume-init fixes for ALC267 codec
- More similar fixes like previous commits: handle the exceptional case
- like ALC267 where no volume amp is found in ADC widget but in the
- capsrc widget instead.
- Also minor checks for avoiding possible erros: no connection-select
- when the pin has a single selection, and add beep verbs only when the
- 0x1d is used for beep.
- - ALSA: hda - Fix volume-init for ALC259 with invalid widget caps
- ALC259 seems to provide an invalid widget capability for the input-src
- selector widget. The widget shows the input-amp while it's a selector,
- and this confuses the current ALC882 initialization code that is used
- for ALC259, too. For fixing this, check the amp capability and handle
- the connection selection individually.
- Also, ALC259 has no mute bit in DAC volume, so we need to initialize
- it as ZERO instead of MUTE.
- - ALSA: hda - Fix volume-init of ALC299 & co
- ALC269 and compatible codecs have the output volume in DACs, thus we
- can't use the ALC880's code as is. Fixed by checking the amp caps and
- picking up the right widget for initialization.
- - ALSA: hda - Simplify EAPD control in patch_realtek.c
- Look through the known NIDs that may have EAPD capabilities and turn
- on/off them appropriately instead of checking the individual vendor ids.
- This will also avoid the forgotten entries of newly added codec ids
- in future.
- - ALSA: hda - Fix auto-init of output volumes of Realtek codecs
- Fix the regression introduced by the commit
- 1f0f4b8036b1fe1347cb4f1f199601b87de9be46
- ALSA: hda - Reduce static init verbs for Realtek auto-parsers
- The input amps of mixer widgets should be unmuted as default (as
- usually they have no assigned mixer switches).
- More fixes in this commit are, however, for ALC260: ALC260 codec can
- have multiple output mixers connnected to a single DAC althouh the
- driver didn't pick up them properly.
- - ALSA: hda - Check hard-wired DACs at first for ALC662 & co
- Some Realtek codecs have the output pins hardwired with certain DACs.
- These DACs have to be assigned at first and assign the rest for
- multi-DAC pins so that all DACs can be assigned properly.
- Without such an optimization, speaker outputs may be assigned to the
- same DAC as the headphone or others.
- - ALSA: hda - Call proper DAC-filler function for Realtek auto-parser
- In alc_auto_add_multi_channel_mode(), when the primary HP workaround
- is enabled, it re-initializes the DAC list but calls alc662's function
- in a fixed way. This isn't pretty suitable for other codecs, of course.
- Now we call it with fill_dac function pointer so that the proper
- function can be called at that point.
- - ALSA: hda - Reduce static init verbs for Realtek auto-parsers
- Instead of using fixed init verbs, initialize DACs, ADCs and mixers
- more dynamically for Realtek auto-parsers.
- - ALSA: hda - Add snd_hda_get_conn_list() helper function
- Add a new helper function snd_hda_get_conn_list().
- Unlike snd_hda_get_connections(), this function doesn't copy the
- connection-list but gives the raw pointer for the cached list.
- - ALSA: hda - Use alc_get_pfx_name() for all Realtek codecs
- - ALSA: hda - Clean up multi-channel mixer name assignment in patch_realtek.c
- Change alc_get_line_out_pfx() in patch_realtek.c to provide the channel
- specific name and assign the index so that each caller doesn't have to
- set the channel name by itself.
- Also, check the multi-io case with the primary hp-out; for the multi-io
- channels, assign the channel name instead of "Headphone" with indices.
- This makes the mixer names more intuitive and reduces confusion.
- - ALSA: hda - Add a workaround for invalid line-out setups
- Some BIOS set up the pin config wrongly as line-out although it's
- supposed to be a speaker out. In most cases, though, we can judge
- the validity by checking the connection type -- when it's FIXED,
- mostly it's an invalid line-out but a speaker.
- - ALSA: hda - Allow multi-io with HP output for ALC662 & co
- Even if the machine has no line-out but only HP-out, try to detect the
- multi-io. It'll allow more possibilities for 5.1 outputs on laptops.
- - ALSA: hda - Implement dynamic-ADC switching for VIA codecs
- Some VIA codecs like VT1702 provide the input-route only to specific
- ADCs such as digital-mic inputs. These routes aren't covered by the
- normal primary ADC, and for now, user had to open the capture stream
- assigned to that special ADC manually for using such inputs.
- This patch implements a way to switch the current ADC dynamically per
- the input-source selection in such a case. When this workaround is
- activated, the driver provides only one capture stream and one input-
- source control but with the full possible inputs. The driver switches
- the ADC to be used (or being used) according to the input-source on the
- fly.
- - ALSA: hda - Auto-mute smart51 surround pins for VIA codecs
- When smart51 mode is enabled, auto-mute these surround outputs
- as well as the primary line-out. Also this patch includes minor
- clean-ups.
- - ALSA: hda - Remove redundant VT1709 and VT1708B codes
- Unify the VT1709 10ch and 6ch parsers, as well as VT1708B 8ch and 4ch
- parsers. They have no difference now.
- - ALSA: hda - VT1708 independent HP routing fix
- The codecs like VT1708 needs more complicated routing using the mixer
- widget rather than the simple selector widgets.
- - ALSA: hda - Fix surround-volume parsing for VT1708B codecs
- The surround/CLFE/side DACs on VT1708B and co have no amp but the
- connected selector widgets have the amp instead. Fix the parser to
- check these selector widgets for the possible mixer controls as well.
- - ALSA: hda - Fix the check of loopback-mixer element index in patch_via.c
- Fix the check of the multiple loopback-mixer, which gave sometimes
- a wrong index assigned to an element even for different names, e.g.
- Mic and Front Mic. Now check the label properly for avoid duplication.
- Reported-by: David Henningsson <david.henningsson@canonical.com>
- - ALSA: hda - Assign smart51 only in the same stack for VIA codecs
- The input jacks assigned as the smart51 outputs must be in the same
- stack, either rear, front or other. Also, prefer line-in as the surround
- to mic-in.
- - ALSA: hda - Fix re-routing of HP-independent mode in patch_via.c
- Re-route the whole output path when HP-independent mode is changed.
- - ALSA: hda - Fix creations of playback volume controls in patch_via.c
- Fix a issue to create playback volume control if pin has amplifier capability
- but not DAC.
- - ALSA: hda - Revisit output_path parsing in patch_via.c
- Change the order of the output-path list in a way from the DAC to the
- target pin. Also now the list include the target pin, too.
- Together with this format change, simplify the arguments of
- parse_output_path() function, and fix the initialization in
- via_auto_init_output().
- - ALSA: hda - Use xxx Boost Volume for VIA
- Drop "Capture" prefix from the mic-boost names.
- Otherwise some control names can overflow the max name length.
- - ALSA: hda - Add Creative CA0132 HDA codec support
- Create patch_ca0132.c, to add support for devices featuring the
- Creative CA0132 HD-audio codec.
- This driver implements :-
- * 1 playback subdevice to headphone and speaker
- * 2 capture subdevices:
- i - Mic-in
- ii- Line-in
- * mixer device
- Advanced DSP features are not yet included.
- Developed and maintained by Creative Labs, Inc.
- - ALSA: hda - Simplify analog-low-current mode check for VIA codecs
- Use the existing aa-loop list for simplifying the check for analog
- low-current mode. Also fix the stream count test for playback streams.
- - ALSA: hda - Remove NID_MAPPING hacks in patch_via.c
- There is no longer virtual kmixer element for NID mapping.
- - ALSA: hda - Remove unused defines and struct fields in patch_via.c
- - ALSA: hda - Name the primary out as Speaker when needed for VIA codecs
- When the primary output is the speaker output, rather name it as
- "Speaker". This will be more intuitive.
- - ALSA: hda - Create loopback-list dynamically in patch_via.c
- Create loopback list dynamically from the parsed input pins for VIA
- codecs instead of the fixed arrays.
- - ALSA: hda - Fix smart51 handling again
- Fix the broken detection of smart51 and its handling.
- - ALSA: hda - Create virtual-master control for VIA codecs
- Now let's add the missing Master control to VIA codecs.
- - ALSA: hda - Initialize unsol events dynamically in patch_via.c
- Issue the init verbs of unsolicited events dynamically from the parsed
- results for VIA codecs. Also, consolidate the unsol handlers for HP
- and line-out mutes.
- - ALSA: hda - Initialize input-path dynamically in patch_via.c
- Similarly like the previous commit, initialize the input-paths dynamically
- from the parsed results instead of the fixed array for VIA codecs.
- - ALSA: hda - Initialize output path dynamically in patch_via.c
- Instead of fixed array for each codec type, initialize the output path
- dynamically from the parsed results.
- - ALSA: hda - Replace with standard consts in patch_via.c
- - ALSA: hda - Fix independent-HP handling in patch_via.c
- Fix races in handling of HP DAC and independent streams for VIA codecs.
- Also, allow the HP output path without front-DAC, and removed
- unnecessary activation of HP mixer elements.
- This also removes the handling of shared side/HP stream; it's anyway
- implemented in a broken way, so we need to re-implement the feature
- later...
- - ALSA: hda - Unify auto-parser in patch_via.c
- Now all codecs use the same parser-path, so we can reduce into a single
- auto-parser function.
- - ALSA: hda - Return error for invalid setup for VIA
- Instead of ignoring the invalid pin configuration, return the error.
- This will avoid unexpected crash, anyway.
- - ALSA: hda - Unify capture-mixer creations in patch_via.c
- Create capture-related mixer elements dynamically from the parsed
- ADCs and input-pins instead of fixed values for each codec.
- - ALSA: hda - Assign HP-independent PCM to individual stream
- Instead of using the secondary substream, create an individual PCM
- stream for HP-independent PCM. Otherwise it's difficult to handle
- different channel numbers with multi-channel stream in the sam PCM
- stream structure.
- - ALSA: hda - Unify PCM assignments in patch_via.c
- Unify PCM streams for all codecs by assigning the NID dynamically.
- - ALSA: hda - Don't create secondary substream when no independent-hp is used
- For VIA codecs, we shouldn't create a substream for independent HP mode,
- when no individual HP DAC is found.
- - ALSA: hda - Re-implement smart51 detection for VIA codecs
- - ALSA: hda - Unify output-control parsing in patch_via.c
- Parse the output-paths more dynamically, i.e. traverse the paths
- from each output pin instead of fixed assignment for each codec.
- Now all codecs are using the same output parser code.
- The smart51 setup doesn't work with this change, and will be fixed
- in the next commits.
- - ALSA: hda - Unify input-volume creations in patch_via.c
- Now storing the analog-mixer widget in spec, we can simplify the rest
- parts.
- - ALSA: hda - Auto-mute all LO and speakers in patch_via.c
- Muting all line-outs and/or speakers is more common in other drivers,
- so we should follow it, too.
- - ALSA: hda - Change pin-ctl for auto-muting in patch_via.c
- Mute the outputs via pin-controls instead of amps for the auto-mute
- handling. This makes our life easier as it avoids conflict of the states
- between the mixer elements and the auto-mute toggles.
- With this change, we can use vmaster for the master control easily now.
- - ALSA: hda - Generate PCM names dynamically in patch_via.c
- This reduces lots of static strings.
- - ALSA: hda - Refactor ctl array handling in patch_via.c
- No functional change.
- - ALSA: hda - Defer mixer element creation to the right time in patch_via.c
- The jack-detect control should be created at the time of build_controls
- callback instead of calling snd_hda_add_ctls() at the tree-parsing time.
- For that, copy the control to the temporary array like other cases.
- Also, fixed typos of vt1708_jack_detect in all places.
- - ALSA: hda - Fill ADCs dynamically for VIA codecs
- Instead of giving the fixed ADC list, parse the widgets and fill in
- ADCs dynamically.
- Also, probe the stereo-mixer input more dynamically, too.
- - ALSA: hda - Add control to suppress the dynamic pin-power for VIA
- Currently VIA driver controls the power-state of each pin per jack
- detection. But, it means that the power-state mismatch may occur when
- the machine doesn't give the proper jack-detection.
- For avoiding this problem, a new control element "Dynamic Power-Control"
- is provided so that user can turn on/off the pin-power control.
- - ALSA: hda - Remove superfluous NID_MAPPING use for smart51 mixer
- Just a minor clean up; nid-mapping can be set directly to the smart51
- mixer element.
- - ALSA: hda: check make_exec_verb() return value
- If given a -1 cmd parameter then make_exec_verb() returns -1 without
- setting the res output value.
- Prior to this change snd_hda_codec_read() assumed that make_exec_verb()
- unconditionally set res regardless of the cmd value.
- This change explicitly checks the make_exec_verb() return value before
- consuming the potentially unset res value.
- - ALSA: hda - Disable SPDIF only when no pin config set for HP with AD1981
- Some HP laptops with AD1981 have SPDIF connections, but currently the
- driver disables it statically. Better to check the pin default config
- to judge whether to enable or disable the SPDIF.
- - ALSA: hda - Fix a copmile warning
- It's harmless but annyoing.
- sound/pci/hda/patch_realtek.c: In function ‘alc_cap_getput_caller’:
- sound/pci/hda/patch_realtek.c:2722:9: warning: ‘err’ may be used uninitialized in this function
- - ALSA: hda - Change all ADCs for dual-adc switching mode for Realtek
- When the dual-adc switching mode is active in Realtek auto-parser,
- we need to couple all ADCs as a single capture-volume. Currently, the
- volume control changes only the first ADC, thus others may remain silent.
- This patch fixes the problem.
- - ALSA: HDA: Add model=auto quirk for Acer Aspire 3830TG
- Since we're not using the new auto parser as a fallback yet,
- add it manually as a quirk.
- - ALSA: HDA: Add a new Conexant codec ID (506c)
- Conexant ID 506c was found on Acer Aspire 3830TG. As users report
- no playback, sending to stable should be safe.
- BugLink: https://bugs.launchpad.net/bugs/783582
- Reported-by: andROOM
- - ALSA: HDA: Pinfix quirk for HP Z200 Workstation
- BIOS lists the internal speaker as an internal line-out. Change to
- internal speaker + model=auto for better auto-mute capabilities.
- BugLink: http://bugs.launchpad.net/bugs/754964
- Reported-by: Marc Legris <marc.legris@canonical.com>
- - ALSA: VIA HDA: Create a master amplifier control for VT1718S.
- Create a master volume and mute control of playback for VT1718S.
- - ALSA: VIA HDA: Mute/unmute mixer conncted to Headphone for VT1718S.
- When switch HP independent mode, mute/unmute connctions of mixer which is
- connected to headphone for VT1718S.
- - ALSA: VIA HDA: Modify initial verbs list for VT1718S.
- Remove some invalid initial verbs and correct some wrong initial verbs
- for VT1718S codec.
- - ALSA: hda - Remove ALC268 model override for CPR2000
- The "diverse" Quanta ID 0x0763 is overridden to ALC268_ACER.
- This keeps headphone automute and microphone input from operating
- on at least one laptop from Opti Systems.
- Without the override, the BIOS parser does a fine job setting the
- card up and everything works.
- Tested-By: Peter Schneider <e.at.chi.kaen@googlemail.com>
- - ALSA: HDA: Remove quirk for an HP device
- The reporter, who is running kernel 2.6.38, reports that
- he needs to set model=auto for the headphone output to work
- correctly.
- BugLink: http://bugs.launchpad.net/bugs/761022
- Reported-by: Jo
- - ALSA: hda - Fix no NID error with VIA codecs
- The via driver spews warnigs like
- hda-codec: no NID for mapping control Independent HP:0:0
- with some codecs because snd_hda_add_nid() is called with nid=0.
- This patch fixes it by skipping the call when no corresponding widget
- is found.
- - ALSA: hda - Fix wrong auto-mute type for Acer Aspire-one
- The auto-mute setup for Acer Aspire-one with ALC268 was set wrongly
- during the clean-up of auto-mute function. Fixed now.
- Tested-by: Borislav Petkov <bp@alien8.de>
- - ALSA: hda: Fix inaudible internal speakers on CyberpowerPC Gamer Xplorer N57001 laptop
- BugLink: https://launchpad.net/bugs/761171
- The original reporter needs the model=auto quirk for his internal
- speakers to be audible in the latest daily snapshot, so add an entry in
- the quirk table for his PCI SSID.
- A trivially different version of this patch using the model=asus quirk
- should be applied to the 2.6.38 and 2.6.39 stable kernels. We don't use
- the asus quirk in 3.0-rc2, because 3.0-rc2's autoparser is much
- improved.
- Reported-and-tested-by: tomdeering7
- - ALSA: hda - Fix initialization of hp pins with master_mute in Realtek
- Some Reatlek model quirks use master_mute bool switch for controlling
- the master-mute of outputs. For these cases, the initialization of HP
- pins/amps were forgotten during the transition to the common automute
- helper function in 3.0 development time, and resulted in the muted HP
- output as default.
- This patch fixes the issue by adjusting the HP output explicitly with
- master_mute switch.
- Tested-by: Michal Hocko <mhocko@suse.cz>
- - ALSA: hda - Fix invalid unsol tag for some alc262 model quirks
- The tag number was forgotten to be fixed after cleaning up the model
- quirks for ALC262 fujitsu and lenovo-3000 models.
- Tested-by: Michal Hocko <mhocko@suse.cz>
- - ALSA: hda: Fix quirk for Dell Inspiron 910
- BugLink: https://launchpad.net/bugs/792712
- The original reporter states that sound from the internal speakers is
- inaudible until using the model=auto quirk. This symptom is due to an
- existing quirk mask for 0x102802b* that uses the model=dell quirk. To
- limit the possible regressions, leave the existing quirk mask but add
- a higher priority specific mask for the reporter's PCI SSID.
- Reported-and-tested-by: rodni hipp
- - ALSA: hda: HDMI: Support codecs with fewer cvts than pins
- The general concept of this change is to create a PCM device for each
- pin widget instead of each converter widget. Whenever a PCM is opened,
- a converter is dynamically selected to drive that pin based on those
- available for muxing into the pin.
- The one thing this model doesn't support is a single PCM/converter
- sending audio to multiple pin widgets at once.
- Note that this means that a struct hda_pcm_stream's nid variable is
- set to 0 except between a stream's open and cleanup calls. The dynamic
- de-assignment of converters to PCMs occurs within cleanup, not close,
- in order for it to co-incide with when controller stream IDs are
- cleaned up from converters.
- While the PCM for a pin is not open, the pin is disabled (its widget
- control's PIN_OUT bit is cleared) so that if the currently routed
- converter is used to drive a different PCM/pin, that audio does not
- leak out over a disabled pin.
- We use the recently added SPDIF virtualization feature in order to
- create SPDIF controls for each pin widget instead of each converter
- widget, so that state is specific to a PCM.
- In order to support this, a number of more mechanical changes are made:
- * s/nid/pin_nid/ or s/nid/cvt_nid/ in many places in order to make it
- clear exactly what the code is dealing with.
- * We now have per_pin and per_cvt arrays in hdmi_spec to store relevant
- data. In particular, we store a converter's capabilities in the per_cvt
- entry, rather than relying on a combination of codec_pcm_pars and
- the struct hda_pcm_stream.
- * ELD-related workarounds were removed from hdmi_channel_allocation
- into hdmi_instrinsic in order to simplifiy infoframe calculations and
- remove HW dependencies.
- * Various functions only apply to a single pin, since there is now
- only 1 pin per PCM. For example, hdmi_setup_infoframe,
- hdmi_setup_stream.
- * hdmi_add_pin and hdmi_add_cvt are more oriented at pure codec parsing
- and data retrieval, rather than determining which pins/converters
- are to be used for creating PCMs.
- This is quite a large change; it may be appropriate to simply read the
- result of the patch rather than the diffs. Some small parts of the change
- might be separable into different patches, but I think the bulk of the
- change will probably always be one large patch. Hopefully the change
- isn't too opaque!
- This has been tested on:
- * NVIDIA GeForce 400 series discrete graphics card. This model has the
- classical 1:1:1 codec:converter:pcm widget model. Tested stereo PCM
- audio to a PC monitor that supports audio.
- * NVIDIA GeForce 520 discrete graphics card. This model is the new
- 1 codec n converters m pins m>n model. Tested stereo PCM audio to a
- PC monitor that supports audio.
- * NVIDIA GeForce 400 series laptop graphics chip. This model has the
- classical 1:1:1 codec:converter:pcm widget model. Tested stereo PCM,
- multi-channel PCM, and AC3 pass-through to an AV receiver.
- * Intel Ibex Peak laptop. This model is the new 1 codec n converters m
- pins m>n model. Tested stereo PCM, multi-channel PCM, and AC3 pass-
- through to an AV receiver.
- Note that I'm not familiar at all with AC3 pass-through. Hence, I may
- not have covered all possible mechanisms that are applicable here. I do
- know that my receiver definitely received AC3, not decoded PCM. I tested
- with mplayer's "-afm hwac3" and/or "-af lavcac3enc" options, and alsa a
- WAV file that I believe has AC3 content rather than PCM.
- I also tested:
- * Play a stream
- * Mute while playing
- * Stop stream
- * Play some other streams to re-assign the converter to a different
- pin, PCM, set of SPDIF controls, ... hence hopefully triggering
- cleanup for the original PCM.
- * Unmute original stream while not playing
- * Play a stream on the original pin/PCM.
- This was to test SPDIF control virtualization.
- - ALSA: hda: hdmi_eld_update_pcm_info: update a stream in place
- A future change won't store an entire hda_pcm_stream just to represent
- the capabilities of a codec; a custom data-structure will be used. To
- ease that transition, modify hdmi_eld_update_pcm_info to expect the
- hda_pcm_stream to be pre-initialized with the codec's capabilities, and
- to update those capabilities in-place based on the ELD.
- - ALSA: hda: Separate generic and non-generic implementations
- A future change will significantly rework the generic implementation
- in order to support codecs with a different number of pins and
- converters. Isolate the more custom codec variants from this change by
- duplicating the small portions of generic code they share. This
- simplifies the later rework of that previously shared code, since we
- don't have to consider the more custom codecs, and also prevents
- support for those codecs from regressing.
- - ALSA: hda: Virtualize SPDIF out controls
- The SPDIF output controls apply to converter widgets. A future change
- will create a PCM device per pin widget, and hence a set of SPDIF output
- controls per pin widget, for certain HDMI codecs. To support this, we
- need the ability to virtualize the SPDIF output controls. Specifically:
- * Controls can be "unassigned" from real hardware when a converter is
- not used for the PCM the control was created for.
- * Control puts only write to hardware when they are assigned.
- * Controls can be "assigned" to real hardware when a converter is picked
- to support output for a particular PCM.
- * When a converter is assigned, the hardware is updated to the cached
- configuration.
- - ALSA: hda: Allow multple SPDIF controls per codec
- Currently, the data that backs the kcontrols created by
- snd_hda_create_spdif_out_ctls is stored directly in struct hda_codec. When
- multiple sets of these controls are stored, they will all manipulate the
- same data, causing confusion. Instead, store an array of this data, one
- copy per converter, to isolate the controls.
- This patch would cause a behavioural change in the case where
- snd_hda_create_spdif_out_ctls was called multiple times for a single codec.
- As best I can tell, this is never the case for any codec.
- This will be relevant at least for some HDMI audio codecs, such as the
- NVIDIA GeForce 520 and Intel Ibex Peak. A future change will modify the
- driver's handling of those codecs to create multiple PCMs per codec. Note
- that this issue isn't affected by whether one creates a PCM-per-converter
- or PCM-per-pin; there are multiple of both within a single codec in both
- of those codecs.
- Note that those codecs don't currently create multiple PCMs for the codec
- due to the default HW mux state of all pins being to point at the same
- converter, hence there is only a single converter routed to any pin, and
- hence only a single PCM.
- - ALSA: hda: Gate ELD usage only by whether ELD is valid
- It's perfectly valid for an ELD to contain no SADs. This simply means that
- only basic audio is supoprted.
- In this case, we still want to limit a PCM's capabilities based on the ELD.
- History:
- * Originally, ELD application was limited solely by sad_count>0, which
- was used to check that an ELD had been read.
- * Later, eld_valid was added to the conditions to satisfy.
- This change removes the original sad_count>0 check, which when squashed
- with the above two changes ends up replacing if (sad_count) with
- if (eld_valid).
- - ALSA: hda - Check pin support EAPD in ad198x_power_eapd_write
- Check whether the pin supports EAPD in ad198x_power_eapd_write.
- - ALSA: hda - Fix HP and Front pins of ad1988/ad1989 in ad198x_power_eapd()
- In ad198x_power_eapd(), wrong pin NIDs are used for controlling EAPD for
- HP and Front outputs of AD1988/AD1989. These are actually same with the
- ones for AD1984 & co, port-A is 0x11 and port-D 0x12.
- Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
- - ALSA: hda - Use snd_printd() in snd_hda_parse_pin_def_config()
- Fixed the wrong usage of snd_printdd() for debug prints of input
- entries. It should be snd_printd() like others.
- - ALSA: HDA: Increase MAX_HDMI_PINS
- The recently introduced NVIDIA GeForce GT 520 has 4 pins within a single
- codec. Bump MAX_HDMI_PINS to accomodate this. Also bump MAX_HDMI_CVTS
- to match it; this might be needed later too.
- - ALSA: hda - Use model=auto for Lenovo G555
- The new auto-parser fixes problems on Lenovo G555.
- - ALSA: HDA: Unify HDMI hotplug handling.
- This change unifies the initial handling of a pin's state with the code to
- update a pin's state after a hotplug (unsolicited response) event. The
- initial probing, and all updates, are now routed through hdmi_present_sense.
- The stored PD and ELDV status is now always derived from GetPinSense verb
- execution, and not from the data in the unsolicited response. This means:
- a) The WAR for NVIDIA codec's UR.PD values ("old_pin_detect") can be
- removed, since this only affected the no-longer-used unsolicited
- response payload.
- b) In turn, this means that most NVIDIA codecs can simply use
- patch_generic_hdmi instead of having a custom variant just to set
- old_pin_detect.
- c) When PD && ELDV becomes true, no extra verbs are executed, because the
- GetPinSense that was previously executed by snd_hdmi_get_eld (really,
- hdmi_eld_valid) has simply moved into hdmi_present_sense.
- d) When PD && ELDV becomes false, there is a single extra GetPinSense verb
- executed for codecs where old_pin_detect wasn't set, i.e. some NVIDIA,
- and all ATI/AMD and Intel codecs. I doubt this will be a performance
- issue.
- The new unified code in hdmi_present_sense also ensures that eld->eld_valid
- is not set unless eld->monitor_present is also set. This protects against
- potential invalid combinations of PD and ELDV received from HW, and
- transitively from a graphics driver.
- Also, print the derived PD/ELDV bits from hdmi_present_sense so the kernel
- log always displays the actual state stored, which will differ from the
- values in the unsolicited response for NVIDIA HW where old_pin_detect was
- previously set.
- Finally, a couple of small tweaks originally by Takashi:
- * Clear the ELD content to zero before reading it, so that if it's not
- read (i.e. when !(PD && ELDV)) it's in a known state.
- * Don't show ELD fields in /proc ELD files when the ELD isn't valid.
- The only possibility I can see for regression here is a codec where the
- GetPinSense verb returns incorrect data. However, we're already exposed
- to that, since that data is used (a) from hdmi_add_pin to set up the
- initial pin state, and (b) within snd_hda_input_jack_report to query
- a pin's presence value. As such, I don't believe any HW has bugs here.
- Includes-changes-by: Takashi Iwai <tiwai@suse.de>
- - ALSA: hda - Force AD1988_6STACK_DIG for Asus M3N-HT Deluxe
- The microphone input on the back panel (pink connector)
- stopped operating correctly after an upgrade from
- 2.6.35 to 2.6.38; the actual problem manifests itself
- as a lack of microphone bias voltage (VREF_HIZ) on
- node 0x17.
- With AD1988_6STACK_DIG the maximum bias voltage (VREF_80)
- is applied and the headset operates correctly.
- Tested-by: Doug Redlich <pbrigade@nxltech.net>
- - ALSA: hda - Fix speaker auto-mute in Cxt auto-parser
- Fix some logic failures in auto-mute handling in Conexant auto-parser.
- Also, modify codes to be a bit more understandable.
- - ALSA: hda - Fix initial capture-source with auto-mic for Cxt auto-parser
- Fix the initialization of capture-source route when auto-mic is enabled
- for Conexant auto-parser.
- - ALSA: hda - Fix auto-mic detection in Conexant codec-parser
- Fix the auto-mic detection for Cxt auto-parser due to off-by-one
- missing initialization.
- - ALSA: HDA: Add quirk for Lenovo U350
- Add model=asus quirk for Lenovo Ideapad U350 to make internal mic
- work correctly.
- BugLink: http://bugs.launchpad.net/bugs/751681
- Reported-by: Kent Baxley <kent.baxley@canonical.com>
- - ALSA: hda - add Intel Panther Point HDMI codec id
- - ALSA: hda - Remove PCM mixer elements from Virtual Master of realtek
- Afer commit aa202455eec51699e44f658530728162cefa1307 , none of realtek
- codec has hardware volume control "PCM Playback Volume" and
- "PCM Playback Switch".
- As Virtual Master require all slave controls must have same number of step
- and dB range.
- - ALSA: hda - Fix input-src parse in patch_analog.c
- Compare pin type enum to the pin type and not the array index.
- Fixes bug#0005368.
- - ALSA: hda - Enable Realtek ALC269 codec input layer beep
- This fixes the input layer beep not working on some EeePC 1000 models by
- adding the subsystem id into whitelist. Otherwise the corresponding ALSA
- mixer is not enabled and stays muted, resulting in no console beep.
- - ALSA: HDA: Add jack detection for HDMI
- Just as for headphones and microphone jacks, this patch adds reporting
- of HDMI jack status through the input layer.
- - ALSA: hda - Fix no sound after Windows boot with ALC269
- Change power control register to default.
- - ALSA: hda - Add support of ALC221 / ALC276 codecs
- Compatible with ALC269.
- - ALSA: hda - Add support of ALC898/899 codec
- These are compatible with ALC882 codec.
- - ALSA: hda - Handle dock line-in as auto-detecable for Cxt auto-parser
- Similar process like in patch_realtek.c and patch_sigmatel.c.
- - ALSA: hda - Handle dock line-in as auto-detectable for IDT codecs
- When a docking-station has a line-in jack, we can handle it also as
- a detectable jack just like mic-in. This will improve the usability
- of HP laptops with a docking-station.
- - ALSA: hda - Add dock-mic detection support to Realtek auto-parser
- In addition to the normal mic jack, the mic (or line-in) jack on the
- docking-station is checked also as a candidate for auto-selection.
- - ALSA: hda - Check unsol-cap in is_jack_detectalbe()
- Also replace more open-codes with this function.
- - ALSA: hda - Add support of dock-mic detection to Conexant auto-parser
- In addition to the normal external mic jack, check also the mic jack
- on a docking-station as well, and select the input source appropriately.
- The similar functionality was already implemented in patch_sigmatel.c.
- - ALSA: hda - Fix initialization of spec->automute_lines in patch_realtek.c
- spec->automute_lines shouldn't be set unless the line-detection is
- available.
- - ALSA: hda - Use get_wcaps_type()
- Replace the open-code with get_wcaps_type() macro.
- - ALSA: hda - Use is_jack_detectable() helper
- Replaced the open-code with the new helper function.
- - ALSA: hda - Add automute-mode enum to Conexant auto-parser
- Implement the same functionality as Realtek's auto-mute mode control.
- Now Conexant auto-parser can also mutes line-out and provide the enum
- control for different automute behavior.
- - ALSA: hda - Add missing Front/Surround/CLFE as slaves for Cxt auto-parser
- - ALSA: hda - Code refactoring in patch_conexant.c
- Use a struct instead of each array for managing input-source info
- for auto-parser.
- - ALSA: HDA: Use one dmic only for Dell Studio 1558
- There are no signs of a dmic at node 0x0b, so the user is left with
- an additional internal mic which does not exist. This commit removes
- that non-existing mic.
- BugLink: http://bugs.launchpad.net/bugs/731706
- Reported-by: James Page <james.page@canonical.com>
- - ALSA: hda - Add support of auto-parser to cxt5066 codecs
- Still experimental.
- Not enabled as default unless model=auto is passed.
- - ALSA: hda - Don't create multiple same volume/boost controls in Cxt auto-parser
- Check the routing more exactly for avoiding the duplicated controls for
- the very same effect for multiple capture routes in Conexant auto-parser.
- - ALSA: hda - Build boost controls from selector widget in Cxt auto-parser
- When the intermediate selector widget in the capture path provides the
- boost volume, create the corresponding volume control.
- - ALSA: hda - Don't use auto-parser for cxt5045 / 5051 as default
- Just for safety reason (for avoiding any possible regressions), don't
- enable auto-parser as default for cxt5045 and 5051, as well as 5047.
- - ALSA: hda - Enable codec->pin_amp_workaround always for Conexant auto-parser
- It can (must for some) be used for all Conexnat codecs safely.
- - ALSA: hda - Search ADC NIDs dynamically in Conexant auto-parser
- Instead of giving fixed arrays, look for ADC nids dynamically in the
- tree in Conexant auto-parser code.
- - ALSA: hda - Add support of auto-parser to cxt5047 / CX20551 Waikiki
- Similarly like other Conexant codecs, now model=auto is supported for
- cxt5047.
- But the auto-parser mode isn't activated as default yet, since BIOS
- pin-configs seem often broken on machines with this codec. User need
- to pass model=auto explicitly.
- - ALSA: hda - Parse more deep input-source routes in Conexant auto-parser
- Handle not only a single-depth input-route but two-level depth routes
- (PIN->MUX->ADC), too.
- - ALSA: hda - Clean up input-mux handling in Conexant auto-parser
- Keep the registered input-pins in imux_pins[], and fix the inconsistent
- use of sepc->auto_mic_ext.
- - ALSA: hda - Add auto-parser support to cxt5045 / CX20549 Venice
- - ALSA: hda - Add auto-parser support to cxt5051 / CX20561 Hermosa
- Extend the existing auto-parser for CX2064x for cxt5051 codec.
- Now the auto-parser supports ADC-switching for this codec.
- - ALSA: hda - Check AMP CAP at initialization of Conexant auto-parser
- Some codecs have no mute caps in audio I/O widgets.
- - ALSA: hda - Turn on EAPD dynamically per jack plug in Conexant auto mode
- Instead of keeping always EAPD on, turn on/off appropriately at jack
- plugging in Conexant auto-parser mode.
- - ALSA: hda - Fix auto-mic for CX2064x codecs
- The wrong id is assigned for external/internal mics in the auto-mic
- selection parser.
- - ALSA: hda - fix NULL-dereference in patch_realtek
- Fix NULL-dereference when try to use alt_playback since those codecs
- which support multistreaming playback usually have more than 1 adc but
- the driver should create alt_capture when spec->stream_analog_alt_capture
- is also defined.
- - ALSA: hda - Fix Realtek's chained fixup checks
- The check of chained fixup list entry was done against the wrong element.
- A stupid mistake during refactoring.
- - ALSA: hda - Constify fixup and other array data in patch_via.c
- - ALSA: hda - Constify fixup and other array data in patch_sigmatel.c
- - ALSA: hda - Constify fixup and other array data in patch_si3054.c
- - ALSA: hda - Constify fixup and other array data in patch_hdmi.c
- - ALSA: hda - Constify fixup and other array data in patch_conexant.c
- - ALSA: hda - Constify fixup and other array data in patch_cirrus.c
- - ALSA: hda - Constify fixup and other array data in patch_ca0110.c
- - ALSA: hda - Constify fixup and other array data in patch_cmedia.c
- - ALSA: hda - Constify fixup and other array data in patch_analog.c
- - ALSA: hda - Constify fixup and other array data in patch_realtek.c
- - ALSA: hda - Constify some API function arguments
- Also fixed the assignment of multiout.dac_nids to satisfy const.
- - ALSA: hda - Constify fixup and other array data in patch_realtek.c
- - ALSA: hda - Constify some API function arguments
- - Revert "ALSA: hda - Fix pin-config of Gigabyte mobo"
- This reverts commit c6b358748e19ce7e230b0926ac42696bc485a562.
- It turned out that there are different pin configurations for this
- PCI SSID, including multi-channel modes. And more proper fix for
- allowing line-out mutes will come up in 2.6.40 tree, so we won't need
- this fixup any more there.
- Reported-by: Andrew Clayton <andrew@digital-domain.net>
- Reported-by: Emmanuel Benisty <benisty.e@gmail.com>
- - ALSA: HDA: Fix automute for Gateway NV79
- The PCI SSID is 1025:031c and the codec SSID is 1025:031d,
- so the driver mistakes this for a SKU value, but looking at
- the numbers, this is obviously wrong.
- BugLink: http://bugs.launchpad.net/bugs/761861
- - ALSA: hda - Show the line-out type in snd_hda_parse_pin_def_config()
- Helpful for debugging.
- - ALSA: hda: add beep quirk for Realtek 0x1043:831a
- PC Beep was not being reported as enabled on my EeePC 901:
- SKU: enable_pcbeep=0x0
- - ALSA: hda - Add Auto-Mute Mode enum for two-output cases
- The Auto-Mute Mode control is useful even when only two outputs
- (e.g. HP and speaker) are available. Then user can enable/disable
- the auto-mute behavior on the fly.
- - ALSA: hda - More line-out auto-mute support for Realtek
- Not only supporting the line-out automute as additional feature
- to the existing headphone automute, now the headphone jack can
- mute the line-out alone even without the speaker outs.
- - ALSA: hda - Add support for Line-Out automute to Realtek auto-parser
- By popular demands, I add the functionality to mute / unmute the
- line-out jacks per the headphone plug / unplug. For achieving this
- and keeping the compatibility with the old behavior, the new mixer
- enum "Auto-Mute Mode" is added. With this, user can control the
- auto-mute behavior either disabled, speaker-only or lineout+speaker.
- - ALSA: hda - More reduction of redundant automute codes in Realtek parser
- Removed the redundant codes by replacing with the common helper
- functions.
- - ALSA: hda - Consolidate auto-mute with master-switch for Realtek
- Yet another consolidation of auto-mute functions for the devices
- controlling the output muts together with the master mixer switch,
- typically found for ALC262 machines.
- - ALSA: hda - Add support of line-out automute for Realtek
- Add the common helper function and flags to support the auto-mute
- per line-out jack detection, and also the mute of line-out jacks.
- A few model-specific implementations are replaced with the common
- helpers.
- - ALSA: hda - Add common automute support for mxier-amp on/off for Reatek
- Some models do mute on/off the connected mixer widget for the automatic
- muting, instead of controlling the pin widget itself. This patch adds
- the implementation of such type of auto-mute in the common helper
- function, and reduces the redundant codes for each model preset.
- - ALSA: hda - Consolidate default automute functions for Realtek
- There are two entry points for the headphone automute functions for
- Realtek, alc_automute_amp() and alc_automute_pin(). These call the
- same function in the end, so we can basically consolidate these
- with a flag in spec.
- - ALSA: hda - VIA: Fix notify_aa_path_ctls() invalid issue.
- In notify_aa_path_ctls(), adds 'rear mic' item and confirms the A-A
- path control existing before notifying card that the A-A path volume
- is muted if smart5.1 is enabled.
- - ALSA: hda - Add channel-mode support to Realtek auto-parser
- This patch adds the support of "Channel Mode" enum control to Realtek
- auto-parser. When line-in or mic-in jacks are capable to output and
- free DACs are available, the driver allows to switch to multi-channel
- mode via "Channel Mode" enum switch, as already implemented in some
- preset cases.
- Not implemented in all Realtek codecs. Currently, ALC880, 882, 861,
- 662 and the compatible codecs are supported.
- - ALSA: hda - Minor update for alc662-parser functions
- Allow alc662_dac_to_mix() and alc662_look_for_dac() to parse
- down the selector widget that is found in ALC880-type codecs,
- and rename them to alc_auto_*() accordingly.
- This is for the next coming multi-io extensions.
- - ALSA: hda - VIA: Fix Smart5.1 isn't useful for 6 audio jacks motherboard.
- For some motherboards with 5 or 6 audio jacks which had six or eight multiple
- channels output, smart5.1 item is no useful and should be removed.
- - ALSA: hda - Enable sync_write workaround for AMD generically
- The workaround for AMD chipset via sync_write flag seems needed for
- machines with Realtek codecs. So, it's better to activate it
- generically in hda_intel.c from the beginning.
- - ALSA: hda - Move EAPD power-down into shutup callback for AD codecs
- EAPD power-down should be called also for normal shutup cases.
- Let's move to there. This also fixes the compile warnings when
- CONFIG_PM isn't set automatically.
- - ALSA: hda - Enable sync_write for AMD chipset with IDT 92HD8x codecs
- The AMD chipset seems unstable in the normal operation mode, and it
- seems requring more sensible access for each verb. Enabling sync_write
- mode and allowing bus-reset is a sort of workaround for these chipset
- stability issues.
- - ALSA: hda - Fix unused warnings when !SND_HDA_NEEDS_RESUME
- When SND_HDA_NEEDS_RESUME is not defined, the compiler identifies that
- the following symbols are static but not used:
- restore_shutup_pins
- hda_cleanup_all_streams
- Fix warnings by adding SND_HDA_NEEDS_RESUME guards.
- - ALSA: hda - Add a fix-up for Acer dmic with ALC271x codec
- Acer laptops with ALC271x needs a magic initialization for digital-mic
- to make it working with mono streams (and PulseAudio).
- Added a fix-up applied to Acer with ALC271x generically.
- - ALSA: hda - sound/pci/hda/hda_codec.c: fix warning
- sound/pci/hda/hda_codec.c: In function 'snd_hda_get_connections':
- sound/pci/hda/hda_codec.c:332: warning: unused variable 'j'
- - ALSA: hda - Remember connection lists
- The connection lists are static and we can reuse the previous results
- instead of querying via verb at each time. This will reduce the I/O
- in the runtime especially for some codec auto-parsers.
- - ALSA: hda - Don't query connections for widgets have no connections
- Fixes the kernel warnings with IDT codecs like
- hda_codec: connection list not available for 0x1e
- - ALSA: hda - Fix unused variable warning in patch_realtek.c
- - ALSA: hda - Remove superfluous inits for ALC662 auto-parser
- Since we now set up the connections and mutes dynamically in the
- auto-parser, all static initializations via alc662_init_verbs & co are
- no longer needed. Let's drop them.
- - ALSA: hda - Mute ADC as default in ALC882 and other auto-parsers
- Mute the ADC as default in the auto-parser dynamically instead of relying
- on the static init verbs.
- - ALSA: hda - Unmute mixer dynamically in alc662 auto-parser
- Instead of static init array, better to determine the connection and
- the mute status of the pin/mixer/DAC route dynamically. This fixes the
- uninitialized mixer 0x0f on ALC892.
- - ALSA: HDA: Fix single internal mic on ALC275 (Sony Vaio VPCSB1C5E)
- In cases where there is only one internal mic connected to ADC 0x11,
- alc275_setup_dual_adc won't handle the case, so we need to add the
- ADC node to the array of candidates.
- BugLink: http://bugs.launchpad.net/bugs/752792
- Reported-by: Vincenzo Pii
- - ALSA: hda - HDMI: Fix MCP7x audio infoframe checksums
- The MCP7x hardware computes the audio infoframe channel count
- automatically, but requires the audio driver to set the audio
- infoframe checksum manually via the Nv_VERB_SET_Info_Frame_Checksum
- control verb.
- When audio starts playing, nvhdmi_8ch_7x_pcm_prepare sets the checksum
- to (0x71 - chan - chanmask). For example, for 2ch audio, chan == 1
- and chanmask == 0 so the checksum is set to 0x70. When audio playback
- finishes and the device is closed, nvhdmi_8ch_7x_pcm_close resets the
- channel formats, causing the channel count to revert to 8ch. Since
- the checksum is not reset, the hardware starts generating audio
- infoframes with invalid checksums. This causes some displays to blank
- the video.
- Fix this by updating the checksum and channel mask when the device is
- closed and also when it is first initialized. In addition, make sure
- that the channel mask is appropriate for an 8ch infoframe by setting
- it to 0x13 (FL FR LFE FC RL RR RLC RRC).
- - ALSA: hda - Rewrite alc269_suspend to alc269_shutup
- alc269_suspend is just calling the shut-up, so we can use the new shutup
- callback for the purpose.
- - ALSA: hda - Introduce shutup callback to Realtek spec struct
- Add shutup callback to be called codec-specifically for avoiding pop
- noises at suspend or shutdown. As a generic callback, just turn EAPD
- off.
- - ALSA: hda - Refactoring EAPD controls
- Reduced the duplicated codes.
- - ALSA: hda - Split EAPD init to a separate array from alc662_init_verbs
- So far, alc662_init_verbs[] is used for all ALC662-compatible chips,
- but the EAPD controls for 0x15 in there is invalid for ALC892.
- Also, since EAPDs should be set up in alc_auto_init_amp(), these static
- elements aren't needed for auto-parser, too.
- In this patch, the EAPD init verbs are split from alc662_init_verbs,
- and applied only to static quirks.
- - ALSA: hda - Fix mix->DAC deduction for ALC892
- The current alc662 parser doesn't set the DAC for the mixer 0x0f
- properly for ALC892, which has 4 DACs while ALC662 has 3.
- Fixed by implementing alc662_mix_to_dac() more genericly with the
- dynamic widget list.
- - ALSA: hda - Correct initial dac_nids for some ALC272-quirks
- Some ALC272-quirks use alc662_dac_nids instead of alc272_dac_nids.
- This patch fixes these entries. No functional change since the first
- two elements are identical in both arrays.
- - ALSA: hda - Fix alc662_dac_nid and change "6stack-dig" to "5stack-dig"
- alc662 series only have 3 DAC, so it can only support 5stack-dig
- instead of 6stack-dig.
- [updated HD-Audio-Models.txt as well by tiwai]
- - ALSA: HDA: Fix dock mic for Lenovo X220-tablet
- Without the "thinkpad" quirk, the dock mic in
- Lenovo X220 tablet edition won't work.
- BugLink: http://bugs.launchpad.net/bugs/751033
- Tested-by: James Ferguson <james.ferguson@canonical.com>
- - ALSA: HDA: Add dock mic quirk for Lenovo Thinkpad X220
- This quirk is needed for the docking station mic of
- Lenovo Thinkpad X220 to function correctly.
- BugLink: http://bugs.launchpad.net/bugs/746259
- Tested-by: James Ferguson <james.ferguson@canonical.com>
- - ALSA: hda - Fix pin-config of Gigabyte mobo
- Use pin-fix instead of the static quirk for Gigabyte mobos 1458:a002.
- Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=677256
- - ALSA: HDA: New AD1984A model for Dell Precision R5500
- For codec AD1984A, add a new model to support Dell Precision R5500
- or the microphone jack won't work correctly.
- BugLink: http://bugs.launchpad.net/bugs/741516
- Tested-by: Kent Baxley <kent.baxley@canonical.com>
- - ALSA: hda - VIA: Update unsolicited event function
- Update unsolicited event process function via_unsol_event() to
- make it can process more unsolicited events.
- - ALSA: hda - VIA: Update VT2002P initial verbs
- Add some hardware related verbs in VT2002P initial verbs.
- These verbs are used to fix Class-D speaker no sound issue.
- - ALSA: hda - VIA: Update VT1718S initial verbs
- Add a verb to enable control amplifier of stereo mixer in VT1718S
- initial verbs. Set stereo mixer default amplifier value as un-mute.
- - ALSA: hda - VIA: Update VT1708 initial verbs
- Add a verb of power down jack detect in VT1708 initial verbs.
- This verb is used to avoid noise caused by hardware issue.
- - ALSA: hda - VIA: Add VT1802 check in via_speaker_automute function
- Add VT1802 check in via_speaker_automute() function.
- - ALSA: hda - VIA: Fix side channel mute invalid issue
- Modify side_mute_channel() and update_side_mute_status() functions
- to fix invalid side channel mute issue of VT2002P, VT1812 and VT1802
- codecs.
- - ALSA: hda - Fix SPDIF out regression on ALC889
- The commit 5a8cfb4e8ae317d283f84122ed20faa069c5e0c4
- ALSA: hda - Use ALC_INIT_DEFAULT for really default initialization
- changed to use the default initialization method for ALC889, but
- this caused a regression on SPDIF output on some machines.
- This seems due to the COEF setup included in the default init procedure.
- For making SPDIF working again, the COEF-setup has to be avoided for
- the id 0889.
- Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=24342
- - ALSA: hda - VIA: Add support for VT1802
- Add support for VT1802 codec, which is similiar with VT2002P
- except VT1802 has no Class-D and has some different pin widget
- id.
- - ALSA: hda - VIA: Add support for VT1705
- Add support for VT1705 codec, which is similiar with VT1708S
- except it has 6 channels output.
- - ALSA: hda - VIA: Add new power management function.
- Use set_widgets_power_state() function to seperately control different
- codecs' power management actions and to replace the original large
- function. Also fix some wrong widgets power up sequence which caused
- no sound issue under Smart5.1 mode and Independent HP mode.
- - ALSA: HDA: Realtek: Avoid unnecessary volume control index on Surround/Side
- Similar to commit 7e59e097c09b82760bb0fe08b0fa2b704d76c3f4, this patch
- avoids unnecessary volume control indices for more
- Realtek auto-parsers, e g the ALC66x family, on the "Surround" and "Side"
- controls.
- These indices cause these volume controls to be ignored by PulseAudio and
- vmaster and should be removed whenever possible.
- Reported-by: Jan Losinski <losinski@wh2.tu-dresden.de>
- - ALSA: hda - VIA: Fix VT1708 can't build up Headphone control issue
- Since VT1708 didn't support the control of getting connection number,
- building of headphone control will fail in via_hp_build() function.
- - ALSA: hda - VIA: Correct stream names for VT1818S
- Correct stream names of analog playback and capture streams
- for VT1818S.
- - ALSA: hda - VIA: Fix codec type for VT1708BCE at the right timing
- Add get_codec_type() in via_new_spec() function to make sure getting
- correct codec type before building mixer controls.
- - ALSA: hda - VIA: Fix invalid A-A path volume adjust issue
- Modify vt_auto_create_analog_input_ctls() function to fix invalid a-a path
- volume adjust issue for VT1708S, VT1702 and VT1716S codecs.
- - ALSA: hda - VIA: Add missing support for VT1718S in A-A path
- Modify mute_aa_path() function to support VT1718S codec.
- - ALSA: hda - VIA: Fix independent headphone no sound issue
- Modify via_independent_hp_put() function to support VT1718S and VT1812
- codecs, and fix independent headphone no sound issue.
- - ALSA: hda - VIA: Fix stereo mixer recording no sound issue
- Modify function via_mux_enum_put() to fix stereo mixer recording
- no sound issue.
- - ALSA: hda - Set EAPD for Realtek ALC665
- Set EAPD for Realtek ALC665 (Vendor Id: 0x10eSet EAPD for Realtek
- ALC665 (Vendor Id: 0x10ec0665).
- - ALSA: hda - Remove an unused variable in patch_realtek.c
- - ALSA: hda - pin-adc-mux-dmic auto-configuration of 92HD8X codecs
- This patch replaces use of the harcoded arrays of pins, muxes, digital
- mics and adcs with the auto-generated ones using codec parsing and
- auto-discovers all actually connected digital mic pins on 92HD8X-like
- codecs
- This patch also adds the support for d-mic on pin 0x20.
- - ALSA: hda - fix digital mic selection in mixer on 92HD8X codecs
- When the mux for digital mic is different from the mux for other mics,
- the current auto-parser doesn't handle them in a right way but provides
- only one mic. This patch fixes the issue.
- - ALSA: hda - Move default input-src selection to init part
- Move the default input-src selection code for alc268/269 to the init
- part instead of the parser. The input-src selection might be overwritten
- by init verbs.
- - ALSA: hda - Initialize special cases for input src in init phase
- Currently some special handling for the unusual case like dual-ADCs
- or a single-input-src is done in the tree-parse time in
- set_capture_mixer(). But this setup could be overwritten by static
- init verbs.
- This patch moves the initialization into the init phase so that
- such input-src setup won't be lost.
- - ALSA: HDA: Realtek ALC88x: Do not over-initialize speakers and hp that are primary outputs
- Do not initialize again the what has already been initialized as
- multi outs, as this breaks surround speakers.
- Tested-by: Bartłomiej Żogała <nusch88@gmail.com>
- - ALSA: HDA: Fixup unnecessary volume control index on Realtek ALC88x
- Without this change, a volume control named "Surround" or "Side" would
- get an unnecessary index, causing it to be ignored by the vmaster and
- PulseAudio.
- Tested-by: Bartłomiej Żogała <nusch88@gmail.com>
- - ALSA: HDA: Fix volume control naming for surround speakers on Realtek auto-parser
- When more than one pair of internal speakers is present, allow names
- according to their channels.
- Tested-by: Bartłomiej Żogała <nusch88@gmail.com>
- - ALSA: HDA: Enable surround and subwoofer on Lenovo Ideapad Y530
- The pin config values would change the association instead of the
- sequence, this commit fixes that up.
- Tested-by: Bartłomiej Żogała <nusch88@gmail.com>
- - ALSA: hda - Make common input-jack helper functions
- Since multiple codec drivers already use the input-jack stuff, let's
- make common helper functions to reduce the duplicated codes.
- - ALSA: hda - Don't set to D3 in Cirrus errata init verbs
- The errata init verbs for CS42xx codecs contain the verbs to set
- the power-state of SPDIF nodes to D3, which seem to break the SPDIF
- output on some MacBooks. Since this is executed during the power-up
- initialization, we shouldn't turn them down there.
- Reported-by: Arun Raghavan <arun.raghavan@collabora.co.uk>
- - ALSA: hda - add new Fermi 5xx codec IDs to snd-hda
- Added the missing HDMI codec IDs for new Nvidia stuff.
- Note that ID 0x17 isn't assigned to anything so far, as suggested by
- Stephen.
- [Modified to get rid of 0x17 by tiwai]
- - ALSA: hda - Fix unable to record issue on ASUS N82JV
- The codec of N82JV is ALC269VB.
- - ALSA: HDA: Realtek: Fixup jack detection to input subsystem
- This patch fixes an error in the jack detection reporting,
- causing the jack detection sometimes not to be reported
- correctly to the input subsystem. It should apply to several
- Realtek codecs.
- - ALSA: hda - patch_realtek.c remove one to many l's in the word.
- The patch below removes an extra "l" in the word.
- - ALSA: hda - 4930g add internal lfe slider
- Lately I sent patch that switched lfe with side in mixer for
- acer-aspire-4930g. Then I connected 5.1 speaker system and noticed that
- lfe slider wasn't working and that old lfe slider worked. What I'm doing
- now is:
- - reverting old patch
- - adding internal lfe slider
- - removing side as it is superfluous (ALC888S-VC is 7.1 but in fact
- laptop can only do 5.1 and it is so in drivers for MS Windows)
- - ALSA: hda - Add support for new IDT 92HD98 and 92HD99 codecs
- Also fix number of 92HD87 pins to exclude invalid pins.
- - ALSA: HDA: Add ideapad quirk for two Dell machines
- These two Dell machines have been reported working well with
- the ideapad model.
- BugLink: http://bugs.launchpad.net/bugs/723676
- Tested-by: David Chen <david.chen@canonical.com>
- - ALSA: HDA: Add a new Conexant codec 506e (20590)
- Conexant 506e/20590 has the same graph as the rest of the 5066 family.
- BugLink: http://bugs.launchpad.net/bugs/723672
- - ALSA: HDA: Fix mic initialization in VIA auto parser
- This typo caused some microphone inputs not to be correctly
- initialized on VIA codecs.
- Reported-By: Mark Goldstein <goldstein.mark@gmail.com>
- - ALSA: HDA: Do not announce false surround in Conexant auto
- Without this patch, one line-out and one speaker and
- Conexant's auto parser would announce (non-working) surround
- capabilities.
- BugLink: http://bugs.launchpad.net/bugs/721126
- - ALSA: HDA: Conexant auto: Handle multiple connections to ADC node
- Conexant 20641 has several inputs to its ADC node, with one selector
- and individual amps for all inputs. This patch adds support in the
- Conexant auto parser to handle that case.
- It also means that the pin node's volume is being renamed to "Boost"
- to avoid name clash with the new volume controls on the ADC node.
- BugLink: http://bugs.launchpad.net/bugs/719524
- - ALSA: hda - simplify multistreaming playback model of ad1988
- - ALSA: hda - Avoid cast with union data for HDMI audio infoframe
- - ALSA: hda - add quirk for Ordissimo EVE using a realtek ALC662
- This netbook has a only one jack output and an internal mic.
- By default, mic and jack sense aren't working. Using lenovo-101e
- parameters makes both work.
- The device seems based on a Sharetronic Q70, so this should fix audio for
- this model too.
- - ALSA: HDA: Add subwoofer quirk for Acer Aspire 8942G
- According to the reporter, node 0x15 needs to be muted for subwoofer
- to stop sounding. This pin is marked as unused by BIOS, so fix that.
- BugLink: http://bugs.launchpad.net/bugs/715877
- Reported-by: Hans Peter
- - ALSA: hda - Fix missing CA initialization for HDMI/DP
- The commit 53d7d69d8ffdfa60c5b66cc2e9ee0774aaaef5c0
- ALSA: hdmi - support infoframe for DisplayPort
- dropped the initialization of CA field accidentally.
- This resulted in only two-channel LPCM mode on Nvidia machines.
- Reference: kernel bug 28592
- https://bugzilla.kernel.org/show_bug.cgi?id=28592
- - ALSA: hda - switch lfe with side in mixer for 4930g
- Built-in sub-woofer can now be controlled by lfe slider instead of
- side slider on Acer Aspire 5930g
- - ALSA: hda - Fix memory leaks in conexant jack arrays
- The Conexant codec driver adds the jack arrays in init callback which
- may be called also in each PM resume. This results in the addition of
- new jack element at each time.
- The fix is to check whether the requested jack is already present in
- the array.
- Reference: Novell bug 668929
- https://bugzilla.novell.com/show_bug.cgi?id=668929
- - ALSA: HDA: Fix microphone(s) on Lenovo Edge 13
- BugLink: http://bugs.launchpad.net/bugs/708521
- This Edge 13 model has an internal mic at 0x1a and should
- therefore use the asus quirk.
- - Revert "ALSA: HDA: Create mixers on ALC887"
- This reverts commit 03b7a1ab557efe34e8f79b78660e514bd7374248.
- This commit was mistakenly re-introduced. While the change is harmless
- (as ALC887 uses patch_alc888() now), we should get rid of any wrong code.
- - ALSA: HDA: Create mixers on ALC887
- BugLink: http://launchpad.net/bugs/669092
- ALC887 does not have any volume control ability on the mixer NIDs,
- so put the volume controls on the dac NIDs instead. Without this
- patch, ALC887 users cannot use alsamixer at all.
HDA Intel driver
- - ALSA: hda - Use bint for enable_msi option
- The new bint module option type suits well with this one.
- - ALSA: HDA: Use LPIB position fix for Macbook Pro 7,1
- Several users have reported "choppy" audio under the 3.2 kernel,
- and that changing position_fix to 1 has resolved their problem.
- The chip is an nVidia Corporation MCP89 High Definition Audio,
- [10de:0d94] (rev a2).
- BugLink: https://bugs.launchpad.net/bugs/909419
- - ALSA: HDA: Remove Poulsbo position fix quirks
- Now that we have changed the poulsbo chip to use LPIB position fix,
- we can remove the individual machine quirks that do the same thing.
- - ALSA: HDA: Use LPIB position fix for Oaktrail
- According to the thread on alsa-devel, the LPIB method is to prefer
- for Oaktrail controller chip.
- Reference: http://mailman.alsa-project.org/pipermail/alsa-devel/2012-January/047800.html
- - ALSA: hda_intel: Add Oaktrail identifiers
- Oaktrail has 0x8086, 0x080a - AZX_DRIVER_SCH
- Taken from the Meego patches for Oaktrail
- - ALSA: hda - Check non-snoop in a single place
- Merge the checks for VIA and ATI-HDMI into a single place for better
- code-flow management.
- - ALSA: HDA: Add support for new AMD products
- This patch adds HDMI audio support for new AMD products. As HW default
- disable snoop, force non-snoop mode in HD audio driver.
- - ALSA: hda - Supports more audio streams
- So far, the driver supports up to 10 streams. This is a restriction in
- hda_intel.c and hda_codec.c: in the former, the fixed array size limits
- the amount, and in the latter, the fixed device-number assignment table
- (in get_empty_pcm_device()) limits the possibility.
- This patch reduces the restriction by
- - using linked list for managing PCM instances in hda_intel.c, and
- - assigning non-fixed device numbers for the extra devices
- - ALSA: HDA: Use LPIB Position fix for Intel SCH Poulsbo
- Several people with this chipset have reported inconsistent/sloppy
- values for position reporting when the DMA position buffer is used,
- and that setting position_fix=1 have fixed their problems.
- BugLink: https://bugs.launchpad.net/bugs/825709
- - ALSA: HDA: Set position fix to LPIB for an Atom/Poulsbo based device
- For the Asus 1101HA, reporting position by reading the DMA position
- buffer map seems unstable and often wrong. The reporter says that
- position_fix=LPIB works much better (although not 100%, but this is
- probably due to other issues).
- The controller chip is an Intel Poulsbo 8086:811b (rev 07) controller,
- and complete alsa-info is available here:
- https://launchpadlibrarian.net/86691768/alsa-info.txt.1TNwyE5Ea7
- BugLink: http://bugs.launchpad.net/bugs/825709
- Tested-by: Stefano Lodi
- - ALSA: hda_intel - revert a quirk that affect VIA chipsets
- This quirk sould be reverted. It has the following probems:
- 1) The quirk was intended to "ASUS MV2-MX SE" motherboards only, but the
- ID used matches a much broader range, potentially all boards containing a
- VIA chipset model in the family of vendor VIA 0x1106 and audio device ID
- 0x3288, which encompasses VIA-VT82xx, VIA-VT1xx and VIA-VT20xx chipsets.
- 2) VIA chipsets rely on azx_via_get_position() to handle correctly dma
- transfers during capture. Using POS_FIX_LPIB instead of POS_FIX_VIACOMBO
- leads to partially corrupted input buffers during capture. The effects
- of this bug are not immediately visible, it took strong DSP expertise,
- some expensive signal generator and a spectrum analyzer to identify it
- and verify correct behaviour using original default.
- 3) It's almost certain that the quirk did not fix the real problem,
- if there was one. Refer to original submission:
- http://mailman.alsa-project.org/pipermail/alsa-devel/2010-February/025109.html
- Signed-of-by: Marc Vertes <mvertes@sigfox.com>
- - ALSA: hda - Fix a regression for DMA-position check with CA0110
- The regression-fix in 3.1 for the check of DMA-position validity caused
- yet another regression for CA0110. As usual, this hardware seems working
- only with LPIB properly. Adding the appropriate driver-caps bit to force
- LPIB fixes the problem.
- Reported-and-tested-by: Andres Freund <andres@anarazel.de>
- - ALSA: hda - Add position_fix quirk for Dell Inspiron 1010
- The previous fix for the position-buffer check gives yet another
- regression on a Dell laptop. The safest fix right now is to add a
- static quirk for this device (and better to apply it for stable
- kernels too).
- Reported-by: Éric Piel <Eric.Piel@tremplin-utc.net>
- - ALSA: hda - Distinguish each substream for better sticky assignment
- The commit ef18beded8ddbaafdf4914bab209f77e60ae3a18 introduced a
- mechanism to assign the previously used slot for the next reopen of a
- PCM stream. But the PCM device number isn't always unique (it may
- have multiple substreams), and also the code doesn't check the stream
- direction, thus both playback and capture streams share the same
- device number.
- For avoiding this conflict, make a unique key for each substream and
- store/check this value at reopening.
- - ALSA: hda - Fix a regression of the position-buffer check
- The commit a810364a0424c297242c6c66071a42f7675a5568
- ALSA: hda - Handle -1 as invalid position, too
- caused a regression on some machines that require the position-buffer
- instead of LPIB, e.g. resulting in noises with mic recording with
- PulseAudio.
- This patch fixes the detection by delaying the test at the timing as
- same as 3.0, i.e. doing the position check only when requested in
- azx_position_ok().
- Reported-and-tested-by: Rocko Requin <rockorequin@hotmail.com>
- - ALSA: hda - Add snoop option
- Added a new option "snoop" for the traffic control of the HD-audio
- controller chip. When set to 0, the non-snooping mode is used with
- the traffic control bit is set in each stream control register.
- This may allow better operations in the low power mode, but the actual
- implementation is depending pretty much on the chipset.
- As already implemented, more or less each chipset has own snoop-control
- register bit. Now this setup refers to the snoop option, too.
- Also, a new VIA chipset may require the non-snooping mode when set so
- in BIOS. In such a case, the option value is overridden.
- As default, it's still set to snoop=1 for keeping the same behavior as
- before. In near future, it'll be set to 0 as default after checking
- it works in every system well.
- - ALSA: hda: option to enable arbitrary buffer/period sizes
- Add new parameter to disable rounding of buffer/period sizes to
- multiples of 128 bytes. This is more efficient in terms of memory
- access but isn't required by the HDA spec and prevents users from
- specifying exact period/buffer sizes. For example for 44.1kHz, a
- period size set to 20ms will be rounded to 19.59ms.
- Tested and enabled on Intel HDA controllers. Option is disabled by
- default for other controllers.
- Tested-by: Wu Fengguang <fengguang.wu@intel.com>
- - ALSA: hda - Add Kconfig for the default buffer size
- Add a Kconfig entry to specify the default buffer size.
- Distros using PulseAudio can choose a larger value here.
- - ALSA: HDA: Remove redundant LPIB quirks for ATI chipset
- Now that we have changed the position_fix default for ATI and AMD
- to be LPIB (see commit 50e3bbf989), we can remove the quirks that
- were added for ATI chipsets.
- - ALSA: hda - Fix SSYNC register value for non-Intel controllers
- SSYNC register was once defined as 0x34-37 in the old Intel datasheet,
- but corrected later to 0x38-3b. For fixing the register usage, a new
- bit-flag is introduced for indicating the old ICH SSYNC register, and
- ICH* PCI entries are added explicitly to enable this quirk.
- - ALSA: hda - Judge playback stream from stream id in
- azx_via_get_position()
- Instead of checking the azx_dev index with a fixed number (4), check
- the stream direction of the assigned substream.
- - ALSA: hda - Handle -1 as invalid position, too
- When reading from the position-buffer results in -1, handle as it's
- invalid and falls back to LPIB mode as well as 0.
- - ALSA: hda: Allow multple SPDIF controls per codec
- Currently, the data that backs the kcontrols created by
- snd_hda_create_spdif_out_ctls is stored directly in struct hda_codec. When
- multiple sets of these controls are stored, they will all manipulate the
- same data, causing confusion. Instead, store an array of this data, one
- copy per converter, to isolate the controls.
- This patch would cause a behavioural change in the case where
- snd_hda_create_spdif_out_ctls was called multiple times for a single codec.
- As best I can tell, this is never the case for any codec.
- This will be relevant at least for some HDMI audio codecs, such as the
- NVIDIA GeForce 520 and Intel Ibex Peak. A future change will modify the
- driver's handling of those codecs to create multiple PCMs per codec. Note
- that this issue isn't affected by whether one creates a PCM-per-converter
- or PCM-per-pin; there are multiple of both within a single codec in both
- of those codecs.
- Note that those codecs don't currently create multiple PCMs for the codec
- due to the default HW mux state of all pins being to point at the same
- converter, hence there is only a single converter routed to any pin, and
- hence only a single PCM.
- - ALSA: fix hda AZX_DCAPS_NO_TCSEL quirk check in driver_caps
- Commit 9477c58e3308 ("ALSA: hda - Reorganize controller quriks with bit
- flags") changed the driver type compares into various quirk bits.
- However, the check for AZX_DCAPS_NO_TCSEL got reverted: instead of
- clearing TCSEL for chipsets that have that standard capability, it
- cleared then when the NO_TCSEL bit was set.
- This can lead to noise and repeated sounds - a weird "echo" behavior.
- As the comment just above says: "Ensuring these bits are 0 clears
- playback static on some HD Audio codecs". Which is definitely true at
- least on my Core i5 Westmere system.
- - ALSA: hda - Reorganize controller quriks with bit flags
- Introduce bit-flags indicating the necessary controller quirks, and
- set them in pci driver_data field. This simplifies the checks in the
- driver code and avoids the pci-id lookup in different places.
- Also, this patch adds the PCI ID entry for AMD Hudson. AMD Hudson
- requires a similar workaround like ATI SB while other generic ATI and
- AMD controllers don't need but some ATI-HDMI quirks. So, we need a
- different entry for Hudson.
- - ALSA: hda - Use LPIB for ATI/AMD chipsets as default
- ATI and AMD chipsets seem not providing the proper position-buffer
- information, and it also doesn't provide FIFO register required by
- VIACOMBO fix. It's better to use LPIB for these.
- Reported-by: David Henningsson <david.henningsson@canonical.com>
- - Revert "ALSA: hda - Use position_fix=3 as default for AMD chipsets"
- This reverts commit 447ee6a7cbbfb5ae7ab8f9b8b058b4a04fe398bf.
- The workaround introduced by this commit seems bogus.
- The AMD chipsets don't provide proper position-buffer nor FIFO value
- required by VIACOMBO fix.
- - ALSA: hda - Enable snoop bit for AMD controllers
- AMD Hudson controllers give noisy outputs when the buffer data is
- rewritten on the fly as PulseAudio does. This seems fixed by the
- snoop bit enabled just like ATI chipset.
- Also, disable 64bit DMA as now, to be sure.
- We can revisit this later.
- - ALSA: hda - Use position_fix=3 as default for AMD chipsets
- AMD chipsets often behave pretty badly regarding the DMA position
- reporting. It results in the bad quality audio recording.
- Using position_fix=3 works well in general for them, so let's enable
- it as default for AMD.
- - ALSA: hda - Enable sync_write workaround for AMD generically
- The workaround for AMD chipset via sync_write flag seems needed for
- machines with Realtek codecs. So, it's better to activate it
- generically in hda_intel.c from the beginning.
- - ALSA: hda - ALSA HD Audio patch for Intel Panther Point DeviceIDs
- This patch adds the HD Audio Controller DeviceIDs for the Intel Panther Point PCH.
- - ALSA: hda: Prevent writing ICH6_PCIREG_TCSEL on AMD systems
- azx_init_pci() always writes PCI config register ICH6_PCIREG_TCSEL
- although this looks to be only defined on Intel systems and has a
- different meaning on AMD systems. On AMD systems the PCI interrupt pin
- control register is modified instead.
- Since the meaning of offset 0x44 in device specific configuration space is
- unknown for devices by other vendors, we only exclude AMD systems to
- retain the current behaviour.
- - ALSA: HDA: Add position_fix quirk for an Asus device
- The bug reporter claims that position_fix=1 is needed for his
- microphone to work. The controller PCI vendor-id is [1002:4383] (rev 40).
- Reported-by: Kjell L.
- BugLink: http://bugs.launchpad.net/bugs/718402
- - ALSA: hda - Don't handle empty patch files
- When an empty string is passed to patch option, the driver should
- ignore it. Otherwise it gets an error by trying to load it.
HDA generic driver
- - Refreshed patches
- Mainly for bool modparm changes.
- - Fix builds of hda_intel.c with old kernels below 2.6.29
- Some old kernels have no pgprog_writecombine() although they have
- set_pages_wc().
- - Add workarounds for older kernels to set non-cached page flags in hda_intel.c
- - Fix fuzz of pci/hda/hda_intel.patch
- - Add pci/hda/hda_jack.c build stub
- - ALSA: hda/realtek - Avoid conflict of unsol-events with static quirks
- The recently added jack-kctl support sets the unsol event tags
- dynamically, while static quirks usually set the fixed tags in the
- init_verbs array. Due to this conflict, the own unsol event handler
- can't retrieve the tag and handle it properly any more.
- For fixing this, avoid calling snd_hda_jack_add_kctls() for static
- quirks, and always let them use own handlers instead of the standard
- one for the auto-pareser.
- Reported-by: David Henningsson <david.henningsson@canonical.com>
- - ALSA: hda - Return the error from get_wcaps_type() for invalid NIDs
- When an invalid NID is given, get_wcaps() returns zero as the error,
- but get_wcaps_type() takes it as the normal value and returns a bogus
- AC_WID_AUD_OUT value. This confuses the parser.
- With this patch, get_wcaps_type() returns -1 when value 0 is given,
- i.e. an invalid NID is passed to get_wcaps().
- Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740118
- - Merge all missing things from upstream.
- - ALSA: hda - Manage unsol tags in hda_jack.c
- Manage the tags assigned for unsolicited events dynamically together
- with the jack-detection routines. Basically this is almost same as what
- we've done in patch_sigmatel.c. Assign the new tag number for each new
- unsol event, associate with the given NID and the action type, etc.
- With this change, now all pins looked over in snd_hda_jack_add_kctls()
- are actually enabled for detection now even if the pins aren't used for
- jack-retasking by the driver.
- - ALSA: hda - Add missing inclusion of linux/export.h
- This is needed newly since 3.2...
- - ALSA: hda - Integrate input-jack stuff into kctl-jack
- Instead of managing input-jack stuff separately, call all stuff inside
- the kctl-jack creation, deletion and report. The caller no longer needs
- to care about input-jack.
- The better integration between input-jack and kctl-jack should be done
- in the upper layer in near future, but for now, it's implemented locally
- for more tests.
- - ALSA: hda - Give more unique names by snd_hda_get_pin_label()
- The function now gives more unique names for the output pins by adding
- some prefix and suffix for the location and the channels. Otherwise, it
- can pass the index number.
- - ALSA: hda/jack - Fix the assignment of input jack-type
- The type field was lost during the transition. Restored.
- - ALSA: hda/jack - Fix NULL-dereference at probing
- At probing time, the elements that aren't assigned to kctl or jack may
- be called. Need proper NULL-checks.
- - ALSA: HDA: Jack: Export required functions from hda_jack.c
- These two functions are being used by the codec-idt and codec-hdmi
- modules, so they need to be exported properly.
- - ALSA: hda - Merge input-jack helpers to hda_jack.c
- We can use the very same table in hda_jack.c for managing the list for
- input-jack elements, too.
- - ALSA: hda - Create jack-detection kcontrols
- Create kcontrols for pin jack-detections, which work similarly like
- jack-input layer. Each control will notify when the jack is plugged or
- unplugged, and also user can read the value at any time via the normal
- control API.
- The control elements are created with iface=CARD, so that they won't
- appear in the mixer apps.
- So far, only the pins that enabled the jack-detection are registered.
- For covering all pins, the transition of the common unsol-tag handling
- would be needed. Stay tuned.
- - ALSA: hda - Cache the jack-detection value
- Introduce a table containing the pins and their jack-detection states
- for avoiding the unnecessary verbs to check the pin status at each time.
- When the unsol event is enabled via snd_hda_jack_detect_enable(), it
- automatically adds the given NID to the table. Then the driver supposes
- that the codec driver will set the dirty flag appropariately when an
- unsolicited event is invoked for that pin.
- The behavior for reading other pins that aren't registered in the table
- doesn't change. Only the pins assigned to the table are cached, so far.
- In near futre, this table can be extended to use the central place for
- the unsolicited events of all pins, etc, and eventually include the
- jack-detect kcontrols that replace the current input-jack stuff.
- - ALSA: hda - Introduce snd_hda_get_pin_label()
- Create a new helper function snd_hda_get_pin_label() for getting a label
- string for both input and output pins. hda_get_input_pin_label() is
- obsoleted by this function, and the callers are replaced appropriately
- now by this patch.
- - ALSA: hda/realtek - Move ALC880 model=lg-lw to auto-parser
- ALC880 model=lg-lw works fine with the auto-parser as is.
- - ALSA: hda/realtek - Move ALC880 model=medion-rim to auto-parser
- Translate ALC880 medion-rim static configs to the auto-parser with the
- additional GPIO2 verb and COEF setup.
- - ALSA: hda - fail ELD reading early
- With the ELD repoll mechanism, we can (and should) fail the ELD reading
- immediately when find something obviously wrong and let the caller retry
- after some delay.
- - ALSA: hda - move eld->spk_alloc fixup to hdmi_update_eld()
- It looks more natural and saves two lines of code.
- - ALSA: hda - fix ELD memory leak
- memset(eld) clears eld->proc_entry which will leak the struct
- snd_info_entry when unloading module.
- Fix it by
- - memset only the fields before eld->eld_buffer
- - set eld->eld_valid to true _after_ all eld fields have been filled
- - ALSA: hda/realtek - Move ALC885 macpro and imac24 models to auto-parser
- The ALC882 macpro and imac24 static configs can be transferred to the
- auto-parser with the additional GPIO setup.
- - ALSA: hda/realtek - Remove left-over chunks in alc882_quirks.c
- Remove unused variables.
- - ALSA: hda/realtek - Rewrite ALC882 acer-aspire-* models with the auto-parser
- Now we can move the big acer-aspire-* static quirks to the auto-paresr
- with some additional pin-configs and verbs.
- - ALSA: hda/realtek - Drop ALC882 desktop model quirks
- Now we're touching the desktop static configs for ALC88x codecs.
- These are mostly OK with the auto-parser, but some models need careful
- handling; ALC889 intel mobo requires the COEF setup, and W2JC needs
- GPIO1 and COEF.
- - ALSA: hda/realtek - Remove ALC882 targa-* models
- All ALC882 targa-* models can be replaced with the auto-parser just
- with the additional GPIO3 setup. And it's generically applied to all
- MSI boards unless other quirks are present.
- - ALSA: hda/realtek - Move ALC882 model=acer-aspire to auto-parser
- The ALC882 model=acer-aspire requires the additional COEF setup.
- - ALSA: hda/realtek - Drop ALC882 model=acer quirk
- This quirk is anyway not used any more, so no problem to remove.
- - ALSA: hda/realtek - Drop ALC882 model=clevo-m720 quirk
- This works well without any special handling with the auto-parser.
- - ALSA: hda/realtek - Drop ALC882 3stack-hp, 6stack-dell and clevo-m540r models
- These static configs are no longer needed by replacement with the
- auto-parser.
- - ALSA: hda/realtek - Replace ALC882 arima, medion and laptop-eapd quirks
- Move these quitks to the auto-parser. They just need some EAPD setups
- in addition.
- - ALSA: hda/realtek - Drop ALC882 mitac and fujitsu-xa3530 static configs
- These are working well with the auto-parser although they have
- relatively complex setup. Let's go forward.
- - ALSA: hda/realtek - Drop ALC882 lenovo and haier-w66 static configs
- Remove all ALC882 static configurations for all Lenovo and Haier-w66
- quirks. They work fine with the auto-parser now.
- - ALSA: hda/realtek - Drop lenovo-sky, asus-m90v, fujitsu-pi2515 quirks
- These machines are working well with the auto-parser without static
- configurations. More diet.
- - ALSA: hda/realtek - Drop ALC882 asus-a7j and asus-a7m models
- These models work fine with the auto-parser with the additional COEF
- setup. The iMac 7,1 (106b:3200) also uses the same quirk, so remove it
- too.
- - ALSA: hda/realtek - Move ALC888 ASUS EEE1601 config to auto-parser
- The ASUS EEE1601 works almost fine with the auto-parser but the static
- configuration has a certain specific COEF verb. Add this to the fix-up
- list so that we can drop the whole EEE1601 static config from
- alc882_quirks.c.
- - ALSA: hda/realtek - Drop ALC882 model=asus-p5q static config
- It works well with the auto-parser and the default BIOS setup.
- - ALSA: hda/realtek - Rewrite ALC882 model=vaio-tt with auto-parser
- Providing a pincfg fix for VAIO-TT with ALC889 codec to work with the
- auto-parser, and drop the static configuration.
- - ALSA: hda/realtek - Remove all ALC262-quirk codes
- Now that model=ultra is supported well by the auto-parser, we can get rid
- of the whole alc262_quirks.c and its related codes.
- - ALSA: hda/realtek - Drop ALC262 model=basic static configs
- Now most of ALC262 stuff has been moved to the auto-parser, and no longer
- need for keeping model=basic.
- - ALSA: hda/realtek - Drop ALC262 model=hippo static quirks
- Both entries for ALC262 model=hippo work well with the auto-parser and
- the default BIOS setup. No static configs are needed, so drop them.
- - ALSA: hda/realtek - Drop ALC262 model=hippo static quirks
- This model (actually BenQ Joybook) works fine with the default auto-parser
- and the BIOS setup. Just drop the static quirks.
- - ALSA: hda/realtek - Convert ALC262 model=fujitsu to auto-parser
- It works well with the auto-parse and the default BIOS setup when an
- additional COEF setup (for benq) is used.
- - ALSA: hda/realtek - Convert ALC262 benq and benq-t31 to fixup-lists
- The conversion from ALC262 model=benq and model=benq-t31 static configs
- to auto-parser requires the manual COEF setups for corresponding models.
- - ALSA: hda/realtek - Convert ALC262 lenovo-3000 quirks to fixup-list
- The static quirks for ALC262 Lenovo 3000 can be covered by the auto-
- parser with a fixup of the mic-pin to VREF50 and the additional COEF
- verb.
- - ALSA: hda/realtek - Drop ALC262 model=nec quirk
- This laptop works also fine with the auto-parser and the BIOS setup.
- A good boy.
- - ALSA: hda/realtek - Drop ALC262 model=toshiba-s06
- This laptop works fine with the current auto-parser and the BIOS setup,
- so let's drop the static configuration.
- - ALSA: hda/realtek - Convert ALC262 model=toshiba-rx1 to a fixup-list
- Use the auto-parser for ALC262 model=toshiba-rx1 with the fixed pin-
- configs. The BIOS table seems incorrect, so many pin entries are
- overwritten to match with the former quirk.
- - ALSA: hda/realtek - Convert alc262 model=tyan to a fixup-list
- Use the auto-parser for ALC262 model=tyan with a pin-config fix-up and
- drop the static configuration.
- - ALSA: hda - Re-enable the check NO_PRESENCE misc bit
- We disabled the check of NO_PRESENCE bit of the default pin-config
- in commit f4419172 temporarily. One problem was that the first
- implementation was wrong -- the bit after the shift must be checked.
- However, this would still give many regressions on machines with broken
- BIOS. They set this bit wrongly even on active pins.
- A workaround is to check whether all pins contain this bit. As far as
- I've checked, broken BIOSen set this bit on all pins, no matter whether
- active or not. In such a case, the driver should ignore this bit check.
- - ALSA: hda - Revert the check of NO_PRESENCE pincfg default bit
- The implementation on commit [08a1f5eb: ALSA: hda - Check NO_PRESENCE
- pincfg default bit] seems like a mis-interpretation of specification.
- The spec gives the reversed bit definition. But, following the spec
- also causes to change so many existing device configurations, thus we
- can't change it so easily for now. For 3.2-rc1, it's safer to revert
- this check (actually this patch comments out the code).
- We may re-introduced the fixed version once after the wider test-case
- coverages are done.
- - ALSA: HDA: Refactor Realtek's automute
- Increase readability and understandability in the automute code.
- - ALSA: hda - Check NO_PRESENCE pincfg default bit
- HD-audio spec defines a bit in pin default configuration for indicating
- that the pin isn't used for jack-detection although the codec is capable
- of it. Better to check this bit as well in jack_is_detectable() helper
- function.
- Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
- - ALSA: hda_hwdep: Fix possible buffer overflow
- If a line in the firmware file is larger than the given buffer size (and
- so the firmware file size), size is set to a value larger than the actual
- buffer size. This results in an overflow in the buffer passed.
- - ALSA: hda/realtek - Fix missing volume controls with ALC260
- ALC260 has multiple mixer widgets connected to the shared DAC, but the
- driver currently doesn't check this possibility and ignores when the DAC
- is shared with others. This resulted in the silent output from some
- routes because of lack of the amp setup.
- This patch adds the workaround for it by checking the route even with the
- shared DAC, but also checking the conflict with the existing control for
- the very same widget NID.
- Reference: https://bugzilla.novell.com/show_bug.cgi?id=726812
- - ALSA: hda - Moved snd_print_pcm_rates() back into hda_proc.c
- Since hda_proc.c is now the only user of snd_print_pcm_rates(), better to
- put it back locally to hda_proc.c and revert to the old style.
- - ALSA: hdmi: fix printout of SAD sampling rates
- SAD sampling rate information reported in
- /proc/asound/cardX/eldX is incorrect due to a mismatch
- between HDA and HDMI frequencies. Add new routine to provide
- relevant values.
- - ALSA: hda/hdmi: expose ELD control
- Applications may want to read ELD information to
- understand what codecs are supported on the HDMI
- receiver and handle the a-v delay for better lip-sync.
- ELD information is exposed in a device-specific
- IFACE_PCM kcontrol. Tested both with amixer and
- PulseAudio; with a corresponding patch passthrough modes
- are enabled automagically.
- ELD control size is set to zero in case of errors or
- wrong configurations. No notifications are implemented
- for now, it is expected that jack detection is used to
- reconfigure the audio outputs.
- - ALSA: hda - Allow patching with any vendor/subsystem ids
- In the ugly real world, there area really broken devices that don't set
- codec SSID correctly. In such a case, the ID can be random, thus the
- patching won't work reliably.
- For applying the patch forcibly to such a device, the driver will skip
- the vendor and/or subsystem ID checks when zero or a negative number is
- given in [codec] section.
- - ALSA: hda - Remove the rest of ALC662 quirks
- The rest of ALC662 quirks are only for desktops, and they should work
- with the auto-parser.
- - ALSA: hda - Remove ALC662 ASUS eeepc-ep20 model quirk
- Since the recent fixes, this device works with the auto-parser well.
- Let's kill it.
- - ALSA: hda - Remove ALC662 ASUS M51VA, G71V, H13 and G50V model quirks
- These models work now with the BIOS auto-parser, so let's drop them.
- - ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&co quirks with fixups
- Similarly like ALC662 asus-mode* models, rewrite the laptop-amic and
- dmic models with the static pin-config tables.
- Now we can get rid of all alc269_quirks.c.
- - ALSA: hda - Rewrite ALC662 asus-mode* models with fixups
- Re-implement the asus-mode[1-8] quirks with the pin-config tables.
- They are provided in case where BIOS is broken on the device, so it's
- not enabled in PCI SSID lookup table. User needs to specify it via model
- option explicitly if the driver doesn't work with the BIOS setup as is.
- - ALSA: hda - Add multi-headphone NIDs in multiout struct
- For supporting both the multiple headphones and the multiple speakers,
- add the new field in struct hda_multi_out, and evaluate in the standard
- setup functions.
- - ALSA: hda - Remove all ALC861 and ALC861-VD quirks
- Let's remove the rest of ALC861 and ALC861-VD quirks.
- If any breakage is found, it can be fixed easily via the pin-config
- table update.
- - ALSA: hda - Rename to snd_hda_parse_pin_defcfg()
- ... and add a new bit-flags argument to specify the behavior of the
- function. The older function is kept as is (as a wrapper).
- - ALSA: hda - Don't spew too many ELD errors
- Currently HD-audio driver shows the all error ELD byte as an error
- in the kernel message. This is annoying when the video driver doesn't
- set the correct ELD from the beginning. e.g. radeon sends a zero-byte
- data, but we still check ELD with the fixed 128 byte as a workaround
- for some broken devices, it spews 128-times errors.
- For avoiding this, the driver aborts reading when the first byte is
- invalid. In such a case, the whole data is certainly invalid.
- - ALSA: hda - Remove ALC662 model=levono-101e model quirk
- - ALSA: hda - Remove ALC662 eeepc-p701 and ecs models
- These are confirmed to work with the auto-parser with pincfg fixups.
- - ALSA: hda - Get rid of left-over chunks by previous cleanups
- Also update the model description, too.
- - ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models
- These are confirmed to work with the auto-parser.
- - ALSA: hda - Remove ALC268 model quirks
- Get rid of the rest of ALC268 model quirks. They are all confirmed to
- work with the auto-parser, too.
- - ALSA: hda - Replace ALC269 quanta and lifebook models with fixups
- Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook
- specific COEF and pin configurations. Removed the model entries
- from alc269_quirks.c.
- - ALSA: hda - Remove acer, acer-aspire and acer-dmic models for ALC268
- Moved some code to alc269_quirks.c for dependency, too.
- - ALSA: hda - Fix duplicated capture-volume creation for ALC268 models
- Fix the duplicated creation of capture-mixer elements for some static
- ALC268 configurations. The capture mixers must be put to cap_mixer field
- instead of mixers array.
- - ALSA: hda - Remove ALC269 model=futjisu and Acer
- Both are supported by the auto-parser.
- - ALSA: hda - Remove dell, dell-zm1 and samsung-nc10 models for ALC272
- The auto-parser works for these models.
- - ALSA: hda - Remove ALC861VD Lenovo, Dallas, HP and V1S model quirks
- These are covered by the auto-parser well enough.
- - ALSA: hda - Remove ALC680 model quirks
- The auto-parser works fine.
- - ALSA: hda - Remove ALC268 Dell, Toshiba and Zapto model quirks
- These models work fine with the BIOS auto-parser.
- - ALSA: hda - Remove ALC260 HP model quirks
- ALC260 HP models work with the BIOS auto-parser. Let's cut them off.
- Also move alc260_hp_master_*() to alc262_quirks.c as these are still
- referred from there.
- - ALSA: hda - Remove ALC262 HP and sony-assamd quirks
- HP and sony-assamd models work with the BIOS auto-parser nowadays,
- so let's reduce the unnecessary code.
- - ALSA: hda - Add snd_hda_override_pin_caps() helper function
- - ALSA: hda - Add tracepoint for unsolicited events
- - ALSA: hda - Add basic tracepoints
- Add a few tracepoints to HD-audio driver.
- - ALSA: hda - Use auto-parser for ASUS UX50, Eee PC P901, S101 and P1005
- It works fine with auto-parser and now the digital mic workaround was
- implemented in auto-parser fixup, let's drop the static model quirks for
- these models.
- - ALSA: hda - Make CONFIG_SND_HDA_POWER_SAVE depending on CONFIG_PM
- It makes little sense to enable power-saving without PM.
- This removes SND_HDA_NEEDS_RESUME define so that we can use CONFIG_PM
- in all places.
- - ALSA: hda - fix up typos in Kconfig help for default buffer size introduced in acfa634f
- This commit is a fix up for commit acfa634f.
- commit acfa634f7e199193ec28282e82a5a6dd8edebcb7
- Author: Takashi Iwai <tiwai@suse.de>
- Date: Tue Jul 12 17:27:46 2011 +0200
- ALSA: hda - Add Kconfig for the default buffer size
- - ALSA: hda - Add Kconfig for the default buffer size
- Add a Kconfig entry to specify the default buffer size.
- Distros using PulseAudio can choose a larger value here.
- - ALSA: hda - Always read raw connections for proc output
- In the codec proc outputs, read the raw connections instead of the
- cached connection list, i.e. proc files contain only raw values.
- - ALSA: hda - Split quirk codes from patch_realtek.c
- Put the all static quirk codes out of patch_realtek.c, split into the
- file for each codec model. For controlling the build of quirk codes,
- a new Kconfig, CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS is introduced.
- By setting this off, all quirk codes won't be built, thus you can save
- lots of memory.
- The codes in patch_realtek.c are also shuffled and more comments are
- given, but the contents aren't changed. This is just a refactoring.
- - ALSA: hda - remove SND_HDA_POWER_SAVE protection of struct hda_loopback_check
- to fix build problems when it is disabled.
- - ALSA: hda - Add Creative CA0132 HDA codec support
- Create patch_ca0132.c, to add support for devices featuring the
- Creative CA0132 HD-audio codec.
- This driver implements :-
- * 1 playback subdevice to headphone and speaker
- * 2 capture subdevices:
- i - Mic-in
- ii- Line-in
- * mixer device
- Advanced DSP features are not yet included.
- Developed and maintained by Creative Labs, Inc.
- - ALSA: HDMI - fix ELD monitor name length
- I noticed that the last character of the ELD monitor name is lost,
- this fixes the issue.
- This fix should be confirming to the HDA spec, and works together with
- the DRM part of the ELD patch.
- The HDA spec does not mention that Monitor_Name_String is an '\0'
- ending string, and it allows NML to be 1, which is only valid when MNL
- does not count the possible ending '\0'.
- - ALSA: hda - Fix missing static inline to beep dummy function
- The commit 2308f4add3de9f6c9c9f02e49461e94d84bb200a missed static inline
- thus it resulted in multiple-definitions error at linking.
- - ALSA: hda - Fix beep_device compilation warnings
- Using static inline functions can reduce compilation messages
- and macro misuse.
- sound/pci/hda/patch_conexant.c: In function ‘patch_cxt5045’:
- sound/pci/hda/patch_conexant.c:1232:3: warning: statement with no effect
- - ALSA: hda: hdmi_eld_update_pcm_info: update a stream in place
- A future change won't store an entire hda_pcm_stream just to represent
- the capabilities of a codec; a custom data-structure will be used. To
- ease that transition, modify hdmi_eld_update_pcm_info to expect the
- hda_pcm_stream to be pre-initialized with the codec's capabilities, and
- to update those capabilities in-place based on the ELD.
- - ALSA: hda: Virtualize SPDIF out controls
- The SPDIF output controls apply to converter widgets. A future change
- will create a PCM device per pin widget, and hence a set of SPDIF output
- controls per pin widget, for certain HDMI codecs. To support this, we
- need the ability to virtualize the SPDIF output controls. Specifically:
- * Controls can be "unassigned" from real hardware when a converter is
- not used for the PCM the control was created for.
- * Control puts only write to hardware when they are assigned.
- * Controls can be "assigned" to real hardware when a converter is picked
- to support output for a particular PCM.
- * When a converter is assigned, the hardware is updated to the cached
- configuration.
- - ALSA: HDA: Unify HDMI hotplug handling.
- This change unifies the initial handling of a pin's state with the code to
- update a pin's state after a hotplug (unsolicited response) event. The
- initial probing, and all updates, are now routed through hdmi_present_sense.
- The stored PD and ELDV status is now always derived from GetPinSense verb
- execution, and not from the data in the unsolicited response. This means:
- a) The WAR for NVIDIA codec's UR.PD values ("old_pin_detect") can be
- removed, since this only affected the no-longer-used unsolicited
- response payload.
- b) In turn, this means that most NVIDIA codecs can simply use
- patch_generic_hdmi instead of having a custom variant just to set
- old_pin_detect.
- c) When PD && ELDV becomes true, no extra verbs are executed, because the
- GetPinSense that was previously executed by snd_hdmi_get_eld (really,
- hdmi_eld_valid) has simply moved into hdmi_present_sense.
- d) When PD && ELDV becomes false, there is a single extra GetPinSense verb
- executed for codecs where old_pin_detect wasn't set, i.e. some NVIDIA,
- and all ATI/AMD and Intel codecs. I doubt this will be a performance
- issue.
- The new unified code in hdmi_present_sense also ensures that eld->eld_valid
- is not set unless eld->monitor_present is also set. This protects against
- potential invalid combinations of PD and ELDV received from HW, and
- transitively from a graphics driver.
- Also, print the derived PD/ELDV bits from hdmi_present_sense so the kernel
- log always displays the actual state stored, which will differ from the
- values in the unsolicited response for NVIDIA HW where old_pin_detect was
- previously set.
- Finally, a couple of small tweaks originally by Takashi:
- * Clear the ELD content to zero before reading it, so that if it's not
- read (i.e. when !(PD && ELDV)) it's in a known state.
- * Don't show ELD fields in /proc ELD files when the ELD isn't valid.
- The only possibility I can see for regression here is a codec where the
- GetPinSense verb returns incorrect data. However, we're already exposed
- to that, since that data is used (a) from hdmi_add_pin to set up the
- initial pin state, and (b) within snd_hda_input_jack_report to query
- a pin's presence value. As such, I don't believe any HW has bugs here.
- Includes-changes-by: Takashi Iwai <tiwai@suse.de>
- - ALSA: hda - Check unsol-cap in is_jack_detectalbe()
- Also replace more open-codes with this function.
- - ALSA: hda - Add automute-mode enum to Conexant auto-parser
- Implement the same functionality as Realtek's auto-mute mode control.
- Now Conexant auto-parser can also mutes line-out and provide the enum
- control for different automute behavior.
- - ALSA: hda - Constify some API function arguments
- Also fixed the assignment of multiout.dac_nids to satisfy const.
- - ALSA: hda - Constify some API function arguments
- - ALSA: hda - Make common input-jack helper functions
- Since multiple codec drivers already use the input-jack stuff, let's
- make common helper functions to reduce the duplicated codes.