table of contents
| STRUCT SPI_MASTER(9) | Serial Peripheral Interface (S | STRUCT SPI_MASTER(9) |
NAME¶
struct_spi_master - interface to SPI master controller
SYNOPSIS¶
struct spi_master {
struct device dev;
struct list_head list;
s16 bus_num;
u16 num_chipselect;
u16 dma_alignment;
u16 mode_bits;
u32 bits_per_word_mask;
u16 flags;
#define SPI_MASTER_HALF_DUPLEX BIT(0)
#define SPI_MASTER_NO_RX BIT(1)
#define SPI_MASTER_NO_TX BIT(2)
spinlock_t bus_lock_spinlock;
struct mutex bus_lock_mutex;
bool bus_lock_flag;
int (* setup) (struct spi_device *spi);
int (* transfer) (struct spi_device *spi,struct spi_message *mesg);
void (* cleanup) (struct spi_device *spi);
bool queued;
struct kthread_worker kworker;
struct task_struct * kworker_task;
struct kthread_work pump_messages;
spinlock_t queue_lock;
struct list_head queue;
struct spi_message * cur_msg;
bool busy;
bool running;
bool rt;
int (* prepare_transfer_hardware) (struct spi_master *master);
int (* transfer_one_message) (struct spi_master *master,struct spi_message *mesg);
int (* unprepare_transfer_hardware) (struct spi_master *master);
int * cs_gpios;
};
MEMBERS¶
dev
list
bus_num
num_chipselect
dma_alignment
mode_bits
bits_per_word_mask
flags
bus_lock_spinlock
bus_lock_mutex
bus_lock_flag
setup
transfer
cleanup
queued
kworker
kworker_task
pump_messages
queue_lock
queue
cur_msg
busy
running
rt
prepare_transfer_hardware
transfer_one_message
unprepare_transfer_hardware
cs_gpios
DESCRIPTION¶
Each SPI master controller can communicate with one or more spi_device children. These make a small bus, sharing MOSI, MISO and SCK signals but not chip select signals. Each device may be configured to use a different clock rate, since those shared signals are ignored unless the chip is selected.
The driver for an SPI controller manages access to those devices through a queue of spi_message transactions, copying data between CPU memory and an SPI slave device. For each such message it queues, it calls the message's completion function when the transaction completes.
COPYRIGHT¶
| June 2024 | Kernel Hackers Manual 3.10 |