aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Chiu <david.chiu@tw.synaptics.com>2021-06-11 16:41:54 +0800
committerVincent Huang <vincenthsw@gmail.com>2021-06-18 15:04:11 +0800
commitbfb3cb813d1e539d432db04233bdc7cf82eefb1a (patch)
tree724ef4e92d6429d18385d0bd165179332e701b4c
parent5287a6c8e0612c4d6688c96931dec2223ed48fe2 (diff)
downloadrmi4utils-bfb3cb813d1e539d432db04233bdc7cf82eefb1a.tar.gz
Separate the touchscreen flow from touchpad flow about several wait attention.
-rwxr-xr-xrmi4update/rmi4update.cpp75
1 files changed, 44 insertions, 31 deletions
diff --git a/rmi4update/rmi4update.cpp b/rmi4update/rmi4update.cpp
index 19eadb5..ca05887 100755
--- a/rmi4update/rmi4update.cpp
+++ b/rmi4update/rmi4update.cpp
@@ -718,13 +718,16 @@ int RMI4Update::WriteFirmwareV7()
free(data_temp);
} while (left_bytes);
- // Sleep 100 ms and wait for attention.
- Sleep(100);
- rc = WaitForIdle(RMI_F34_IDLE_WAIT_MS, false);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
+ // Sleep 100 ms and wait for attention for touchpad only.
+ Sleep(100);
+ rc = WaitForIdle(RMI_F34_IDLE_WAIT_MS, false);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ }
}
+
//Wait for completion
do {
@@ -829,11 +832,13 @@ int RMI4Update::WriteCoreConfigV7()
free(data_temp);
} while (left_bytes);
- // Wait for attention.
- rc = WaitForIdle(RMI_F34_IDLE_WAIT_MS, false);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
+ // Wait for attention for touchpad only.
+ rc = WaitForIdle(RMI_F34_IDLE_WAIT_MS, false);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ }
}
//Wait for completion
@@ -943,11 +948,13 @@ int RMI4Update::WriteFlashConfigV7()
free(data_temp);
} while (left_bytes);
- // Wair for attention.
- rc = WaitForIdle(RMI_F34_IDLE_WAIT_MS, false);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
+ // Wair for attention for touchpad only.
+ rc = WaitForIdle(RMI_F34_IDLE_WAIT_MS, false);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ }
}
//Wait for completion
@@ -1012,11 +1019,13 @@ int RMI4Update::EraseFirmwareV7()
//Wait from ATTN
if(m_bootloaderID[1] == 8){
- // Wait for attention for BL8 device.
- rc = WaitForIdle(RMI_F34_ERASE_V8_WAIT_MS, false);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
+ // Wait for attention for BL8 touchpad.
+ rc = WaitForIdle(RMI_F34_ERASE_V8_WAIT_MS, false);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ }
}
}
do {
@@ -1050,13 +1059,15 @@ int RMI4Update::EraseFirmwareV7()
if (rc != sizeof(erase_cmd))
return UPDATE_FAIL_WRITE_F01_CONTROL_0;
- //Wait from ATTN
- Sleep(100);
+ if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
+ //Wait from ATTN for touchpad only.
+ Sleep(100);
- rc = WaitForIdle(RMI_F34_ERASE_WAIT_MS, true);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ rc = WaitForIdle(RMI_F34_ERASE_WAIT_MS, true);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ }
}
@@ -1103,10 +1114,12 @@ int RMI4Update::EnterFlashProgrammingV7()
if (rc != sizeof(EnterCmd))
return UPDATE_FAIL_WRITE_F01_CONTROL_0;
- rc = WaitForIdle(RMI_F34_ENABLE_WAIT_MS, false);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
+ rc = WaitForIdle(RMI_F34_ENABLE_WAIT_MS, false);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return UPDATE_FAIL_TIMEOUT_WAITING_FOR_ATTN;
+ }
}
//Wait from ATTN