Lines Matching refs:bus
26 extern rt_err_t rt_spi_bus_device_init(struct rt_spi_bus *bus, const char *name);
29 rt_err_t spi_bus_register(struct rt_spi_bus *bus, in spi_bus_register() argument
35 result = rt_spi_bus_device_init(bus, name); in spi_bus_register()
40 rt_mutex_init(&(bus->lock), name, RT_IPC_FLAG_PRIO); in spi_bus_register()
42 bus->ops = ops; in spi_bus_register()
44 bus->owner = RT_NULL; in spi_bus_register()
47 if (!bus->slave) in spi_bus_register()
49 int pin_count = rt_pin_get_named_pin_count(&bus->parent, "cs"); in spi_bus_register()
53 pin_count = rt_max_t(int, pin_count, bus->num_chipselect); in spi_bus_register()
57 bus->cs_pins[i] = rt_pin_get_named_pin(&bus->parent, "cs", i, in spi_bus_register()
58 RT_NULL, &bus->cs_active_vals[i]); in spi_bus_register()
67 rt_device_unregister(&bus->parent); in spi_bus_register()
72 spi_bus_scan_devices(bus); in spi_bus_register()
78 rt_err_t rt_spi_bus_register(struct rt_spi_bus *bus, in rt_spi_bus_register() argument
83 bus->mode = RT_SPI_BUS_MODE_SPI; in rt_spi_bus_register()
85 return spi_bus_register(bus, name, ops); in rt_spi_bus_register()
95 rt_device_t bus; in rt_spi_bus_attach_device_cspin() local
98 bus = rt_device_find(bus_name); in rt_spi_bus_attach_device_cspin()
99 if (bus != RT_NULL && bus->type == RT_Device_Class_SPIBUS) in rt_spi_bus_attach_device_cspin()
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()
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()
161 rt_mutex_release(&(device->bus->lock)); in rt_spi_bus_configure()
181 rt_err_t result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); in rt_spi_configure()
192 rt_mutex_release(&(device->bus->lock)); in rt_spi_configure()
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()
256 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_send()
271 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_send()
286 rt_mutex_release(&(device->bus->lock)); in rt_spi_send_then_send()
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()
331 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_recv()
346 result = device->bus->ops->xfer(device, &message); in rt_spi_send_then_recv()
361 rt_mutex_release(&(device->bus->lock)); in rt_spi_send_then_recv()
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()
406 result = device->bus->ops->xfer(device, &message); in rt_spi_transfer()
419 rt_mutex_release(&(device->bus->lock)); in rt_spi_transfer()
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()
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()
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()
574 RT_ASSERT(device->bus != RT_NULL); in rt_spi_take()
579 result = device->bus->ops->xfer(device, &message); in rt_spi_take()
594 RT_ASSERT(device->bus != RT_NULL); in rt_spi_release()
599 result = device->bus->ops->xfer(device, &message); in rt_spi_release()