Re: [alsa-devel] [PATCH] ASoC: max98090: add shutdown callback for max98090
在 2015年04月16日 10:41, Anish Kumar 写道:
在 2015年04月16日 05:14, Anish Kumar 写道:
在 04/10/2015 03:38 AM, Anish Kumar 写道:
To fix pop noise when shutdown,the pop noise during shutdown is the pmic cutoff power of codec without any notice.
Is the power turned off without any intimation to the codec driver? Or is it physically removed? Can you describe the probelm better? When device is shutdown with playing music, the origin driver does nothing for shutdown operation, as a result, pmic will cut off the power of codec IC, thus cause a pop noise from speaker and headphone. So the patch added a shutdown callback for driver, enable volume smoothing and disable zero cross, this is referenced from mic_input which does the samething before mic switch. I'm very happy if some suggestion from maximintegrate . :-)
Please let me know if the patch worked for you. Yes, the patch can work for me.
I hope this patch is what you tested.
+static void max98090_i2c_shutdown(struct i2c_client *i2c) +{
struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev);
dev_info(&i2c->dev, "shut down device\n");
/* enable zero crossing */
regmap_write(max98090->regmap,
M98090_REG_LEVEL_CONTROL, M98090_ZDENN_MASK-1);
/* turn down volume levels for all the outputs */
regmap_write(max98090->regmap,
M98090_REG_RCV_LOUTL_VOLUME, 0x00);
regmap_write(max98090->regmap,
M98090_REG_LOUTR_VOLUME, 0x00);
regmap_write(max98090->regmap,
M98090_REG_LEFT_SPK_VOLUME, 0x00);
regmap_write(max98090->regmap,
M98090_REG_RIGHT_SPK_VOLUME, 0x00);
regmap_write(max98090->regmap,
M98090_REG_LEFT_HP_VOLUME, 0x00);
regmap_write(max98090->regmap,
M98090_REG_RIGHT_HP_VOLUME, 0x00);
regmap_write(max98090->regmap,
M98090_REG_DEVICE_SHUTDOWN, 0x00);
msleep(40);
+}
Please go ahead and submit to Mark.
With the about is also useful to solve it.
@zengxing, could you also help verify it?
We had tested on chromiumos.
+static void max98090_i2c_shutdown(struct i2c_client *i2c) +{
struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev);
dev_info(&i2c->dev, "shut down device\n");
/* Enable volume smoothing, disable zero cross. This will cause
* a quick 40ms ramp to mute on shutdown.
*/
regmap_write(max98090->regmap,
M98090_REG_LEVEL_CONTROL, M98090_VSENN_MASK);
regmap_write(max98090->regmap,
M98090_REG_DEVICE_SHUTDOWN, 0x00);
msleep(40);
+}
--
王晓腾 Caesar Wang Product R&D Dept.III Fuzhou Rockchip Electronics Co.Ltd Addr: NO.18 Building, A District, Fuzhou Software Park,Gulou District,Fuzhou, Fujian,China(Fuzhou Headquarters) 21F,Malata Building,Kejizhongyi Avenue,Nanshan District,Shenzhen (Shenzhen Office) Tel:+86-591-83991906/07 - 8221 Mobile:+86 15059456742 E-mail : wxt@rock-chips.com
IMPORTANT NOTICE: This email is from Fuzhou Rockchip Electronics Co., Ltd .The contents of this email and any attachments may contain information that is privileged, confidential and/or exempt from disclosure under applicable law and relevant NDA. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information is STRICTLY PROHIBITED. Please immediately contact the sender as soon as possible and destroy the material in its entirety in any format. Thank you.
participants (1)
-
Caesar Wang