From 94257c7c2c0f4caf67a755a4dd6a261f26740dae Mon Sep 17 00:00:00 2001
From: =?utf8?q?=E5=BC=A0=E6=99=B4?= <zhangqing@rock-chips.com>
Date: Sat, 3 Nov 2012 10:20:12 +0800
Subject: [PATCH] rk:pmu tps65910:set dcdc in pwm mode,and set dcdc in pfm mode
  when enter sleep

---
 .../mach-rk2928/board-rk2928-sdk-tps65910.c    | 17 +++++++++++++++++
 arch/arm/mach-rk30/board-pmu-tps65910.c        | 18 ++++++++++++++++++
 arch/arm/mach-rk30/board-rk30-sdk-tps65910.c   | 18 ++++++++++++++++++
 3 files changed, 53 insertions(+)

diff --git a/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c b/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c
index 43c24ce64675..e07bbe3e472c 100755
--- a/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c
+++ b/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c
@@ -188,6 +188,7 @@ int tps65910_pre_init(struct tps65910 *tps65910){
         }
 	
 	val  |= 0xff;
+	val  &= ~(0x07);   //set vdd1 vdd2 vio in pfm mode when in sleep
 	err = tps65910_reg_write(tps65910, TPS65910_SLEEP_KEEP_RES_ON, val);
 	if (err) {
 		printk(KERN_ERR "Unable to read TPS65910 Reg at offset 0x%x= \
@@ -225,6 +226,22 @@ int tps65910_pre_init(struct tps65910 *tps65910){
 	}
 	#endif
 	#endif
+
+	/**********************set arm in pwm ****************/
+	  val = tps65910_reg_read(tps65910, TPS65910_DCDCCTRL);
+        if (val<0) {
+                printk(KERN_ERR "Unable to read TPS65910_DCDCCTRL reg\n");
+                return val;
+        }
+	
+	val &= ~(1<<4);
+	err = tps65910_reg_write(tps65910, TPS65910_DCDCCTRL, val);
+	if (err) {
+		printk(KERN_ERR "Unable to read TPS65910 Reg at offset 0x%x= \
+				\n", TPS65910_VDIG1);
+		return err;
+	}	
+	/************************************************/
 	
 	printk("%s,line=%d\n", __func__,__LINE__);
 	return 0;
diff --git a/arch/arm/mach-rk30/board-pmu-tps65910.c b/arch/arm/mach-rk30/board-pmu-tps65910.c
index 41c72f96e996..92db7c511754 100755
--- a/arch/arm/mach-rk30/board-pmu-tps65910.c
+++ b/arch/arm/mach-rk30/board-pmu-tps65910.c
@@ -205,6 +205,7 @@ int tps65910_pre_init(struct tps65910 *tps65910){
         }
 	
 	val  |= 0xff;
+	val  &= ~(0x07);   //set vdd1 vdd2 vio in pfm mode when in sleep
 	err = tps65910_reg_write(tps65910, TPS65910_SLEEP_KEEP_RES_ON, val);
 	if (err) {
 		printk(KERN_ERR "Unable to read TPS65910 Reg at offset 0x%x= \
@@ -241,6 +242,23 @@ int tps65910_pre_init(struct tps65910 *tps65910){
 	}
 	#endif
 	#endif
+	
+	/**********************set arm in pwm ****************/
+	  val = tps65910_reg_read(tps65910, TPS65910_DCDCCTRL);
+        if (val<0) {
+                printk(KERN_ERR "Unable to read TPS65910_DCDCCTRL reg\n");
+                return val;
+        }
+	
+	val &= ~(1<<4);
+	err = tps65910_reg_write(tps65910, TPS65910_DCDCCTRL, val);
+	if (err) {
+		printk(KERN_ERR "Unable to read TPS65910 Reg at offset 0x%x= \
+				\n", TPS65910_VDIG1);
+		return err;
+	}	
+	/************************************************/
+	
 	printk("%s,line=%d\n", __func__,__LINE__);
 	return 0;
 
diff --git a/arch/arm/mach-rk30/board-rk30-sdk-tps65910.c b/arch/arm/mach-rk30/board-rk30-sdk-tps65910.c
index d61ef3f69c36..56f86dcb14be 100755
--- a/arch/arm/mach-rk30/board-rk30-sdk-tps65910.c
+++ b/arch/arm/mach-rk30/board-rk30-sdk-tps65910.c
@@ -191,6 +191,7 @@ int tps65910_pre_init(struct tps65910 *tps65910){
         }
 	
 	val  |= 0xff;
+	val  &= ~(0x07);   //set vdd1 vdd2 vio in pfm mode when in sleep
 	err = tps65910_reg_write(tps65910, TPS65910_SLEEP_KEEP_RES_ON, val);
 	if (err) {
 		printk(KERN_ERR "Unable to read TPS65910 Reg at offset 0x%x= \
@@ -227,6 +228,23 @@ int tps65910_pre_init(struct tps65910 *tps65910){
 	}
 	#endif
 	#endif
+
+	/**********************set arm in pwm ****************/
+	  val = tps65910_reg_read(tps65910, TPS65910_DCDCCTRL);
+        if (val<0) {
+                printk(KERN_ERR "Unable to read TPS65910_DCDCCTRL reg\n");
+                return val;
+        }
+	
+	val &= ~(1<<4);
+	err = tps65910_reg_write(tps65910, TPS65910_DCDCCTRL, val);
+	if (err) {
+		printk(KERN_ERR "Unable to read TPS65910 Reg at offset 0x%x= \
+				\n", TPS65910_VDIG1);
+		return err;
+	}	
+	/************************************************/
+	
 	printk("%s,line=%d\n", __func__,__LINE__);
 	return 0;
 
-- 
2.34.1