p9221_charger: disable alignment feature if no dt coefficients
Bug: 264325661
Change-Id: I415e866dc113b6871e2fa2269808ffbc556d16d9
Signed-off-by: yihsiangpeng <[email protected]>
(cherry picked from commit 25c5a49a9e1ca2a36971fdf8961828ece71ddfbb)
diff --git a/p9221_charger.c b/p9221_charger.c
index e81a05d..079156e 100644
--- a/p9221_charger.c
+++ b/p9221_charger.c
@@ -1189,13 +1189,15 @@
static void p9221_init_align(struct p9221_charger_data *charger)
{
+ const bool disabled = charger->prop_mode_en || charger->pdata->disable_align;
+
/* Reset values used for alignment */
charger->alignment_last = -1;
charger->current_filtered = 0;
charger->current_sample_cnt = 0;
charger->mfg_check_count = 0;
/* Disable misaligned message in high power mode, b/159066422 */
- if (!charger->online || charger->prop_mode_en == true) {
+ if (!charger->online || disabled) {
charger->align = WLC_ALIGN_CENTERED;
return;
}
@@ -6386,56 +6388,49 @@
ret = of_property_read_u32(node, "google,alignment_scalar_low_current",
&data);
if (ret < 0)
- pdata->alignment_scalar_low_current =
- WLC_ALIGN_DEFAULT_SCALAR_LOW_CURRENT;
+ pdata->alignment_scalar_low_current = 0;
else
pdata->alignment_scalar_low_current = data;
- dev_info(dev, "google,alignment_scalar_low_current set to: %d\n",
- pdata->alignment_scalar_low_current);
-
ret = of_property_read_u32(node, "google,alignment_scalar_high_current",
&data);
if (ret < 0)
- pdata->alignment_scalar_high_current =
- WLC_ALIGN_DEFAULT_SCALAR_HIGH_CURRENT;
+ pdata->alignment_scalar_high_current = 0;
else
pdata->alignment_scalar_high_current = data;
- dev_info(dev, "google,alignment_scalar_high_current set to: %d\n",
- pdata->alignment_scalar_high_current);
-
ret = of_property_read_u32(node, "google,alignment_offset_low_current",
&data);
if (ret < 0)
- pdata->alignment_offset_low_current =
- WLC_ALIGN_DEFAULT_OFFSET_LOW_CURRENT;
+ pdata->alignment_offset_low_current = 0;
else
pdata->alignment_offset_low_current = data;
- dev_info(dev, "google,alignment_offset_low_current set to: %d\n",
- pdata->alignment_offset_low_current);
-
ret = of_property_read_u32(node, "google,alignment_offset_high_current",
&data);
if (ret < 0)
- pdata->alignment_offset_high_current =
- WLC_ALIGN_DEFAULT_OFFSET_HIGH_CURRENT;
+ pdata->alignment_offset_high_current = 0;
else
pdata->alignment_offset_high_current = data;
- dev_info(dev, "google,alignment_offset_high_current set to: %d\n",
- pdata->alignment_offset_high_current);
-
ret = of_property_read_u32(node, "google,alignment_current_threshold",
&data);
if (ret < 0)
- pdata->alignment_current_threshold = WLC_ALIGN_CURRENT_THRESHOLD;
+ pdata->alignment_current_threshold = 0;
else
pdata->alignment_current_threshold = data;
- dev_info(dev, "google,alignment_current_threshold set to: %d\n",
- pdata->alignment_current_threshold);
+ pdata->disable_align = !(pdata->alignment_scalar_low_current &&
+ pdata->alignment_scalar_high_current &&
+ pdata->alignment_offset_low_current &&
+ pdata->alignment_offset_high_current &&
+ pdata->alignment_current_threshold);
+ dev_info(dev, "align:%s, scalar_low=%d, scalar_high=%d, "
+ "offset_low=%d, offset_high=%d, current_thres=%d\n",
+ pdata->disable_align ? "disable" : "enable", pdata->alignment_scalar_low_current,
+ pdata->alignment_scalar_high_current, pdata->alignment_offset_low_current,
+ pdata->alignment_offset_high_current, pdata->alignment_current_threshold);
+
ret = of_property_read_u32(node, "google,power_mitigate_threshold",
&data);
diff --git a/p9221_charger.h b/p9221_charger.h
index 4a15eb2..4e7d5a9 100644
--- a/p9221_charger.h
+++ b/p9221_charger.h
@@ -611,7 +611,7 @@
int slct_gpio;
int slct_value;
int ben_gpio;
- int ext_ben_gpio;
+ int ext_ben_gpio;
int switch_gpio;
int boost_gpio;
int dc_switch_gpio;
@@ -661,6 +661,7 @@
u32 epp_icl;
/* calibrate light load */
bool light_load;
+ bool disable_align;
};
struct p9221_charger_ints_bit {