From 93f6d86a996ad04b9e1c72390707be039cdceff5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BC=A0=E6=99=B4?= Date: Fri, 28 Sep 2012 15:59:04 +0800 Subject: [PATCH] rk2926:a713:compat act8931 and tps65910 in i2c_sram.c --- arch/arm/mach-rk2928/i2c_sram.c | 72 +++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 21 deletions(-) mode change 100755 => 100644 arch/arm/mach-rk2928/i2c_sram.c diff --git a/arch/arm/mach-rk2928/i2c_sram.c b/arch/arm/mach-rk2928/i2c_sram.c old mode 100755 new mode 100644 index 11c64771952d..4fac9277d529 --- a/arch/arm/mach-rk2928/i2c_sram.c +++ b/arch/arm/mach-rk2928/i2c_sram.c @@ -308,24 +308,45 @@ uint8 __sramfunc sram_i2c_read(uint8 I2CSlaveAddr, uint8 regAddr) sram_i2c_disenable(); return data; } - +extern int __sramdata g_pmic_type ; +#define PMIC_TYPE_TPS65910 2 +#define PMIC_TYPE_ACT8931 3 void __sramfunc rk30_suspend_voltage_set(unsigned int vol) { uint8 slaveaddr; uint16 slavereg; uint8 data,ret = 0; uint8 rtc_status_reg = 0x11; - slaveaddr = I2C_SADDR; //slave device addr - slavereg = 0x22; // reg addr - data = 0x23; //set arm 1.0v - - sram_i2c_init(); //init i2c device - ret = sram_i2c_read(slaveaddr, rtc_status_reg); + sram_i2c_init(); //init i2c device + #if defined(CONFIG_MFD_TPS65910) + if(g_pmic_type == PMIC_TYPE_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);// - sram_i2c_deinit(); //deinit i2c device + arm_voltage = sram_i2c_read(slaveaddr, slavereg); + //sram_printhex(ret); + sram_i2c_write(slaveaddr, slavereg, data);// + } + #endif + + #if defined(CONFIG_REGULATOR_ACT8931) + if(g_pmic_type == PMIC_TYPE_ACT8931) + { + 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);// + } + #endif + sram_i2c_deinit(); //deinit i2c device } @@ -334,19 +355,28 @@ void __sramfunc rk30_suspend_voltage_resume(unsigned int vol) uint8 slaveaddr; uint16 slavereg; uint8 data,ret = 0; - slaveaddr = I2C_SADDR; //slave device addr - slavereg = 0x22; // reg addr - sram_i2c_init(); //init i2c device - if (arm_voltage >= 0x3b ){ // set arm <= 1.3v - data = 0x3b; + data = arm_voltage; + sram_i2c_init(); //init i2c device + #if defined(CONFIG_MFD_TPS65910) + if(g_pmic_type == PMIC_TYPE_TPS65910) + { + slaveaddr = 0x2d; //slave device addr + slavereg = 0x22; // reg add + sram_i2c_write(slaveaddr, slavereg, data); + sram_udelay(20000); } - else if(arm_voltage <= 0x1f){ - data = 0x1f; // set arm >= 0.95v + #endif + #if defined(CONFIG_REGULATOR_ACT8931) + if(g_pmic_type == PMIC_TYPE_ACT8931) + { + slaveaddr = 0x5b; //slave device addr + slavereg = 0x40; // reg addr + sram_i2c_write(slaveaddr, slavereg, data); + sram_i2c_write(slaveaddr, (slavereg+0x1), data); + sram_udelay(20000); } - else - data = arm_voltage; - sram_i2c_write(slaveaddr, slavereg, data); + #endif sram_i2c_deinit(); //deinit i2c device } -- 2.34.1