diff options
author | Zhang Jiejing <jiejing.zhang@freescale.com> | 2011-08-01 21:31:01 +0800 |
---|---|---|
committer | Zhang Jiejing <jiejing.zhang@freescale.com> | 2011-09-16 13:34:11 +0800 |
commit | 949ce411ed8db6ca2146e1bbb35f23f095ddb010 (patch) | |
tree | ad761a3d75bcd38d1628f1145588931e20e4661e /sound | |
parent | ec6f4ea04f9a8bf34a053abf55f091483e77536e (diff) |
ENGR00156906 Android: more support mx6q board.
amead these patchs:
Update mx6 android defconfig to enable cs42888 codec.
Resolve the touch intr pin request conflict.
Add ipuv3 fb earlysuspend callbacks.
Avoid the cs42888 suspend/resume failed issue when we do not
have the audio extension board (cs42888 on it) connected.
Android: viv_gpu: imx6q: disable 2d & vg
system bar can not display if we enable 2d & vg.
Add HDMI support into the defconfig
config: change mx6 defconfig to 1g/3g address partition
change back to 1g/3g address partition, give more vma to user space.
mx6q: increase the dma zone size to 184MB
Enlarge the GPU pmem size to 128MB
Disable the virtual console and framebuffer console
touchscreen: temp disable eGalax touchscreen suspend function
the touchscreen chip can't be wake up during resume.
it caused by the irq pin can't pull down while resume.
this is may caused by 6q cpu board HW design.
temp disable suspend function of eGalax touch screen for release.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/cs42888.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/soc/codecs/cs42888.c b/sound/soc/codecs/cs42888.c index c810333b3284..b17930a91c4a 100644 --- a/sound/soc/codecs/cs42888.c +++ b/sound/soc/codecs/cs42888.c @@ -146,6 +146,7 @@ static const char *cs42888_supply_names[CS42888_NUM_SUPPLIES] = { #define DIF_RIGHT_J 2 #define DIF_TDM 6 +static int cs42888_probed; /* Private data for the CS42888 */ struct cs42888_private { struct snd_soc_codec *codec; @@ -861,6 +862,8 @@ static int cs42888_probe(struct snd_soc_codec *codec) /* Add DAPM controls */ cs42888_add_widgets(codec); + cs42888_probed = 1; + return 0; err: regulator_bulk_disable(ARRAY_SIZE(cs42888->supplies), @@ -880,6 +883,7 @@ static int cs42888_remove(struct snd_soc_codec *codec) { struct cs42888_private *cs42888 = snd_soc_codec_get_drvdata(codec); + cs42888_probed = 0; regulator_bulk_disable(ARRAY_SIZE(cs42888->supplies), cs42888->supplies); regulator_bulk_free(ARRAY_SIZE(cs42888->supplies), @@ -992,6 +996,9 @@ static int cs42888_i2c_suspend(struct i2c_client *client, pm_message_t mesg) { struct cs42888_private *cs42888 = i2c_get_clientdata(client); struct snd_soc_codec *codec = cs42888->codec; + + if (!cs42888_probed) + return 0; int reg = snd_soc_read(codec, CS42888_PWRCTL) | CS42888_PWRCTL_PDN_MASK; return snd_soc_write(codec, CS42888_PWRCTL, reg); @@ -1003,6 +1010,8 @@ static int cs42888_i2c_resume(struct i2c_client *client) struct snd_soc_codec *codec = cs42888->codec; int reg; + if (!cs42888_probed) + return 0; /* In case the device was put to hard reset during sleep, we need to * wait 500ns here before any I2C communication. */ ndelay(500); |