Home | History | Annotate | Download | only in core

Lines Matching refs:state

53 static void spiMasterNext(struct SpiDeviceState *state);
54 static void spiMasterStop(struct SpiDeviceState *state);
55 static void spiMasterDone(struct SpiDeviceState *state, int err);
57 static void spiSlaveNext(struct SpiDeviceState *state);
58 static void spiSlaveIdle(struct SpiDeviceState *state, int err);
59 static void spiSlaveDone(struct SpiDeviceState *state);
61 static int spiMasterStart(struct SpiDeviceState *state,
64 struct SpiDevice *dev = &state->dev;
75 return dev->ops->masterRxTx(dev, state->packets[0].rxBuf,
76 state->packets[0].txBuf, state->packets[0].size, mode);
81 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
83 spiMasterDone(state, err);
85 spiMasterNext(state);
93 static void spiMasterNext(struct SpiDeviceState *state)
95 struct SpiDevice *dev = &state->dev;
97 if (state->currentBuf == state->n) {
98 spiMasterStop(state);
102 size_t i = state->currentBuf;
103 void *rxBuf = state->packets[i].rxBuf;
104 const void *txBuf = state->packets[i].txBuf;
105 size_t size = state->packets[i].size;
106 const struct SpiMode *mode = &state->mode;
110 spiMasterDone(state, err);
115 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
117 spiMasterDone(state, err);
119 size_t i = state->currentBuf++;
121 if (state->packets[i].delay > 0) {
122 if (!timTimerSet(state->packets[i].delay, 0, 50, spiDelayCallback, state, true)) {
124 spiMasterDone(state, -ENOMEM); // should be out of timer; out of mem is close enough
127 spiMasterNext(state);
132 static void spiMasterStop(struct SpiDeviceState *state)
134 struct SpiDevice *dev = &state->dev;
138 spiMasterDone(state, err);
142 spiMasterDone(state, err);
144 spiMasterDone(state, 0);
150 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
151 spiMasterDone(state, err);
154 static void spiMasterDone(struct SpiDeviceState *state, int err)
156 SpiCbkF callback = state->rxTxCallback;
157 void *cookie = state->rxTxCookie;
159 uint16_t oldTid = osSetCurrentTid(state->tid);
164 static int spiSlaveStart(struct SpiDeviceState *state,
167 struct SpiDevice *dev = &state->dev;
183 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
186 state->err = err;
188 state->err = dev->ops->slaveIdle(dev, &state->mode);
193 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
196 spiSlaveIdle(state, err);
198 state->currentBuf++;
199 spiSlaveNext(state);
205 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
209 if (!state->finishCallback) {
214 SpiCbkF callback = state->finishCallback;
215 void *cookie = state->finishCookie;
216 state->finishCallback = NULL;
217 state->finishCookie = NULL;
219 uint16_t oldTid = osSetCurrentTid(state->tid);
224 static void spiSlaveNext(struct SpiDeviceState *state)
226 struct SpiDevice *dev = &state->dev;
228 if (state->currentBuf == state->n) {
229 spiSlaveIdle(state, 0);
233 size_t i = state->currentBuf;
234 void *rxBuf = state->packets[i].rxBuf;
235 const void *txBuf = state->packets[i].txBuf;
236 size_t size = state->packets[i].size;
237 const struct SpiMode *mode = &state->mode;
241 spiSlaveIdle(state, err);
244 static void spiSlaveIdle(struct SpiDeviceState *state, int err)
246 struct SpiDevice *dev = &state->dev;
247 SpiCbkF callback = state->rxTxCallback;
248 void *cookie = state->rxTxCookie;
251 err = dev->ops->slaveIdle(dev, &state->mode);
253 uint16_t oldTid = osSetCurrentTid(state->tid);
260 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
261 spiSlaveDone(state);
264 static void spiSlaveDone(struct SpiDeviceState *state)
266 struct SpiDevice *dev = &state->dev;
270 heapFree(state);
273 static int spiSetupRxTx(struct SpiDeviceState *state,
277 state->packets = packets;
278 state->n = n;
279 state->currentBuf = 0;
280 state->rxTxCallback = callback;
281 state->rxTxCookie = cookie;
282 state->tid = osGetCurrentTid();
291 struct SpiDeviceState *state = heapAlloc(sizeof(*state));
292 if (!state)
294 struct SpiDevice *dev = &state->dev;
312 heapFree(state);
321 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
327 ret = spiSetupRxTx(state, packets, n, callback, cookie);
331 state->mode = *mode;
333 return spiMasterStart(state, cs, mode);
338 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
346 heapFree(state);
355 struct SpiDeviceState *state = heapAlloc(sizeof(*state));
356 if (!state)
358 struct SpiDevice *dev = &state->dev;
369 state->mode = *mode;
370 state->err = 0;
372 ret = spiSlaveStart(state, mode);
383 heapFree(state);
391 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
396 if (state->err)
397 return state->err;
399 int ret = spiSetupRxTx(state, packets, n, callback, cookie);
403 return dev->ops->slaveRxTx(dev, state->packets[0].rxBuf,
404 state->packets[0].txBuf, state->packets[0].size, &state->mode);
410 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
415 state->finishCallback = callback;
416 state->finishCookie = cookie;
439 state->finishCallback = NULL;
440 state->finishCookie = NULL;
451 struct SpiDeviceState *state = SPI_DEVICE_TO_STATE(dev);
462 spiSlaveDone(state);