00001 00039 #ifndef SPI_H_INCLUDED 00040 #define SPI_H_INCLUDED 00041 00042 #include <status_codes.h> 00043 #include <workqueue.h> 00044 #include <interrupt.h> 00045 00114 #define SPI_CPHA (1 << 0) 00115 00119 #define SPI_CPOL (1 << 1) 00120 00124 #define SPI_MODE_0 0 00125 00128 #define SPI_MODE_1 (SPI_CPHA) 00129 00132 #define SPI_MODE_2 (SPI_CPOL) 00133 00136 #define SPI_MODE_3 (SPI_CPOL | SPI_CPHA) 00137 00144 struct spi_master { 00146 struct nested_workqueue nwq; 00148 enum status_code status; 00150 size_t residue; 00151 }; 00152 00153 #include <chip/spi.h> 00154 00223 static inline bool spi_request_bus(struct spi_master *master, 00224 struct workqueue_task *task) 00225 { 00226 return nested_workqueue_add_task(&master->nwq, task); 00227 } 00228 00236 static inline void spi_release_bus(struct spi_master *master) 00237 { 00238 nested_workqueue_next_task(&master->nwq); 00239 } 00240 00376 #endif /* SPI_H_INCLUDED */
1.6.3