rk3026:ARM and logic suspend-voltage = 900mV
author许盛飞 <xsf@rock-chips.com>
Sat, 24 Aug 2013 04:53:57 +0000 (12:53 +0800)
committer许盛飞 <xsf@rock-chips.com>
Sat, 24 Aug 2013 04:53:57 +0000 (12:53 +0800)
arch/arm/mach-rk2928/i2c_sram.c
arch/arm/mach-rk30/board-pmu-tps65910.c
arch/arm/mach-rk3026/Makefile

index 21bf05905ff91e2ccb0810f859c4ce5ead2722d0..d691b78a9cc55e75e6e71c6c530fba32b8b69d8a 100755 (executable)
@@ -15,7 +15,7 @@
 #define I2C_SPEED 100
 #define I2C_SADDR               (0x2D)        /* slave address ,wm8310 addr is 0x34*/
 #define SRAM_I2C_CH 1  //CH==0, i2c0,CH==1, i2c1,CH==2, i2c2,CH==3, i2c3
-#if defined (CONFIG_MACH_RK2928_SDK)
+#if defined (CONFIG_MACH_RK2928_SDK)|| ( CONFIG_ARCH_RK3026_TB)||(CONFIG_ARCH_RK3028A_TB)
 #define SRAM_I2C_ADDRBASE (RK2928_RKI2C1_BASE )//RK29_I2C0_BASE\RK29_I2C2_BASE\RK29_I2C3_BASE
 #else
 #define SRAM_I2C_ADDRBASE (RK2928_RKI2C0_BASE )
