summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Xu <pengxu@google.com>2016-07-07 11:56:01 -0700
committergitbuildkicker <android-build@google.com>2016-07-21 16:17:25 -0700
commitfe673380aeae5fabbe3ec981f2f3aaadc578d588 (patch)
tree45a71331bc31d33beaa702efd847d1c0d3e624d3
parent2f784aec07f9932f25a1915e0390ed59b1a4cfe6 (diff)
downloadcontexthub-android-cts-7.0_r10.tar.gz
Bug: 29625330 Change-Id: I5567363e9111f0879784707bc681685ddbd0d91e
-rw-r--r--firmware/src/spi.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/firmware/src/spi.c b/firmware/src/spi.c
index fb28d47a..afa58a3e 100644
--- a/firmware/src/spi.c
+++ b/firmware/src/spi.c
@@ -23,6 +23,14 @@
#include <spi_priv.h>
#include <timer.h>
+#define INFO_PRINT(fmt, ...) do { \
+ osLog(LOG_INFO, "%s " fmt, "[spi]", ##__VA_ARGS__); \
+ } while (0);
+
+#define ERROR_PRINT(fmt, ...) do { \
+ osLog(LOG_ERROR, "%s " fmt, "[spi] ERROR:", ##__VA_ARGS__); \
+ } while (0);
+
struct SpiDeviceState {
struct SpiDevice dev;
@@ -109,10 +117,14 @@ void spiMasterRxTxDone(struct SpiDevice *dev, int err)
} else {
size_t i = state->currentBuf++;
- if (state->packets[i].delay > 0)
- timTimerSet(state->packets[i].delay, 0, 50, spiDelayCallback, state, true);
- else
+ if (state->packets[i].delay > 0) {
+ if (!timTimerSet(state->packets[i].delay, 0, 50, spiDelayCallback, state, true)) {
+ ERROR_PRINT("Cannot do delayed spi, timer depleted\n");
+ spiMasterDone(state, -ENOMEM); // should be out of timer; out of mem is close enough
+ }
+ } else {
spiMasterNext(state);
+ }
}
}