Lines Matching refs:device
88 rt_err_t rt_spi_bus_attach_device_cspin(struct rt_spi_device *device, in rt_spi_bus_attach_device_cspin() argument
101 device->bus = (struct rt_spi_bus *)bus; in rt_spi_bus_attach_device_cspin()
103 if (device->bus->owner == RT_NULL) in rt_spi_bus_attach_device_cspin()
104 device->bus->owner = device; in rt_spi_bus_attach_device_cspin()
107 result = rt_spidev_device_init(device, name); in rt_spi_bus_attach_device_cspin()
116 rt_memset(&device->config, 0, sizeof(device->config)); in rt_spi_bus_attach_device_cspin()
117 device->parent.user_data = user_data; in rt_spi_bus_attach_device_cspin()
118 device->cs_pin = cs_pin; in rt_spi_bus_attach_device_cspin()
126 rt_err_t rt_spi_bus_attach_device(struct rt_spi_device *device, in rt_spi_bus_attach_device() argument
131 return rt_spi_bus_attach_device_cspin(device, name, bus_name, PIN_NONE, user_data); in rt_spi_bus_attach_device()
134 rt_err_t rt_spi_bus_configure(struct rt_spi_device *device) in rt_spi_bus_configure() argument
138 if (device->bus != RT_NULL) in rt_spi_bus_configure()
140 result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_bus_configure()
143 if (device->bus->owner == device) in rt_spi_bus_configure()
146 result = device->bus->ops->configure(device, &device->config); in rt_spi_bus_configure()
150 LOG_E("SPI device %s configuration failed", device->parent.parent.name); in rt_spi_bus_configure()
161 rt_mutex_release(&(device->bus->lock)); in rt_spi_bus_configure()
172 rt_err_t rt_spi_configure(struct rt_spi_device *device, in rt_spi_configure() argument
175 RT_ASSERT(device != RT_NULL); in rt_spi_configure()
179 if (device->cs_pin != PIN_NONE) in rt_spi_configure()
181 rt_err_t result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_configure()
186 rt_pin_write(device->cs_pin, PIN_LOW); in rt_spi_configure()
190 rt_pin_write(device->cs_pin, PIN_HIGH); in rt_spi_configure()
192 rt_mutex_release(&(device->bus->lock)); in rt_spi_configure()
201 if (device->config.data_width == cfg->data_width && in rt_spi_configure()
202 device->config.mode == (cfg->mode & RT_SPI_MODE_MASK) && in rt_spi_configure()
203 device->config.max_hz == cfg->max_hz) in rt_spi_configure()
209 device->config.data_width = cfg->data_width; in rt_spi_configure()
210 device->config.mode = cfg->mode & RT_SPI_MODE_MASK; in rt_spi_configure()
211 device->config.max_hz = cfg->max_hz; in rt_spi_configure()
213 return rt_spi_bus_configure(device); in rt_spi_configure()
216 rt_err_t rt_spi_send_then_send(struct rt_spi_device *device, in rt_spi_send_then_send() argument
225 RT_ASSERT(device != RT_NULL); in rt_spi_send_then_send()
226 RT_ASSERT(device->bus != RT_NULL); in rt_spi_send_then_send()
228 result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_send_then_send()
231 if (device->bus->owner != device) in rt_spi_send_then_send()
234 result = device->bus->ops->configure(device, &device->config); in rt_spi_send_then_send()
238 device->bus->owner = device; in rt_spi_send_then_send()
243 LOG_E("SPI device %s configuration failed", device->parent.parent.name); in rt_spi_send_then_send()
256 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_send()
259 LOG_E("SPI device %s transfer failed", device->parent.parent.name); in rt_spi_send_then_send()
271 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_send()
274 LOG_E("SPI device %s transfer failed", device->parent.parent.name); in rt_spi_send_then_send()
286 rt_mutex_release(&(device->bus->lock)); in rt_spi_send_then_send()
291 rt_err_t rt_spi_send_then_recv(struct rt_spi_device *device, in rt_spi_send_then_recv() argument
300 RT_ASSERT(device != RT_NULL); in rt_spi_send_then_recv()
301 RT_ASSERT(device->bus != RT_NULL); in rt_spi_send_then_recv()
303 result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_send_then_recv()
306 if (device->bus->owner != device) in rt_spi_send_then_recv()
309 result = device->bus->ops->configure(device, &device->config); in rt_spi_send_then_recv()
313 device->bus->owner = device; in rt_spi_send_then_recv()
318 LOG_E("SPI device %s configuration failed", device->parent.parent.name); in rt_spi_send_then_recv()
331 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_recv()
334 LOG_E("SPI device %s transfer failed", device->parent.parent.name); in rt_spi_send_then_recv()
346 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_recv()
349 LOG_E("SPI device %s transfer failed", device->parent.parent.name); in rt_spi_send_then_recv()
361 rt_mutex_release(&(device->bus->lock)); in rt_spi_send_then_recv()
366 rt_ssize_t rt_spi_transfer(struct rt_spi_device *device, in rt_spi_transfer() argument
374 RT_ASSERT(device != RT_NULL); in rt_spi_transfer()
375 RT_ASSERT(device->bus != RT_NULL); in rt_spi_transfer()
377 result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_transfer()
380 if (device->bus->owner != device) in rt_spi_transfer()
383 result = device->bus->ops->configure(device, &device->config); in rt_spi_transfer()
387 device->bus->owner = device; in rt_spi_transfer()
392 LOG_E("SPI device %s configuration failed", device->parent.parent.name); in rt_spi_transfer()
406 result = device->bus->ops->xfer(device, &message); in rt_spi_transfer()
409 LOG_E("SPI device %s transfer failed", device->parent.parent.name); in rt_spi_transfer()
419 rt_mutex_release(&(device->bus->lock)); in rt_spi_transfer()
424 rt_err_t rt_spi_sendrecv8(struct rt_spi_device *device, in rt_spi_sendrecv8() argument
428 rt_ssize_t len = rt_spi_transfer(device, &senddata, recvdata, 1); in rt_spi_sendrecv8()
439 rt_err_t rt_spi_sendrecv16(struct rt_spi_device *device, in rt_spi_sendrecv16() argument
446 if (device->config.mode & RT_SPI_MSB) in rt_spi_sendrecv16()
452 len = rt_spi_transfer(device, &senddata, recvdata, 2); in rt_spi_sendrecv16()
458 if (device->config.mode & RT_SPI_MSB) in rt_spi_sendrecv16()
467 struct rt_spi_message *rt_spi_transfer_message(struct rt_spi_device *device, in rt_spi_transfer_message() argument
473 RT_ASSERT(device != RT_NULL); in rt_spi_transfer_message()
480 result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_transfer_message()
487 if (device->bus->owner != device) in rt_spi_transfer_message()
490 result = device->bus->ops->configure(device, &device->config); in rt_spi_transfer_message()
494 device->bus->owner = device; in rt_spi_transfer_message()
507 result = device->bus->ops->xfer(device, index); in rt_spi_transfer_message()
518 rt_mutex_release(&(device->bus->lock)); in rt_spi_transfer_message()
523 rt_err_t rt_spi_take_bus(struct rt_spi_device *device) in rt_spi_take_bus() argument
527 RT_ASSERT(device != RT_NULL); in rt_spi_take_bus()
528 RT_ASSERT(device->bus != RT_NULL); in rt_spi_take_bus()
530 result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_take_bus()
537 if (device->bus->owner != device) in rt_spi_take_bus()
540 result = device->bus->ops->configure(device, &device->config); in rt_spi_take_bus()
544 device->bus->owner = device; in rt_spi_take_bus()
549 rt_mutex_release(&(device->bus->lock)); in rt_spi_take_bus()
558 rt_err_t rt_spi_release_bus(struct rt_spi_device *device) in rt_spi_release_bus() argument
560 RT_ASSERT(device != RT_NULL); in rt_spi_release_bus()
561 RT_ASSERT(device->bus != RT_NULL); in rt_spi_release_bus()
562 RT_ASSERT(device->bus->owner == device); in rt_spi_release_bus()
565 return rt_mutex_release(&(device->bus->lock)); in rt_spi_release_bus()
568 rt_err_t rt_spi_take(struct rt_spi_device *device) in rt_spi_take() argument
573 RT_ASSERT(device != RT_NULL); in rt_spi_take()
574 RT_ASSERT(device->bus != RT_NULL); in rt_spi_take()
579 result = device->bus->ops->xfer(device, &message); in rt_spi_take()
588 rt_err_t rt_spi_release(struct rt_spi_device *device) in rt_spi_release() argument
593 RT_ASSERT(device != RT_NULL); in rt_spi_release()
594 RT_ASSERT(device->bus != RT_NULL); in rt_spi_release()
599 result = device->bus->ops->xfer(device, &message); in rt_spi_release()