phonepad:modify rk30 pwm regulator suspend
authorlw@rock-chips.com <lw@rock-chips.com>
Thu, 2 Aug 2012 09:27:45 +0000 (17:27 +0800)
committerlw <lw@rock-chips.com>
Thu, 2 Aug 2012 09:28:09 +0000 (17:28 +0800)
drivers/regulator/rk30-pwm-regulator.c

index 46bf1b75982e1bd8ed0845e8fa972648f0661f6b..7af504689ac509048ee5acf2541162dd3d38f62d 100755 (executable)
@@ -101,9 +101,9 @@ static int pwm_set_rate(struct pwm_platform_data *pdata,int nHz,u32 rate)
                //disable pull up or down\r
                gpio_pull_updown(pdata->pwm_gpio,PullDisable);\r
                // set gpio to low level\r
-               gpio_set_value(pdata->pwm_gpio,GPIO_LOW);\r
+               gpio_direction_output(pdata->pwm_gpio,GPIO_LOW);\r
        }\r
-       else if (rate <= 100)\r
+       else if (rate < 100)\r
        {\r
                // iomux pwm\r
                rk29_mux_api_set(pdata->pwm_iomux_name, pdata->pwm_iomux_pwm);\r
@@ -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);\r
                pwm_write_reg(id, PWM_REG_CTRL,pwm_read_reg(id,PWM_REG_CTRL)|PWM_DIV|PWM_ENABLE|PWM_TimeEN);\r
        }\r
+       else if (rate == 100)\r
+       {\r
+               // iomux pwm to gpio\r
+               rk29_mux_api_set(pdata->pwm_iomux_name, pdata->pwm_iomux_gpio);\r
+               //disable pull up or down\r
+               gpio_pull_updown(pdata->pwm_gpio,PullDisable);\r
+               // set gpio to low level\r
+               gpio_direction_output(pdata->pwm_gpio,GPIO_HIGH);\r
+\r
+       }\r
        else\r
        {\r
                printk("%s:rate error\n",__func__);\r
@@ -324,7 +334,7 @@ err:
 static int pwm_regulator_suspend(struct platform_device *pdev, pm_message_t state)\r
 {\r
        struct pwm_platform_data *pdata = pdev->dev.platform_data;\r
-       pwm_set_rate(pdata,1000*1000,0);//pwm clk will change to 24M after suspend\r
+       pwm_set_rate(pdata,1000*1000,100);//pwm clk will change to 24M after suspend\r
        DBG("%s,pwm_id=%d\n",__func__,pdata->pwm_id);\r
        return 0;\r
 }\r