mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 14:19:09 -04:00
Hawao+oled: the 2nd fg(sm5602)set 97% to 100%
add some parameters to set 97% to 100% sm5602_fg_mmi/sm5602_fg.c Change-Id: I03bf1f17c9c7ecd0c42ddec06d1509e12f90d1dd Reviewed-on: https://gerrit.mot.com/2209091 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Wang Wang <wangwang1@lenovo.com> Reviewed-by: Qiong Xie <xieq2@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
ba6a9e4aee
commit
3bdaf9ab9a
1 changed files with 88 additions and 73 deletions
|
|
@ -47,6 +47,13 @@
|
|||
#define queue_delayed_work_time 8000//8000
|
||||
#define queue_start_work_time 50
|
||||
#define SM_CUR_UNIT 1000
|
||||
#define ENABLE_MAP_SOC
|
||||
|
||||
#ifdef ENABLE_MAP_SOC
|
||||
#define MAP_MAX_SOC 97
|
||||
#define MAP_RATE_SOC 975
|
||||
#define MAP_MIN_SOC 4
|
||||
#endif
|
||||
|
||||
enum sm_fg_reg_idx {
|
||||
SM_FG_REG_DEVICE_ID = 0,
|
||||
|
|
@ -254,7 +261,6 @@ struct sm_fg_chip {
|
|||
struct power_supply *batt_psy;
|
||||
struct power_supply *bms_psy;
|
||||
//struct power_supply fg_psy;
|
||||
struct power_supply_desc *fg_psy;
|
||||
};
|
||||
|
||||
static int show_registers(struct seq_file *m, void *data);
|
||||
|
|
@ -926,7 +932,11 @@ static int fg_get_charge_counter(struct sm_fg_chip *sm)
|
|||
int ui_soc;
|
||||
|
||||
full_capacity = fg_read_fcc(sm) * 1000;
|
||||
#ifdef ENABLE_MAP_SOC
|
||||
ui_soc = (((100*(sm->batt_soc*10+MAP_MAX_SOC))/MAP_RATE_SOC)-MAP_MIN_SOC)/10;
|
||||
#else
|
||||
ui_soc = sm->batt_soc/10;
|
||||
#endif
|
||||
charge_counter = div_s64(full_capacity * ui_soc, 100);
|
||||
|
||||
return charge_counter;
|
||||
|
|
@ -1005,7 +1015,12 @@ static int fg_get_property(struct power_supply *psy, enum power_supply_property
|
|||
if (ret >= 0)
|
||||
sm->batt_soc = ret;
|
||||
//val->intval = sm->batt_soc;
|
||||
#ifdef ENABLE_MAP_SOC
|
||||
val->intval = (((100*(sm->batt_soc*10+MAP_MAX_SOC))/MAP_RATE_SOC)-MAP_MIN_SOC)/10;
|
||||
#else
|
||||
val->intval = sm->batt_soc/10;
|
||||
#endif
|
||||
pr_info("fg POWER_SUPPLY_PROP_STATUS:%d\n", val->intval);
|
||||
mutex_unlock(&sm->data_lock);
|
||||
break;
|
||||
|
||||
|
|
@ -1247,7 +1262,6 @@ static void fg_refresh_status(struct sm_fg_chip *sm)
|
|||
}
|
||||
|
||||
// sm->last_update = jiffies;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -1305,7 +1319,8 @@ static int sm_update_data(struct sm_fg_chip *sm)
|
|||
sm->batt_temp = -ENODATA;
|
||||
|
||||
fg_cal_carc(sm);
|
||||
pr_info("RSOC:%d, Volt:%d, Current:%d, Temperature:%d, OCV:%d\n",
|
||||
|
||||
pr_info("RSOC:%d, Volt:%d, Current:%d, Temperature:%d, OCV:%d\n",
|
||||
sm->batt_soc, sm->batt_volt, sm->batt_curr, sm->batt_temp, sm->batt_ocv);
|
||||
}
|
||||
|
||||
|
|
@ -2403,85 +2418,85 @@ static int fg_common_parse_dt(struct sm_fg_chip *sm)
|
|||
}
|
||||
|
||||
static const char *get_battery_serialnumber(void)
|
||||
{
|
||||
struct device_node *np = of_find_node_by_path("/chosen");
|
||||
const char *battsn_buf;
|
||||
int retval;
|
||||
|
||||
battsn_buf = NULL;
|
||||
|
||||
if (np)
|
||||
retval = of_property_read_string(np, "mmi,battid",
|
||||
&battsn_buf);
|
||||
else
|
||||
return NULL;
|
||||
|
||||
if ((retval == -EINVAL) || !battsn_buf) {
|
||||
{
|
||||
struct device_node *np = of_find_node_by_path("/chosen");
|
||||
const char *battsn_buf;
|
||||
int retval;
|
||||
|
||||
battsn_buf = NULL;
|
||||
|
||||
if (np)
|
||||
retval = of_property_read_string(np, "mmi,battid",
|
||||
&battsn_buf);
|
||||
else
|
||||
return NULL;
|
||||
|
||||
if ((retval == -EINVAL) || !battsn_buf) {
|
||||
pr_info(" Battsn unused\n");
|
||||
of_node_put(np);
|
||||
return NULL;
|
||||
|
||||
} else
|
||||
of_node_put(np);
|
||||
return NULL;
|
||||
|
||||
} else
|
||||
pr_info("Battsn = %s\n", battsn_buf);
|
||||
|
||||
of_node_put(np);
|
||||
|
||||
return battsn_buf;
|
||||
}
|
||||
|
||||
|
||||
of_node_put(np);
|
||||
|
||||
return battsn_buf;
|
||||
}
|
||||
|
||||
static struct device_node *get_profile_by_serialnumber(
|
||||
const struct device_node *np)
|
||||
{
|
||||
struct device_node *node, *df_node, *sn_node;
|
||||
const char *sn_buf, *df_sn, *dev_sn;
|
||||
int rc;
|
||||
|
||||
if (!np)
|
||||
return NULL;
|
||||
|
||||
dev_sn = NULL;
|
||||
df_sn = NULL;
|
||||
sn_buf = NULL;
|
||||
df_node = NULL;
|
||||
sn_node = NULL;
|
||||
|
||||
const struct device_node *np)
|
||||
{
|
||||
struct device_node *node, *df_node, *sn_node;
|
||||
const char *sn_buf, *df_sn, *dev_sn;
|
||||
int rc;
|
||||
|
||||
if (!np)
|
||||
return NULL;
|
||||
|
||||
dev_sn = NULL;
|
||||
df_sn = NULL;
|
||||
sn_buf = NULL;
|
||||
df_node = NULL;
|
||||
sn_node = NULL;
|
||||
|
||||
dev_sn = get_battery_serialnumber();
|
||||
|
||||
rc = of_property_read_string(np, "df-serialnum",
|
||||
&df_sn);
|
||||
if (rc)
|
||||
|
||||
rc = of_property_read_string(np, "df-serialnum",
|
||||
&df_sn);
|
||||
if (rc)
|
||||
pr_info("No Default Serial Number defined\n");
|
||||
else if (df_sn)
|
||||
else if (df_sn)
|
||||
pr_info("Default Serial Number %s\n", df_sn);
|
||||
|
||||
for_each_child_of_node(np, node) {
|
||||
rc = of_property_read_string(node, "serialnum",
|
||||
&sn_buf);
|
||||
if (!rc && sn_buf) {
|
||||
if (dev_sn)
|
||||
if (strnstr(dev_sn, sn_buf, 32))
|
||||
sn_node = node;
|
||||
if (df_sn)
|
||||
if (strnstr(df_sn, sn_buf, 32))
|
||||
df_node = node;
|
||||
}
|
||||
}
|
||||
|
||||
if (sn_node) {
|
||||
node = sn_node;
|
||||
df_node = NULL;
|
||||
|
||||
for_each_child_of_node(np, node) {
|
||||
rc = of_property_read_string(node, "serialnum",
|
||||
&sn_buf);
|
||||
if (!rc && sn_buf) {
|
||||
if (dev_sn)
|
||||
if (strnstr(dev_sn, sn_buf, 32))
|
||||
sn_node = node;
|
||||
if (df_sn)
|
||||
if (strnstr(df_sn, sn_buf, 32))
|
||||
df_node = node;
|
||||
}
|
||||
}
|
||||
|
||||
if (sn_node) {
|
||||
node = sn_node;
|
||||
df_node = NULL;
|
||||
pr_info("Battery Match Found using %s\n", sn_node->name);
|
||||
} else if (df_node) {
|
||||
node = df_node;
|
||||
sn_node = NULL;
|
||||
} else if (df_node) {
|
||||
node = df_node;
|
||||
sn_node = NULL;
|
||||
pr_info("Battery Match Found using default %s\n",
|
||||
df_node->name);
|
||||
} else {
|
||||
df_node->name);
|
||||
} else {
|
||||
pr_info("No Battery Match Found!\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return node;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
static int fg_battery_parse_dt(struct sm_fg_chip *sm)
|
||||
|
|
|
|||
Loading…
Reference in a new issue