Groking the Linux SPI Subsystem
Talkat Embedded Linux Conference + OpenIoT Summit North America 2017 · on Wednesday, 2017-02-22· at 15:00· Atrium Ballroom·
summary
Explains how the kernel splits SPI into controller vs protocol roles, shows concrete device hookups (device tree, boardfile, ACPI) using an mcp3008 example and how to compute max clock from timing diagrams, demonstrates userland via spidev_test and python-spidev, and describes performance pitfalls like a controller that only enables DMA above 160 bytes. Covers sync vs async semantics, new sysfs statistics per bus:cs (messages/transfers/errors/timeouts), and an RFC v2 for limited slave support.
AI-written summary · about
chapters (23)
- 0:00Intro
- 3:57Common uses of SPI
- 5:01SPI Signals
- 6:46Basic SPI Timing Diagram
- 8:15SPI Modes
- 9:15SPI Mode Timing - CPOLO
- 10:47SPI can be more complicated
- 13:11Multiple SPI Slaves
- 13:42SPI Mode Timing - Multiple Slaves
- 14:32Linux SPI drivers
- 16:57Linux SPl communication
- 18:46Exploring via use cases
- 19:32Adding a SPI device to a system
- 20:37Reading datasheets for SPI details - ST7735
- 23:37Reading datasheets for SPI details - MCP3008
- 30:46Protocol Driver
- 31:52Kernel APIs
- 34:44Controller Driver
- 36:12Userspace Driver - spidev
- 41:44Userspace Help
- 43:10Performance considerations
- 48:29Performance tools
- 51:27Slave Support
related talks
34mSkip the Wait: Maximizing SPI Throughput in the Linux Kernel With SPI Offloading
46mAn Introduction to SPI-NOR Subsystem
18mSPI Memory Support in Linux and U-Boot
33mDo It Faster: How We Supercharged Linux To Work With Blazing Fast ADCs for IIO
49mBasics of I2C on Linux
42mPlaying with armhfp devices
52mIn the Kernel Trenches: Mastering Ethernet Drivers on Linux
59mUnderstanding the Structure of a Linux Kernel Device Driver
