diff options
| author | Mister Oyster <oysterized@gmail.com> | 2017-09-23 12:46:03 +0200 |
|---|---|---|
| committer | Mister Oyster <oysterized@gmail.com> | 2017-09-23 12:46:03 +0200 |
| commit | ad348bc7e1c47c8ca0e7ccc68ee80f77cea868ce (patch) | |
| tree | ab13c97ad4e8d87900287d78b9f5bf433d7ef5d0 | |
| parent | b8d1e07edc8d57883bf4b6ca70228b5a9e6b98b2 (diff) | |
max77819: remove log & dead code, fix indent
| -rw-r--r-- | drivers/misc/mediatek/power/mt6735/max77819_charger.c | 769 | ||||
| -rw-r--r-- | drivers/misc/mediatek/power/mt6735/max77819_pmic.c | 342 |
2 files changed, 456 insertions, 655 deletions
diff --git a/drivers/misc/mediatek/power/mt6735/max77819_charger.c b/drivers/misc/mediatek/power/mt6735/max77819_charger.c index a5096b0d0..87a3c1261 100644 --- a/drivers/misc/mediatek/power/mt6735/max77819_charger.c +++ b/drivers/misc/mediatek/power/mt6735/max77819_charger.c @@ -34,9 +34,9 @@ #define MAX77819_FCHGCRNT 0x38 #define MAX77819_TOPOFF 0x39 #define MAX77819_BATREG 0x3A -#define MAX77819_DCCRNT 0x3B +#define MAX77819_DCCRNT 0x3B #define MAX77819_AICLCNTL 0x3C -#define MAX77819_RBOOST_CTL1 0x3D +#define MAX77819_RBOOST_CTL1 0x3D #define MAX77819_CHGCTL2 0x3E #define MAX77819_BATDET 0x3F #define MAX77819_USBCHGCTL 0x40 @@ -78,16 +78,16 @@ #define MAX77819_AICL_NOK (1 << 7) /* MAX77819_DC_BATT_DTLS */ -#define MAX77819_DC_AICL (1 << 7) +#define MAX77819_DC_AICL (1 << 7) #define MAX77819_DC_I (1 << 6) -#define MAX77819_DC_OVP (1 << 5) +#define MAX77819_DC_OVP (1 << 5) #define MAX77819_DC_UVP (1 << 4) -#define MAX77819_BAT_DTLS (3 << 2) +#define MAX77819_BAT_DTLS (3 << 2) #define MAX77819_BATDET_DTLS (3 << 0) /* MAX77819_CHG_DTLS */ -#define MAX77819_THM_DTLS (7 << 5) -#define MAX77819_TOPOFF_DTLS (1 << 4) +#define MAX77819_THM_DTLS (7 << 5) +#define MAX77819_TOPOFF_DTLS (1 << 4) #define MAX77819_CHG_DTL (0x0F << 0) /* MAX77819_DETAILS3 */ @@ -188,14 +188,13 @@ /*Charger initialization valute*/ -extern int battery_charger_dis ; +extern int battery_charger_dis; extern void max77819_charger_dump_register(void); #define M2SH(m) ((m) & 0x0F ? ((m) & 0x03 ? ((m) & 0x01 ? 0 : 1) : ((m) & 0x04 ? 2 : 3)) : \ ((m) & 0x30 ? ((m) & 0x10 ? 4 : 5) : ((m) & 0x40 ? 6 : 7))) -struct max77819_charger_platform_data -{ +struct max77819_charger_platform_data { int fast_charge_timer; /* One of 0, 4, 5, 6, 7, 8, 9, 16Hr */ int restart_threshold; /* 150000uV or 200000uV */ int current_limit; /* 100000uA ~ 1875000uA */ @@ -211,7 +210,7 @@ struct max77819_charger_platform_data static struct max77819_charger_platform_data max77819_charger_pdata = { - .fast_charge_timer = 0, + .fast_charge_timer = 0, .restart_threshold = 150000, .current_limit = 1500000, .topoff_current_threshold = 150000, /* modified by lyf*/ @@ -226,59 +225,57 @@ static struct max77819_charger_platform_data max77819_charger_pdata = { static kal_uint32 max77819_charger_inited = KAL_FALSE; //static kal_uint32 max77819_charger_enabled = KAL_FALSE; -static kal_uint32 last_chgcc = 0; -static kal_uint32 last_inputcc = 0; -static kal_uint32 last_cv_voltage = 0; +static kal_uint32 last_chgcc; +static kal_uint32 last_inputcc; +static kal_uint32 last_cv_voltage; kal_bool max77819_charger_is_locked(void) { kal_uint8 val = 0; + max77819_pmic_reg_read(MAX77819_CHGCTL1, &val); - if((val & MAX77819_CHGPROT) == MAX77819_CHGPROT) - { - return KAL_FALSE; - } - else - return KAL_TRUE; + if ((val & MAX77819_CHGPROT) == MAX77819_CHGPROT) { + return KAL_FALSE; + } else + return KAL_TRUE; } void max77819_otg_enable(bool on) { - if(on){ - max77819_pmic_reg_update_bits(MAX77819_RBOOST_CTL1,(1 << 0),1);//enable reverse boost - max77819_pmic_reg_update_bits(MAX77819_BAT2SOC_CTL,(1 << 5),(1 << 5));//enable otg - } - else{ - max77819_pmic_reg_update_bits(MAX77819_BAT2SOC_CTL,(1 << 5),0);//disable otg - max77819_pmic_reg_update_bits(MAX77819_RBOOST_CTL1,(1 << 0),0);//disable reverse boost + if (on) { + max77819_pmic_reg_update_bits(MAX77819_RBOOST_CTL1, (1 << 0), 1);//enable reverse boost + max77819_pmic_reg_update_bits(MAX77819_BAT2SOC_CTL, (1 << 5), (1 << 5));//enable otg + } else{ + max77819_pmic_reg_update_bits(MAX77819_BAT2SOC_CTL, (1 << 5), 0);//disable otg + max77819_pmic_reg_update_bits(MAX77819_RBOOST_CTL1, (1 << 0), 0);//disable reverse boost } } void max77819_buck_enable(bool on) { - if(on){ - max77819_pmic_reg_update_bits(MAX77819_CHGCTL1,(1 << 2),(1 << 2));//enable buck - } - else{ - max77819_pmic_reg_update_bits(MAX77819_CHGCTL1,(1 << 2),0);//disable buck + if (on) { + max77819_pmic_reg_update_bits(MAX77819_CHGCTL1, (1 << 2), (1 << 2));//enable buck + } else{ + max77819_pmic_reg_update_bits(MAX77819_CHGCTL1, (1 << 2), 0);//disable buck } } /*charger unlock*/ -static int max77819_charger_unlock (void) +static int max77819_charger_unlock(void) { int rc; - rc = max77819_pmic_reg_update_bits(MAX77819_CHGCTL1,MAX77819_CHGPROT,3); + + rc = max77819_pmic_reg_update_bits(MAX77819_CHGCTL1, MAX77819_CHGPROT, 3); printk("max77819_charger_unlock [%d]\n", rc); return rc; } /*charger lock*/ -static int max77819_charger_lock (void) +static int max77819_charger_lock(void) { int rc; - rc = max77819_pmic_reg_update_bits(MAX77819_CHGCTL1,MAX77819_CHGPROT,0); + rc = max77819_pmic_reg_update_bits(MAX77819_CHGCTL1, MAX77819_CHGPROT, 0); printk("max77819_charger_lock [%d]\n", rc); return rc; @@ -288,58 +285,56 @@ static int max77819_charger_lock (void) /*set charging cc current, the input value should be less than 2.0A*/ int max77819_charger_set_current(void *data) { - kal_int32 chgcc = *(kal_int32*)(data); + kal_int32 chgcc = *(kal_int32 *)(data); kal_uint8 val = 0; int ret; // chgcc = 150000; - printk( "max77819_charger_set_current: %d\n", chgcc); + printk("max77819_charger_set_current: %d\n", chgcc); - if(last_chgcc == chgcc) - { - printk( "max77819_charger_set_current: same chgcc, ignore it\n"); - return 0; + if (last_chgcc == chgcc) { + printk("max77819_charger_set_current: same chgcc, ignore it\n"); + return 0; } /*set maximal charging current to */ max77819_pmic_reg_write(MAX77819_CHGCCMAX, 0x1F); - if(chgcc<25000) - val = 0; - else if (chgcc >= 25000 && chgcc <=155000) - val = ((chgcc -25000)/5000 + 0x1 )<<(M2SH(MAX77819_CHGCC)); - else if((chgcc>155000 )&&(chgcc < 180000)) - val = 0x1b; - else if((chgcc>=180000 )&&(chgcc < 186700)) - val = 0x1c; - else if((chgcc>=186700 )&&(chgcc < 193300)) - val = 0x1d; - else if((chgcc>=193300 )&&(chgcc < 200000)) - val = 0x1e; - else if(chgcc == 200000) - val = 0x1f; + if (chgcc < 25000) + val = 0; + else if (chgcc >= 25000 && chgcc <= 155000) + val = ((chgcc - 25000)/5000 + 0x1)<<(M2SH(MAX77819_CHGCC)); + else if ((chgcc > 155000) && (chgcc < 180000)) + val = 0x1b; + else if ((chgcc >= 180000) && (chgcc < 186700)) + val = 0x1c; + else if ((chgcc >= 186700) && (chgcc < 193300)) + val = 0x1d; + else if ((chgcc >= 193300) && (chgcc < 200000)) + val = 0x1e; + else if (chgcc == 200000) + val = 0x1f; else - val = 0x06; //default 500mA + val = 0x06; //default 500mA // val |= 0 << M2SH(MAX77819_FCHGTIME);//disable timer #if 0 - if (50000 == chgcc) - val |= 0x06; /* 500mA */ + if (chgcc == 50000) + val |= 0x06; /* 500mA */ else - val |= 0x1A; /* 1500mA */ + val |= 0x1A; /* 1500mA */ #endif ret = max77819_charger_unlock(); - ret |= max77819_pmic_reg_update_bits(MAX77819_FCHGCRNT,MAX77819_CHGCC,val); + ret |= max77819_pmic_reg_update_bits(MAX77819_FCHGCRNT, MAX77819_CHGCC, val); ret |= max77819_charger_lock(); last_chgcc = chgcc; - if (ret < 0) - { - printk(KERN_INFO "Failed to set FCHGCRNT: %d\n", ret); - last_chgcc = 0; - return -1; - } + if (ret < 0) { + printk(KERN_INFO "Failed to set FCHGCRNT: %d\n", ret); + last_chgcc = 0; + return -1; + } return ret; } @@ -354,95 +349,92 @@ static int max77819_charger_lock (void) /* charger lock protection, start */ max77819_charger_unlock(); - ret = max77819_pmic_reg_read(MAX77819_FCHGCRNT,&chgcc); + ret = max77819_pmic_reg_read(MAX77819_FCHGCRNT, &chgcc); max77819_charger_lock(); /* charger lock protection, end */ - if(chgcc == 0) - *(kal_int32*)(data) = 0; - else if (chgcc >= 0x01 && chgcc <= 0x1b) - *(kal_int32*)(data) = 25000 + 5000*(chgcc - 1); - else if(chgcc == 0x1c) - *(kal_int32*)(data) = 180000; - else if(chgcc == 0x1d) - *(kal_int32*)(data) = 186700; - else if(chgcc == 0x1e) - *(kal_int32*)(data) = 193300; - else if(chgcc == 0x1f) - *(kal_int32*)(data) = 200000; - if (ret < 0) - { - printk( "Failed to set FCHGCRNT: %d\n", ret); - return -1; - } + if (chgcc == 0) + *(kal_int32 *)(data) = 0; + else if (chgcc >= 0x01 && chgcc <= 0x1b) + *(kal_int32 *)(data) = 25000 + 5000*(chgcc - 1); + else if (chgcc == 0x1c) + *(kal_int32 *)(data) = 180000; + else if (chgcc == 0x1d) + *(kal_int32 *)(data) = 186700; + else if (chgcc == 0x1e) + *(kal_int32 *)(data) = 193300; + else if (chgcc == 0x1f) + *(kal_int32 *)(data) = 200000; + if (ret < 0) { + printk("Failed to set FCHGCRNT: %d\n", ret); + return -1; + } return ret; } /*set DC input current limitation,input would be mA*/ int max77819_charger_set_input_current(void *data) { - kal_int32 uA = *(kal_int32*)(data); + kal_int32 uA = *(kal_int32 *)(data); kal_uint8 val = 0; int ret; //uA = 150000; - printk( "max77819_charger_set_input_current: %d\n", uA); + printk("max77819_charger_set_input_current: %d\n", uA); - if(last_inputcc == uA) - { - printk( "max77819_charger_set_input_current: same inputcc, ignore it\n"); - return 0; + if (last_inputcc == uA) { + printk("max77819_charger_set_input_current: same inputcc, ignore it\n"); + return 0; } // uA = 100000; - if (uA == 10000) + if (uA == 10000) val = 0 << M2SH(MAX77819_DCILMT); - else if (uA >= 27500 && uA <= 150000) - val = ((0x3+((uA - 27500) / 2500)) << M2SH(MAX77819_DCILMT)); - else if(uA>150000 && uA<170900) - val = 0x34; - else if(uA>=170900 && uA<175000) - val = 0x35; - else if(uA>=175000 && uA<179200) - val = 0x36; - else if(uA>=179200 && uA<183400) - val = 0x37; - else if(uA>=183400 && uA<187500) - val = 0x38; - else if(uA>=187500 && uA<191700) - val = 0x39; - else if(uA>=191700 && uA<195900) - val = 0x3A; - else if(uA>=195900 && uA<200000) - val = 0x3B; - else if(uA>=200000 && uA<204200) - val = 0x3C; - else if(uA>=204200 && uA<208400) + else if (uA >= 27500 && uA <= 150000) + val = ((0x3+((uA - 27500) / 2500)) << M2SH(MAX77819_DCILMT)); + else if (uA > 150000 && uA < 170900) + val = 0x34; + else if (uA >= 170900 && uA < 175000) + val = 0x35; + else if (uA >= 175000 && uA < 179200) + val = 0x36; + else if (uA >= 179200 && uA < 183400) + val = 0x37; + else if (uA >= 183400 && uA < 187500) + val = 0x38; + else if (uA >= 187500 && uA < 191700) + val = 0x39; + else if (uA >= 191700 && uA < 195900) + val = 0x3A; + else if (uA >= 195900 && uA < 200000) + val = 0x3B; + else if (uA >= 200000 && uA < 204200) + val = 0x3C; + else if (uA >= 204200 && uA < 208400) val = 0x3D; - else if(uA>=208400) + else if (uA >= 208400) val = 0x3E; else if (uA == -1) - val = 0x3F << M2SH(MAX77819_DCILMT); + val = 0x3F << M2SH(MAX77819_DCILMT); #if 0 - if (50000 == uA) - val = 0x0C; /* 500mA */ + if (uA == 50000) + val = 0x0C; /* 500mA */ else - val = 0x34; /* 1500mA */ + val = 0x34; /* 1500mA */ #endif /* charger lock protection, start */ - max77819_charger_unlock(); + max77819_charger_unlock(); ret = max77819_pmic_reg_write(MAX77819_DCCRNT, val); max77819_charger_lock(); /*charger lock protection, end */ - if (ret < 0) - { - printk(KERN_INFO "Failed to set input current: %d\n", ret); - last_inputcc = 0; - return -1; - } + if (ret < 0) { + printk(KERN_INFO "Failed to set input current: %d\n", ret); + last_inputcc = 0; + return -1; + } last_inputcc = uA; return ret; @@ -452,36 +444,33 @@ static int max77819_charger_lock (void) int max77819_charger_enable(void *data) { int ret; - kal_uint32 enable = *(kal_uint32*)(data); + kal_uint32 enable = *(kal_uint32 *)(data); - printk( "max77819_charger_enable: %d\n", enable); + printk("max77819_charger_enable: %d\n", enable); max77819_charger_unlock(); - ret = max77819_pmic_reg_update_bits(MAX77819_CHGCTL2, MAX77819_CEN,enable ?MAX77819_CEN : 0); + ret = max77819_pmic_reg_update_bits(MAX77819_CHGCTL2, MAX77819_CEN, enable ? MAX77819_CEN : 0); max77819_charger_lock(); - if ( battery_charger_dis){ - printk(KERN_EMERG "max77819_charger_enable: battery_charger_dis == 1\n"); - max77819_buck_enable(false); - // max77819_charger_inited = KAL_FALSE; - // last_chgcc = 0; - // last_inputcc = 0; - // last_cv_voltage = 0; - } - else - { - printk(KERN_EMERG "max77819_charger_enable: battery_charger_dis == 0\n"); - max77819_buck_enable(true); - } - max77819_charger_dump_register(); - if(enable == KAL_FALSE) - { - max77819_charger_inited = KAL_FALSE; - last_chgcc = 0; - last_inputcc = 0; - last_cv_voltage = 0; + if (battery_charger_dis) { + printk(KERN_EMERG "max77819_charger_enable: battery_charger_dis == 1\n"); + max77819_buck_enable(false); + // max77819_charger_inited = KAL_FALSE; + // last_chgcc = 0; + // last_inputcc = 0; + // last_cv_voltage = 0; + } else { + printk(KERN_EMERG "max77819_charger_enable: battery_charger_dis == 0\n"); + max77819_buck_enable(true); + } + max77819_charger_dump_register(); + if (enable == KAL_FALSE) { + max77819_charger_inited = KAL_FALSE; + last_chgcc = 0; + last_inputcc = 0; + last_cv_voltage = 0; } - return ret; + return ret; } /*set battery regulation voltage*/ int max77819_charger_set_cv_voltage(void *data) @@ -490,53 +479,49 @@ int max77819_charger_set_cv_voltage(void *data) kal_uint32 vol = *(kal_uint32 *)(data); kal_uint8 val = 0; - printk( "max77819_charger_set_cv_voltage: %d\n", vol); + printk("max77819_charger_set_cv_voltage: %d\n", vol); /*set battery regulation control register-->register address:0x3A*/ - if(last_cv_voltage == vol) - { - printk( "max77819_charger_set_cv_voltage: same cv_voltage, ignore it\n"); - return 0; + if (last_cv_voltage == vol) { + printk("max77819_charger_set_cv_voltage: same cv_voltage, ignore it\n"); + return 0; } - switch(vol) - { - case 3550000: + switch (vol) { + case 3550000: val = 0 << M2SH(MAX77819_MBATREG); - break; - case 3700000 ... 4400000: + break; + case 3700000 ... 4400000: val = ((vol - 3700000) / 50000 + 1) << M2SH(MAX77819_MBATREG); - break; - default: - printk( "Invalid voltage: %d\n", vol); - return -1; - } - - switch(max77819_charger_pdata.restart_threshold) - { - case 150000: - val |= 0 << M2SH(MAX77819_CHGRSTRT); - break; - case 200000: - val |= 1 << M2SH(MAX77819_CHGRSTRT); - break; - default: - printk( "Invalid restart_threshold: %d\n", max77819_charger_pdata.restart_threshold); - return -1; - } + break; + default: + printk("Invalid voltage: %d\n", vol); + return -1; + } + + switch (max77819_charger_pdata.restart_threshold) { + case 150000: + val |= 0 << M2SH(MAX77819_CHGRSTRT); + break; + case 200000: + val |= 1 << M2SH(MAX77819_CHGRSTRT); + break; + default: + printk("Invalid restart_threshold: %d\n", max77819_charger_pdata.restart_threshold); + return -1; + } /* charger lock protection, start */ max77819_charger_unlock(); ret = max77819_pmic_reg_write(MAX77819_BATREG, val); max77819_charger_lock(); /* charger lock protection, end */ - if (ret < 0) - { - printk(KERN_INFO "Failed to set cv: %d\n", ret); - last_cv_voltage = 0; - return -1; - } + if (ret < 0) { + printk(KERN_INFO "Failed to set cv: %d\n", ret); + last_cv_voltage = 0; + return -1; + } last_cv_voltage = vol; - return ret; + return ret; } int max77819_charger_get_charging_status(void *data) @@ -546,29 +531,28 @@ int max77819_charger_set_cv_voltage(void *data) ret = max77819_pmic_reg_read(MAX77819_CHG_DTLS, &value); - if (ret < 0) + if (ret < 0) printk("cannot read CHG_DTLS : %d\n", ret); - printk( "max77819_charger_get_charging_status:0x%x\n", (value & MAX77819_CHG_DTL) >> M2SH(MAX77819_CHG_DTL)); - switch((value & MAX77819_CHG_DTL) >> M2SH(MAX77819_CHG_DTL)) - { - case 0x1: /* prequal */ - case 0x2: /* CC */ - case 0x3: /* CV */ - return 0; - case 0x4: /* topoff */ - case 0x5: /* done */ - return 1; - case 0x0: /* dead batter */ - case 0x6: /* timer fault */ - case 0x7: /* temperature suspend */ - case 0x8: /* buck,charger off */ - case 0xB: /* USB suspend */ - return 0; - case 0xA: /* OTG debounce time-out */ - case 0x9: /* thermal loop */ - default: - return 0; - } + printk("max77819_charger_get_charging_status:0x%x\n", (value & MAX77819_CHG_DTL) >> M2SH(MAX77819_CHG_DTL)); + switch ((value & MAX77819_CHG_DTL) >> M2SH(MAX77819_CHG_DTL)) { + case 0x1: /* prequal */ + case 0x2: /* CC */ + case 0x3: /* CV */ + return 0; + case 0x4: /* topoff */ + case 0x5: /* done */ + return 1; + case 0x0: /* dead batter */ + case 0x6: /* timer fault */ + case 0x7: /* temperature suspend */ + case 0x8: /* buck,charger off */ + case 0xB: /* USB suspend */ + return 0; + case 0xA: /* OTG debounce time-out */ + case 0x9: /* thermal loop */ + default: + return 0; + } } /*init charger with inital parameters */ int max77819_charger_hw_init(void *data) @@ -577,15 +561,15 @@ int max77819_charger_set_cv_voltage(void *data) int ret; kal_uint8 val = 0, status = 0; - printk( "max77819_charger_hw_init: start\n"); - printk( "max77819_charger_hw_init: firstly check charging status,if in charging state, just do nothing\n"); + printk("max77819_charger_hw_init: start\n"); + printk("max77819_charger_hw_init: firstly check charging status,if in charging state, just do nothing\n"); ret = max77819_pmic_reg_read(MAX77819_CHG_DTLS, &status); - if(ret <0) + if (ret < 0) return -1; //jelphi val = (status & MAX77819_CHG_DTL) >> M2SH(MAX77819_CHG_DTL); - if((max77819_charger_inited == KAL_TRUE )&&((val == 0x01)||(val == 0x02)||(val == 0x03)||(val == 0x04)||(val == 0x05))){ + if ((max77819_charger_inited == KAL_TRUE) && ((val == 0x01) || (val == 0x02) || (val == 0x03) || (val == 0x04) || (val == 0x05))) { printk(KERN_INFO "max77819_charger is in charging state ,init done already, return\n"); return 0; @@ -595,7 +579,7 @@ int max77819_charger_set_cv_voltage(void *data) /* Unlock protected registers-->resister address :0x37 */ ret = max77819_pmic_reg_update_bits(MAX77819_CHGCTL1, - MAX77819_CHGPROT | MAX77819_THM_DIS | MAX77819_JEITA_EN , + MAX77819_CHGPROT | MAX77819_THM_DIS | MAX77819_JEITA_EN, MAX77819_CHGPROT | MAX77819_THM_DIS | MAX77819_JEITA_EN); @@ -607,148 +591,95 @@ int max77819_charger_set_cv_voltage(void *data) /*configure automatic input current limitation--> 0x3C*/ - if (pdata->enable_aicl) - { + if (pdata->enable_aicl) { /* check voltage,it should be 3.9v--4.8v*/ - if (unlikely(pdata->aicl_voltage < 3900000 || pdata->aicl_voltage > 4800000)) - { - printk( "Invalid aicl_voltage: %duA\n", pdata->aicl_voltage); - return -1; - } + if (unlikely(pdata->aicl_voltage < 3900000 || pdata->aicl_voltage > 4800000)) { + printk("Invalid aicl_voltage: %duA\n", pdata->aicl_voltage); + return -1; + } /* check reset threshold below the voltage setting: eitther 100mv or 200mv*/ - if (unlikely(pdata->aicl_threshold != 100000 && pdata->aicl_threshold != 200000)) - { - printk( "Invalid aicl_threshold: %duA\n", pdata->aicl_threshold); - return -1; - } + if (unlikely(pdata->aicl_threshold != 100000 && pdata->aicl_threshold != 200000)) { + printk("Invalid aicl_threshold: %duA\n", pdata->aicl_threshold); + return -1; + } val = ((((pdata->aicl_voltage - 3900000) / 100000) << M2SH(MAX77819_AICL)) | (((pdata->aicl_threshold - 100000) / 100000) << M2SH(MAX77819_AICL_RESET))); - } - else + } else val = MAX77819_DCMON_DIS; ret = max77819_pmic_reg_write(MAX77819_AICLCNTL, val); - if (ret < 0) - { - printk( "Failed to set AICLCNTL: %d\n", ret); - return -1; - } - -#if 0 - /*set DC input current limitation -->0x3B*/ - ret = max77819_charger_set_input_current(&(pdata->current_limit)); - if (ret < 0) - { - printk( "Failed to call max77819_charger_set_input_current(): %d\n", ret); - return -1; - } - max77819_charger_unlock(); - max77819_pmic_reg_update_bits(MAX77819_CHGCTL2, MAX77819_DCILIM_EN, 1<<7); - max77819_charger_lock(); -#endif - -#if 0 - /*set fast charge timer-->adress: 0x38*/ - switch(pdata->fast_charge_timer) - { - case 0: - val = 0 << M2SH(MAX77819_FCHGTIME); - break; - case 4 ... 9: - val = (pdata->fast_charge_timer - 3) << M2SH(MAX77819_FCHGTIME); - break; - case 16: - val = 0x07 << M2SH(MAX77819_FCHGTIME); - break; - default: - printk( "Invalid fast_charge_timer: %d\n", pdata->fast_charge_timer); - return -1; - } - val |= 0x1F << M2SH(MAX77819_CHGCC); /* Charging current = 1.80A, here just set max current*/ - max77819_charger_unlock(); - ret = max77819_pmic_reg_write(MAX77819_FCHGCRNT, val); - max77819_charger_lock(); - if (ret < 0) - { - printk( "Failed to set FCHGCRNT: %d\n", ret); - return -1; - } -#endif + if (ret < 0) { + printk("Failed to set AICLCNTL: %d\n", ret); + return -1; + } /*set topoff curent threshold and topoff timer -->register address: 0x39*/ - if(unlikely(pdata->topoff_current_threshold < 50000 || - pdata->topoff_current_threshold > 400000)) - { - printk( "Invalid topoff_current_threshold: %d\n", + if (unlikely(pdata->topoff_current_threshold < 50000 || + pdata->topoff_current_threshold > 400000)) { + printk("Invalid topoff_current_threshold: %d\n", pdata->topoff_current_threshold); - return -1; - } + return -1; + } /*topoff current threshold*/ val = ((pdata->topoff_current_threshold - 50000) / 50000) << M2SH(MAX77819_ITOPOFF); - if (unlikely(pdata->topoff_timer < -1 || pdata->topoff_timer > 60)) - { - printk( "Invalid topoff_timer: %d\n", pdata->topoff_timer); - return -1; - } else if (pdata->topoff_timer == -1) /*never enter DONE state*/ + if (unlikely(pdata->topoff_timer < -1 || pdata->topoff_timer > 60)) { + printk("Invalid topoff_timer: %d\n", pdata->topoff_timer); + return -1; + } else if (pdata->topoff_timer == -1) /*never enter DONE state*/ val |= 7 << M2SH(MAX77819_TOPOFFTIME); - else + else val |= (pdata->topoff_timer / 10) << M2SH(MAX77819_TOPOFFTIME); /* charger lock protection, start */ max77819_charger_unlock(); - ret = max77819_pmic_reg_update_bits(MAX77819_TOPOFF,MAX77819_ITOPOFF | MAX77819_TOPOFFTIME, val); + ret = max77819_pmic_reg_update_bits(MAX77819_TOPOFF, MAX77819_ITOPOFF | MAX77819_TOPOFFTIME, val); max77819_charger_lock(); /* charger lock protection, end */ - if (ret < 0) - { - printk( "Failed to set TOPOFF: %d\n", ret); - return -1; - } + if (ret < 0) { + printk("Failed to set TOPOFF: %d\n", ret); + return -1; + } #if 1 /*set battery regulation control register-->register address:0x3A*/ - switch(pdata->voltage) - { - case 3550000: + switch (pdata->voltage) { + case 3550000: val = 0 << M2SH(MAX77819_MBATREG); - break; - case 3700000 ... 4400000: + break; + case 3700000 ... 4400000: val = ((pdata->voltage - 3700000) / 50000 + 1) << M2SH(MAX77819_MBATREG); - break; - default: - printk( "Invalid voltage: %d\n", pdata->voltage); - return -1; - } + break; + default: + printk("Invalid voltage: %d\n", pdata->voltage); + return -1; + } /*restart threshold should be 150000 uV or 200000uV only*/ - switch(pdata->restart_threshold) - { - case 150000: + switch (pdata->restart_threshold) { + case 150000: val |= 0 << M2SH(MAX77819_CHGRSTRT); - break; - case 200000: + break; + case 200000: val |= 1 << M2SH(MAX77819_CHGRSTRT); - break; - default: - printk( "Invalid restart_threshold: %d\n", pdata->restart_threshold); - return -1; - } + break; + default: + printk("Invalid restart_threshold: %d\n", pdata->restart_threshold); + return -1; + } max77819_charger_unlock(); - ret = max77819_pmic_reg_update_bits(MAX77819_BATREG,MAX77819_MBATREG | MAX77819_CHGRSTRT, val); + ret = max77819_pmic_reg_update_bits(MAX77819_BATREG, MAX77819_MBATREG | MAX77819_CHGRSTRT, val); max77819_charger_lock(); - if (ret < 0) - { - printk( "Failed to set MAX77819_CHG_CNFG_04: %d\n", ret); - return -1; - } + if (ret < 0) { + printk("Failed to set MAX77819_CHG_CNFG_04: %d\n", ret); + return -1; + } #endif /*set CHGCTL2-->register address:0x3e*/ /*set prequal current, enable input charge limitataton*/ - if (unlikely(pdata->prequal_current < 100000 || pdata->prequal_current > 400000)) - { - printk( "Invalid prequal_current: %d\n", pdata->prequal_current); - return -1; - } + if (unlikely(pdata->prequal_current < 100000 || pdata->prequal_current > 400000)) { + printk("Invalid prequal_current: %d\n", pdata->prequal_current); + return -1; + } val = ((pdata->prequal_current / 100000 - 1) << M2SH(MAX77819_PREQCUR)) | MAX77819_DCILIM_EN | 0x04; /* min Vsys 3.4V*/ /* charger lock protection, start */ max77819_charger_unlock(); @@ -756,30 +687,29 @@ int max77819_charger_set_cv_voltage(void *data) MAX77819_PREQCUR | MAX77819_DCILIM_EN | MAX77819_QBATEN | MAX77819_VSYSREG, val); max77819_charger_lock(); /* charger lock protection, end */ - if (ret < 0) - { - printk( "Failed to set MAX77819_CHG_CNFG_04: %d\n", ret); - return -1; - } - max77819_pmic_reg_write(0x3d,0x20); - max77819_pmic_reg_write(0x36,0x00); - max77819_pmic_reg_write(0x40,0x00); - max77819_pmic_reg_write(0x41,0x0f); - max77819_pmic_reg_write(0x42,0x1f); - max77819_pmic_reg_write(0x43,0x54); - - + if (ret < 0) { + printk("Failed to set MAX77819_CHG_CNFG_04: %d\n", ret); + return -1; + } + max77819_pmic_reg_write(0x3d, 0x20); + max77819_pmic_reg_write(0x36, 0x00); + max77819_pmic_reg_write(0x40, 0x00); + max77819_pmic_reg_write(0x41, 0x0f); + max77819_pmic_reg_write(0x42, 0x1f); + max77819_pmic_reg_write(0x43, 0x54); + + #if 0 //test------------------------------------------- - max77819_pmic_reg_update_bits(MAX77819_CHGCTL1,MAX77819_JEITA_EN,1<<3); - max77819_pmic_reg_update_bits(MAX77819_CHGCTL1,MAX77819_THM_DIS,1<<4); - max77819_pmic_reg_write(0x38,0x50); - max77819_pmic_reg_write(0x3a,0x16); - max77819_pmic_reg_write(0x3b,0x34); - max77819_pmic_reg_write(0x3f,0x6e); - max77819_pmic_reg_write(0x40,0x08); - max77819_pmic_reg_write(0x41,0x0f); - max77819_pmic_reg_write(0x42,0x1f); + max77819_pmic_reg_update_bits(MAX77819_CHGCTL1, MAX77819_JEITA_EN, 1<<3); + max77819_pmic_reg_update_bits(MAX77819_CHGCTL1, MAX77819_THM_DIS, 1<<4); + max77819_pmic_reg_write(0x38, 0x50); + max77819_pmic_reg_write(0x3a, 0x16); + max77819_pmic_reg_write(0x3b, 0x34); + max77819_pmic_reg_write(0x3f, 0x6e); + max77819_pmic_reg_write(0x40, 0x08); + max77819_pmic_reg_write(0x41, 0x0f); + max77819_pmic_reg_write(0x42, 0x1f); //test------------------------------------------- #endif @@ -787,29 +717,28 @@ int max77819_charger_set_cv_voltage(void *data) last_chgcc = 0; last_inputcc = 0; last_cv_voltage = 0; - printk( "max77819_charger_hw_init: end\n"); + printk("max77819_charger_hw_init: end\n"); return 0; } /*get aicl flag status*/ -bool max77819_charger_get_aicl_status(void ) +bool max77819_charger_get_aicl_status(void) { kal_uint8 flag = 0; - bool aicl_on = false; + bool aicl_on = false; int ret; - ret = max77819_pmic_reg_read(MAX77819_CHG_STAT,&flag); - if (ret < 0) - { - printk( "Failed to get AICL flag status: %d\n", ret); - return -1; - } + ret = max77819_pmic_reg_read(MAX77819_CHG_STAT, &flag); + if (ret < 0) { + printk("Failed to get AICL flag status: %d\n", ret); + return -1; + } + + aicl_on = flag & 0x80; - aicl_on = flag & 0x80; + printk(KERN_EMERG "max77819_charger_get_aicl_status: aici_on = %d\n", aicl_on); - printk(KERN_EMERG "max77819_charger_get_aicl_status: aici_on = %d\n",aicl_on); - - return aicl_on; + return aicl_on; } void max77819_adjust_input_current(void) @@ -817,84 +746,84 @@ void max77819_adjust_input_current(void) kal_uint32 reg_inputcc = 0; kal_uint32 current_inputcc = 0; - max77819_pmic_reg_read(MAX77819_DCCRNT,®_inputcc ); + max77819_pmic_reg_read(MAX77819_DCCRNT, ®_inputcc); current_inputcc = reg_inputcc & 0x3f; //bit: 0-5 current_inputcc -= 12; //300mA - printk(KERN_EMERG "max77819_adjust_input_current: current_inputcc=%x\n",current_inputcc); - if(current_inputcc <= 0X0c)//threshold :500mA - current_inputcc = 0x0c; + printk(KERN_EMERG "max77819_adjust_input_current: current_inputcc=%x\n", current_inputcc); + if (current_inputcc <= 0X0c)//threshold :500mA + current_inputcc = 0x0c; reg_inputcc = (reg_inputcc & (!0x3f))|current_inputcc; - printk(KERN_EMERG "max77819_adjust_input_current: reg_inputcc(0x3b)=%x\n",reg_inputcc); + printk(KERN_EMERG "max77819_adjust_input_current: reg_inputcc(0x3b)=%x\n", reg_inputcc); max77819_pmic_reg_write(MAX77819_DCCRNT, reg_inputcc); } void max77819_aicl_control(void) { - kal_uint32 reg_chgcc = 0; - kal_uint32 reg_inputcc = 0; - kal_uint32 current_chgcc = 0; - kal_uint32 current_inputcc = 0; - if(!max77819_charger_get_aicl_status()) - return -1; - - - max77819_charger_unlock(); - max77819_pmic_reg_read(MAX77819_FCHGCRNT,®_chgcc ); - max77819_pmic_reg_read(MAX77819_DCCRNT,®_inputcc ); - printk(KERN_EMERG " reg_chgcc(0x38) = %x, reg_inputcc(0x3b)=%x\n",reg_chgcc,reg_inputcc); - current_chgcc = reg_chgcc & 0x1f; //bit: 0-4 - current_inputcc = reg_inputcc & 0x3f; //bit: 0-5 - if((current_chgcc <= 0x06)||(current_inputcc <= 0x0c)) - return; - do{ - current_chgcc -= 1; - current_inputcc -= 2; - if(current_chgcc <= 0X06) - current_chgcc = 0x06; //threshold :500mA - if(current_inputcc <= 0X0c)//threshold :500mA - current_inputcc = 0x0c; - - reg_chgcc = (reg_chgcc & (!0x1f))|current_chgcc; - reg_inputcc = (reg_inputcc & (!0x3f))|current_inputcc; - // max77819_pmic_reg_write(MAX77819_FCHGCRNT, reg_chgcc); - max77819_pmic_reg_write(MAX77819_DCCRNT, reg_inputcc); - msleep(50); - } while(max77819_charger_get_aicl_status() && !(current_inputcc = 0x0c)); - - max77819_adjust_input_current(); - - max77819_charger_lock(); + kal_uint32 reg_chgcc = 0; + kal_uint32 reg_inputcc = 0; + kal_uint32 current_chgcc = 0; + kal_uint32 current_inputcc = 0; + if (!max77819_charger_get_aicl_status()) + return -1; + + + max77819_charger_unlock(); + max77819_pmic_reg_read(MAX77819_FCHGCRNT, ®_chgcc); + max77819_pmic_reg_read(MAX77819_DCCRNT, ®_inputcc); + printk(KERN_EMERG " reg_chgcc(0x38) = %x, reg_inputcc(0x3b)=%x\n", reg_chgcc, reg_inputcc); + current_chgcc = reg_chgcc & 0x1f; //bit: 0-4 + current_inputcc = reg_inputcc & 0x3f; //bit: 0-5 + if ((current_chgcc <= 0x06) || (current_inputcc <= 0x0c)) + return; + do { + current_chgcc -= 1; + current_inputcc -= 2; + if (current_chgcc <= 0X06) + current_chgcc = 0x06; //threshold :500mA + if (current_inputcc <= 0X0c)//threshold :500mA + current_inputcc = 0x0c; + + reg_chgcc = (reg_chgcc & (!0x1f))|current_chgcc; + reg_inputcc = (reg_inputcc & (!0x3f))|current_inputcc; + // max77819_pmic_reg_write(MAX77819_FCHGCRNT, reg_chgcc); + max77819_pmic_reg_write(MAX77819_DCCRNT, reg_inputcc); + msleep(50); + } while (max77819_charger_get_aicl_status() && !(current_inputcc = 0x0c)); + + max77819_adjust_input_current(); + + max77819_charger_lock(); } void max77819_vol_control(void) { - kal_uint32 reg_chgcc = 0; - kal_uint32 reg_inputcc = 0; - kal_uint32 current_chgcc = 0; - kal_uint32 current_inputcc = 0; - - - max77819_charger_unlock(); - max77819_pmic_reg_read(MAX77819_FCHGCRNT,®_chgcc ); - max77819_pmic_reg_read(MAX77819_DCCRNT,®_inputcc ); - printk(KERN_EMERG " reg_chgcc(0x38) = %x, reg_inputcc(0x3b)=%x\n",reg_chgcc,reg_inputcc); - current_chgcc = reg_chgcc & 0x1f; //bit: 0-4 - current_inputcc = reg_inputcc & 0x3f; //bit: 0-5 - if((current_chgcc <= 0x06)||(current_inputcc <= 0x0c)) - return; - - current_chgcc = 0x10; // 1A - current_inputcc = 0x20;// 1A - - reg_chgcc = (reg_chgcc & (!0x1f))|current_chgcc; - reg_inputcc = (reg_inputcc & (!0x3f))|current_inputcc; - //max77819_pmic_reg_write(MAX77819_FCHGCRNT, reg_chgcc); - max77819_pmic_reg_write(MAX77819_DCCRNT, reg_inputcc); - - max77819_charger_lock(); + kal_uint32 reg_chgcc = 0; + kal_uint32 reg_inputcc = 0; + kal_uint32 current_chgcc = 0; + kal_uint32 current_inputcc = 0; + + + max77819_charger_unlock(); + max77819_pmic_reg_read(MAX77819_FCHGCRNT, ®_chgcc); + max77819_pmic_reg_read(MAX77819_DCCRNT, ®_inputcc); + printk(KERN_EMERG " reg_chgcc(0x38) = %x, reg_inputcc(0x3b)=%x\n", reg_chgcc, reg_inputcc); + current_chgcc = reg_chgcc & 0x1f; //bit: 0-4 + current_inputcc = reg_inputcc & 0x3f; //bit: 0-5 + if ((current_chgcc <= 0x06) || (current_inputcc <= 0x0c)) + return; + + current_chgcc = 0x10; // 1A + current_inputcc = 0x20;// 1A + + reg_chgcc = (reg_chgcc & (!0x1f))|current_chgcc; + reg_inputcc = (reg_inputcc & (!0x3f))|current_inputcc; + //max77819_pmic_reg_write(MAX77819_FCHGCRNT, reg_chgcc); + max77819_pmic_reg_write(MAX77819_DCCRNT, reg_inputcc); + + max77819_charger_lock(); } void max77819_charger_dump_register(void) @@ -903,8 +832,8 @@ void max77819_vol_control(void) int i = 0; int ret; - for(i=0x30 ; i<=0x4b; i++) - ret = max77819_pmic_reg_read(i,®_val); + for (i = 0x30 ; i <= 0x4b; i++) + ret = max77819_pmic_reg_read(i, ®_val); } // =========================Maxim77819=================================== // diff --git a/drivers/misc/mediatek/power/mt6735/max77819_pmic.c b/drivers/misc/mediatek/power/mt6735/max77819_pmic.c index 3d9fa6c2e..a20a7e1e0 100644 --- a/drivers/misc/mediatek/power/mt6735/max77819_pmic.c +++ b/drivers/misc/mediatek/power/mt6735/max77819_pmic.c @@ -47,7 +47,7 @@ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ -#define DEBUG 1 +#define DEBUG 0 /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ @@ -56,10 +56,10 @@ #define MAX77819_PMIC_DEV_NAME "MAX77819_PMIC" /*----------------------------------------------------------------------------*/ -static const struct i2c_device_id max77819_pmic_i2c_id[] = {{MAX77819_PMIC_DEV_NAME,0},{}}; +static const struct i2c_device_id max77819_pmic_i2c_id[] = {{MAX77819_PMIC_DEV_NAME, 0}, {} }; /*the adapter id will be available in customization*/ -static struct i2c_board_info __initdata i2c_max77819_pmic={ I2C_BOARD_INFO("MAX77819_PMIC", 0xCC>>1)}; +static struct i2c_board_info i2c_max77819_pmic __initdata = { I2C_BOARD_INFO("MAX77819_PMIC", 0xCC>>1)}; kal_bool chargin_hw_init_done = KAL_FALSE; @@ -76,7 +76,7 @@ typedef enum { BLS_TRC_READ = 0x01, BLS_TRC_RAWDATA = 0x02, BLS_TRC_IOCTL = 0x04, - BLS_TRC_FILTER =0x08, + BLS_TRC_FILTER = 0x08, } BLS_TRC; /*----------------------------------------------------------------------------*/ @@ -95,10 +95,10 @@ struct max77819_pmic_i2c_data { /*----------------------------------------------------------------------------*/ static struct i2c_driver max77819_pmic_i2c_driver = { .driver = { - .name = MAX77819_PMIC_DEV_NAME, + .name = MAX77819_PMIC_DEV_NAME, }, - .probe = max77819_pmic_i2c_probe, - .remove = max77819_pmic_i2c_remove, + .probe = max77819_pmic_i2c_probe, + .remove = max77819_pmic_i2c_remove, #if !defined(CONFIG_HAS_EARLYSUSPEND) .suspend = max77819_pmic_suspend, .resume = max77819_pmic_resume, @@ -107,130 +107,19 @@ static struct i2c_driver max77819_pmic_i2c_driver = { }; /*----------------------------------------------------------------------------*/ -static struct i2c_client *max77819_pmic_i2c_client = NULL; +static struct i2c_client *max77819_pmic_i2c_client; static struct platform_driver max77819_pmic_backlight_driver; -static struct max77819_pmic_i2c_data *obj_i2c_data = NULL; +static struct max77819_pmic_i2c_data *obj_i2c_data; /*----------------------------------------------------------------------------*/ #define BLS_TAG "[MAX77819_PMIC] " #define BLS_FUN(f) printk(KERN_ERR BLS_TAG"%s\n", __func__) #define BLS_ERR(fmt, args...) printk(KERN_ERR BLS_TAG"%s %d : "fmt, __func__, __LINE__, ##args) #define BLS_LOG(fmt, args...) printk(KERN_ERR BLS_TAG fmt, ##args) -/*----------------------------------------------------------------------------*/ -/* -static int max77819_pmic_data_resolution[] = { - 4096, - 2048, - 1024, - 512, - 256, -}; -*/ -/*----------------------------------------------------------------------------*/ - -/*-------------------- power control function----------------------------------*/ - - - -#if 0 - -/*----------------------------------------------------------------------------*/ -/* -static ssize_t show_chipinfo_value(struct device_driver *ddri, char *buf) -{ - - struct i2c_client *client = max77819_pmic_i2c_client; - char strbuf[MAX77819_PMIC_BUFSIZE]; - BLS_LOG(" show_chipinfo_value \n"); - if(NULL == client) - { - BLS_ERR("i2c client is null!!\n"); - return 0; - } - - return snprintk(buf, PAGE_SIZE, "%s\n", strbuf); - -} -*/ -/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ -static ssize_t show_trace_value(struct device_driver *ddri, char *buf) -{ - ssize_t res; - struct max77819_pmic_i2c_data *obj = obj_i2c_data; - BLS_LOG(" show_trace_value \n"); - if (obj == NULL) - { - BLS_ERR("i2c_data obj is null!!\n"); - return 0; - } - - res = snprintk(buf, PAGE_SIZE, "0x%04X\n", atomic_read(&obj->trace)); - return res; -} -/*----------------------------------------------------------------------------*/ -/*----------------------------------------------------------------------------*/ -static ssize_t show_status_value(struct device_driver *ddri, char *buf) -{ - ssize_t len = 0; - BLS_LOG(" show_status_value \n"); - - return len; -} -/*----------------------------------------------------------------------------*/ -//static DRIVER_ATTR(chipinfo, S_IRUGO, show_chipinfo_value, NULL); -static DRIVER_ATTR(sensordata, S_IRUGO, show_sensordata_value, NULL); -static DRIVER_ATTR(trace, S_IWUSR | S_IRUGO, show_trace_value, store_trace_value); -static DRIVER_ATTR(status, S_IRUGO, show_status_value, NULL); -/*----------------------------------------------------------------------------*/ -static struct driver_attribute *max77819_pmic_attr_list[] = { - //&driver_attr_chipinfo, /*chip information*/ - &driver_attr_trace, /*trace log*/ - &driver_attr_status, /*enable or disable*/ -}; -/*----------------------------------------------------------------------------*/ -static int max77819_pmic_create_attr(struct device_driver *driver) -{ - int idx, err = 0; - int num = (int)(sizeof(max77819_pmic_attr_list)/sizeof(max77819_pmic_attr_list[0])); - if (driver == NULL) - { - return -EINVAL; - } - - for(idx = 0; idx < num; idx++) - { - if((err = driver_create_file(driver, max77819_pmic_attr_list[idx]))) - { - BLS_ERR("driver_create_file (%s) = %d\n", max77819_pmic_attr_list[idx]->attr.name, err); - break; - } - } - return err; -} -/*----------------------------------------------------------------------------*/ -static int max77819_pmic_delete_attr(struct device_driver *driver) -{ - int idx ,err = 0; - int num = (int)(sizeof(max77819_pmic_attr_list)/sizeof(max77819_pmic_attr_list[0])); - - if(driver == NULL) - { - return -EINVAL; - } - - for(idx = 0; idx < num; idx++) - { - driver_remove_file(driver, max77819_pmic_attr_list[idx]); - } - - - return err; -} -#endif -/*----------------------------------------------------------------------------*/ +/*-------------------- power control function----------------------------------*/ /****************************************************************************** * Function Configuration @@ -239,8 +128,7 @@ static int max77819_pmic_open(struct inode *inode, struct file *file) { file->private_data = max77819_pmic_i2c_client; - if(file->private_data == NULL) - { + if (file->private_data == NULL) { BLS_ERR("null pointer!!\n"); return -EINVAL; } @@ -252,23 +140,7 @@ static int max77819_pmic_release(struct inode *inode, struct file *file) file->private_data = NULL; return 0; } -/*----------------------------------------------------------------------------*/ -#if 0 -/*----------------------------------------------------------------------------*/ -static struct file_operations max77819_pmic_fops = { - .owner = THIS_MODULE, - .open = max77819_pmic_open, - .release = max77819_pmic_release, - .ioctl = max77819_pmic_ioctl, -}; -/*----------------------------------------------------------------------------*/ -static struct miscdevice max77819_pmic_device = { - .minor = MISC_DYNAMIC_MINOR, - .name = "backlight", - .fops = &max77819_pmic_fops, -}; -#endif /*----------------------------------------------------------------------------*/ #ifndef CONFIG_HAS_EARLYSUSPEND /*----------------------------------------------------------------------------*/ @@ -276,7 +148,8 @@ static int max77819_pmic_suspend(struct i2c_client *client, pm_message_t msg) { struct max77819_pmic_i2c_data *obj = i2c_get_clientdata(client); int err = 0; - kal_uint8 dat=0; + kal_uint8 dat = 0; + GSE_FUN(); return err; @@ -286,10 +159,10 @@ static int max77819_pmic_resume(struct i2c_client *client) { struct max77819_pmic_i2c_data *obj = i2c_get_clientdata(client); int err; + GSE_FUN(); - if(obj == NULL) - { + if (obj == NULL) { BLS_ERR("null pointer!!\n"); return -EINVAL; } @@ -305,8 +178,7 @@ static void max77819_pmic_early_suspend(struct early_suspend *h) // int err; BLS_FUN(); - if(obj == NULL) - { + if (obj == NULL) { BLS_ERR("null pointer!!\n"); return; } @@ -317,6 +189,7 @@ static void max77819_pmic_late_resume(struct early_suspend *h) { struct max77819_pmic_i2c_data *obj = container_of(h, struct max77819_pmic_i2c_data, early_drv); int err; + BLS_FUN(); } /*----------------------------------------------------------------------------*/ @@ -333,21 +206,19 @@ int max77819_pmic_read_byte(kal_uint8 cmd, kal_uint8 *returnData) { char cmd_buf = 0; char readData = 0; - int ret=0; + int ret = 0; BLS_FUN(); mutex_lock(&max77819_pmic_i2c_access); cmd_buf = cmd; - max77819_pmic_i2c_client->addr = (max77819_pmic_i2c_client->addr & I2C_MASK_FLAG) | I2C_WR_FLAG |I2C_RS_FLAG; + max77819_pmic_i2c_client->addr = (max77819_pmic_i2c_client->addr & I2C_MASK_FLAG) | I2C_WR_FLAG | I2C_RS_FLAG; ret = i2c_master_send(max77819_pmic_i2c_client, &cmd_buf, (1<<8 | 1)); - if (ret < 0) - { - BLS_ERR("send command error!!\n"); - - mutex_unlock(&max77819_pmic_i2c_access); - return ret; + if (ret < 0) { + BLS_ERR("send command error!!\n"); + mutex_unlock(&max77819_pmic_i2c_access); + return ret; } readData = cmd_buf; @@ -362,7 +233,7 @@ int max77819_pmic_read_byte(kal_uint8 cmd, kal_uint8 *returnData) int max77819_pmic_write_byte(kal_uint8 cmd, kal_uint8 writeData) { char write_data[2] = {0}; - int ret=0; + int ret = 0; BLS_FUN(); mutex_lock(&max77819_pmic_i2c_access); @@ -370,18 +241,16 @@ int max77819_pmic_write_byte(kal_uint8 cmd, kal_uint8 writeData) write_data[0] = cmd; write_data[1] = writeData; ret = i2c_master_send(max77819_pmic_i2c_client, write_data, 2); - if (ret < 0) - { - - BLS_ERR("send command error!!\n"); - mutex_unlock(&max77819_pmic_i2c_access); - return ret; + if (ret < 0) { + BLS_ERR("send command error!!\n"); + mutex_unlock(&max77819_pmic_i2c_access); + return ret; } mutex_unlock(&max77819_pmic_i2c_access); return 0; } -u32 max77819_pmic_read_interface (kal_uint8 RegNum, kal_uint8 *val, kal_uint8 MASK, kal_uint8 SHIFT) +u32 max77819_pmic_read_interface(kal_uint8 RegNum, kal_uint8 *val, kal_uint8 MASK, kal_uint8 SHIFT) { kal_uint8 max77819_reg = 0; int ret = 0; @@ -398,7 +267,7 @@ u32 max77819_pmic_read_interface (kal_uint8 RegNum, kal_uint8 *val, kal_uint8 MA return ret; } -u32 max77819_pmic_config_interface (kal_uint8 RegNum, kal_uint8 val, kal_uint8 MASK, kal_uint8 SHIFT) +u32 max77819_pmic_config_interface(kal_uint8 RegNum, kal_uint8 val, kal_uint8 MASK, kal_uint8 SHIFT) { kal_uint8 max77819_pmic_reg = 0; int ret = 0; @@ -420,16 +289,16 @@ static int max77819_pmic_read_byte_sr(struct i2c_client *client, kal_uint8 addr, kal_uint8 buf; int ret = 0; - client->addr = (client->addr & I2C_MASK_FLAG) | I2C_WR_FLAG |I2C_RS_FLAG; + client->addr = (client->addr & I2C_MASK_FLAG) | I2C_WR_FLAG | I2C_RS_FLAG; buf = addr; - ret = i2c_master_send(client, (const char*)&buf, 1<<8 | 1); + ret = i2c_master_send(client, (const char *)&buf, 1<<8 | 1); if (ret < 0) { BLS_ERR("send command error!!\n"); return ret; } *data = buf; - client->addr = client->addr& I2C_MASK_FLAG; + client->addr = client->addr & I2C_MASK_FLAG; return 0; } @@ -437,36 +306,36 @@ static int max77819_pmic_read_byte_sr(struct i2c_client *client, kal_uint8 addr, int max77819_pmic_read_block(struct i2c_client *client, kal_uint8 addr, kal_uint8 *data, kal_uint8 len) { if (len == 1) { - return max77819_pmic_read_byte_sr(client, addr, data); + return max77819_pmic_read_byte_sr(client, addr, data); } else { - kal_uint8 beg = addr; - struct i2c_msg msgs[2] = { - { - .addr = client->addr, .flags = 0, - .len = 1, .buf= &beg - }, - { - .addr = client->addr, .flags = I2C_M_RD, - .len = len, .buf = data, - } - }; - int err; - - if (!client) - return -EINVAL; - else if (len > C_I2C_FIFO_SIZE) { - BLS_ERR(" length %d exceeds %d\n", len, C_I2C_FIFO_SIZE); - return -EINVAL; - } - - err = i2c_transfer(client->adapter, msgs, sizeof(msgs)/sizeof(msgs[0])); - if (err != 2) { - BLS_ERR("i2c_transfer error: (%d %p %d) %d\n", addr, data, len, err); - err = -EIO; - } else { - err = 0; /*no error*/ - } - return err; + kal_uint8 beg = addr; + struct i2c_msg msgs[2] = { + { + .addr = client->addr, .flags = 0, + .len = 1, .buf = &beg + }, + { + .addr = client->addr, .flags = I2C_M_RD, + .len = len, .buf = data, + } + }; + int err; + + if (!client) + return -EINVAL; + else if (len > C_I2C_FIFO_SIZE) { + BLS_ERR(" length %d exceeds %d\n", len, C_I2C_FIFO_SIZE); + return -EINVAL; + } + + err = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs)); + if (err != 2) { + BLS_ERR("i2c_transfer error: (%d %p %d) %d\n", addr, data, len, err); + err = -EIO; + } else { + err = 0; /*no error*/ + } + return err; } } @@ -481,23 +350,23 @@ int max77819_pmic_write_block(struct i2c_client *client, kal_uint8 addr, kal_uin char buf[C_I2C_FIFO_SIZE]; if (!client) - return -EINVAL; + return -EINVAL; else if (len >= C_I2C_FIFO_SIZE) { - BLS_ERR(" length %d exceeds %d\n", len, C_I2C_FIFO_SIZE); - return -EINVAL; + BLS_ERR(" length %d exceeds %d\n", len, C_I2C_FIFO_SIZE); + return -EINVAL; } num = 0; buf[num++] = addr; for (idx = 0; idx < len; idx++) - buf[num++] = data[idx]; + buf[num++] = data[idx]; err = i2c_master_send(client, buf, num); if (err < 0) { - BLS_ERR("send command error!!\n"); - return -EFAULT; + BLS_ERR("send command error!!\n"); + return -EFAULT; } else { - err = 0; /*no error*/ + err = 0; /*no error*/ } return err; } @@ -510,23 +379,30 @@ int max77819_pmic_reg_write(kal_uint8 reg, kal_uint8 val) int ret = 0; max77819_pmic_read_byte(reg, &max77819_reg); + + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG BLS_LOG("[max77819_pmic_reg_write] Before Reg[%x]=0x%x\n", reg, max77819_reg); + #endif - if(val == max77819_reg) - { - BLS_LOG("[max77819_pmic_reg_write] Set Reg[%x] same value 0x%x\n", reg, max77819_reg); - return 0; + if (val == max77819_reg) { + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG + BLS_LOG("[max77819_pmic_reg_write] Set Reg[%x] same value 0x%x\n", reg, max77819_reg); + #endif + return 0; } ret = max77819_pmic_write_byte(reg, val); + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG BLS_LOG("[max77819_pmic_reg_write] write Reg[%x]=0x%x\n", reg, val); + #endif max77819_pmic_read_byte(reg, &max77819_reg); + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG BLS_LOG("[max77819_pmic_reg_write] After Reg[%x]=0x%x\n", reg, max77819_reg); + #endif - if(max77819_reg != val) - { - return -1; + if (max77819_reg != val) { + return -1; } return ret; } @@ -539,7 +415,9 @@ int max77819_pmic_reg_read(kal_uint8 reg, kal_uint8 *val) int ret = 0; ret = max77819_pmic_read_byte(reg, val); + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG BLS_LOG("[max77819_pmic_reg_read] Reg[%x]=0x%x\n", reg, *val); + #endif return ret; @@ -555,28 +433,34 @@ int max77819_pmic_reg_update_bits(kal_uint8 reg, kal_uint8 mask, kal_uint8 val) int ret = 0; max77819_pmic_read_byte(reg, &max77819_reg); + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG BLS_LOG("[max77819_pmic_reg_update_bits] Before Reg[%x]=0x%x\n", reg, max77819_reg); + #endif old_reg = max77819_reg; max77819_reg &= ~(mask); max77819_reg |= val; - if(old_reg == max77819_reg) - { - BLS_LOG("[max77819_pmic_reg_update_bits] Set Reg[%x] same value 0x%x\n", reg, max77819_reg); - return 0; + if (old_reg == max77819_reg) { + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG + BLS_LOG("[max77819_pmic_reg_update_bits] Set Reg[%x] same value 0x%x\n", reg, max77819_reg); + #endif + return 0; } new_reg = max77819_reg; ret = max77819_pmic_write_byte(reg, max77819_reg); + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG BLS_LOG("[max77819_pmic_reg_update_bits] write Reg[%x]=0x%x\n", reg, max77819_reg); + #endif max77819_pmic_read_byte(reg, &max77819_reg); + #ifndef CONFIG_MEIZU_CLOSE_MTK_LOG BLS_LOG("[max77819_pmic_reg_update_bits] After Reg[%x]=0x%x\n", reg, max77819_reg); + #endif - if(max77819_reg != new_reg) - { - return -1; + if (max77819_reg != new_reg) { + return -1; } return ret; @@ -590,12 +474,11 @@ static int max77819_pmic_i2c_probe(struct i2c_client *client, const struct i2c_d struct i2c_client *new_client; struct max77819_pmic_i2c_data *obj; - int err = 0,i = 0; + int err = 0, i = 0; BLS_FUN(); - if(!(obj = kzalloc(sizeof(*obj), GFP_KERNEL))) - { + if (!(obj = kzalloc(sizeof(*obj), GFP_KERNEL))) { err = -1; goto exit; } @@ -605,7 +488,7 @@ static int max77819_pmic_i2c_probe(struct i2c_client *client, const struct i2c_d obj_i2c_data = obj; obj->client = client; new_client = obj->client; - i2c_set_clientdata(new_client,obj); + i2c_set_clientdata(new_client, obj); atomic_set(&obj->trace, 0); atomic_set(&obj->suspend, 0); @@ -615,9 +498,9 @@ static int max77819_pmic_i2c_probe(struct i2c_client *client, const struct i2c_d -kal_uint8 reg_val = 0; - for(i=0x30 ; i<=0x4b; i++) - max77819_pmic_reg_read(i,®_val); +kal_uint8 reg_val; + for (i = 0x30 ; i <= 0x4b; i++) + max77819_pmic_reg_read(i, ®_val); exit: @@ -628,17 +511,7 @@ exit: static int max77819_pmic_i2c_remove(struct i2c_client *client) { int err = 0; -#if 0 - if((err = max77819_pmic_delete_attr(&max77819_pmic_backlight_driver.driver))) - { - BLS_ERR("max77819_pmic_delete_attr fail: %d\n", err); - } - if((err = misc_deregister(&max77819_pmic_device))) - { - BLS_ERR("misc_deregister fail: %d\n", err); - } -#endif max77819_pmic_i2c_client = NULL; i2c_unregister_device(client); kfree(i2c_get_clientdata(client)); @@ -651,8 +524,7 @@ static int __init max77819_pmic_init(void) { BLS_FUN(); i2c_register_board_info(/*2*/MAX77819_PMIC_I2C_NUM, &i2c_max77819_pmic, 1); - if(i2c_add_driver(&max77819_pmic_i2c_driver)) - { + if (i2c_add_driver(&max77819_pmic_i2c_driver)) { BLS_ERR("add driver error\n"); return -1; } @@ -662,8 +534,8 @@ static int __init max77819_pmic_init(void) /*----------------------------------------------------------------------------*/ static void __exit max77819_pmic_exit(void) { - BLS_FUN(); - i2c_del_driver(&max77819_pmic_i2c_driver); + BLS_FUN(); + i2c_del_driver(&max77819_pmic_i2c_driver); } /*----------------------------------------------------------------------------*/ module_init(max77819_pmic_init); |
