MAX77658 Ultra-Low Power PMIC Mbed Driver

Revision:
1:40ef1dc30cb7
Parent:
0:00d2a8670533
Child:
2:70a11f46a913
--- a/MAX77658.cpp	Thu Jun 30 12:15:15 2022 +0300
+++ b/MAX77658.cpp	Fri Aug 26 15:02:25 2022 +0300
@@ -170,7 +170,7 @@
 int MAX77658::get_ercflag(reg_bit_ercflag_t bit_field, uint8_t *flag)
 {
 	int ret;
-	reg_ercflag_t reg_ercflag;
+	reg_ercflag_t reg_ercflag = {0};
 
 	ret = read_register(ERCFLAG, (uint8_t *)&(reg_ercflag));
 	if (ret != MAX77658_NO_ERROR) return ret;
@@ -212,7 +212,7 @@
 int MAX77658::get_stat_glbl(reg_bit_stat_glbl_t bit_field, uint8_t *status)
 {
     int ret;
-    reg_stat_glbl_t reg_stat_glbl;
+    reg_stat_glbl_t reg_stat_glbl = {0};
 
     ret = read_register(STAT_GLBL, (uint8_t *)&(reg_stat_glbl));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -255,9 +255,9 @@
 {
 	int ret;
 	uint8_t reg_addr;
-	reg_int_m_chg_t reg_int_m_chg;
-	reg_intm_glbl0_t reg_intm_glbl0;
-	reg_intm_glbl1_t reg_intm_glbl1;
+	reg_int_m_chg_t reg_int_m_chg = {0};
+	reg_intm_glbl0_t reg_intm_glbl0 = {0};
+	reg_intm_glbl1_t reg_intm_glbl1 = {0};
  
 	//INT_M_CHG (0x07), INTM_GLBL0 (0x08) and INTM_GLBL1 (0x09)
     reg_addr = (uint8_t)floor((static_cast<uint8_t>(bit_field)) / 8) + 0x07; 
@@ -358,17 +358,15 @@
 		return write_register(INTM_GLBL0, (uint8_t *)&(reg_intm_glbl0));
 	else if (reg_addr == INTM_GLBL1)
 		return write_register(INTM_GLBL1, (uint8_t *)&(reg_intm_glbl1));
-	else 
-		return MAX77658_INVALID_DATA;
 }
 
 int MAX77658::get_interrupt_mask(reg_bit_int_mask_t bit_field, uint8_t *maskBit)
 {
     int ret;
 	uint8_t reg_addr;
-	reg_int_m_chg_t reg_int_m_chg;
-	reg_intm_glbl0_t reg_intm_glbl0;
-	reg_intm_glbl1_t reg_intm_glbl1;
+	reg_int_m_chg_t reg_int_m_chg = {0};
+	reg_intm_glbl0_t reg_intm_glbl0 = {0};
+	reg_intm_glbl1_t reg_intm_glbl1 = {0};
  
 	//INT_M_CHG (0x07), INTM_GLBL0 (0x08) and INTM_GLBL1 (0x09)
     reg_addr = (uint8_t)floor((static_cast<uint8_t>(bit_field)) / 8) + 0x07; 
@@ -469,7 +467,7 @@
 int MAX77658::set_cnfg_glbl(reg_bit_cnfg_glbl_t bit_field, uint8_t config)
 {	
 	int ret;
-	reg_cnfg_glbl_t reg_cnfg_glbl;
+	reg_cnfg_glbl_t reg_cnfg_glbl = {0};
 	
 	ret = read_register(CNFG_GLBL, (uint8_t *)&(reg_cnfg_glbl));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -505,7 +503,7 @@
 int MAX77658::get_cnfg_glbl(reg_bit_cnfg_glbl_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_cnfg_glbl_t reg_cnfg_glbl;
+    reg_cnfg_glbl_t reg_cnfg_glbl = {0};
 
     ret = read_register(CNFG_GLBL, (uint8_t *)&(reg_cnfg_glbl));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -541,9 +539,9 @@
 int MAX77658::set_cnfg_gpio(reg_bit_cnfg_gpio_t bit_field, uint8_t channel, uint8_t config)
 {
 	int ret;
-	reg_cnfg_gpio0_t reg_cnfg_gpio0;
-	reg_cnfg_gpio1_t reg_cnfg_gpio1;
-	reg_cnfg_gpio2_t reg_cnfg_gpio2;
+	reg_cnfg_gpio0_t reg_cnfg_gpio0 = {0};
+	reg_cnfg_gpio1_t reg_cnfg_gpio1 = {0};
+	reg_cnfg_gpio2_t reg_cnfg_gpio2 = {0};
 	
 	if (channel == 0)
 	{
@@ -652,9 +650,9 @@
 int MAX77658::get_cnfg_gpio(reg_bit_cnfg_gpio_t bit_field, uint8_t channel, uint8_t *config)
 {
     int ret;
-	reg_cnfg_gpio0_t reg_cnfg_gpio0;
-	reg_cnfg_gpio1_t reg_cnfg_gpio1;
-	reg_cnfg_gpio2_t reg_cnfg_gpio2;
+	reg_cnfg_gpio0_t reg_cnfg_gpio0 = {0};
+	reg_cnfg_gpio1_t reg_cnfg_gpio1 = {0};
+	reg_cnfg_gpio2_t reg_cnfg_gpio2 = {0};
 	
 	if (channel == 0)
 	{
@@ -769,7 +767,7 @@
 int MAX77658::set_cnfg_wdt(reg_bit_cnfg_wdt_t bit_field, uint8_t config)
 {
 	int ret;
-	reg_cnfg_wdt_t reg_cnfg_wdt;
+	reg_cnfg_wdt_t reg_cnfg_wdt = {0};
 	
 	ret = read_register(CNFG_WDT, (uint8_t *)&(reg_cnfg_wdt));
 	if (ret != MAX77658_NO_ERROR) return ret;
@@ -803,7 +801,7 @@
 int MAX77658::get_cnfg_wdt(reg_bit_cnfg_wdt_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_cnfg_wdt_t reg_cnfg_wdt;
+    reg_cnfg_wdt_t reg_cnfg_wdt = {0};
 
     ret = read_register(CNFG_WDT, (uint8_t *)&(reg_cnfg_wdt));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -837,7 +835,7 @@
 int MAX77658::get_stat_chg_a(reg_bit_stat_chg_a_t bit_field, uint8_t *status)
 {
     int ret;
-    reg_stat_chg_a_t reg_stat_chg_a;
+    reg_stat_chg_a_t reg_stat_chg_a = {0};
 
     ret = read_register(STAT_CHG_A, (uint8_t *)&(reg_stat_chg_a));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -871,7 +869,7 @@
 int MAX77658::get_thm_dtls(decode_thm_dtls_t *thm_dtls)
 {
     int ret;
-    reg_stat_chg_a_t reg_stat_chg_a;
+    reg_stat_chg_a_t reg_stat_chg_a = {0};
 
     ret = read_register(STAT_CHG_A, (uint8_t *)&(reg_stat_chg_a));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -884,7 +882,7 @@
 int MAX77658::get_stat_chg_b(reg_bit_stat_chg_b_t bit_field, uint8_t *status)
 {
     int ret;
-    reg_stat_chg_b_t reg_stat_chg_b;
+    reg_stat_chg_b_t reg_stat_chg_b = {0};
 
     ret = read_register(STAT_CHG_B, (uint8_t *)&(reg_stat_chg_b));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -914,7 +912,7 @@
 int MAX77658::get_chg_dtls(decode_chg_dtls_t *chg_dtls)
 {
     int ret;
-    reg_stat_chg_b_t reg_stat_chg_b;
+    reg_stat_chg_b_t reg_stat_chg_b = {0};
 
     ret = read_register(STAT_CHG_B, (uint8_t *)&(reg_stat_chg_b));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -927,7 +925,7 @@
 int MAX77658::set_thm_hot(int tempDegC)
 {
 	uint8_t value;
-	reg_cnfg_chg_a_t reg_cnfg_chg_a;
+	reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
 	if (tempDegC < 45) tempDegC = 45;
 	else if (tempDegC > 60) tempDegC = 60;
@@ -942,7 +940,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_a_t reg_cnfg_chg_a;
+    reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
     ret = read_register(CNFG_CHG_A, (uint8_t *)&(reg_cnfg_chg_a));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -959,7 +957,7 @@
 int MAX77658::set_thm_warm(int tempDegC)
 {
 	uint8_t value;
-	reg_cnfg_chg_a_t reg_cnfg_chg_a;
+	reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
 	if (tempDegC < 35) tempDegC = 35;
 	else if (tempDegC > 50) tempDegC = 50;
@@ -974,7 +972,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_a_t reg_cnfg_chg_a;
+    reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
     ret = read_register(CNFG_CHG_A, (uint8_t *)&(reg_cnfg_chg_a));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -991,7 +989,7 @@
 int MAX77658::set_thm_cool(int tempDegC)
 {
 	uint8_t value;
-	reg_cnfg_chg_a_t reg_cnfg_chg_a;
+	reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
 	if (tempDegC < 0) tempDegC = 0;
 	else if (tempDegC > 15) tempDegC = 15;
@@ -1006,7 +1004,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_a_t reg_cnfg_chg_a;
+    reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
     ret = read_register(CNFG_CHG_A, (uint8_t *)&(reg_cnfg_chg_a));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1023,7 +1021,7 @@
 int MAX77658::set_thm_cold(int tempDegC)
 {
 	uint8_t value;
-	reg_cnfg_chg_a_t reg_cnfg_chg_a;
+	reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
 	if (tempDegC < -10) tempDegC = -10;
 	else if (tempDegC > 5) tempDegC = 5;
@@ -1038,7 +1036,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_a_t reg_cnfg_chg_a;
+    reg_cnfg_chg_a_t reg_cnfg_chg_a = {0};
 
     ret = read_register(CNFG_CHG_A, (uint8_t *)&(reg_cnfg_chg_a));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1055,7 +1053,7 @@
 int MAX77658::set_cnfg_chg_b(reg_bit_cnfg_chg_b_t bit_field, uint8_t config)
 {
 	int ret;
-	reg_cnfg_chg_b_t reg_cnfg_chg_b;
+	reg_cnfg_chg_b_t reg_cnfg_chg_b = {0};
 	
 	ret = read_register(CNFG_CHG_B, (uint8_t *)&(reg_cnfg_chg_b));
 	if (ret != MAX77658_NO_ERROR) return ret;
@@ -1085,7 +1083,7 @@
 int MAX77658::get_cnfg_chg_b(reg_bit_cnfg_chg_b_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_cnfg_chg_b_t reg_cnfg_chg_b;
+    reg_cnfg_chg_b_t reg_cnfg_chg_b = {0};
 
     ret = read_register(CNFG_CHG_B, (uint8_t *)&(reg_cnfg_chg_b));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1115,7 +1113,7 @@
 int MAX77658::set_vchgin_min(float voltV)
 {
 	uint8_t value;
-	reg_cnfg_chg_b_t reg_cnfg_chg_b;
+	reg_cnfg_chg_b_t reg_cnfg_chg_b = {0};
 	float voltmV = voltV * 1000;
 	
 	if (voltmV < 4000) voltmV = 4000;
@@ -1131,7 +1129,7 @@
 {
     int ret;
 	uint8_t value;
-    reg_cnfg_chg_b_t reg_cnfg_chg_b;
+    reg_cnfg_chg_b_t reg_cnfg_chg_b = {0};
 
     ret = read_register(CNFG_CHG_B, (uint8_t *)&(reg_cnfg_chg_b));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1144,7 +1142,7 @@
 int MAX77658::set_ichgin_lim(int currentmA)
 {
 	uint8_t value;
-	reg_cnfg_chg_b_t reg_cnfg_chg_b;
+	reg_cnfg_chg_b_t reg_cnfg_chg_b = {0};
 
 	if (currentmA < 95) currentmA = 95;
 	else if (currentmA > 475) currentmA = 475;
@@ -1159,7 +1157,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_b_t reg_cnfg_chg_b;
+    reg_cnfg_chg_b_t reg_cnfg_chg_b = {0};
 
     ret = read_register(CNFG_CHG_B, (uint8_t *)&(reg_cnfg_chg_b));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1172,7 +1170,7 @@
 int MAX77658::set_chg_pq(float voltV)
 {
 	uint8_t value;
-	reg_cnfg_chg_c_t reg_cnfg_chg_c;
+	reg_cnfg_chg_c_t reg_cnfg_chg_c = {0};
 	float voltmV = voltV * 1000;
 		
 	if (voltmV < 2300) voltmV = 2300;
@@ -1188,7 +1186,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_c_t reg_cnfg_chg_c;
+    reg_cnfg_chg_c_t reg_cnfg_chg_c = {0};
 
     ret = read_register(CNFG_CHG_C, (uint8_t *)&(reg_cnfg_chg_c));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1201,7 +1199,7 @@
 int MAX77658::set_i_term(float percent)
 {
 	uint8_t value;
-	reg_cnfg_chg_c_t reg_cnfg_chg_c;
+	reg_cnfg_chg_c_t reg_cnfg_chg_c = {0};
 
 	if (percent < 7.5f) value = 0;
 	else if ((percent >= 7.5f) && (percent < 10)) value = 1;
@@ -1216,7 +1214,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_c_t reg_cnfg_chg_c;
+    reg_cnfg_chg_c_t reg_cnfg_chg_c = {0};
 
     ret = read_register(CNFG_CHG_C, (uint8_t *)&(reg_cnfg_chg_c));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1235,7 +1233,7 @@
 int MAX77658::set_t_topoff(uint8_t minute)
 {
 	uint8_t value;
-	reg_cnfg_chg_c_t reg_cnfg_chg_c;
+	reg_cnfg_chg_c_t reg_cnfg_chg_c = {0};
 
 	if (minute > 35) minute = 35;
 	
@@ -1249,7 +1247,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_c_t reg_cnfg_chg_c;
+    reg_cnfg_chg_c_t reg_cnfg_chg_c = {0};
 
     ret = read_register(CNFG_CHG_C, (uint8_t *)&(reg_cnfg_chg_c));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1262,7 +1260,7 @@
 int MAX77658::set_tj_reg(uint8_t tempDegC)
 {
 	uint8_t value;
-	reg_cnfg_chg_d_t reg_cnfg_chg_d;
+	reg_cnfg_chg_d_t reg_cnfg_chg_d = {0};
 
 	if (tempDegC < 60) tempDegC = 60;
 	else if (tempDegC > 100) tempDegC = 100;
@@ -1277,7 +1275,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_d_t reg_cnfg_chg_d;
+    reg_cnfg_chg_d_t reg_cnfg_chg_d = {0};
 
     ret = read_register(CNFG_CHG_D, (uint8_t *)&(reg_cnfg_chg_d));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1290,7 +1288,7 @@
 int MAX77658::set_vsys_reg(float voltV)
 {
 	uint8_t value;
-	reg_cnfg_chg_d_t reg_cnfg_chg_d;
+	reg_cnfg_chg_d_t reg_cnfg_chg_d = {0};
 	float voltmV = voltV * 1000;
 
 	if (voltmV < 3300) voltmV = 3300;
@@ -1306,7 +1304,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_d_t reg_cnfg_chg_d;
+    reg_cnfg_chg_d_t reg_cnfg_chg_d = {0};
 
     ret = read_register(CNFG_CHG_D, (uint8_t *)&(reg_cnfg_chg_d));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1319,7 +1317,7 @@
 int MAX77658::set_chg_cc(float currentmA)
 {
 	uint8_t value;
-	reg_cnfg_chg_e_t reg_cnfg_chg_e;
+	reg_cnfg_chg_e_t reg_cnfg_chg_e = {0};
 	float currentuA = currentmA * 1000;
 
 	if (currentuA < 7500) currentuA = 7500;
@@ -1335,7 +1333,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_e_t reg_cnfg_chg_e;
+    reg_cnfg_chg_e_t reg_cnfg_chg_e = {0};
 
     ret = read_register(CNFG_CHG_E, (uint8_t *)&(reg_cnfg_chg_e));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1350,7 +1348,7 @@
 
 int MAX77658::set_t_fast_chg(decode_t_fast_chg_t t_fast_chg)
 {	
-	reg_cnfg_chg_e_t reg_cnfg_chg_e;
+	reg_cnfg_chg_e_t reg_cnfg_chg_e = {0};
 
     SET_BIT_FIELD(CNFG_CHG_E, reg_cnfg_chg_e, reg_cnfg_chg_e.bits.t_fast_chg, t_fast_chg);
 	return MAX77658_NO_ERROR;
@@ -1359,7 +1357,7 @@
 int MAX77658::get_t_fast_chg(decode_t_fast_chg_t *t_fast_chg)
 {
     int ret;
-    reg_cnfg_chg_e_t reg_cnfg_chg_e;
+    reg_cnfg_chg_e_t reg_cnfg_chg_e = {0};
 
     ret = read_register(CNFG_CHG_E, (uint8_t *)&(reg_cnfg_chg_e));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1372,7 +1370,7 @@
 int MAX77658::set_chg_cc_jeita(float currentmA)
 {
 	uint8_t value;
-	reg_cnfg_chg_f_t reg_cnfg_chg_f;
+	reg_cnfg_chg_f_t reg_cnfg_chg_f = {0};
 	float currentuA = currentmA * 1000;
 
 	if (currentuA < 7500) currentuA = 7500;
@@ -1388,7 +1386,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_f_t reg_cnfg_chg_f;
+    reg_cnfg_chg_f_t reg_cnfg_chg_f = {0};
 
     ret = read_register(CNFG_CHG_F, (uint8_t *)&(reg_cnfg_chg_f));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1403,7 +1401,7 @@
 int MAX77658::set_cnfg_chg_g(reg_bit_cnfg_chg_g_t bit_field, uint8_t config)
 {
 	int ret;
-	reg_cnfg_chg_g_t reg_cnfg_chg_g;
+	reg_cnfg_chg_g_t reg_cnfg_chg_g = {0};
 	
 	ret = read_register(CNFG_CHG_G, (uint8_t *)&(reg_cnfg_chg_g));
 	if (ret != MAX77658_NO_ERROR) return ret;
@@ -1430,7 +1428,7 @@
 int MAX77658::get_cnfg_chg_g(reg_bit_cnfg_chg_g_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_cnfg_chg_g_t reg_cnfg_chg_g;
+    reg_cnfg_chg_g_t reg_cnfg_chg_g = {0};
 
     ret = read_register(CNFG_CHG_G, (uint8_t *)&(reg_cnfg_chg_g));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1457,7 +1455,7 @@
 int MAX77658::set_chg_cv(float voltV)
 {
 	uint8_t value;
-	reg_cnfg_chg_g_t reg_cnfg_chg_g;
+	reg_cnfg_chg_g_t reg_cnfg_chg_g = {0};
 	float voltmV = voltV * 1000;
 
 	if (voltmV < 3600) voltmV = 3600;
@@ -1473,7 +1471,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_g_t reg_cnfg_chg_g;
+    reg_cnfg_chg_g_t reg_cnfg_chg_g = {0};
 
     ret = read_register(CNFG_CHG_G, (uint8_t *)&(reg_cnfg_chg_g));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1486,7 +1484,7 @@
 int MAX77658::set_cnfg_chg_h(reg_bit_cnfg_chg_h_t bit_field, uint8_t config)
 {
 	int ret;
-	reg_cnfg_chg_h_t reg_cnfg_chg_h;
+	reg_cnfg_chg_h_t reg_cnfg_chg_h = {0};
 	
 	ret = read_register(CNFG_CHG_H, (uint8_t *)&(reg_cnfg_chg_h));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1513,7 +1511,7 @@
 int MAX77658::get_cnfg_chg_h(reg_bit_cnfg_chg_h_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_cnfg_chg_h_t reg_cnfg_chg_h;
+    reg_cnfg_chg_h_t reg_cnfg_chg_h = {0};
 
     ret = read_register(CNFG_CHG_H, (uint8_t *)&(reg_cnfg_chg_h));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1540,7 +1538,7 @@
 int MAX77658::set_chg_cv_jeita(float voltV)
 {
 	uint8_t value;
-	reg_cnfg_chg_h_t reg_cnfg_chg_h;
+	reg_cnfg_chg_h_t reg_cnfg_chg_h = {0};
 	float voltmV = voltV * 1000;
 
 	if (voltmV < 3600) voltmV = 3600;
@@ -1556,7 +1554,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_h_t reg_cnfg_chg_h;
+    reg_cnfg_chg_h_t reg_cnfg_chg_h = {0};
 
     ret = read_register(CNFG_CHG_H, (uint8_t *)&(reg_cnfg_chg_h));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1569,7 +1567,7 @@
 int MAX77658::set_imon_dischg_scale(float currentmA)
 {
 	uint8_t value;
-	reg_cnfg_chg_i_t reg_cnfg_chg_i;
+	reg_cnfg_chg_i_t reg_cnfg_chg_i = {0};
 	
 	if (currentmA < 40.5f) value = 0;
 	else if ((currentmA >= 40.5f) && (currentmA < 72.3f)) value = 1;
@@ -1591,7 +1589,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_chg_i_t reg_cnfg_chg_i;
+    reg_cnfg_chg_i_t reg_cnfg_chg_i = {0};
 
     ret = read_register(CNFG_CHG_I, (uint8_t *)&(reg_cnfg_chg_i));
     if (ret != MAX77658_NO_ERROR) {
@@ -1617,7 +1615,7 @@
 
 int MAX77658::set_mux_sel(decode_mux_sel_t selection)
 {	
-	reg_cnfg_chg_i_t reg_cnfg_chg_i;
+	reg_cnfg_chg_i_t reg_cnfg_chg_i = {0};
 
     SET_BIT_FIELD(CNFG_CHG_I, reg_cnfg_chg_i, reg_cnfg_chg_i.bits.mux_sel, selection);
 	return MAX77658_NO_ERROR;
@@ -1626,7 +1624,7 @@
 int MAX77658::get_mux_sel(decode_mux_sel_t *selection)
 {
     int ret;
-    reg_cnfg_chg_i_t reg_cnfg_chg_i;
+    reg_cnfg_chg_i_t reg_cnfg_chg_i = {0};
 
     ret = read_register(CNFG_CHG_I, (uint8_t *)&(reg_cnfg_chg_i));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1638,7 +1636,7 @@
 int MAX77658::set_cnfg_sbb_top(reg_bit_cnfg_sbb_top_t bit_field, uint8_t config)
 {
 	int ret;
-	reg_cnfg_sbb_top_t reg_cnfg_sbb_top;
+	reg_cnfg_sbb_top_t reg_cnfg_sbb_top = {0};
 	
 	ret = read_register(CNFG_SBB_TOP, (uint8_t *)&(reg_cnfg_sbb_top));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1662,7 +1660,7 @@
 int MAX77658::get_cnfg_sbb_top(reg_bit_cnfg_sbb_top_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_cnfg_sbb_top_t reg_cnfg_sbb_top;
+    reg_cnfg_sbb_top_t reg_cnfg_sbb_top = {0};
 
     ret = read_register(CNFG_SBB_TOP, (uint8_t *)&(reg_cnfg_sbb_top));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -1686,9 +1684,9 @@
 int MAX77658::set_tv_sbb_a(uint8_t channel, float voltV)
 {
 	uint8_t value;
-	reg_cnfg_sbb0_a_t reg_cnfg_sbb0_a;
-	reg_cnfg_sbb1_a_t reg_cnfg_sbb1_a;
-	reg_cnfg_sbb2_a_t reg_cnfg_sbb2_a;
+	reg_cnfg_sbb0_a_t reg_cnfg_sbb0_a = {0};
+	reg_cnfg_sbb1_a_t reg_cnfg_sbb1_a = {0};
+	reg_cnfg_sbb2_a_t reg_cnfg_sbb2_a = {0};
 	float voltmV = voltV * 1000;
 	
 	if (voltmV < 500) voltmV = 500;
@@ -1716,9 +1714,9 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_sbb0_a_t reg_cnfg_sbb0_a;
-    reg_cnfg_sbb1_a_t reg_cnfg_sbb1_a;
-    reg_cnfg_sbb2_a_t reg_cnfg_sbb2_a;
+    reg_cnfg_sbb0_a_t reg_cnfg_sbb0_a = {0};
+    reg_cnfg_sbb1_a_t reg_cnfg_sbb1_a = {0};
+    reg_cnfg_sbb2_a_t reg_cnfg_sbb2_a = {0};
 
 	if (channel == 0) { 
 		ret = read_register(CNFG_SBB0_A, (uint8_t *)&(reg_cnfg_sbb0_a));
@@ -1748,9 +1746,9 @@
 
 int MAX77658::set_op_mode(uint8_t channel, decode_op_mode_t mode)
 {	
-	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_SBB0_B, reg_cnfg_sbb0_b, reg_cnfg_sbb0_b.bits.op_mode0, mode);
@@ -1771,9 +1769,9 @@
 int MAX77658::get_op_mode(uint8_t channel, decode_op_mode_t *mode)
 {
     int ret;
-    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_SBB0_B, (uint8_t *)&(reg_cnfg_sbb0_b));
@@ -1802,9 +1800,9 @@
 
 int MAX77658::set_ip_sbb(uint8_t channel, decode_ip_sbb_t ip_sbb)
 {	
-	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_SBB0_B, reg_cnfg_sbb0_b, reg_cnfg_sbb0_b.bits.ip_sbb0, ip_sbb);
@@ -1825,9 +1823,9 @@
 int MAX77658::get_ip_sbb(uint8_t channel, decode_ip_sbb_t *ip_sbb)
 {
     int ret;
-    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_SBB0_B, (uint8_t *)&(reg_cnfg_sbb0_b));
@@ -1856,9 +1854,9 @@
 
 int MAX77658::set_ade_sbb(uint8_t channel, decode_ade_sbb_t ade_sbb)
 {	
-	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_SBB0_B, reg_cnfg_sbb0_b, reg_cnfg_sbb0_b.bits.ade_sbb0, ade_sbb);
@@ -1879,9 +1877,9 @@
 int MAX77658::get_ade_sbb(uint8_t channel, decode_ade_sbb_t *ade_sbb)
 {
     int ret;
-    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_SBB0_B, (uint8_t *)&(reg_cnfg_sbb0_b));
@@ -1910,9 +1908,9 @@
 
 int MAX77658::set_en_sbb(uint8_t channel, decode_en_sbb_t en_sbb)
 {	
-	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+	reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_SBB0_B, reg_cnfg_sbb0_b, reg_cnfg_sbb0_b.bits.en_sbb0, en_sbb);
@@ -1933,9 +1931,9 @@
 int MAX77658::get_en_sbb(uint8_t channel, decode_en_sbb_t *en_sbb)
 {
     int ret;
-    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b;
-	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b;
-	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b;
+    reg_cnfg_sbb0_b_t reg_cnfg_sbb0_b = {0};
+	reg_cnfg_sbb1_b_t reg_cnfg_sbb1_b = {0};
+	reg_cnfg_sbb2_b_t reg_cnfg_sbb2_b = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_SBB0_B, (uint8_t *)&(reg_cnfg_sbb0_b));
@@ -1963,7 +1961,7 @@
 int MAX77658::set_tv_sbb_dvs(float voltV)
 {
 	uint8_t value;
-	reg_cnfg_dvs_sbb0_a_t reg_cnfg_dvs_sbb0_a;
+	reg_cnfg_dvs_sbb0_a_t reg_cnfg_dvs_sbb0_a = {0};
 	float voltmV = voltV * 1000;
 
 	if (voltmV < 500) voltmV = 500;
@@ -1979,7 +1977,7 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_dvs_sbb0_a_t reg_cnfg_dvs_sbb0_a;
+    reg_cnfg_dvs_sbb0_a_t reg_cnfg_dvs_sbb0_a = {0};
 
 	ret = read_register(CNFG_DVS_SBB0_A, (uint8_t *)&(reg_cnfg_dvs_sbb0_a));
 	if (ret != MAX77658_NO_ERROR) return ret;
@@ -1996,8 +1994,8 @@
 {
 	int ret;
 	uint8_t value;
-	reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a;
-	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a;
+	reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a = {0};
+	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a = {0};
 	float voltmV = voltV * 1000;
 	
 	if (channel == 0) {
@@ -2045,8 +2043,8 @@
 {
     int ret;
 	uint8_t bit_value;
-    reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a;
-	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a;
+    reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a = {0};
+	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a = {0};
 	
 	if (channel == 0){
 		ret = read_register(CNFG_LDO0_A, (uint8_t *)&(reg_cnfg_ldo0_a));
@@ -2074,8 +2072,8 @@
 
 int MAX77658::set_tv_ldo_offset_a(uint8_t channel, decode_tv_ldo_offset_a_t offset)
 {	
-	reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a;
-	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a;
+	reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a = {0};
+	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_LDO0_A, reg_cnfg_ldo0_a, reg_cnfg_ldo0_a.bits.tv_ldo0_7, offset);
@@ -2093,8 +2091,8 @@
 int MAX77658::get_tv_ldo_offset_a(uint8_t channel, decode_tv_ldo_offset_a_t *offset)
 {
     int ret;
-    reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a;
-	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a;
+    reg_cnfg_ldo0_a_t reg_cnfg_ldo0_a = {0};
+	reg_cnfg_ldo1_a_t reg_cnfg_ldo1_a = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_LDO0_A, (uint8_t *)&(reg_cnfg_ldo0_a));
@@ -2117,8 +2115,8 @@
 
 int MAX77658::set_en_ldo(uint8_t channel, decode_en_ldo_t en_ldo)
 {	
-	reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b;
-	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b;
+	reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b = {0};
+	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_LDO0_B, reg_cnfg_ldo0_b, reg_cnfg_ldo0_b.bits.en_ldo0, en_ldo);
@@ -2136,8 +2134,8 @@
 int MAX77658::get_en_ldo(uint8_t channel, decode_en_ldo_t *en_ldo)
 {
     int ret;
-    reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b;
-	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b;
+    reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b = {0};
+	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_LDO0_B, (uint8_t *)&(reg_cnfg_ldo0_b));
@@ -2158,8 +2156,8 @@
 
 int MAX77658::set_ade_ldo(uint8_t channel, decode_ade_ldo_t ade_ldo)
 {	
-	reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b;
-	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b;
+	reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b = {0};
+	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_LDO0_B, reg_cnfg_ldo0_b, reg_cnfg_ldo0_b.bits.ade_ldo0, ade_ldo);
@@ -2177,8 +2175,8 @@
 int MAX77658::get_ade_ldo(uint8_t channel, decode_ade_ldo_t *ade_ldo)
 {
     int ret;
-    reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b;
-	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b;
+    reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b = {0};
+	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_LDO0_B, (uint8_t *)&(reg_cnfg_ldo0_b));
@@ -2201,8 +2199,8 @@
 
 int MAX77658::set_ldo_md(uint8_t channel, decode_ldo_md_t mode)
 {	
-	reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b;
-	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b;
+	reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b = {0};
+	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b = {0};
 	
 	if (channel == 0) {
 		SET_BIT_FIELD(CNFG_LDO0_B, reg_cnfg_ldo0_b, reg_cnfg_ldo0_b.bits.ldo0_md, mode);
@@ -2220,8 +2218,8 @@
 int MAX77658::get_ldo_md(uint8_t channel, decode_ldo_md_t *mode)
 {
     int ret;
-    reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b;
-	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b;
+    reg_cnfg_ldo0_b_t reg_cnfg_ldo0_b = {0};
+	reg_cnfg_ldo1_b_t reg_cnfg_ldo1_b = {0};
 
 	if (channel == 0) {
 		ret = read_register(CNFG_LDO0_B, (uint8_t *)&(reg_cnfg_ldo0_b));
@@ -2245,7 +2243,7 @@
 int MAX77658::set_fg_status(reg_bit_status_t bit_field, uint8_t status)
 {
 	int ret;
-	reg_status_t reg_status;
+	reg_status_t reg_status = {0};
 	
 	ret = read_fg_register(Status, (uint8_t *)&(reg_status));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2311,7 +2309,7 @@
 int MAX77658::get_fg_status(reg_bit_status_t bit_field, uint8_t *status)
 {
     int ret;
-    reg_status_t reg_status;
+    reg_status_t reg_status = {0};
 
     ret = read_fg_register(Status, (uint8_t *)&(reg_status));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2378,7 +2376,7 @@
 {
 	int ret;
 	uint8_t voltRaw;
-	reg_valrt_th_t reg_valrt_th;
+	reg_valrt_th_t reg_valrt_th = {0};
 	float voltmV = voltV * 1000;
 	
 	ret = read_fg_register(VAlrtTh, (uint8_t *)&(reg_valrt_th));
@@ -2407,7 +2405,7 @@
 {
     int ret;
 	int8_t voltSigned;
-    reg_valrt_th_t reg_valrt_th;
+    reg_valrt_th_t reg_valrt_th = {0};
 
     ret = read_fg_register(VAlrtTh, (uint8_t *)&(reg_valrt_th));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2435,7 +2433,7 @@
 {
 	int ret;
 	uint8_t tempRaw;
-	reg_talrt_th_t reg_talrt_th;
+	reg_talrt_th_t reg_talrt_th = {0};
 	
 	ret = read_fg_register(TAlrtTh, (uint8_t *)&(reg_talrt_th));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2464,7 +2462,7 @@
 int MAX77658::get_fg_talrt_th(reg_bit_talrt_th_t bit_field, int *tempDegC)
 {
     int ret, tempSigned;
-    reg_talrt_th_t reg_talrt_th;
+    reg_talrt_th_t reg_talrt_th = {0};
 
     ret = read_fg_register(TAlrtTh, (uint8_t *)&(reg_talrt_th));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2494,7 +2492,7 @@
 {
 	int ret;
 	uint8_t capRaw;
-	reg_salrt_th_t reg_salrt_th;
+	reg_salrt_th_t reg_salrt_th = {0};
 	
 	ret = read_fg_register(SAlrtTh, (uint8_t *)&(reg_salrt_th));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2522,7 +2520,7 @@
 {
     int ret;
 	uint8_t capRaw;
-    reg_salrt_th_t reg_salrt_th;
+    reg_salrt_th_t reg_salrt_th = {0};
 
     ret = read_fg_register(SAlrtTh, (uint8_t *)&(reg_salrt_th));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2549,7 +2547,7 @@
 int MAX77658::set_fg_full_soc_thr(float soc_thr)
 {
 	int capRaw;
-	reg_full_soc_thr_t reg_full_soc_thr;
+	reg_full_soc_thr_t reg_full_soc_thr = {0};
 	
 	//LSB unit is 1/256%.
 	capRaw = (int)round(soc_thr * 256);
@@ -2561,7 +2559,7 @@
 int MAX77658::get_fg_full_soc_thr(float *soc_thr)
 {
     int ret, capRaw;
-    reg_full_soc_thr_t reg_full_soc_thr;
+    reg_full_soc_thr_t reg_full_soc_thr = {0};
 
     ret = read_fg_register(FullSocThr, (uint8_t *)&(reg_full_soc_thr));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2576,7 +2574,7 @@
 int MAX77658::set_fg_design_cap(float capacitymAh)
 {
 	int capRaw;
-	reg_design_cap_t reg_design_cap;
+	reg_design_cap_t reg_design_cap = {0};
 	
 	//Min is 0.0mAh and Max is 6553.5mAh.
 	if (capacitymAh < 0) capacitymAh = 0;
@@ -2592,7 +2590,7 @@
 int MAX77658::get_fg_design_cap(float *capacitymAh)
 {
     int ret, capRaw;
-    reg_design_cap_t reg_design_cap;
+    reg_design_cap_t reg_design_cap = {0};
 
     ret = read_fg_register(DesignCap, (uint8_t *)&(reg_design_cap));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2607,7 +2605,7 @@
 int MAX77658::set_fg_config(reg_bit_config_t bit_field, uint8_t config)
 {
 	int ret;
-	reg_config_t reg_config;
+	reg_config_t reg_config = {0};
 	
 	ret = read_fg_register(Config, (uint8_t *)&(reg_config));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2673,7 +2671,7 @@
 int MAX77658::get_fg_config(reg_bit_config_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_config_t reg_config;
+    reg_config_t reg_config = {0};
 
     ret = read_fg_register(Config, (uint8_t *)&(reg_config));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2739,7 +2737,7 @@
 int MAX77658::set_fg_ichg_term(float currentA)
 {
 	uint16_t currentRaw;
-	reg_ichg_term_t reg_ichg_term;
+	reg_ichg_term_t reg_ichg_term = {0};
 	
 	//Register scale range of ± 5.12 A
 	if (currentA < -5.12f) currentA = -5.12f;
@@ -2756,7 +2754,7 @@
 {
     int ret;
 	int16_t currentSigned;
-    reg_ichg_term_t reg_ichg_term;
+    reg_ichg_term_t reg_ichg_term = {0};
 
     ret = read_fg_register(IChgTerm, (uint8_t *)&(reg_ichg_term));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2775,7 +2773,7 @@
 int MAX77658::get_fg_dev_name(uint16_t *value)
 {	
 	int ret;
-    reg_dev_name_t reg_dev_name;
+    reg_dev_name_t reg_dev_name = {0};
 
     ret = read_fg_register(DevName, (uint8_t *)&(reg_dev_name));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2787,7 +2785,7 @@
 
 int MAX77658::set_fg_nempty(uint8_t nempty)
 {
-	reg_filter_cfg_t reg_filter_cfg;
+	reg_filter_cfg_t reg_filter_cfg = {0};
 
     SET_FG_BIT_FIELD(FilterCfg, reg_filter_cfg, reg_filter_cfg.bits.nempty, nempty);
 	return MAX77658_NO_ERROR;
@@ -2796,7 +2794,7 @@
 int MAX77658::get_fg_nempty(uint8_t *nempty)
 {
     int ret;
-    reg_filter_cfg_t reg_filter_cfg;
+    reg_filter_cfg_t reg_filter_cfg = {0};
 
     ret = read_fg_register(FilterCfg, (uint8_t *)&(reg_filter_cfg));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2809,7 +2807,7 @@
 int MAX77658::set_fg_nmix(float second)
 {
 	int nmixRaw;
-	reg_filter_cfg_t reg_filter_cfg;
+	reg_filter_cfg_t reg_filter_cfg = {0};
 	
 	//Mixing Period = 175.8ms × 2^(5+NMIX)
 	nmixRaw = (int)round((log2(second * 1000.0f / 175.8f)) - 5.0f);
@@ -2821,7 +2819,7 @@
 int MAX77658::get_fg_nmix(float *second)
 {
     int ret, nmixRaw;
-    reg_filter_cfg_t reg_filter_cfg;
+    reg_filter_cfg_t reg_filter_cfg = {0};
 
     ret = read_fg_register(FilterCfg, (uint8_t *)&(reg_filter_cfg));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2836,7 +2834,7 @@
 int MAX77658::set_fg_navgcell(float second)
 {
 	int navgcellRaw;
-	reg_filter_cfg_t reg_filter_cfg;
+	reg_filter_cfg_t reg_filter_cfg = {0};
 	
 	//AverageVCELL time constant = 175.8ms × 2^(6+NAVGVCELL)
 	navgcellRaw = (int)round((log2(second * 1000.0f / 175.8f)) - 6.0f);
@@ -2848,7 +2846,7 @@
 int MAX77658::get_fg_navgcell(float *second)
 {
     int ret, navgcellRaw;
-    reg_filter_cfg_t reg_filter_cfg;
+    reg_filter_cfg_t reg_filter_cfg = {0};
 
     ret = read_fg_register(FilterCfg, (uint8_t *)&(reg_filter_cfg));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2863,7 +2861,7 @@
 int MAX77658::set_fg_ncurr(float second)
 {
 	int ncurrRaw;
-	reg_filter_cfg_t reg_filter_cfg;
+	reg_filter_cfg_t reg_filter_cfg = {0};
 	
 	//AverageVCELL time constant = 175.8ms × 2^(2+NCURR)
 	ncurrRaw = (int)round((log2(second * 1000.0f / 175.8f)) - 2.0f);
@@ -2875,7 +2873,7 @@
 int MAX77658::get_fg_ncurr(float *second)
 {
     int ret, ncurrRaw;
-    reg_filter_cfg_t reg_filter_cfg;
+    reg_filter_cfg_t reg_filter_cfg = {0};
 
     ret = read_fg_register(FilterCfg, (uint8_t *)&(reg_filter_cfg));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2890,7 +2888,7 @@
 int MAX77658::set_fg_iavg_empty(float currentA)
 {
 	uint16_t currentRaw;
-	reg_iavg_empty_t reg_iavg_empty;
+	reg_iavg_empty_t reg_iavg_empty = {0};
 	
 	//Register scale range of ± 5.12 A
 	if (currentA < -5.12f) currentA = -5.12f;
@@ -2907,7 +2905,7 @@
 {
     int ret;
 	int16_t currentSigned;
-    reg_iavg_empty_t reg_iavg_empty;
+    reg_iavg_empty_t reg_iavg_empty = {0};
 
     ret = read_fg_register(IAvgEmpty, (uint8_t *)&(reg_iavg_empty));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2926,7 +2924,7 @@
 int MAX77658::set_fg_v_empty(float voltV)
 {
 	int voltRaw;
-	reg_v_empty_t reg_v_empty;
+	reg_v_empty_t reg_v_empty = {0};
 	float voltmV = voltV * 1000;
 	
 	//A 10mV resolution gives a 0 to 5.11V range.
@@ -2942,7 +2940,7 @@
 int MAX77658::get_fg_v_empty(float *voltV)
 {
     int ret, voltRaw;
-    reg_v_empty_t reg_v_empty;
+    reg_v_empty_t reg_v_empty = {0};
 
     ret = read_fg_register(VEmpty, (uint8_t *)&(reg_v_empty));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2960,7 +2958,7 @@
 int MAX77658::set_fg_v_recover(float voltV)
 {
 	int voltRaw;
-	reg_v_empty_t reg_v_empty;
+	reg_v_empty_t reg_v_empty = {0};
 	float voltmV = voltV * 1000;
 	
 	//A 40mV resolution gives a 0 to 5.08V range.
@@ -2976,7 +2974,7 @@
 int MAX77658::get_fg_v_recover(float *voltV)
 {
     int ret, voltRaw;
-    reg_v_empty_t reg_v_empty;
+    reg_v_empty_t reg_v_empty = {0};
 
     ret = read_fg_register(VEmpty, (uint8_t *)&(reg_v_empty));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -2995,7 +2993,7 @@
 int MAX77658::set_fg_config2(reg_bit_config2_t bit_field, uint8_t config)
 {
 	int ret;
-	reg_config2_t reg_config2;
+	reg_config2_t reg_config2 = {0};
 	
 	ret = read_fg_register(Config2, (uint8_t *)&(reg_config2));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3040,7 +3038,7 @@
 int MAX77658::get_fg_config2(reg_bit_config2_t bit_field, uint8_t *config)
 {
     int ret;
-    reg_config2_t reg_config2;
+    reg_config2_t reg_config2 = {0};
 
     ret = read_fg_register(Config2, (uint8_t *)&(reg_config2));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3085,7 +3083,7 @@
 int MAX77658::set_fg_isys_ncurr(float second)
 {
 	int secondRaw;
-	reg_config2_t reg_config2;
+	reg_config2_t reg_config2 = {0};
 
 	//AvgISys time constant = 45s x 2^(ISysNCurr-7)
 	secondRaw = (int)round(log2(second * 1000 / 45000) + 7);
@@ -3097,7 +3095,7 @@
 int MAX77658::get_fg_isys_ncurr(float *second)
 {
     int ret, secondRaw;
-    reg_config2_t reg_config2;
+    reg_config2_t reg_config2 = {0};
 
     ret = read_fg_register(Config2, (uint8_t *)&(reg_config2));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3112,7 +3110,7 @@
 int MAX77658::set_fg_temp(float tempDegC)
 {
 	uint16_t tempRaw;
-	reg_temp_t reg_temp;
+	reg_temp_t reg_temp = {0};
 	
 	//Min value is -128.0°C and Max value is 127.996°C. 
 	if (tempDegC < -128) tempDegC = -128;
@@ -3129,7 +3127,7 @@
 {
     int ret; 
 	int16_t tempSigned;
-    reg_temp_t reg_temp;
+    reg_temp_t reg_temp = {0};
 
     ret = read_fg_register(Temp, (uint8_t *)&(reg_temp));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3148,7 +3146,7 @@
 int MAX77658::set_fg_vcell(float voltV)
 {
 	uint16_t voltRaw;
-	reg_vcell_t reg_vcell;
+	reg_vcell_t reg_vcell = {0};
 	float voltmV = voltV * 1000;
 	
 	//Register scale range between 0V and 5.11992V. //LSB value of 1.25mV/16
@@ -3164,7 +3162,7 @@
 int MAX77658::get_fg_vcell(float *voltV)
 {
     int ret, voltRaw;
-    reg_vcell_t reg_vcell;
+    reg_vcell_t reg_vcell = {0};
 
     ret = read_fg_register(Vcell, (uint8_t *)&(reg_vcell));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3182,7 +3180,7 @@
 int MAX77658::set_fg_current(float currentA)
 {
 	uint16_t currentRaw;
-	reg_current_t reg_current;
+	reg_current_t reg_current = {0};
 	float currentmA = currentA * 1000;
 
 	if (currentmA < -1024) currentmA = -1024;
@@ -3199,7 +3197,7 @@
 {
     int ret; 
 	int16_t currentSigned;
-    reg_current_t reg_current;
+    reg_current_t reg_current = {0};
 
     ret = read_fg_register(Current, (uint8_t *)&(reg_current));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3217,7 +3215,7 @@
 int MAX77658::set_fg_avg_current(float currentA)
 {
 	uint16_t currentRaw;
-	reg_avg_current_t reg_avg_current;	
+	reg_avg_current_t reg_avg_current = {0};	
 	float currentmA = currentA * 1000;
 	
 	if (currentmA < -1024) currentmA = -1024;
@@ -3234,7 +3232,7 @@
 {
     int ret; 
 	int16_t currentSigned;
-    reg_avg_current_t reg_avg_current;
+    reg_avg_current_t reg_avg_current = {0};
 
     ret = read_fg_register(AvgCurrent, (uint8_t *)&(reg_avg_current));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3252,7 +3250,7 @@
 int MAX77658::set_fg_avgta(float tempDegC)
 {
 	uint16_t tempRaw;
-	reg_avg_ta_t reg_avg_ta;
+	reg_avg_ta_t reg_avg_ta = {0};
 	
 	//Min value is -128.0°C and Max value is 127.996°C. 
 	if (tempDegC < -128) tempDegC = -128;
@@ -3269,7 +3267,7 @@
 {
     int ret;
 	int16_t tempSigned;
-    reg_avg_ta_t reg_avg_ta;
+    reg_avg_ta_t reg_avg_ta = {0};
 
     ret = read_fg_register(AvgTA, (uint8_t *)&(reg_avg_ta));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3288,7 +3286,7 @@
 int MAX77658::set_fg_avgvcell(float voltV)
 {
 	uint16_t voltRaw;
-	reg_avg_vcell_t reg_avg_vcell;
+	reg_avg_vcell_t reg_avg_vcell = {0};
 	float voltmV = voltV * 1000;
 	
 	//Register scale range between 0V and 5.11992V. //LSB value of 1.25mV/16
@@ -3304,7 +3302,7 @@
 int MAX77658::get_fg_avgvcell(float *voltV)
 {
     int ret, voltRaw;
-    reg_avg_vcell_t reg_avg_vcell;
+    reg_avg_vcell_t reg_avg_vcell = {0};
 
     ret = read_fg_register(AvgVCell, (uint8_t *)&(reg_avg_vcell));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3324,7 +3322,7 @@
 {
 	int ret;
 	uint8_t tempRaw;
-	reg_max_min_temp_t reg_max_min_temp;
+	reg_max_min_temp_t reg_max_min_temp = {0};
 	
 	ret = read_fg_register(MaxMinTemp, (uint8_t *)&(reg_max_min_temp));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3352,7 +3350,7 @@
 {
 	int ret;
 	int8_t tempSigned;
-    reg_max_min_temp_t reg_max_min_temp;
+    reg_max_min_temp_t reg_max_min_temp = {0};
 
     ret = read_fg_register(MaxMinTemp, (uint8_t *)&(reg_max_min_temp));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3380,7 +3378,7 @@
 {
 	int ret;
 	uint8_t voltRaw;
-	reg_max_min_volt_t reg_max_min_volt;
+	reg_max_min_volt_t reg_max_min_volt = {0};
 	float voltmV = voltV * 1000;
 	
 	ret = read_fg_register(MaxMinVolt, (uint8_t *)&(reg_max_min_volt));
@@ -3409,7 +3407,7 @@
 {
 	int ret;
 	int8_t voltSigned;
-    reg_max_min_volt_t reg_max_min_volt;
+    reg_max_min_volt_t reg_max_min_volt = {0};
 
     ret = read_fg_register(MaxMinVolt, (uint8_t *)&(reg_max_min_volt));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3437,7 +3435,7 @@
 {
 	int ret;
 	uint8_t currentRaw;
-	reg_max_min_curr_t reg_max_min_curr;
+	reg_max_min_curr_t reg_max_min_curr = {0};
 	float currentmA = currentA * 1000;
 	
 	ret = read_fg_register(MaxMinCurr, (uint8_t *)&(reg_max_min_curr));
@@ -3466,7 +3464,7 @@
 {
     int ret;
 	int8_t currentSigned;
-    reg_max_min_curr_t reg_max_min_curr;
+    reg_max_min_curr_t reg_max_min_curr = {0};
 
     ret = read_fg_register(MaxMinCurr, (uint8_t *)&(reg_max_min_curr));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3493,7 +3491,7 @@
 int MAX77658::set_fg_ain0(float percent)
 {
 	int percentRaw;
-	reg_ain0_t reg_ain0;
+	reg_ain0_t reg_ain0 = {0};
 	
 	//LSB of 0.0122%
 	percentRaw = (int)round(percent / 0.0122f);
@@ -3505,7 +3503,7 @@
 int MAX77658::get_fg_ain0(float *percent)
 {
     int ret, percentRaw;
-    reg_ain0_t reg_ain0;
+    reg_ain0_t reg_ain0 = {0};
 
     ret = read_fg_register(AIN0, (uint8_t *)&(reg_ain0));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3520,7 +3518,7 @@
 int MAX77658::set_fg_timer(float second)
 {
 	int secondRaw;
-	reg_timer_t reg_timer;
+	reg_timer_t reg_timer = {0};
 	
 	//full-scale range of 0 to 3.2 hours= 11520 sec
 	if (second < 0) second = 0;
@@ -3536,7 +3534,7 @@
 int MAX77658::get_fg_timer(float *second)
 {
     int ret, secondRaw;
-    reg_timer_t reg_timer;
+    reg_timer_t reg_timer = {0};
 
     ret = read_fg_register(Timer, (uint8_t *)&(reg_timer));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3555,7 +3553,7 @@
 int MAX77658::set_fg_shdnctr(float second)
 {
 	int secondRaw;
-	reg_shdn_timer_t reg_shdn_timer;
+	reg_shdn_timer_t reg_shdn_timer = {0};
 	
 	//The counter LSB is 1.4s
 	secondRaw = (int)round(second / 1.4f);
@@ -3567,7 +3565,7 @@
 int MAX77658::get_fg_shdnctr(float *second)
 {
     int ret, secondRaw;
-    reg_shdn_timer_t reg_shdn_timer;
+    reg_shdn_timer_t reg_shdn_timer = {0};
 
     ret = read_fg_register(ShdnTimer, (uint8_t *)&(reg_shdn_timer));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3582,7 +3580,7 @@
 int MAX77658::set_fg_shdn_thr(float second)
 {
 	int secondRaw;
-	reg_shdn_timer_t reg_shdn_timer;
+	reg_shdn_timer_t reg_shdn_timer = {0};
 	
 	//minimum of 45s to a maximum of 1.6h=5760sec
 	if (second < 45) second = 45;
@@ -3598,7 +3596,7 @@
 int MAX77658::get_fg_shdn_thr(float *second)
 {
     int ret, secondRaw;
-    reg_shdn_timer_t reg_shdn_timer;
+    reg_shdn_timer_t reg_shdn_timer = {0};
 
     ret = read_fg_register(ShdnTimer, (uint8_t *)&(reg_shdn_timer));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3617,7 +3615,7 @@
 int MAX77658::set_fg_timerh(float hour)
 {
 	int hourRaw;
-	reg_timerh_t reg_timerh;
+	reg_timerh_t reg_timerh = {0};
 	
 	// Full-scale range up to 23.94 years = 209853.5577138 hr
 	if (hour > 209853.5577138f) hour = (209853.5577138f);
@@ -3632,7 +3630,7 @@
 int MAX77658::get_fg_timerh(float *hour)
 {
     int ret, hourRaw;
-    reg_timerh_t reg_timerh;
+    reg_timerh_t reg_timerh = {0};
 
     ret = read_fg_register(TimerH, (uint8_t *)&(reg_timerh));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3650,7 +3648,7 @@
 int MAX77658::set_fg_rep_cap(float repCapmAh)
 {
 	int repCapRaw;
-	reg_rep_cap_t reg_rep_cap;
+	reg_rep_cap_t reg_rep_cap = {0};
 	
 	//Min value is 0.0mAh and Max value is 6553.5mAh
 	if (repCapmAh < 0) repCapmAh = 0;
@@ -3666,7 +3664,7 @@
 int MAX77658::get_fg_rep_cap(float *repCapmAh)
 {
     int ret, repCapRaw;
-    reg_rep_cap_t reg_rep_cap;
+    reg_rep_cap_t reg_rep_cap = {0};
 
     ret = read_fg_register(RepCap, (uint8_t *)&(reg_rep_cap));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3685,7 +3683,7 @@
 int MAX77658::set_fg_rep_soc(float percent)
 {
 	int percentRaw;
-	reg_rep_soc_t reg_rep_soc;
+	reg_rep_soc_t reg_rep_soc = {0};
 	
 	//Min value is 0.0% and Max value is 255.9961%
 	if (percent < 0) percent = 0;
@@ -3701,7 +3699,7 @@
 int MAX77658::get_fg_rep_soc(float *percent)
 {
     int ret, percentRaw;
-    reg_rep_soc_t reg_rep_soc;
+    reg_rep_soc_t reg_rep_soc = {0};
 
     ret = read_fg_register(RepSOC, (uint8_t *)&(reg_rep_soc));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3720,7 +3718,7 @@
 int MAX77658::set_fg_av_soc(float percent)
 {
 	int percentRaw;
-	reg_av_soc_t reg_av_soc;
+	reg_av_soc_t reg_av_soc = {0};
 	
 	//Min value is 0.0% and Max value is 255.9961%
 	if (percent < 0) percent = 0;
@@ -3736,7 +3734,7 @@
 int MAX77658::get_fg_av_soc(float *percent)
 {
     int ret, percentRaw;
-    reg_av_soc_t reg_av_soc;
+    reg_av_soc_t reg_av_soc = {0};
 
     ret = read_fg_register(AvSOC, (uint8_t *)&(reg_av_soc));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3755,7 +3753,7 @@
 int MAX77658::set_fg_full_cap_reg(float repCapmAh)
 {
 	int repCapRaw;
-	reg_full_cap_rep_t reg_full_cap_rep;
+	reg_full_cap_rep_t reg_full_cap_rep = {0};
 	
 	//Min value is 0.0mAh and Max value is 6553.5mAh
 	if (repCapmAh < 0) repCapmAh = 0;
@@ -3771,7 +3769,7 @@
 int MAX77658::get_fg_full_cap_reg(float *repCapmAh)
 {
     int ret, repCapRaw;
-    reg_full_cap_rep_t reg_full_cap_rep;
+    reg_full_cap_rep_t reg_full_cap_rep = {0};
 
     ret = read_fg_register(FullCapRep, (uint8_t *)&(reg_full_cap_rep));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3790,7 +3788,7 @@
 int MAX77658::set_fg_tte(float minute)
 {
 	int minuteRaw;
-	reg_tte_t reg_tte;
+	reg_tte_t reg_tte = {0};
 	
 	//Min value is 0.0s and Max value is 102.3984h = 6143.904min.
 	//LSB is 5.625s.
@@ -3803,7 +3801,7 @@
 int MAX77658::get_fg_tte(float *minute)
 {
     int ret, minuteRaw;
-    reg_tte_t reg_tte;
+    reg_tte_t reg_tte = {0};
 
     ret = read_fg_register(TTE, (uint8_t *)&(reg_tte));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3822,7 +3820,7 @@
 int MAX77658::set_fg_rcell(float resOhm)
 {
 	int resistanceRaw;
-	reg_rcell_t reg_rcell;
+	reg_rcell_t reg_rcell = {0};
 	
 	//Min value is 0.0Ohm and Max value is 15.99976Ohm.
 	if (resOhm < 0) resOhm = 0;
@@ -3838,7 +3836,7 @@
 int MAX77658::get_fg_rcell(float *resOhm)
 {
     int ret, resistanceRaw;
-    reg_rcell_t reg_rcell;
+    reg_rcell_t reg_rcell = {0};
 
     ret = read_fg_register(RCell, (uint8_t *)&(reg_rcell));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3856,7 +3854,7 @@
 
 int MAX77658::set_fg_cycles(uint16_t percent)
 {
-	reg_cycles_t reg_cycles;
+	reg_cycles_t reg_cycles = {0};
 	
 	//The LSB indicates 1%.
     SET_FG_BIT_FIELD(Cycles, reg_cycles, reg_cycles.bits.cycles, percent);
@@ -3866,7 +3864,7 @@
 int MAX77658::get_fg_cycles(uint16_t *percent)
 {
     int ret;
-    reg_cycles_t reg_cycles;
+    reg_cycles_t reg_cycles = {0};
 
     ret = read_fg_register(Cycles, (uint8_t *)&(reg_cycles));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3879,7 +3877,7 @@
 int MAX77658::set_fg_av_cap(float avCapmAh)
 {
 	int avCapRaw;
-	reg_av_cap_t reg_av_cap;
+	reg_av_cap_t reg_av_cap = {0};
 	
 	//LSB is 0.1mAh. Min value is 0.0mAh and Max value is 6553.5mAh.
 	if (avCapmAh < 0) avCapmAh = 0;
@@ -3894,7 +3892,7 @@
 int MAX77658::get_fg_av_cap(float *avCapmAh)
 {
     int ret, avCapRaw;
-    reg_av_cap_t reg_av_cap;
+    reg_av_cap_t reg_av_cap = {0};
 
     ret = read_fg_register(AvCap, (uint8_t *)&(reg_av_cap));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3912,7 +3910,7 @@
 int MAX77658::set_fg_ttf(float minute)
 {
 	int minuteRaw;
-	reg_ttf_t reg_ttf;
+	reg_ttf_t reg_ttf = {0};
 	
 	//Min value is 0.0s and Max value is 102.3984h = = 6143.904 min.min.
 	if (minute < 0) minute = 0;
@@ -3928,7 +3926,7 @@
 int MAX77658::get_fg_ttf(float *minute)
 {
     int ret, minuteRaw;
-    reg_ttf_t reg_ttf;
+    reg_ttf_t reg_ttf = {0};
 
     ret = read_fg_register(TTF, (uint8_t *)&(reg_ttf));
     if (ret != MAX77658_NO_ERROR) return ret;
@@ -3985,7 +3983,7 @@
 void MAX77658::post_interrupt_work()
 {
     int ret;
-    uint8_t reg, inten, not_inten, mask;
+    uint8_t reg = 0, inten = 0, not_inten = 0, mask = 0;
 
     while (true) {