25
25
#include "bus/bus_debug.h"
26
26
#include "bus/drivers/spi_hal.h"
27
27
28
+ static void
29
+ bus_spi_set_cs (struct bus_spi_node * node , int value )
30
+ {
31
+ if (node -> pin_cs >= 0 ) {
32
+ hal_gpio_write (node -> pin_cs , value );
33
+ }
34
+ }
35
+
28
36
static int
29
37
bus_spi_init_node (struct bus_dev * bdev , struct bus_node * bnode , void * arg )
30
38
{
@@ -39,7 +47,9 @@ bus_spi_init_node(struct bus_dev *bdev, struct bus_node *bnode, void *arg)
39
47
node -> freq = cfg -> freq ;
40
48
node -> quirks = cfg -> quirks ;
41
49
42
- hal_gpio_init_out (node -> pin_cs , 1 );
50
+ if (node -> pin_cs >= 0 ) {
51
+ hal_gpio_init_out (node -> pin_cs , 1 );
52
+ }
43
53
44
54
return 0 ;
45
55
}
@@ -137,7 +147,7 @@ bus_spi_read(struct bus_dev *bdev, struct bus_node *bnode, uint8_t *buf,
137
147
BUS_DEBUG_VERIFY_DEV (& dev -> spi_dev );
138
148
BUS_DEBUG_VERIFY_NODE (node );
139
149
140
- hal_gpio_write (node -> pin_cs , 0 );
150
+ bus_spi_set_cs (node , 0 );
141
151
142
152
/* Use output buffer as input to generate SPI clock.
143
153
* For security mostly, do not output random data, fill it with 0xFF.
@@ -154,7 +164,7 @@ bus_spi_read(struct bus_dev *bdev, struct bus_node *bnode, uint8_t *buf,
154
164
#endif
155
165
156
166
if (rc || !(flags & BUS_F_NOSTOP )) {
157
- hal_gpio_write (node -> pin_cs , 1 );
167
+ bus_spi_set_cs (node , 1 );
158
168
}
159
169
160
170
return rc ;
@@ -171,7 +181,7 @@ bus_spi_write(struct bus_dev *bdev, struct bus_node *bnode, const uint8_t *buf,
171
181
BUS_DEBUG_VERIFY_DEV (& dev -> spi_dev );
172
182
BUS_DEBUG_VERIFY_NODE (node );
173
183
174
- hal_gpio_write (node -> pin_cs , 0 );
184
+ bus_spi_set_cs (node , 0 );
175
185
176
186
/* XXX update HAL to accept const instead */
177
187
@@ -185,7 +195,7 @@ bus_spi_write(struct bus_dev *bdev, struct bus_node *bnode, const uint8_t *buf,
185
195
#endif
186
196
187
197
if (rc || !(flags & BUS_F_NOSTOP )) {
188
- hal_gpio_write (node -> pin_cs , 1 );
198
+ bus_spi_set_cs (node , 1 );
189
199
}
190
200
191
201
return rc ;
@@ -205,7 +215,7 @@ bus_spi_write_read(struct bus_dev *bdev, struct bus_node *bnode,
205
215
BUS_DEBUG_VERIFY_DEV (& dev -> spi_dev );
206
216
BUS_DEBUG_VERIFY_NODE (node );
207
217
208
- hal_gpio_write (node -> pin_cs , 0 );
218
+ bus_spi_set_cs (node , 0 );
209
219
210
220
/* XXX update HAL to accept const instead */
211
221
@@ -246,7 +256,7 @@ bus_spi_write_read(struct bus_dev *bdev, struct bus_node *bnode,
246
256
#endif
247
257
248
258
if (rc || !(flags & BUS_F_NOSTOP )) {
249
- hal_gpio_write (node -> pin_cs , 1 );
259
+ bus_spi_set_cs (node , 1 );
250
260
}
251
261
252
262
return rc ;
@@ -264,7 +274,7 @@ bus_spi_duplex_write_read(struct bus_dev *bdev, struct bus_node *bnode,
264
274
BUS_DEBUG_VERIFY_DEV (& dev -> spi_dev );
265
275
BUS_DEBUG_VERIFY_NODE (node );
266
276
267
- hal_gpio_write (node -> pin_cs , 0 );
277
+ bus_spi_set_cs (node , 0 );
268
278
269
279
#if MYNEWT_VAL (SPI_HAL_USE_NOBLOCK )
270
280
rc = hal_spi_txrx_noblock (dev -> spi_dev .cfg .spi_num , (uint8_t * )wbuf , rbuf , length );
@@ -276,7 +286,7 @@ bus_spi_duplex_write_read(struct bus_dev *bdev, struct bus_node *bnode,
276
286
#endif
277
287
278
288
if (rc || !(flags & BUS_F_NOSTOP )) {
279
- hal_gpio_write (node -> pin_cs , 1 );
289
+ bus_spi_set_cs (node , 1 );
280
290
}
281
291
282
292
return rc ;
0 commit comments