@@ -38,6 +38,9 @@ CH=2:(~(0x03<<24))&(~(0x03<<22))|(0x01<<24)|(0x01<<22),CH=3:(~(0x03<<26))&(~(0x0
 #define uint32 unsigned int
 uint32 __sramdata data[5];
 uint8 __sramdata arm_voltage = 0;
+#if defined ( CONFIG_ARCH_RK3026)
+uint8 __sramdata logic_voltage = 0;
+#endif
 
 #define CRU_CLKGATE0_CON   0xd0
 #define CRU_CLKGATE8_CON       0xf0
@@ -142,7 +145,7 @@ void __sramfunc sram_i2c_init()
     //enable cru_clkgate8 clock
     data[1] = cru_readl(CLK_GATE_CLKID_CONS(CLK_GATE_CLKID(8)));
     
-       #if defined (CONFIG_MACH_RK2928_SDK)
+       #if defined (CONFIG_MACH_RK2928_SDK) || ( CONFIG_ARCH_RK3026_TB)||(CONFIG_ARCH_RK3028A_TB)
     cru_writel(CLK_GATE_W_MSK(CLK_GATE_PCLK_I2C1)|CLK_UN_GATE(CLK_GATE_PCLK_I2C1), 
                CLK_GATE_CLKID_CONS(CLK_GATE_PCLK_I2C1));
        #else
@@ -312,36 +315,41 @@ uint8 __sramfunc sram_i2c_read(uint8 I2CSlaveAddr, uint8 regAddr)
 void __sramfunc rk30_suspend_voltage_set(unsigned int vol)
 {
     uint8 slaveaddr;
-    uint16 slavereg;
+    uint8 slavereg;
     uint8 data,ret = 0;
        uint8 rtc_status_reg = 0x11;
        sram_i2c_init();  //init i2c device
        #if defined(CONFIG_MFD_TPS65910)        
        if(pmic_is_tps65910())
        {
-       slaveaddr = 0x2d;            //slave device addr
-       slavereg = 0x22;            // reg addr
-       data = 0x23;       //set arm 1.0v
-
-       ret = sram_i2c_read(slaveaddr, rtc_status_reg);
-       sram_i2c_write(slaveaddr, rtc_status_reg, ret);
-       arm_voltage = sram_i2c_read(slaveaddr, slavereg);
-       //sram_printhex(ret);
-       sram_i2c_write(slaveaddr, slavereg, data);//    
+               slaveaddr = 0x2d;            //slave device addr
+               slavereg = 0x22;            // reg addr
+               data = 0x1C;       //set arm 1.0v
+
+               ret = sram_i2c_read(slaveaddr, rtc_status_reg);
+               sram_i2c_write(slaveaddr, rtc_status_reg, ret);
+               arm_voltage = sram_i2c_read(slaveaddr, slavereg);
+#if defined ( CONFIG_ARCH_RK3026)
+               logic_voltage = sram_i2c_read(slaveaddr, 0x25);
+               sram_i2c_write(slaveaddr, 0x25, data);//
+#endif
+               //sram_printhex(ret);
+               sram_i2c_write(slaveaddr, slavereg, data);//    
        }
        #endif
        
        #if defined(CONFIG_REGULATOR_ACT8931)   
        if(pmic_is_act8931())
        {
-       slaveaddr = 0x5b;            //slave device addr
-       slavereg = 0x40;            // reg addr
-       data = 0x10;       //set arm 1.0v
+               slaveaddr = 0x5b;            //slave device addr
+               slavereg = 0x40;            // reg addr
+               data = 0x10;       //set arm 1.0v
 
-       arm_voltage = sram_i2c_read(slaveaddr, slavereg);
-       //sram_printhex(ret);
-       sram_i2c_write(slaveaddr, slavereg, data);//    
-       sram_i2c_write(slaveaddr,( slavereg+0x1), data);//      
+               arm_voltage = sram_i2c_read(slaveaddr, slavereg);
+               
+               //sram_printhex(ret);
+               sram_i2c_write(slaveaddr, slavereg, data);//    
+               sram_i2c_write(slaveaddr,( slavereg+0x1), data);//      
        }
        #endif
          sram_i2c_deinit();  //deinit i2c device
@@ -350,10 +358,14 @@ void __sramfunc rk30_suspend_voltage_set(unsigned int vol)
 
 void __sramfunc rk30_suspend_voltage_resume(unsigned int vol)
 {
-    uint8 slaveaddr;
-    uint16 slavereg;
-    uint8 data,ret = 0;
-       
+       uint8 slaveaddr;
+       uint8 slavereg;
+       uint8 data,ret = 0;
+#if defined ( CONFIG_ARCH_RK3026)
+       uint8 data2;
+       data2 = logic_voltage;
+#endif
+
        data = arm_voltage;
        sram_i2c_init();  //init i2c device
        #if defined(CONFIG_MFD_TPS65910)        
@@ -361,8 +373,12 @@ void __sramfunc rk30_suspend_voltage_resume(unsigned int vol)
        {
                slaveaddr = 0x2d;            //slave device addr
                slavereg = 0x22;            // reg add
-                sram_i2c_write(slaveaddr, slavereg, data);
-                sram_udelay(20000);
+               sram_i2c_write(slaveaddr, slavereg, data);
+               sram_udelay(20000);
+#if defined ( CONFIG_ARCH_RK3026)
+               sram_i2c_write(slaveaddr, 0x25, data2);
+               sram_udelay(20000);
+#endif
        }
        #endif
        #if defined(CONFIG_REGULATOR_ACT8931)   
index 20ee990b292737c7b6990dae51cb025fae20363b..41de44aac4d9ac03ce8c3e8211516ac82102d6e2 100755 (executable)
@@ -221,8 +221,11 @@ int tps65910_pre_init(struct tps65910 *tps65910){
                 printk(KERN_ERR "Unable to read TPS65910_DCDCCTRL reg\n");
                 return val;
         }
-       
+#if defined ( CONFIG_ARCH_RK3026)
+       val |= 0x2b;
+#else  
        val |= 0x0b;
+#endif
        err = tps65910_reg_write(tps65910, TPS65910_SLEEP_SET_LDO_OFF, val);
        if (err) {
                printk(KERN_ERR "Unable to read TPS65910 Reg at offset 0x%x= \
index a43ffb79019ef8ec67425712d32ddb2caf85c2e3..ddfaba8b7b2bfd435ef53464554a39afa437d517 100644 (file)
@@ -15,7 +15,7 @@ obj-$(CONFIG_HOTPLUG_CPU) += ../mach-rk30/hotplug.o
 obj-$(CONFIG_CPU_IDLE) += ../mach-rk30/cpuidle.o
 obj-$(CONFIG_CPU_FREQ) += ../mach-rk3188/cpufreq.o
 obj-$(CONFIG_DVFS) += dvfs.o
-obj-$(CONFIG_RK30_I2C_INSRAM) += ../mach-rk30/i2c_sram.o
+obj-$(CONFIG_RK30_I2C_INSRAM) += ../mach-rk2928/i2c_sram.o
 
 obj-y += board.o