29 #ifndef M2M_M2MB_SPI_API_H
30 #define M2M_M2MB_SPI_API_H
39 enum M2MB_SPI_IOCTL_REQUEST
41 M2MB_SPI_IOCTL_SET_CFG = 0,
42 M2MB_SPI_IOCTL_GET_CFG,
43 M2MB_SPI_IOCTL_SET_SHIFT_MODE,
44 M2MB_SPI_IOCTL_GET_SHIFT_MODE,
45 M2MB_SPI_IOCTL_SET_CS_POLARITY,
46 M2MB_SPI_IOCTL_GET_CS_POLARITY,
47 M2MB_SPI_IOCTL_SET_CS_MODE,
48 M2MB_SPI_IOCTL_GET_CS_MODE,
49 M2MB_SPI_IOCTL_SET_BYTE_ORDER,
50 M2MB_SPI_IOCTL_GET_BYTE_ORDER,
51 M2MB_SPI_IOCTL_SET_CALLBACK_FN,
52 M2MB_SPI_IOCTL_GET_CALLBACK_FN,
53 M2MB_SPI_IOCTL_SET_CALLBACK_CTXT,
54 M2MB_SPI_IOCTL_GET_CALLBACK_CTXT,
55 M2MB_SPI_IOCTL_SET_CLK_FREQ_HZ,
56 M2MB_SPI_IOCTL_GET_CLK_FREQ_HZ,
57 M2MB_SPI_IOCTL_SET_BITS_PER_WORD,
58 M2MB_SPI_IOCTL_GET_BITS_PER_WORD,
59 M2MB_SPI_IOCTL_SET_CS_CLK_DELAY_CYCLES,
60 M2MB_SPI_IOCTL_GET_CS_CLK_DELAY_CYCLES,
61 M2MB_SPI_IOCTL_SET_INTER_WORD_DELAY_CYCLES,
62 M2MB_SPI_IOCTL_GET_INTER_WORD_DELAY_CYCLES,
63 M2MB_SPI_IOCTL_SET_LOOPBACK_MODE,
64 M2MB_SPI_IOCTL_GET_LOOPBACK_MODE,
65 M2MB_SPI_IOCTL_NOF_REQ
80 M2MB_SPI_MODE_INVALID = 0x7FFFFFFF
81 } M2MB_SPI_SHIFT_MODE_T;
87 M2MB_SPI_CS_ACTIVE_LOW,
88 M2MB_SPI_CS_ACTIVE_HIGH,
89 M2MB_SPI_CS_ACTIVE_INVALID = 0x7FFFFFFF
90 } M2MB_SPI_CS_POLARITY_T;
98 M2MB_SPI_CS_KEEP_ASSERTED,
99 M2MB_SPI_CS_MODE_INVALID = 0x7FFFFFFF
100 } M2MB_SPI_CS_MODE_T;
107 M2MB_SPI_LITTLE_ENDIAN = 0,
109 } M2MB_SPI_BYTE_ORDER_T;
116 typedef void ( *m2mb_spi_ind_callback )( INT32 fd, M2MB_SPI_IND_E spi_event, UINT16 resp_size,
void *resp_struct,
void *userdata );
124 M2MB_SPI_SHIFT_MODE_T spi_mode;
125 M2MB_SPI_CS_POLARITY_T cs_polarity;
126 M2MB_SPI_CS_MODE_T cs_mode;
127 M2MB_SPI_BYTE_ORDER_T endianness;
128 m2mb_spi_ind_callback callback_fn;
129 HANDLE callback_ctxt;
132 UINT8 cs_clk_delay_cycles;
133 UINT8 inter_word_delay_cycles;
134 BOOLEAN loopback_mode;
159 INT32 m2mb_spi_open(
const CHAR *path, INT32 flags, ... );
171 INT32 m2mb_spi_close( INT32 fd );
190 INT32 m2mb_spi_ioctl( INT32 fd, INT32 request, ... );
204 SSIZE_T m2mb_spi_read( INT32 fd,
void *buf, SIZE_T nbyte );
218 SSIZE_T m2mb_spi_write( INT32 fd,
const void *buf, SIZE_T nbyte );
235 SSIZE_T m2mb_spi_write_read( INT32 fd,
const void *bufWr,
void *bufRd, SIZE_T nbyte );