diff --git a/drivers/power/stc3117_battery.c b/drivers/power/stc3117_battery.c
index cf2e90184af832a6e52cceccbc54ab521aaca533..6eb0cccf7328ef427cdcc3ad77c35e90a0c5307b 100755
--- a/drivers/power/stc3117_battery.c
+++ b/drivers/power/stc3117_battery.c
@@ -862,6 +862,7 @@ static int STC311x_Startup(void)
  * Input          : None
  * Return         :
  *****************************************************************************/
+#define HRSOC_1_PERCENT (MAX_HRSOC/100)
 static int STC311x_Restore(void)
 {
 	int res;
@@ -878,7 +879,7 @@ static int STC311x_Restore(void)
 
 	STC311x_SetParam();  /* set parameters  */
 
-	reg_soc = (STC31xx_ReadWord(STC311x_REG_SOC)/512);
+	reg_soc = (STC31xx_ReadWord(STC311x_REG_SOC)/HRSOC_1_PERCENT);
 	ram_hrsoc = (GG_Ram.reg.HRSOC);
 	pr_info("STC311x_Restore-reg_soc:%d, ram_HRSOC:%d \n", reg_soc, ram_hrsoc);
 	pr_info("STC311x_Restore-GG_status: %c, GG_Ram.reg.SOC: %d \n", GG_Ram.reg.GG_Status,GG_Ram.reg.SOC);
@@ -888,7 +889,8 @@ static int STC311x_Restore(void)
 		if (GG_Ram.reg.SOC != 0) {
 			/*   restore SOC */
 			STC31xx_WriteWord(STC311x_REG_SOC, GG_Ram.reg.HRSOC);
-		}
+		} else
+			STC31xx_WriteWord(STC311x_REG_SOC, HRSOC_1_PERCENT);
 	}
 
 	/* rewrite ocv to start SOC with updated OCV curve*/