18 #ifndef _RTDM_SPI_MASTER_H 19 #define _RTDM_SPI_MASTER_H 22 #include <rtdm/uapi/spi.h> 23 #include "spi-device.h" 27 struct rtdm_spi_master;
30 struct rtdm_spi_master_ops {
31 int (*open)(
struct rtdm_spi_remote_slave *slave);
32 void (*close)(
struct rtdm_spi_remote_slave *slave);
33 int (*configure)(
struct rtdm_spi_remote_slave *slave);
34 void (*chip_select)(
struct rtdm_spi_remote_slave *slave,
36 int (*set_iobufs)(
struct rtdm_spi_remote_slave *slave,
37 struct rtdm_spi_iobufs *p);
38 int (*mmap_iobufs)(
struct rtdm_spi_remote_slave *slave,
39 struct vm_area_struct *vma);
40 void (*mmap_release)(
struct rtdm_spi_remote_slave *slave);
41 int (*transfer_iobufs)(
struct rtdm_spi_remote_slave *slave);
42 int (*transfer_iobufs_n)(
struct rtdm_spi_remote_slave *slave,
int len);
43 ssize_t (*write)(
struct rtdm_spi_remote_slave *slave,
44 const void *tx,
size_t len);
45 ssize_t (*read)(
struct rtdm_spi_remote_slave *slave,
46 void *rx,
size_t len);
47 struct rtdm_spi_remote_slave *(*attach_slave)
48 (
struct rtdm_spi_master *master,
49 struct spi_device *spi);
50 void (*detach_slave)(
struct rtdm_spi_remote_slave *slave);
53 struct rtdm_spi_master {
55 const struct rtdm_spi_master_ops *ops;
56 struct spi_master *kmaster;
59 struct class *devclass;
61 struct list_head slaves;
62 struct list_head next;
64 rtdm_mutex_t bus_lock;
65 struct rtdm_spi_remote_slave *cs;
69 #define rtdm_spi_alloc_master(__dev, __type, __mptr) \ 70 __rtdm_spi_alloc_master(__dev, sizeof(__type), \ 71 offsetof(__type, __mptr)) \ 73 struct rtdm_spi_master *
74 __rtdm_spi_alloc_master(
struct device *dev,
size_t size,
int off);
76 int __rtdm_spi_setup_driver(
struct rtdm_spi_master *master);
78 int rtdm_spi_add_master(
struct rtdm_spi_master *master);
80 void rtdm_spi_remove_master(
struct rtdm_spi_master *master);
ipipe_spinlock_t rtdm_lock_t
Lock variable.
Definition: driver.h:551
Real-Time Driver Model for Xenomai, driver API header.
RTDM driver.
Definition: driver.h:249