static int of_batterydata_load_battery_data(struct device_node *node,
				int best_id_kohm,
				struct bms_battery_data *batt_data)
{
	int rc;

	rc = of_batterydata_read_single_row_lut(node, "qcom,fcc-temp-lut",
			batt_data->fcc_temp_lut);
	if (rc)
		return rc;

	rc = of_batterydata_read_pc_temp_ocv_lut(node,
			"qcom,pc-temp-ocv-lut",
			batt_data->pc_temp_ocv_lut);
	if (rc)
		return rc;

	rc = of_batterydata_read_sf_lut(node, "qcom,rbatt-sf-lut",
			batt_data->rbatt_sf_lut);
	if (rc)
		return rc;

	rc = of_batterydata_read_ibat_temp_acc_lut(node, "qcom,ibat-acc-lut",
						batt_data->ibat_acc_lut);
	if (rc)
		return rc;

	rc = of_property_read_string(node, "qcom,battery-type",
					&batt_data->battery_type);
	if (rc) {
		pr_err("Error reading qcom,battery-type property rc=%d\n", rc);
		batt_data->battery_type = NULL;
		return rc;
	}

	OF_PROP_READ(batt_data->fcc, "fcc-mah", node, rc, false);
	OF_PROP_READ(batt_data->default_rbatt_mohm,
			"default-rbatt-mohm", node, rc, false);
	OF_PROP_READ(batt_data->rbatt_capacitive_mohm,
			"rbatt-capacitive-mohm", node, rc, false);
	OF_PROP_READ(batt_data->flat_ocv_threshold_uv,
			"flat-ocv-threshold-uv", node, rc, true);
	OF_PROP_READ(batt_data->max_voltage_uv,
			"max-voltage-uv", node, rc, true);
	OF_PROP_READ(batt_data->cutoff_uv, "v-cutoff-uv", node, rc, true);
	OF_PROP_READ(batt_data->iterm_ua, "chg-term-ua", node, rc, true);

	batt_data->batt_id_kohm = best_id_kohm;

	return rc;
}
static int of_batterydata_load_battery_data(struct device_node *node,
				int best_id_kohm,
				struct bms_battery_data *batt_data)
{
	int rc;

#ifdef CONFIG_HUAWEI_KERNEL
	int warm_bat_decidegc = 0;
	int warm_bat_chg_ma = 0;
	int warm_bat_mv = 0;

	int cool_bat_decidegc = 0;
	int cool_bat_chg_ma = 0;
	int cool_bat_mv = 0;

	int cold_bat_decidegc = 0;
	int hot_bat_decidegc = 0;

	rc = 0;

	OF_PROP_READ(warm_bat_decidegc, "warm-bat-decidegc", node, rc, false);
	OF_PROP_READ(warm_bat_chg_ma, "ibatmax-warm-ma", node, rc, false);
	OF_PROP_READ(warm_bat_mv, "warm-bat-mv", node, rc, false);

	OF_PROP_READ(cool_bat_decidegc, "cool-bat-decidegc", node, rc, false);
	OF_PROP_READ(cool_bat_chg_ma, "ibatmax-cool-ma", node, rc, false);
	OF_PROP_READ(cool_bat_mv, "cool-bat-mv", node, rc, false);

	OF_PROP_READ(hot_bat_decidegc, "hot-bat-decidegc", node, rc, false);
	OF_PROP_READ(cold_bat_decidegc, "cold-bat-decidegc", node, rc, false);

	if (!rc)
	{
		batt_data->warm_bat_decidegc = warm_bat_decidegc;
		batt_data->warm_bat_chg_ma = warm_bat_chg_ma;
		batt_data->warm_bat_mv = warm_bat_mv;

		batt_data->cool_bat_decidegc = cool_bat_decidegc;
		batt_data->cool_bat_chg_ma = cool_bat_chg_ma;
		batt_data->cool_bat_mv = cool_bat_mv;

		batt_data->hot_bat_decidegc = hot_bat_decidegc;
		batt_data->cold_bat_decidegc = cold_bat_decidegc;
	}

	rc = 0;
#endif

	rc = of_batterydata_read_single_row_lut(node, "qcom,fcc-temp-lut",
			batt_data->fcc_temp_lut);
	if (rc)
		return rc;

	rc = of_batterydata_read_pc_temp_ocv_lut(node,
			"qcom,pc-temp-ocv-lut",
			batt_data->pc_temp_ocv_lut);
	if (rc)
		return rc;

	rc = of_batterydata_read_sf_lut(node, "qcom,rbatt-sf-lut",
			batt_data->rbatt_sf_lut);
	if (rc)
		return rc;

	rc = of_batterydata_read_ibat_temp_acc_lut(node, "qcom,ibat-acc-lut",
						batt_data->ibat_acc_lut);
	if (rc)
		return rc;

	rc = of_property_read_string(node, "qcom,battery-type",
					&batt_data->battery_type);
	if (rc) {
		pr_err("Error reading qcom,battery-type property rc=%d\n", rc);
		batt_data->battery_type = NULL;
		return rc;
	}

	OF_PROP_READ(batt_data->fcc, "fcc-mah", node, rc, false);
	OF_PROP_READ(batt_data->default_rbatt_mohm,
			"default-rbatt-mohm", node, rc, false);
	OF_PROP_READ(batt_data->rbatt_capacitive_mohm,
			"rbatt-capacitive-mohm", node, rc, false);
	OF_PROP_READ(batt_data->flat_ocv_threshold_uv,
			"flat-ocv-threshold-uv", node, rc, true);
	OF_PROP_READ(batt_data->max_voltage_uv,
			"max-voltage-uv", node, rc, true);
	OF_PROP_READ(batt_data->cutoff_uv, "v-cutoff-uv", node, rc, true);
	OF_PROP_READ(batt_data->iterm_ua, "chg-term-ua", node, rc, true);

	batt_data->batt_id_kohm = best_id_kohm;

	return rc;
}