General Purpose Input/Output (GPIO), Serial Peripheral Interface (SPI), and Inter-Integrated Circuit (I2C), are common methods for digital communication between electronic components. The Linux kernel, being a popular choice for embedded solutions, provides a general abstraction layer for each of those communication methods. Modern Linux kernels also include drivers for many hardware modules implementing GPIO, SPI, or I2C. The abstraction layers provide a generic way to communicate with electronic devices, which is independent from the details of specific hardware implementation. Each abstraction layer provides API for kernel code, as well as userspace users.
In this talk I'll present the basics of each communication method, and its generic userspace interface that Linux provides.