# HG changeset patch
# User Mychaela Falconia <falcon@freecalypso.org>
# Date 1619673189 0
# Node ID 09ea37852fd6fe6da6f1c73d17e72aeed0c17850
# Parent  bb1f572ac0988c77fd1e8e8bb57f3e0e6e651e17
add function to convert Ichg ADC readings to mA

diff -r bb1f572ac098 -r 09ea37852fd6 components/fchg
--- a/components/fchg	Wed Apr 28 05:44:07 2021 +0000
+++ b/components/fchg	Thu Apr 29 05:13:09 2021 +0000
@@ -36,6 +36,7 @@
 SRCDIR=$SRC/cs/drivers/drv_app/fchg
 
 cfile_plain $SRCDIR/fchg_api.c
+cfile_plain $SRCDIR/fchg_convert_mA.c
 cfile_plain $SRCDIR/fchg_default_batt.c
 cfile_plain $SRCDIR/fchg_env.c
 cfile_plain $SRCDIR/fchg_ffs_init.c
diff -r bb1f572ac098 -r 09ea37852fd6 src/cs/drivers/drv_app/fchg/fchg_api.h
--- a/src/cs/drivers/drv_app/fchg/fchg_api.h	Wed Apr 28 05:44:07 2021 +0000
+++ b/src/cs/drivers/drv_app/fchg/fchg_api.h	Thu Apr 29 05:13:09 2021 +0000
@@ -27,5 +27,6 @@
 T_RV_RET fchg_user_charge_control(enum fchg_user_charge_ctrl);
 T_RV_RET fchg_get_current_state(struct fchg_user_state *);
 T_RV_RET fchg_register_event_handler(T_FCHG_EVENT_HANDLER);
+UINT16 fchg_convert_ichg_to_mA(UINT16 ichg);
 
 #endif	/* include guard */
diff -r bb1f572ac098 -r 09ea37852fd6 src/cs/drivers/drv_app/fchg/fchg_convert_mA.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cs/drivers/drv_app/fchg/fchg_convert_mA.c	Thu Apr 29 05:13:09 2021 +0000
@@ -0,0 +1,27 @@
+/*
+ * This module implements the fchg_convert_ichg_to_mA() function,
+ * converting charging current (Ichg) measurements from ADC units
+ * to human-friendly mA numbers.  In the phone hardware this current
+ * measurement is made with the aid of a current measurement resistor
+ * placed in the charging current path (the Iota chip's MADC actually
+ * measures the voltage across this resistor, between VCCS and VBATS
+ * terminals), and it just so happens that different phone designers
+ * have chosen different values for this current measurement resistor:
+ * Pirelli DP-L10 uses 0.20R, following TI's canon, whereas Mot C1xx
+ * phones use 0.15R.  Because of these different resistor values,
+ * the formula for converting ADC units to mA becomes target-dependent.
+ */
+
+#include "fchg/fchg_api.h"
+#include "fc-target.h"
+
+UINT16 fchg_convert_ichg_to_mA(UINT16 ichg)
+{
+#ifdef CONFIG_TARGET_COMPAL
+	/* formula for 0.15R */
+	return (ichg * 875 / 768);
+#else
+	/* formula for 0.20R */
+	return (ichg * 875 / 1024);
+#endif
+}