static void *platform_get_batt_charge_profile(void)
{
#ifdef CONFIG_BTNS_PMIC
	int retval = 0;
	retval = get_batt_prop(&ps_batt_chrg_prof);
	if (retval) {
		pr_err("Error reading battery profile from battid framework. Use hard coded value.\n");
		memcpy(&batt_chg_profile, &atl_820_batt, sizeof(struct ps_pse_mod_prof));
		ps_batt_chrg_prof.batt_prof = &batt_chg_profile;
		ps_batt_chrg_prof.chrg_prof_type = PSE_MOD_CHRG_PROF;
	}
#if defined(CONFIG_POWER_SUPPLY_CHARGING_ALGO_STEP) && defined(CONFIG_POWER_SUPPLY_BATTID)
	ps_batt_chrg_prof.chrg_prof_type = STEP_MOD_CHRG_PROF;
#endif
#else
	if (!em_config_get_charge_profile(&batt_chg_profile))
		ps_batt_chrg_prof.chrg_prof_type = CHRG_PROF_NONE;
	else
		ps_batt_chrg_prof.chrg_prof_type = PSE_MOD_CHRG_PROF;

	ps_batt_chrg_prof.batt_prof = &batt_chg_profile;
#endif
	battery_prop_changed(POWER_SUPPLY_BATTERY_INSERTED, &ps_batt_chrg_prof);
	return &ps_batt_chrg_prof;
}
	/* FIXME: need to have a time stamp based implementation to
	* report battery health
	*/

	if (pbat_health < 0 && bqbat_health < 0)
		return pbat_health;
	if (pbat_health > 0 && pbat_health != POWER_SUPPLY_HEALTH_GOOD)
		return pbat_health;
	else
		return bqbat_health;
}

#define DEFAULT_VMIN	3400000		/* 3400mV */
static int mrfl_get_vsys_min(void)
{
	struct ps_batt_chg_prof batt_profile;
	int ret;
	ret = get_batt_prop(&batt_profile);
	if (!ret)
		return ((struct ps_pse_mod_prof *)batt_profile.batt_prof)
					->low_batt_mV * 1000;
	return DEFAULT_VMIN;
}
#define DEFAULT_VMAX_LIM	4200000		/* 4200mV */
static int mrfl_get_volt_max(void)
{
	struct ps_batt_chg_prof batt_profile;
	int ret;
	ret = get_batt_prop(&batt_profile);
	if (!ret)
		return ((struct ps_pse_mod_prof *)batt_profile.batt_prof)
					->voltage_max * 1000;
	return DEFAULT_VMAX_LIM;
}
	/* FIXME: need to have a time stamp based implementation to
	* report battery health
	*/

	if (pbat_health < 0 && bqbat_health < 0)
		return pbat_health;
	if (pbat_health > 0 && pbat_health != POWER_SUPPLY_HEALTH_GOOD)
		return pbat_health;
	else
		return bqbat_health;
}

#define DEFAULT_VMIN	3400000		/* 3400mV */
static int mrfl_get_vsys_min(void)
{
	struct ps_batt_chg_prof batt_profile;
	int ret;
	ret = get_batt_prop(&batt_profile);
	if (!ret)
		return ((struct ps_pse_mod_prof *)batt_profile.batt_prof)
					->low_batt_mV * 1000;
	return DEFAULT_VMIN;
}
static int ctp_get_vsys_min(void)
{
	struct ps_batt_chg_prof batt_profile;
	int ret;
	ret = get_batt_prop(&batt_profile);
	if (!ret)
		return ((struct ps_pse_mod_prof *)batt_profile.batt_prof)
					->low_batt_mV * 1000;

	return BATT_VMIN_THRESHOLD_DEF * 1000;
}