Merge remote-tracking branch 'origin/develop-3.0-rk2928' into develop-3.0
[firefly-linux-kernel-4.4.55.git] / drivers / regulator / rk30-pwm-regulator.c
index ce7aee35eee5ccae3e2f11b5a2e7e956d24dd35d..2019ef5a264c4385341a2faf3931abd9e35a6936 100755 (executable)
@@ -57,7 +57,7 @@ struct rk_pwm_dcdc {
         struct regulator_desc desc;\r
         int pwm_id;\r
         struct regulator_dev *regulator;\r
-               struct pwm_platform_data *pdata;\r
+       struct pwm_platform_data *pdata;\r
 };\r
 \r
 \r
@@ -66,7 +66,7 @@ struct rk_pwm_dcdc {
 #define pwm_read_reg(id, addr)              __raw_readl(addr+(RK30_PWM01_BASE+(id>>1)*0x20000+id*0x10))\r
 #elif defined(CONFIG_ARCH_RK29)\r
 #define pwm_write_reg(id, addr, val)        __raw_writel(val, addr+(RK29_PWM_BASE+id*0x10))\r
-#define pwm_read_reg(id, addr)              __raw_readl(addr+(RK29_PWM_BASE+id*0x10))   \r
+#define pwm_read_reg(id, addr)              __raw_readl(addr+(RK29_PWM_BASE+id*0x10))    \r
 #elif defined(CONFIG_ARCH_RK2928)\r
 #define pwm_write_reg(id, addr, val)        __raw_writel(val, addr+(RK2928_PWM_BASE+id*0x10))\r
 #define pwm_read_reg(id, addr)              __raw_readl(addr+(RK2928_PWM_BASE+id*0x10))\r
@@ -84,19 +84,22 @@ static int pwm_set_rate(struct pwm_platform_data *pdata,int nHz,u32 rate)
        u32 divh,divTotal;\r
        int id = pdata->pwm_id;\r
        unsigned long clkrate;\r
-       /*\r
-       if ( id >2 || id <0 )\r
-       {\r
+\r
+#if defined(CONFIG_ARCH_RK29) || defined(CONFIG_ARCH_RK2928)\r
+       clkrate = clk_get_rate(pwm_clk[0]);\r
+#elif defined(CONFIG_ARCH_RK30) || defined(CONFIG_ARCH_RK31)\r
+       if (id == 0 || id == 1) {\r
+               clkrate = clk_get_rate(pwm_clk[0]);\r
+       } else if (id== 2 || id == 3) {\r
+               clkrate = clk_get_rate(pwm_clk[1]);\r
+       } else {\r
                printk("%s:pwm id error,id=%d\n",__func__,id);\r
                return -1;\r
        }\r
-\r
-       if((id==0) || (id == 1))\r
-       */\r
-       clkrate = clk_get_rate(pwm_clk[0]);\r
+#endif\r
        \r
        DBG("%s:id=%d,rate=%d,clkrate=%d\n",__func__,id,rate,clkrate); \r
-       \r
+\r
        if(rate == 0)\r
        {\r
                // iomux pwm to gpio\r
@@ -256,8 +259,8 @@ static int __devinit pwm_regulator_probe(struct platform_device *pdev)
        int pwm_id  =  pdata->pwm_id;\r
        int id = pdev->id;\r
        int ret ;\r
-    char gpio_name[20];\r
-\r
+       char gpio_name[20];\r
+       \r
        if (!pdata)\r
                return -ENODEV;\r
 \r
@@ -280,15 +283,15 @@ static int __devinit pwm_regulator_probe(struct platform_device *pdev)
                pdata->suspend_voltage = pdata->max_uV;\r
        \r
        dcdc = kzalloc(sizeof(struct rk_pwm_dcdc), GFP_KERNEL);\r
-       if (dcdc == NULL) {
-               dev_err(&pdev->dev, "Unable to allocate private data\n");
-               return -ENOMEM;
+       if (dcdc == NULL) {\r
+               dev_err(&pdev->dev, "Unable to allocate private data\n");\r
+               return -ENOMEM;\r
        }\r
 \r
        snprintf(dcdc->name, sizeof(dcdc->name), "PWM_DCDC%d", id + 1);\r
-       dcdc->desc.name = dcdc->name;
-       dcdc->desc.id = id;
-       dcdc->desc.type = REGULATOR_VOLTAGE;
+       dcdc->desc.name = dcdc->name;\r
+       dcdc->desc.id = id;\r
+       dcdc->desc.type = REGULATOR_VOLTAGE;\r
        dcdc->desc.n_voltages = ARRAY_SIZE(pwm_voltage_map);\r
        dcdc->desc.ops = &pwm_voltage_ops;\r
        dcdc->desc.owner = THIS_MODULE;\r
@@ -296,11 +299,11 @@ static int __devinit pwm_regulator_probe(struct platform_device *pdev)
        printk("%s:n_voltages=%d\n",__func__,dcdc->desc.n_voltages);\r
        dcdc->regulator = regulator_register(&dcdc->desc, &pdev->dev,\r
                                             pdata->init_data, dcdc);\r
-       if (IS_ERR(dcdc->regulator)) {
-               ret = PTR_ERR(dcdc->regulator);
+       if (IS_ERR(dcdc->regulator)) {\r
+               ret = PTR_ERR(dcdc->regulator);\r
                dev_err(&pdev->dev, "Failed to register PWM_DCDC%d: %d\n",\r
-                       id + 1, ret);
-               goto err;
+                       id + 1, ret);\r
+               goto err;\r
        }\r
 \r
        snprintf(gpio_name, sizeof(gpio_name), "PWM_DCDC%d", id + 1);\r
@@ -326,7 +329,7 @@ static int __devinit pwm_regulator_probe(struct platform_device *pdev)
 #elif defined(CONFIG_ARCH_RK2928)\r
                pwm_clk[0] = clk_get(NULL, "pwm01");\r
                if (IS_ERR(pwm_clk[0])) {\r
-                       printk("pwm_clk get error %p\n", pwm_clk[0]);   \r
+                       printk("pwm_clk get error %p\n", pwm_clk[0]);\r
                        return -EINVAL;\r
                }\r
                clk_enable(pwm_clk[0]);\r