#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
+#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
#endif\r
\r
const static int pwm_voltage_map[] = {\r
u32 divh,divTotal;\r
int id = pdata->pwm_id;\r
unsigned long clkrate;\r
- \r
- if ( id >3 || 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
- clkrate = clk_get_rate(pwm_clk[0]);\r
- else \r
- clkrate = clk_get_rate(pwm_clk[1]);\r
+#endif\r
\r
- DBG("%s:id=%d,rate=%d,clkrate=%d\n",__func__,id,rate,clkrate);\r
+ DBG("%s:id=%d,rate=%d,clkrate=%d\n",__func__,id,rate,clkrate); \r
\r
if(rate == 0)\r
{\r
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
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
pwm_clk[1] = clk_get(NULL, "pwm23"); \r
clk_enable(pwm_clk[1]);\r
}\r
+#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
+ return -EINVAL;\r
+ }\r
+ clk_enable(pwm_clk[0]);\r
#endif\r
\r
g_dcdc = dcdc;\r