summaryrefslogtreecommitdiffstats
path: root/Linux_x86
diff options
context:
space:
mode:
authorNick Pelly <npelly@google.com>2011-10-25 10:05:20 -0700
committerEd Heyl <ed@google.com>2011-10-25 20:36:00 +0000
commitb13b27aa9bb96897e996cf89ed8412c46ef2cf07 (patch)
tree09523ff87feb3ef06c5f13264597576d4eff3070 /Linux_x86
parentff39bc6d4fb3fa08fc55721a8962c713751fca09 (diff)
downloadexternal_libnfc-nxp-b13b27aa9bb96897e996cf89ed8412c46ef2cf07.zip
external_libnfc-nxp-b13b27aa9bb96897e996cf89ed8412c46ef2cf07.tar.gz
external_libnfc-nxp-b13b27aa9bb96897e996cf89ed8412c46ef2cf07.tar.bz2
Use a 10s timeout in uart_read() in FW download mode.
This provides a path to flush RX, necessary when we enter FW download mode with bogus data already in RX. This fixes a problem where NFC was dead on several HSPA and LTE devices. Also decrease FW timeout completition from 120s to 60s. Typically FW download takes 30s, and 120 is unnecessarily large and causes a long delay to bring up NFC when we need to retry FW. Bug: 5468674 Change-Id: I0fd40c199daac861fe5acda4f2d214bdcff8e869
Diffstat (limited to 'Linux_x86')
-rw-r--r--Linux_x86/phDal4Nfc_uart.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Linux_x86/phDal4Nfc_uart.c b/Linux_x86/phDal4Nfc_uart.c
index 7ff9c4c..a2f6db3 100644
--- a/Linux_x86/phDal4Nfc_uart.c
+++ b/Linux_x86/phDal4Nfc_uart.c
@@ -342,7 +342,7 @@ int phDal4Nfc_uart_read(uint8_t * pBuffer, int nNbBytesToRead)
read_property();
// Read timeout:
- // FW mode: no timeout
+ // FW mode: 10s timeout
// 1 byte read: steady-state LLC length read, allowed to block forever
// >1 byte read: LLC payload, 100ms timeout (before pn544 re-transmit)
if (nNbBytesToRead > 1 && !libnfc_firmware_mode) {
@@ -353,6 +353,10 @@ int phDal4Nfc_uart_read(uint8_t * pBuffer, int nNbBytesToRead)
timeout.tv_nsec -= 1000000000;
}
ptv = &tv;
+ } else if (libnfc_firmware_mode) {
+ clock_gettime(CLOCK_MONOTONIC, &timeout);
+ timeout.tv_sec += 10;
+ ptv = &tv;
} else {
ptv = NULL;
}