rk2926:a713:compat act8931 and tps65910 in i2c_sram.c

This commit is contained in:
张晴
2012-09-28 15:59:04 +08:00
parent 9ffe45dd50
commit 93f6d86a99

72
arch/arm/mach-rk2928/i2c_sram.c Executable file → Normal file
View File

@@ -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
}