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