diff options
| author | Jizhou Liao <jizhou.liao@nxp.com> | 2018-12-21 11:26:07 -0800 |
|---|---|---|
| committer | Jizhou Liao <jizhou.liao@nxp.com> | 2018-12-21 11:26:07 -0800 |
| commit | 2b8d876e4e5acf47299bdb5b3f7f2738b9de6252 (patch) | |
| tree | e309a3c8acfdc3ee9bb79836e5a226312dafd177 /halimpl | |
| parent | 5023739280f82fd773713912b59a910454b0d443 (diff) | |
| download | android_hardware_nxp_nfc-2b8d876e4e5acf47299bdb5b3f7f2738b9de6252.tar.gz android_hardware_nxp_nfc-2b8d876e4e5acf47299bdb5b3f7f2738b9de6252.tar.bz2 android_hardware_nxp_nfc-2b8d876e4e5acf47299bdb5b3f7f2738b9de6252.zip | |
Fix NFC continuous crash after nci command timeout
Unblock semaphone in case of nci write command timeout
or the response buffer is corrupted.
Bug: 120646857
Test: VTS, NFC ON/OFF, NCI command timeout with PNSCR tool
Change-Id: Ib9659ae6d4f702c170e72bf5c9ecffe65303cc7b
Diffstat (limited to 'halimpl')
| -rwxr-xr-x | halimpl/hal/phNxpNciHal.cc | 6 | ||||
| -rwxr-xr-x | halimpl/hal/phNxpNciHal_ext.cc | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/halimpl/hal/phNxpNciHal.cc b/halimpl/hal/phNxpNciHal.cc index d798f0c..51375ef 100755 --- a/halimpl/hal/phNxpNciHal.cc +++ b/halimpl/hal/phNxpNciHal.cc @@ -2076,7 +2076,11 @@ int phNxpNciHal_close(bool bShutdown) { CONCURRENCY_LOCK(); - + int sem_val; + sem_getvalue(&(nxpncihal_ctrl.syncSpiNfc), &sem_val); + if(sem_val == 0 ) { + sem_post(&(nxpncihal_ctrl.syncSpiNfc)); + } if(!bShutdown){ status = phNxpNciHal_send_ext_cmd(sizeof(cmd_ven_disable_nci), cmd_ven_disable_nci); if(status != NFCSTATUS_SUCCESS) { diff --git a/halimpl/hal/phNxpNciHal_ext.cc b/halimpl/hal/phNxpNciHal_ext.cc index 646a07b..da74afa 100755 --- a/halimpl/hal/phNxpNciHal_ext.cc +++ b/halimpl/hal/phNxpNciHal_ext.cc @@ -915,6 +915,7 @@ static void hal_extns_write_rsp_timeout_cb(uint32_t timerId, void* pContext) { NXPLOG_NCIHAL_E("hal_extns_write_rsp_timeout_cb - write timeout!!!"); nxpncihal_ctrl.ext_cb_data.status = NFCSTATUS_FAILED; usleep(1); + sem_post(&(nxpncihal_ctrl.syncSpiNfc)); SEM_POST(&(nxpncihal_ctrl.ext_cb_data)); return; |
