Loading Documentation/devicetree/bindings/power/supply/qcom/qpnp-fg-gen4.txt +6 −0 Original line number Diff line number Diff line Loading @@ -381,6 +381,12 @@ First Level Node - FG Gen4 device charging. Value has no unit. Allowed range is 62 to 15564 in micro units. - qcom,ki-coeff-cutoff Usage: optional Value type: <u32> Definition: ki coefficient value for cutoff integration gain. Value has no unit. Allowed range is 62 to 15564 in micro units. - qcom,ki-coeff-full-dischg Usage: optional Value type: <prop-encoded-array> Loading drivers/power/supply/qcom/fg-core.h +1 −0 Original line number Diff line number Diff line Loading @@ -213,6 +213,7 @@ enum fg_sram_param_id { FG_SRAM_KI_COEFF_MED_CHG, FG_SRAM_KI_COEFF_HI_CHG, FG_SRAM_KI_COEFF_FULL_SOC, FG_SRAM_KI_COEFF_CUTOFF, FG_SRAM_ESR_TIGHT_FILTER, FG_SRAM_ESR_BROAD_FILTER, FG_SRAM_SLOPE_LIMIT, Loading drivers/power/supply/qcom/qpnp-fg-gen4.c +26 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ #define CUTOFF_CURR_OFFSET 0 #define CUTOFF_VOLT_WORD 20 #define CUTOFF_VOLT_OFFSET 0 #define KI_COEFF_CUTOFF_WORD 21 #define KI_COEFF_CUTOFF_OFFSET 0 #define SYS_TERM_CURR_WORD 22 #define SYS_TERM_CURR_OFFSET 0 #define VBATT_FULL_WORD 23 Loading Loading @@ -238,6 +240,7 @@ struct fg_dt_props { int ki_coeff_low_chg; int ki_coeff_med_chg; int ki_coeff_hi_chg; int ki_coeff_cutoff_gain; int ki_coeff_full_soc_dischg[2]; int ki_coeff_soc[KI_COEFF_SOC_LEVELS]; int ki_coeff_low_dischg[KI_COEFF_SOC_LEVELS]; Loading Loading @@ -386,6 +389,8 @@ static struct fg_sram_param pm8150b_v1_sram_params[] = { 1, 1000, 15625, 0, fg_encode_default, NULL), PARAM(DELTA_ESR_THR, DELTA_ESR_THR_WORD, DELTA_ESR_THR_OFFSET, 2, 1000, 61036, 0, fg_encode_default, NULL), PARAM(KI_COEFF_CUTOFF, KI_COEFF_CUTOFF_WORD, KI_COEFF_CUTOFF_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), PARAM(KI_COEFF_FULL_SOC, KI_COEFF_FULL_SOC_NORM_WORD, KI_COEFF_FULL_SOC_NORM_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), Loading Loading @@ -482,6 +487,8 @@ static struct fg_sram_param pm8150b_v2_sram_params[] = { 1, 1000, 15625, 0, fg_encode_default, NULL), PARAM(DELTA_ESR_THR, DELTA_ESR_THR_WORD, DELTA_ESR_THR_OFFSET, 2, 1000, 61036, 0, fg_encode_default, NULL), PARAM(KI_COEFF_CUTOFF, KI_COEFF_CUTOFF_WORD, KI_COEFF_CUTOFF_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), PARAM(KI_COEFF_FULL_SOC, KI_COEFF_FULL_SOC_NORM_WORD, KI_COEFF_FULL_SOC_NORM_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), Loading Loading @@ -4930,6 +4937,21 @@ static int fg_gen4_hw_init(struct fg_gen4_chip *chip) } } if (chip->dt.ki_coeff_cutoff_gain != -EINVAL) { fg_encode(fg->sp, FG_SRAM_KI_COEFF_CUTOFF, chip->dt.ki_coeff_cutoff_gain, &val); rc = fg_sram_write(fg, fg->sp[FG_SRAM_KI_COEFF_CUTOFF].addr_word, fg->sp[FG_SRAM_KI_COEFF_CUTOFF].addr_byte, &val, fg->sp[FG_SRAM_KI_COEFF_CUTOFF].len, FG_IMA_DEFAULT); if (rc < 0) { pr_err("Error in writing ki_coeff_cutoff_gain, rc=%d\n", rc); return rc; } } rc = fg_gen4_esr_calib_config(chip); if (rc < 0) return rc; Loading Loading @@ -5018,6 +5040,10 @@ static int fg_parse_ki_coefficients(struct fg_dev *fg) of_property_read_u32(node, "qcom,ki-coeff-hi-chg", &chip->dt.ki_coeff_hi_chg); chip->dt.ki_coeff_cutoff_gain = -EINVAL; of_property_read_u32(node, "qcom,ki-coeff-cutoff", &chip->dt.ki_coeff_cutoff_gain); if (!of_find_property(node, "qcom,ki-coeff-soc-dischg", NULL) || (!of_find_property(node, "qcom,ki-coeff-low-dischg", NULL) && !of_find_property(node, "qcom,ki-coeff-med-dischg", NULL) && Loading Loading
Documentation/devicetree/bindings/power/supply/qcom/qpnp-fg-gen4.txt +6 −0 Original line number Diff line number Diff line Loading @@ -381,6 +381,12 @@ First Level Node - FG Gen4 device charging. Value has no unit. Allowed range is 62 to 15564 in micro units. - qcom,ki-coeff-cutoff Usage: optional Value type: <u32> Definition: ki coefficient value for cutoff integration gain. Value has no unit. Allowed range is 62 to 15564 in micro units. - qcom,ki-coeff-full-dischg Usage: optional Value type: <prop-encoded-array> Loading
drivers/power/supply/qcom/fg-core.h +1 −0 Original line number Diff line number Diff line Loading @@ -213,6 +213,7 @@ enum fg_sram_param_id { FG_SRAM_KI_COEFF_MED_CHG, FG_SRAM_KI_COEFF_HI_CHG, FG_SRAM_KI_COEFF_FULL_SOC, FG_SRAM_KI_COEFF_CUTOFF, FG_SRAM_ESR_TIGHT_FILTER, FG_SRAM_ESR_BROAD_FILTER, FG_SRAM_SLOPE_LIMIT, Loading
drivers/power/supply/qcom/qpnp-fg-gen4.c +26 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ #define CUTOFF_CURR_OFFSET 0 #define CUTOFF_VOLT_WORD 20 #define CUTOFF_VOLT_OFFSET 0 #define KI_COEFF_CUTOFF_WORD 21 #define KI_COEFF_CUTOFF_OFFSET 0 #define SYS_TERM_CURR_WORD 22 #define SYS_TERM_CURR_OFFSET 0 #define VBATT_FULL_WORD 23 Loading Loading @@ -238,6 +240,7 @@ struct fg_dt_props { int ki_coeff_low_chg; int ki_coeff_med_chg; int ki_coeff_hi_chg; int ki_coeff_cutoff_gain; int ki_coeff_full_soc_dischg[2]; int ki_coeff_soc[KI_COEFF_SOC_LEVELS]; int ki_coeff_low_dischg[KI_COEFF_SOC_LEVELS]; Loading Loading @@ -386,6 +389,8 @@ static struct fg_sram_param pm8150b_v1_sram_params[] = { 1, 1000, 15625, 0, fg_encode_default, NULL), PARAM(DELTA_ESR_THR, DELTA_ESR_THR_WORD, DELTA_ESR_THR_OFFSET, 2, 1000, 61036, 0, fg_encode_default, NULL), PARAM(KI_COEFF_CUTOFF, KI_COEFF_CUTOFF_WORD, KI_COEFF_CUTOFF_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), PARAM(KI_COEFF_FULL_SOC, KI_COEFF_FULL_SOC_NORM_WORD, KI_COEFF_FULL_SOC_NORM_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), Loading Loading @@ -482,6 +487,8 @@ static struct fg_sram_param pm8150b_v2_sram_params[] = { 1, 1000, 15625, 0, fg_encode_default, NULL), PARAM(DELTA_ESR_THR, DELTA_ESR_THR_WORD, DELTA_ESR_THR_OFFSET, 2, 1000, 61036, 0, fg_encode_default, NULL), PARAM(KI_COEFF_CUTOFF, KI_COEFF_CUTOFF_WORD, KI_COEFF_CUTOFF_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), PARAM(KI_COEFF_FULL_SOC, KI_COEFF_FULL_SOC_NORM_WORD, KI_COEFF_FULL_SOC_NORM_OFFSET, 1, 1000, 61035, 0, fg_encode_default, NULL), Loading Loading @@ -4930,6 +4937,21 @@ static int fg_gen4_hw_init(struct fg_gen4_chip *chip) } } if (chip->dt.ki_coeff_cutoff_gain != -EINVAL) { fg_encode(fg->sp, FG_SRAM_KI_COEFF_CUTOFF, chip->dt.ki_coeff_cutoff_gain, &val); rc = fg_sram_write(fg, fg->sp[FG_SRAM_KI_COEFF_CUTOFF].addr_word, fg->sp[FG_SRAM_KI_COEFF_CUTOFF].addr_byte, &val, fg->sp[FG_SRAM_KI_COEFF_CUTOFF].len, FG_IMA_DEFAULT); if (rc < 0) { pr_err("Error in writing ki_coeff_cutoff_gain, rc=%d\n", rc); return rc; } } rc = fg_gen4_esr_calib_config(chip); if (rc < 0) return rc; Loading Loading @@ -5018,6 +5040,10 @@ static int fg_parse_ki_coefficients(struct fg_dev *fg) of_property_read_u32(node, "qcom,ki-coeff-hi-chg", &chip->dt.ki_coeff_hi_chg); chip->dt.ki_coeff_cutoff_gain = -EINVAL; of_property_read_u32(node, "qcom,ki-coeff-cutoff", &chip->dt.ki_coeff_cutoff_gain); if (!of_find_property(node, "qcom,ki-coeff-soc-dischg", NULL) || (!of_find_property(node, "qcom,ki-coeff-low-dischg", NULL) && !of_find_property(node, "qcom,ki-coeff-med-dischg", NULL) && Loading