| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
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>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
|
|
|
|
|
|
| |
Fixes bug introduced by 1c073b67.
Also declare pa local to block in which it is used.
Signed-off-by: Eliot Blennerhassett <eblennerhassett@audioscience.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
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.
Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit d7c3e9525ac8e898f1156a1f3a7c5038f6560186 as it does
not currently build due to missing dependencies in the Samsung tree.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In preparation for ASoC Dynamic PCM (AKA DSP) support.
Provide convenience methods to retrieve the soc_card or snd_card from a
DAPM context.
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I2S in Exynos4 and S5PC110(S5PV210) has a internal dma.
It can be used low power audio mode and 2nd channel transfer.
This patch can support idma.
Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, I2S driver only can support system dma.
In this patch, i2s driver can support internal dma too.
IDMA h/w configuration is initialized on idma.c
Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In davinci_vcif_trigger() function, a break() statement was missing
causing the davinci_vcif_stop() function to be called as a fallback
after calling davinci_vcif_start().
Signed-off-by: Rajashekhara, Sudhakar <sudhakar.raj@ti.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
According to DM365 voice codec data sheet at [1], before starting
recording or playback, ADC/DAC modules should follow a reset and
enable cycle. Writing a 1 to the ADC/DAC bit in the register resets
the module and clearing the bit to 0 will enable the module. But the
driver seems to be doing the reverse of it.
[1] http://focus.ti.com/lit/ug/sprufi9b/sprufi9b.pdf
Signed-off-by: Rajashekhara, Sudhakar <sudhakar.raj@ti.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
|
| |
| |
| |
| |
| |
| |
| | |
Add a convenience macro for external enumerated widgets.
Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This closes the small race between a status being read in response to an
interrupt and clearing the interrupt, meaning that if the status changes
between those periods we might not get a reassertion of the interrupt.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Print a hint when the user has a setup where CONFIG_REGULATOR is really
needed to make the driver work.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Tested-by: Dong Aisheng <b29396@freescale.com>
Tested-by: Shawn Guo <shawn.guo@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The code for registering the internal ldo was present twice. Turn it
into a function instead. Also, inform the user if LDO is used now.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Tested-by: Dong Aisheng <b29396@freescale.com>
Tested-by: Shawn Guo <shawn.guo@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In one comment, cpu_dai was mentioned although codec_dai was used in the
code. Also, fix the name for the card dai list which has no seperation
into card_dai and codec_dai.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Since quite a few drivers are not managing to flag the cache as needing
to be resynced after suspend and it's a reasonable thing to do flag the
cache as needing sync automatically when suspending.
The expectation is that systems will mainly only keep the CODEC powered
when doing audio through the CODEC so we won't actually suspend the
device anyway; drivers which want to can override this behaviour when
they resume.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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]
Signed-off-by: Tim Howe <tim.howe@cirrus.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Move the macros depending on snd_mask_min() and co out of pcm.h into
pcm_params.h. Otherwise using some params_*() macros will give comiple
errors without inclusion of pcm_params.h.
Also use hw_param_interval_c() and hw_param_mask_c() for const pointer.
Reported-by: Tim Blechmann <tim@klingt.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| | |
Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Formatting a PCM name is useful for module debug too.
Add snd_prefix when making function public.
[minor coding-style fixes by tiwai]
Signed-off-by: Eliot Blennerhassett <eblennerhassett@audioscience.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
"force" argument is always true, so let's strip it off.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add a Kconfig entry to specify the default buffer size.
Distros using PulseAudio can choose a larger value here.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In the codec proc outputs, read the raw connections instead of the
cached connection list, i.e. proc files contain only raw values.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add a function to add/modify the connection-list cache entry.
It'll be useful to fix a buggy hardware result.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Instead of checking the model quirk, use a fixup table for workaround
of 44kHz-fixed PCM for Lenovo IdeaPad with ALC269.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| |\ \
| | | |
| | | |
| | | |
| | | | |
Conflicts:
sound/pci/hda/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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Finally the last one.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Now coming to ALC268/269 parser codes.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|