From 8fa1cf2ff7d5faa3c5eaab7544604837a472fda1 Mon Sep 17 00:00:00 2001 From: "lw@rock-chips.com" Date: Thu, 2 Aug 2012 17:27:45 +0800 Subject: [PATCH] phonepad:modify rk30 pwm regulator suspend --- drivers/regulator/rk30-pwm-regulator.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/rk30-pwm-regulator.c b/drivers/regulator/rk30-pwm-regulator.c index 46bf1b75982e..7af504689ac5 100755 --- a/drivers/regulator/rk30-pwm-regulator.c +++ b/drivers/regulator/rk30-pwm-regulator.c @@ -101,9 +101,9 @@ static int pwm_set_rate(struct pwm_platform_data *pdata,int nHz,u32 rate) //disable pull up or down gpio_pull_updown(pdata->pwm_gpio,PullDisable); // set gpio to low level - gpio_set_value(pdata->pwm_gpio,GPIO_LOW); + gpio_direction_output(pdata->pwm_gpio,GPIO_LOW); } - else if (rate <= 100) + else if (rate < 100) { // iomux pwm rk29_mux_api_set(pdata->pwm_iomux_name, pdata->pwm_iomux_pwm); @@ -119,6 +119,16 @@ static int pwm_set_rate(struct pwm_platform_data *pdata,int nHz,u32 rate) pwm_write_reg(id,PWM_REG_CNTR,0); pwm_write_reg(id, PWM_REG_CTRL,pwm_read_reg(id,PWM_REG_CTRL)|PWM_DIV|PWM_ENABLE|PWM_TimeEN); } + else if (rate == 100) + { + // iomux pwm to gpio + rk29_mux_api_set(pdata->pwm_iomux_name, pdata->pwm_iomux_gpio); + //disable pull up or down + gpio_pull_updown(pdata->pwm_gpio,PullDisable); + // set gpio to low level + gpio_direction_output(pdata->pwm_gpio,GPIO_HIGH); + + } else { printk("%s:rate error\n",__func__); @@ -324,7 +334,7 @@ err: static int pwm_regulator_suspend(struct platform_device *pdev, pm_message_t state) { struct pwm_platform_data *pdata = pdev->dev.platform_data; - pwm_set_rate(pdata,1000*1000,0);//pwm clk will change to 24M after suspend + pwm_set_rate(pdata,1000*1000,100);//pwm clk will change to 24M after suspend DBG("%s,pwm_id=%d\n",__func__,pdata->pwm_id); return 0; } -- 2.34.1