clk: rockchip: support setting ddr clock via SCPI APIs
[firefly-linux-kernel-4.4.55.git] / drivers / regulator / act8846.c
index 158f491b4044d71691c747763a7dd754403d3bce..3042b0000678d118ec41b1ed8c85a80b38d512b6 100755 (executable)
@@ -54,7 +54,9 @@ struct act8846 {
        struct i2c_client *i2c;
        int num_regulators;
        struct regulator_dev **rdev;
-//     struct early_suspend act8846_suspend;
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       struct early_suspend act8846_suspend;
+#endif
        int irq_base;
        int chip_irq;
        int pmic_sleep_gpio; /* */
@@ -459,8 +461,7 @@ static int act8846_dcdc_set_mode(struct regulator_dev *dev, unsigned int mode)
 static int act8846_dcdc_set_voltage_time_sel(struct regulator_dev *dev,   unsigned int old_selector,
                                     unsigned int new_selector)
 {
-       struct act8846 *act8846 = rdev_get_drvdata(dev);
-       int ret =0,old_volt, new_volt;
+       int old_volt, new_volt;
        
        old_volt = act8846_dcdc_list_voltage(dev, old_selector);
        if (old_volt < 0)
@@ -793,16 +794,15 @@ static struct act8846_board *act8846_parse_dt(struct i2c_client *i2c)
 #endif
 
 
-int act8846_device_shutdown(void)
+void act8846_device_shutdown(void)
 {
-       int ret;
-       int err = -1;
        struct act8846 *act8846 = g_act8846;
        
        printk("%s\n",__func__);
 #if 1
        if (act8846->pmic_hold_gpio) {
                        gpio_direction_output(act8846->pmic_hold_gpio,0);
+                       mdelay(100);
                        arm_pm_restart('h', "charge");
        }
        
@@ -815,7 +815,6 @@ int act8846_device_shutdown(void)
                return err;
        }
 #endif
-       return 0;       
 }
 EXPORT_SYMBOL_GPL(act8846_device_shutdown);
 
@@ -955,7 +954,10 @@ static int act8846_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id
        
        if (pdev) {
                act8846->num_regulators = act8846_NUM_REGULATORS;
-               act8846->rdev = kcalloc(act8846_NUM_REGULATORS,sizeof(struct regulator_dev *), GFP_KERNEL);
+               act8846->rdev = devm_kcalloc(act8846->dev,
+                                            act8846_NUM_REGULATORS,
+                                            sizeof(struct regulator_dev *),
+                                            GFP_KERNEL);
                if (!act8846->rdev) {
                        return -ENOMEM;
                }
@@ -1013,9 +1015,7 @@ static int  act8846_i2c_remove(struct i2c_client *i2c)
        for (i = 0; i < act8846->num_regulators; i++)
                if (act8846->rdev[i])
                        regulator_unregister(act8846->rdev[i]);
-       kfree(act8846->rdev);
        i2c_set_clientdata(i2c, NULL);
-       kfree(act8846);
 
        return 0;
 }