Age | Commit message (Collapse) | Author |
|
Fix the audio pop issue that is caused whenever the system enters and
exits LP-APM mode.
Added some more working points for DVFS-CORE.
Signed-off-by: Ranjani Vaidyanathan-RA5478 <Ranjani.Vaidyanathan@freescale.com>
|
|
Power down related modules in audio in/out when systerm in idle mode,
to save the power and reduce the noise.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Previously ADC was powered up every time DAC was powered up, which
wasted power. Also I2S input and output were powered up and down
together. This ment that simultaneous playback and record
stomped on each other.
Changes in this patch:
- We still have to power up the DAC every time the codec powers up
to prevent pops (even if we are only recording). We are probably
playing without recording a lot more than recording without
playing anyway.
- Save power by only powering up ADC if we are recording.
- Same more power by only powering 1/2 of ADC if recording mono.
- Power up I2S input or output section only as needed.
- Don't shut I2S both input and output if input or output is still
being used.
- Constrain hw sample rate to current stream (i.e. new record
stream is not allowed to mess up clocking if previous playback
stream is still active).
- Use mute bits instead of power bits for jack function and
speaker function.
- Control hp/line out power up sequence to prevent pops.
- Don't use DAC mono mode. Doesn't work unless it is enabled
when DAC is powered off, which means it breaks for playback that
starts when capture has active since DAC is already powered up
to prevent pops.
- Also fixes issue where we couldn't record at 11025 or 22050Hz
stereo.
- During resume, if we are powering up to ON state, power up to
PREPARE state first.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Compress original dac playback volume to 16 levels according to a table, for
example, 0x37 maps to 0 and 0xfe to 15, which makes it more comfortable for
volume adjustment.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Turn on mic bias earlier to make sure mic bias has time to
ramp up before record starts. Avoid audio artifacts.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
With the pop fix and power savings patches, it is possible to bring back the
Jack Function/Speaker Function.
Enable alsa amixer controls Jack Function and Speaker Function. By setting or
unsetting these controls it is now able to turn on or off headphone and speaker
output.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
- Turn off DAC and ADC in ANA_POWER reg during idle.
- Turn on zcd and leave it on. Turning if off dynamically
doesn't save power and can cause a small noise artifact.
- Only need to delay 400mSec if state of VAG bit changes.
- Before record, SOC calls digital_mute to unmute, but does
not call digital_mute to mute again after record.
- After record, SOC skips doing the PREPARE state when powering
down. So make sure VAG and mic bias gets turned off in the
STANDBY state if it hasn't already.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Reduce power in idle while still eliminating pops.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Supply a bias voltage to external microphone to make it work, since there is
no vddio_p supplied to microphone on evk board.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Remove the headphone noise when there is no wav playing.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Add reg_cache to keep the reg values of audio module in cache, by this it is
able to save all amixer settings, like volume, switch configure, etc, when
system suspend, and restore all of them when system resume.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Due to the clock source changes, the osc audio clock is disabled by
default. This cause SPDIF failed to play 48KHz/32KHz audio.
Add osc audio clock node in the spdif platform data structure.
And enable it when spdif probe.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
|
|
- This fixes pops that happened after audio playback. These pops
were caused by zcd and DAC being turned off.
- Enable zcd and leave it enabled.
- Turn on DAC early, leave it on.
- We were turning on analog sections during first playback, now turn
them on during initialization instead to avoid delay.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
This reverts commit c93dade67610c073b19b8d36080fb386475767f3 (ENGR00111918).
That commit brought back the pops that were fixed by ENGR00110076.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
The app that plays the Ubuntu desktop login sound sets the period
to whatever minimum is allowed by the driver. This change sets
period size high enough value that we will never have ssi underruns
then.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Arecord can't work on mx37 28kernel, due to an improper widget setting
of audio patch. Configure this widget properly can resolve this issue.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
I2C is error when clearing REFTOP_POWERUP bit in ANA_POWER register when set
bias to SND_SOC_BIAS_OFF on MX25 with sgtl5000 rev 0x11 chip. Workaround to not
clear this bit.
Signed-off-by: Guoqing Jiang <b22156@freescale.com>
|
|
Software workaround for ENGcm06222
If RX and TX are working at same time, and RX is enabled before
TX, tx can't run normally and there will be SSI TX underrun.
The SW workaround is to clear SYN, RE, SSIEN and then re-enable
SYN, RE, TE, SSIEN at the same time.
Signed-off-by: Wallace Wang <r59996@freescale.com>
|
|
Add AK5702 support for ESAI record under kernel 2.6.28.
1. Add ASOC codec driver for AK5702.
2. Add ASOC machine driver for AK5702 and ESAI.
3. Add ESAI record support.
Signed-off-by: Wang Huan <b18965@freescale.com>
|
|
1. The original ESAI driver treats the mono data as stereo,
and it seems playing fater than normal speed, and the
sound is not correct either.
2. Correctly set the Slot Mask Register to disable the undesired
slot, and get the mono output.
Signed-off-by: William Lai <b04597@freescale.com>
|
|
Left/right channel swapped when playing a stereo wav on mx25 platform. This
issue is supposed to be a IC bug when using 1.8v WEIM pad. The SW workaround
to increase codec driver strength can fix it.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Add ASRC-SSI p2p transfer support
Signed-off-by: Wallace Wang <r59996@freescale.com>
|
|
Add ASRC-ESAI p2p transfer support
Signed-off-by: Wallace Wang <r59996@freescale.com>
|
|
Added a constraint for ALSA library to create buffers multiple
of period size.
|
|
sgtl5000_digital_mute() was muting the adc. This would result
in silence being recorded if record happened too soon after
a playback.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Fix kernel crash when imx_3stack_wm8350 probe
Signed-off-by: Katherine Lu <katherine.lu@freescale.com>
|
|
1. port bluetooth pcm driver to 2.6.28 kernel
2. modify imx-ssi to support multi-ssi simultaneously
Signed-off-by: Katherine Lu <katherine.lu@freescale.com>
|
|
This is from EA P4 release with the following changes:
Ported to 2.6.28
UBI support is stock 2.6.28.
USB is not integrated
Regulator code is not yet ported.
Removed 3700 specific files
Fix copyrights
Signed-off-by: Rob Herring <r.herring@freescale.com>
|
|
Porting wm8350 audio codec support from 2.6.29.
Porting 3stack wm8350 audio support from 2.6.26.
Add LineIn --> HP loopback
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
- Only turn off simple regulator for rev 0x11.
- When suspending, save ANA_POWER register value
with power bits enabled so resume will succeed.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Enable alsa amixer controls Jack Function and Speaker Function. By setting or
unsetting these controls it is now able to turn on or off headphone and speaker
output.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Added the missing __devexit annotation to wm8350_codec_remove():
sound/soc/codecs/wm8350.c:1546: warning: 'wm8350_codec_remove' defined but not used
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
The WM8350 is an integrated audio and power management subsystem which
provides a single-chip solution for portable audio and multimedia systems.
The integrated audio CODEC provides all the necessary functions for
high-quality stereo recording and playback. Programmable on-chip
amplifiers allow for the direct connection of headphones and microphones
with a minimum of external components. A programmable low-noise bias
voltage is available to feed one or more electret microphones.
Additional audio features include programmable high-pass filter in the
ADC input path.
This driver was originally written by Liam Girdwood with further updates
from me.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
|
For rev 0x11 of SGTL5000, the VDDD pin is being driven by the
"simple digital supply regulator". Disabling the regulator
brings VDDD down to 0v. So leave the regulator on and don't
connect anything to the VDDD pin.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
When I2S controller is configured as I2S master sync mode,
RFDIR and RXDIR bit in SRCR should be cleared.
Signed-off-by: Wallace Wang <r59996@freescale.com>
|
|
1. Add SPI interface, machine layer set spi or i2c_address
in socdev->codec_data
2. Fix bug: Change freqmode offset from 4 to 3.
3. Fix Bug: SOC_WM8580_OUT_DOUBLE_R_TLV private_value should be
pointer to structure soc_mixer_control
4. Add wm8580_set_paif_dai_sysclk
5. Add ESAI driver in 2.6.28
6. Add ALSA ASoC machine driver for WM8580
Signed-off-by: Wallace Wang <r59996@freescale.com>
|
|
Add ak4647 driver into 2.6.28 kernel
Signed-off-by: Wallace Wang <r59996@freescale.com>
|
|
1. Remove i2c_unregister_device in sgtl5000
2. sgtl5000_set_bias_level in sgtl5000_remove failed to operate
as imx_3stack_sgtl5000_remove is called before sgtl5000_remove.
Add imx_3stack_machine_remove, move power disable from
imx_3stack_sgtl5000_remove to this function.
3. name in imx_ssi_dai is a pointer to a constant string, can't
use strcpy, or else the string will be overwritten and memory
will be corrupted when the copied string length extend the
original string length.
4. Add imx_ssi_remove to free irq
Signed-off-by: Wallace Wang <r59996@freescale.com
|
|
Sgtl5000 sclk/lrclk should only be turned on when audio playback is running in
i2s master mode. These clocks should be turned off after playback to save the
power.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
correct the offset of volume value and reg value.
Signed-off-by: Richard Zhao <b20223@freescale.com>
|
|
From the SGTL5000 spec, in the CHIP_ANA_POWER reg,
the headphone and line out should be powered up before
powering up the vag. To power down, power down the vag
first, then delay, then power down headphone and line out.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Add reg_cache which is a standard feature of soc codecs.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Wav sound plays twice faster than normal when it's format is 24 or 32
bit mono. In ssi normal operating mode, DC=0 provides continuous
periodic data word transfer and a bit-length frame sync must be used
in this case. Sgtl5000 codec master provides word length frame sync,
so DC should be set as frame/WL-1.
Signed-off-by: Lionel Xu <r63889@freescale.com>
|
|
Remove unneeded check to make it more portable.
Signed-off-by: Richard Zhao <b20223@freescale.com>
|
|
Add sgtl5000 soc audio to imx-3stack for 2.6.28 kernel.
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
Architecture specific headers moved and are not accessible to userspace in
2.6.28. So they are moved to linux include directory.
Signed-off-by: Rob Herring <r.herring@freescale.com>
|
|
Port rel_imx_2.6.26_3.3.0 to 2.6.28.
PMIC Regulator and ASoC drivers are removed and not yet ported.
Updated asm/arch headers for move to plat-mxc/include/mach
device_create parameters changed.
sysdev attribute functions changed.
Adopt mainline MX3 timer code and update clock init flow.
Signed-off-by: Rob Herring <r.herring@freescale.com>
|
|
Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
|
|
There will be a Oops or frequent underrun messages when playing music with
omap soc driver, this is because a data region is incorretly sized, other data
region will be overwriten when writing to this data region.
Signed-off-by: Stanley Miao <stanley.miao@windriver.com>
Acked-by: Jarkko Nikula <jarkko.nikula@nokia.com>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|