summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLiGang <b41990@freescale.com>2012-11-14 10:12:53 +0800
committerRobby Cai <R63905@freescale.com>2012-12-13 17:59:26 +0800
commit1d9cd23bfc4556c177c390e56bcb0453fc0f62bf (patch)
tree5ba56b6eb2e9ee1f8a0b0e955aa967ab5a7fb991 /drivers
parente51507299ee04ae933a5a1b46fbbff142ebef1e9 (diff)
ENGR00231808: Add epdc pmic shut down feature
For some cases, system maybe restart with epdc pmic on. If epdc pmic on for sometime(2~3s), the current epdc pmic consume will increase obviously, then the total current of board maybe exceed to the current limit, which will pull down the input voltage to lead to the system pmic reset, an un-expected POR reset occurs. So it is necessary to close epdc pmic before system restart. This patch is added by Robby Cai<r63905@freescale.com> Signed-off-by: LiGang <b41990@freescale.com> (cherry picked from commit ee9ffb4307b2b3d7440fc3468b0faaace3d2829e)
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/mxc/mxc_epdc_fb.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/video/mxc/mxc_epdc_fb.c b/drivers/video/mxc/mxc_epdc_fb.c
index 6787b1ee78fe..3450a65eea60 100644
--- a/drivers/video/mxc/mxc_epdc_fb.c
+++ b/drivers/video/mxc/mxc_epdc_fb.c
@@ -5025,9 +5025,33 @@ static int mxc_epdc_fb_resume(struct platform_device *pdev)
return 0;
}
+
+static int mxc_epdc_fb_shutdown(struct platform_device *pdev)
+{
+ struct mxc_epdc_fb_data *fb_data = platform_get_drvdata(pdev);
+
+ /* Disable power to the EPD panel */
+ regulator_disable(fb_data->vcom_regulator);
+ regulator_disable(fb_data->display_regulator);
+
+ /* Disable clocks to EPDC */
+ __raw_writel(EPDC_CTRL_CLKGATE, EPDC_CTRL_SET);
+ clk_disable(fb_data->epdc_clk_pix);
+ clk_disable(fb_data->epdc_clk_axi);
+
+ /* Disable pins used by EPDC (to prevent leakage current) */
+ if (fb_data->pdata->disable_pins)
+ fb_data->pdata->disable_pins();
+
+ /* turn off the V3p3 */
+ regulator_disable(fb_data->v3p3_regulator);
+
+ return 0;
+}
#else
#define mxc_epdc_fb_suspend NULL
#define mxc_epdc_fb_resume NULL
+#define mxc_epdc_fb_shutdown NULL
#endif
static struct platform_driver mxc_epdc_fb_driver = {
@@ -5035,6 +5059,7 @@ static struct platform_driver mxc_epdc_fb_driver = {
.remove = mxc_epdc_fb_remove,
.suspend = mxc_epdc_fb_suspend,
.resume = mxc_epdc_fb_resume,
+ .shutdown = mxc_epdc_fb_shutdown,
.driver = {
.name = "imx_epdc_fb",
.owner = THIS_MODULE,