spi_masterRegular
4.4: ✅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;
u32 min_speed_hz;
u32 max_speed_hz;
u16 flags;
spinlock_t bus_lock_spinlock;
struct mutex bus_lock_mutex;
bool bus_lock_flag;
int (*setup)(struct spi_device *);
int (*transfer)(struct spi_device *, struct spi_message *);
void (*cleanup)(struct spi_device *);
bool (*can_dma)(struct spi_master *, struct spi_device *, struct spi_transfer *);
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 idling;
bool busy;
bool running;
bool rt;
bool auto_runtime_pm;
bool cur_msg_prepared;
bool cur_msg_mapped;
struct completion xfer_completion;
size_t max_dma_len;
int (*prepare_transfer_hardware)(struct spi_master *);
int (*transfer_one_message)(struct spi_master *, struct spi_message *);
int (*unprepare_transfer_hardware)(struct spi_master *);
int (*prepare_message)(struct spi_master *, struct spi_message *);
int (*unprepare_message)(struct spi_master *, struct spi_message *);
void (*set_cs)(struct spi_device *, bool);
int (*transfer_one)(struct spi_master *, struct spi_device *, struct spi_transfer *);
void (*handle_err)(struct spi_master *, struct spi_message *);
int *cs_gpios;
struct spi_statistics statistics;
struct dma_chan *dma_tx;
struct dma_chan *dma_rx;
void *dummy_rx;
void *dummy_tx;
};
4.8: ✅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;
u32 min_speed_hz;
u32 max_speed_hz;
u16 flags;
size_t (*max_transfer_size)(struct spi_device *);
struct mutex io_mutex;
spinlock_t bus_lock_spinlock;
struct mutex bus_lock_mutex;
bool bus_lock_flag;
int (*setup)(struct spi_device *);
int (*transfer)(struct spi_device *, struct spi_message *);
void (*cleanup)(struct spi_device *);
bool (*can_dma)(struct spi_master *, struct spi_device *, struct spi_transfer *);
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 idling;
bool busy;
bool running;
bool rt;
bool auto_runtime_pm;
bool cur_msg_prepared;
bool cur_msg_mapped;
struct completion xfer_completion;
size_t max_dma_len;
int (*prepare_transfer_hardware)(struct spi_master *);
int (*transfer_one_message)(struct spi_master *, struct spi_message *);
int (*unprepare_transfer_hardware)(struct spi_master *);
int (*prepare_message)(struct spi_master *, struct spi_message *);
int (*unprepare_message)(struct spi_master *, struct spi_message *);
int (*spi_flash_read)(struct spi_device *, struct spi_flash_read_message *);
bool (*flash_read_supported)(struct spi_device *);
void (*set_cs)(struct spi_device *, bool);
int (*transfer_one)(struct spi_master *, struct spi_device *, struct spi_transfer *);
void (*handle_err)(struct spi_master *, struct spi_message *);
int *cs_gpios;
struct spi_statistics statistics;
struct dma_chan *dma_tx;
struct dma_chan *dma_rx;
void *dummy_rx;
void *dummy_tx;
int (*fw_translate_cs)(struct spi_master *, unsigned int);
};
4.10: ✅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;
u32 min_speed_hz;
u32 max_speed_hz;
u16 flags;
size_t (*max_transfer_size)(struct spi_device *);
size_t (*max_message_size)(struct spi_device *);
struct mutex io_mutex;
spinlock_t bus_lock_spinlock;
struct mutex bus_lock_mutex;
bool bus_lock_flag;
int (*setup)(struct spi_device *);
int (*transfer)(struct spi_device *, struct spi_message *);
void (*cleanup)(struct spi_device *);
bool (*can_dma)(struct spi_master *, struct spi_device *, struct spi_transfer *);
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 idling;
bool busy;
bool running;
bool rt;
bool auto_runtime_pm;
bool cur_msg_prepared;
bool cur_msg_mapped;
struct completion xfer_completion;
size_t max_dma_len;
int (*prepare_transfer_hardware)(struct spi_master *);
int (*transfer_one_message)(struct spi_master *, struct spi_message *);
int (*unprepare_transfer_hardware)(struct spi_master *);
int (*prepare_message)(struct spi_master *, struct spi_message *);
int (*unprepare_message)(struct spi_master *, struct spi_message *);
int (*spi_flash_read)(struct spi_device *, struct spi_flash_read_message *);
bool (*flash_read_supported)(struct spi_device *);
void (*set_cs)(struct spi_device *, bool);
int (*transfer_one)(struct spi_master *, struct spi_device *, struct spi_transfer *);
void (*handle_err)(struct spi_master *, struct spi_message *);
int *cs_gpios;
struct spi_statistics statistics;
struct dma_chan *dma_tx;
struct dma_chan *dma_rx;
void *dummy_rx;
void *dummy_tx;
int (*fw_translate_cs)(struct spi_master *, unsigned int);
};
4.13: Absent ⚠️
4.15: Absent ⚠️
4.18: Absent ⚠️
5.0: Absent ⚠️
5.3: Absent ⚠️
5.4: Absent ⚠️
5.8: Absent ⚠️
5.11: Absent ⚠️
5.13: Absent ⚠️
5.15: Absent ⚠️
5.19: Absent ⚠️
6.2: Absent ⚠️
6.5: Absent ⚠️
6.8: Absent ⚠️
arm64: Absent ⚠️
armhf: Absent ⚠️
ppc64el: Absent ⚠️
riscv64: Absent ⚠️
aws: Absent ⚠️
azure: Absent ⚠️
gcp: Absent ⚠️
lowlatency: Absent ⚠️
Regular
4.4 and 4.8 ⚠️size_t (*max_transfer_size)(struct spi_device *)
struct mutex io_mutex
int (*spi_flash_read)(struct spi_device *, struct spi_flash_read_message *)
bool (*flash_read_supported)(struct spi_device *)
int (*fw_translate_cs)(struct spi_master *, unsigned int)
4.8 and 4.10 ⚠️size_t (*max_message_size)(struct spi_device *)