summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorZhang Jiejing <jiejing.zhang@freescale.com>2011-08-01 21:31:01 +0800
committerZhang Jiejing <jiejing.zhang@freescale.com>2011-09-16 13:34:11 +0800
commit949ce411ed8db6ca2146e1bbb35f23f095ddb010 (patch)
treead761a3d75bcd38d1628f1145588931e20e4661e /sound
parentec6f4ea04f9a8bf34a053abf55f091483e77536e (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.c9
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);