mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
goodix_gtx8_v1430_mmi: update fw in moto touch script.
TP: Do not update firmware when boot up if touchscreen_mmi is used. Let moto touch script to handle firmware update work. Change-Id: I6d0a7150cf6eb8be81d78b92885a8bf54327e13d Signed-off-by: haojl2 <haojl2@motorola.com> Reviewed-on: https://gerrit.mot.com/1468526 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Reviewed-by: Jianqi Yang <yangj@motorola.com> Submit-Approved: Jira Key Tested-by: Jira Key
This commit is contained in:
parent
77189b4068
commit
15670cff8d
5 changed files with 41 additions and 2 deletions
|
|
@ -526,14 +526,22 @@ static int goodix_later_init_thread(void *data)
|
|||
ts_err("failed get valid config data, retry after fwupdate");
|
||||
if (!ts_core->do_fw_update) {
|
||||
ts_err("fw update handler not ready.");
|
||||
#ifdef CONFIG_INPUT_TOUCHSCREEN_MMI
|
||||
goto update_fw_later;
|
||||
#else
|
||||
goto release_core;
|
||||
#endif
|
||||
}
|
||||
ret = ts_core->do_fw_update(UPDATE_MODE_BLOCK|UPDATE_MODE_FORCE|
|
||||
UPDATE_MODE_FLASH_CFG|
|
||||
UPDATE_MODE_SRC_REQUEST);
|
||||
if (ret) {
|
||||
ts_err("fw update failed, %d", ret);
|
||||
#ifdef CONFIG_INPUT_TOUCHSCREEN_MMI
|
||||
goto update_fw_later;
|
||||
#else
|
||||
goto release_core;
|
||||
#endif
|
||||
}
|
||||
ts_info("fw update success retry parse cfg bin");
|
||||
ret = goodix_cfg_bin_proc(ts_core);
|
||||
|
|
@ -541,6 +549,9 @@ static int goodix_later_init_thread(void *data)
|
|||
ts_err("failed parse cfg bin after fw update");
|
||||
goto release_core;
|
||||
}
|
||||
#ifdef CONFIG_INPUT_TOUCHSCREEN_MMI
|
||||
goto stage2_init;
|
||||
#endif
|
||||
} else {
|
||||
ts_info("success parse config bin");
|
||||
if (ts_core->do_fw_update) {
|
||||
|
|
@ -548,11 +559,19 @@ static int goodix_later_init_thread(void *data)
|
|||
UPDATE_MODE_FLASH_CFG|
|
||||
UPDATE_MODE_SRC_REQUEST);
|
||||
if (ret) {
|
||||
ts_err("fw update failed, %d[ignore]", ret);
|
||||
ts_info("fw update failed, %d[ignore]", ret);
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_INPUT_TOUCHSCREEN_MMI
|
||||
goto stage2_init;
|
||||
#endif
|
||||
}
|
||||
#ifdef CONFIG_INPUT_TOUCHSCREEN_MMI
|
||||
update_fw_later:
|
||||
ts_core->ts_mmi_info.need_reflash = 1;
|
||||
stage2_init:
|
||||
#endif
|
||||
ret = goodix_ts_stage2_init(ts_core);
|
||||
if (!ret) {
|
||||
ts_info("stage2 init success");
|
||||
|
|
|
|||
|
|
@ -1533,11 +1533,13 @@ static int goodix_fw_update_init(struct goodix_ts_core *core_data,
|
|||
goodix_fw_update_ctrl.initialized = 1;
|
||||
err_out:
|
||||
mutex_unlock(&goodix_fw_update_ctrl.mutex);
|
||||
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
|
||||
if (!ret) {
|
||||
goodix_do_fw_update(UPDATE_MODE_SRC_REQUEST);
|
||||
if (ret)
|
||||
ts_err("fw update failed, %d", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -417,6 +417,7 @@ struct goodix_ts_esd {
|
|||
struct goodix_ts_mmi {
|
||||
struct notifier_block mmi_notifier;
|
||||
int update_status;
|
||||
int need_reflash;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -1337,10 +1337,23 @@ static int goodix_request_handler(struct goodix_ts_device *dev)
|
|||
break;
|
||||
case REQUEST_RELOADFW:
|
||||
ts_info("HW request reload fw");
|
||||
#ifdef CONFIG_INPUT_TOUCHSCREEN_MMI
|
||||
if (core_data && core_data->do_fw_update) {
|
||||
r = core_data->do_fw_update(UPDATE_MODE_FORCE|UPDATE_MODE_SRC_REQUEST);
|
||||
if (r) {
|
||||
ts_err("fw update failed, %d[try later]", r);
|
||||
core_data->ts_mmi_info.need_reflash = 1;
|
||||
}
|
||||
} else {
|
||||
ts_err("fw update handler not ready [try later].");
|
||||
core_data->ts_mmi_info.need_reflash = 1;
|
||||
}
|
||||
#else
|
||||
if (core_data && core_data->do_fw_update)
|
||||
core_data->do_fw_update(UPDATE_MODE_FORCE|UPDATE_MODE_SRC_REQUEST);
|
||||
else
|
||||
ts_err("fw update handler not ready.");
|
||||
#endif
|
||||
break;
|
||||
case REQUEST_IDLE:
|
||||
ts_info("HW request idle");
|
||||
|
|
|
|||
|
|
@ -110,7 +110,10 @@ static int goodix_ts_mmi_methods_get_flashprog(struct device *dev, void *idata)
|
|||
ts_err("Failed to get driver data");
|
||||
return -ENODEV;
|
||||
}
|
||||
TO_INT(idata) = core_data->ts_mmi_info.update_status;
|
||||
if (core_data->ts_mmi_info.need_reflash)
|
||||
TO_INT(idata) = 1;
|
||||
else
|
||||
TO_INT(idata) = core_data->ts_mmi_info.update_status;
|
||||
return 0;
|
||||
}
|
||||
static int goodix_ts_mmi_methods_drv_irq(struct device *dev, int state) {
|
||||
|
|
@ -168,6 +171,7 @@ static int goodix_ts_firmware_update(struct device *dev, char *fwname) {
|
|||
ts_err("fw update handler not ready.");
|
||||
return -EFAULT;
|
||||
}
|
||||
core_data->ts_mmi_info.need_reflash = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue