summaryrefslogtreecommitdiff
path: root/sound/pci/hda/patch_via.c
AgeCommit message (Collapse)AuthorFilesLines
2011-07-04ALSA: hda - Create HP-vol control properly for VIA codecsTakashi Iwai1-3/+7
When the individual DAC is available for the headphone output, the driver should create the DAC for its volume control. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-04ALSA: hda - Define some constants in patch_via.cTakashi Iwai1-4/+6
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-04ALSA: hda - Fix invalid multi-channel amplifiers for VT1718SLydia Wang1-5/+20
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. Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-04ALSA: hda - Fix issue that front can't output sound for VT1718SLydia Wang1-0/+4
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. Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-01ALSA: hda - Fix the silent front with independent-HP for VIA codecsLydia Wang1-0/+3
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. Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-30ALSA: hda - Re-implementation of VIA Independent-HP sharing with side streamTakashi Iwai1-6/+37
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-29ALSA: hda - Fix jack-detection on non-VT1708 VIA codecsLydia Wang1-1/+2
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(). Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-29ALSA: hda - Create snd_hda_get_conn_index() helper functionTakashi Iwai1-36/+4
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-29ALSA: hda - Fix unsol event initializations for VIA codecsLydia Wang1-1/+1
Fix a issue to enable unsolicited response to line-out pins. Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-22ALSA: hda - Implement dynamic-ADC switching for VIA codecsTakashi Iwai1-125/+391
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Auto-mute smart51 surround pins for VIA codecsTakashi Iwai1-23/+8
When smart51 mode is enabled, auto-mute these surround outputs as well as the primary line-out. Also this patch includes minor clean-ups. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Remove redundant VT1709 and VT1708B codesTakashi Iwai1-67/+19
Unify the VT1709 10ch and 6ch parsers, as well as VT1708B 8ch and 4ch parsers. They have no difference now. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - VT1708 independent HP routing fixTakashi Iwai1-100/+122
The codecs like VT1708 needs more complicated routing using the mixer widget rather than the simple selector widgets. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Fix surround-volume parsing for VT1708B codecsTakashi Iwai1-3/+16
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Fix the check of loopback-mixer element index in patch_via.cTakashi Iwai1-2/+4
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> Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Assign smart51 only in the same stack for VIA codecsTakashi Iwai1-33/+30
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Fix re-routing of HP-independent mode in patch_via.cTakashi Iwai1-41/+60
Re-route the whole output path when HP-independent mode is changed. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Fix creations of playback volume controls in patch_via.cLydia Wang1-1/+1
Fix a issue to create playback volume control if pin has amplifier capability but not DAC. Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Revisit output_path parsing in patch_via.cTakashi Iwai1-37/+50
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(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-21ALSA: hda - Use xxx Boost Volume for VIATakashi Iwai1-1/+1
Drop "Capture" prefix from the mic-boost names. Otherwise some control names can overflow the max name length. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Simplify analog-low-current mode check for VIA codecsTakashi Iwai1-82/+43
Use the existing aa-loop list for simplifying the check for analog low-current mode. Also fix the stream count test for playback streams. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Remove NID_MAPPING hacks in patch_via.cTakashi Iwai1-16/+0
There is no longer virtual kmixer element for NID mapping. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Remove unused defines and struct fields in patch_via.cTakashi Iwai1-25/+0
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Name the primary out as Speaker when needed for VIA codecsTakashi Iwai1-1/+5
When the primary output is the speaker output, rather name it as "Speaker". This will be more intuitive. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Create loopback-list dynamically in patch_via.cTakashi Iwai1-139/+25
Create loopback list dynamically from the parsed input pins for VIA codecs instead of the fixed arrays. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Fix smart51 handling againTakashi Iwai1-83/+64
Fix the broken detection of smart51 and its handling. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Create virtual-master control for VIA codecsTakashi Iwai1-0/+42
Now let's add the missing Master control to VIA codecs. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Initialize unsol events dynamically in patch_via.cTakashi Iwai1-346/+98
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Initialize input-path dynamically in patch_via.cTakashi Iwai1-314/+49
Similarly like the previous commit, initialize the input-paths dynamically from the parsed results instead of the fixed array for VIA codecs. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Initialize output path dynamically in patch_via.cTakashi Iwai1-214/+135
Instead of fixed array for each codec type, initialize the output path dynamically from the parsed results. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Replace with standard consts in patch_via.cTakashi Iwai1-9/+2
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Fix independent-HP handling in patch_via.cTakashi Iwai1-238/+58
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... Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Unify auto-parser in patch_via.cTakashi Iwai1-374/+53
Now all codecs use the same parser-path, so we can reduce into a single auto-parser function. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Return error for invalid setup for VIATakashi Iwai1-44/+9
Instead of ignoring the invalid pin configuration, return the error. This will avoid unexpected crash, anyway. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Unify capture-mixer creations in patch_via.cTakashi Iwai1-268/+73
Create capture-related mixer elements dynamically from the parsed ADCs and input-pins instead of fixed values for each codec. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Assign HP-independent PCM to individual streamTakashi Iwai1-53/+91
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Unify PCM assignments in patch_via.cTakashi Iwai1-454/+46
Unify PCM streams for all codecs by assigning the NID dynamically. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Don't create secondary substream when no independent-hp is usedTakashi Iwai1-0/+2
For VIA codecs, we shouldn't create a substream for independent HP mode, when no individual HP DAC is found. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Re-implement smart51 detection for VIA codecsTakashi Iwai1-42/+75
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Unify output-control parsing in patch_via.cTakashi Iwai1-1186/+180
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Unify input-volume creations in patch_via.cTakashi Iwai1-92/+40
Now storing the analog-mixer widget in spec, we can simplify the rest parts. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Auto-mute all LO and speakers in patch_via.cTakashi Iwai1-32/+31
Muting all line-outs and/or speakers is more common in other drivers, so we should follow it, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Change pin-ctl for auto-muting in patch_via.cTakashi Iwai1-39/+25
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Generate PCM names dynamically in patch_via.cTakashi Iwai1-57/+7
This reduces lots of static strings. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Refactor ctl array handling in patch_via.cTakashi Iwai1-21/+23
No functional change. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Defer mixer element creation to the right time in patch_via.cTakashi Iwai1-23/+19
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Fill ADCs dynamically for VIA codecsTakashi Iwai1-164/+80
Instead of giving the fixed ADC list, parse the widgets and fill in ADCs dynamically. Also, probe the stereo-mixer input more dynamically, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Add control to suppress the dynamic pin-power for VIATakashi Iwai1-1/+59
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. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-20ALSA: hda - Remove superfluous NID_MAPPING use for smart51 mixerTakashi Iwai1-18/+9
Just a minor clean up; nid-mapping can be set directly to the smart51 mixer element. Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-06-06ALSA: hda: Virtualize SPDIF out controlsStephen Warren1-0/+1
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. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>