From 5b16a0eba0d76f468bec4f5abb8f3cc958254fce Mon Sep 17 00:00:00 2001 From: liuyc20 Date: Mon, 30 Aug 2021 19:30:08 +0800 Subject: [PATCH] power: add detect sd77624 ic hw if detect sd77426 hw fail then exit this driver. To Compatible with other FG drivers. Change-Id: I7a27a403965f9df9a350481a2107bf93cfa7f91c Signed-off-by: liuyc20 Reviewed-on: https://gerrit.mot.com/2054354 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Haijian Ma Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- drivers/power/sd77426_fg_mmi/oz8806_battery.c | 39 +++++++++++++++++++ drivers/power/sd77426_fg_mmi/parameter.h | 1 + 2 files changed, 40 insertions(+) diff --git a/drivers/power/sd77426_fg_mmi/oz8806_battery.c b/drivers/power/sd77426_fg_mmi/oz8806_battery.c index 5e66715f699f..2f07865217bd 100644 --- a/drivers/power/sd77426_fg_mmi/oz8806_battery.c +++ b/drivers/power/sd77426_fg_mmi/oz8806_battery.c @@ -944,6 +944,36 @@ static int oz8806_suspend_notifier(struct notifier_block *nb, return NOTIFY_DONE; } } + +static int32_t oz8806_hw_ic_detect(struct oz8806_data *data) +{ + + uint8_t chip_id = 0; + int32_t ret = 0; + int32_t i = 0; + + for(i=0; i<5; i++) + { + ret = i2c_smbus_read_word_data(data->myclient, OZ8806_OP_IDREV); + if(ret >= 0) + { + bmt_dbg("BMT fgu read chip id value 0x%.2x\n",ret); + break; + } + msleep(5); + } + if(i >= 5) + { + bmt_dbg("BMT fgu hw ic not detect, reg value 0x%.2x\n",ret); + return -1; + } + chip_id = (uint8_t)ret; + if(OZ8806_CHIP_ID != chip_id) + return -1; + + return 0; +} + static void oz8806_init_soc(struct oz8806_data *data) { int32_t ret = 0; @@ -1382,8 +1412,17 @@ static int oz8806_probe(struct i2c_client *client,const struct i2c_device_id *id the_oz8806 = data; data->myclient = client; + + ret = oz8806_hw_ic_detect(data); + if(ret < 0) + { + pr_err("BMT fgu do not detect ic, exit\n"); + goto register_fail; + } + //init battery information as soon as possible oz8806_wakeup_full_power(); + oz8806_init_batt_info(data); INIT_DELAYED_WORK(&data->work, oz8806_battery_work); diff --git a/drivers/power/sd77426_fg_mmi/parameter.h b/drivers/power/sd77426_fg_mmi/parameter.h index ec6e99597caa..ab7913ae2f29 100644 --- a/drivers/power/sd77426_fg_mmi/parameter.h +++ b/drivers/power/sd77426_fg_mmi/parameter.h @@ -35,6 +35,7 @@ #define DISCH_CURRENT_TH -10 #define O2_OCV_100_VOLTAGE 8700 #define TEMPERATURE_DATA_NUM 28 +#define OZ8806_CHIP_ID 0x38 #define num_0 0 #define num_1 1