STRUCT SPI_BOARD_INFO(9)
πΈ NAME πΈ
okay so bestie, welcome to struct spi_board_info(9) from the Kernel API Manual β this is literally the board-specific template for a SPI device, and it's giving βpartial device glow-upβ energy. π«Άβ¨
π SYNOPSIS π
struct spi_board_info {
char modalias[SPI_NAME_SIZE];
const void *platform_data;
const struct software_node *swnode;
void *controller_data;
int irq;
u32 max_speed_hz;
u16 bus_num;
u16 chip_select;
u32 mode;
};
π§ Members π§
each member is lowkey a little starter pack for the matching spi_device field, so letβs go through them one by one, no cap:
modaliasβ initializesspi_device.modalias; identifies the driver. iykyk πplatform_dataβ initializesspi_device.platform_data; the particular data stored there is driver-specific. πswnodeβ software node for the device. β¨controller_dataβ initializesspi_device.controller_data; some controllers need hints about hardware setup, e.g. for DMA. π§irqβ initializesspi_device.irq; depends on how the board is wired. π₯max_speed_hzβ initializesspi_device.max_speed_hz; based on limits from the chip datasheet and board-specific signal quality issues. β‘bus_numβ identifies whichspi_controllerparents thespi_device; unused byspi_new_device, and otherwise depends on board wiring. π¦chip_selectβ initializesspi_device.chip_select; depends on how the board is wired. πmodeβ initializesspi_device.mode; based on the chip datasheet, board wiring (some devices support both3WIREand standard modes), and possibly presence of an inverter in the chipselect path. π
π Description π
When adding new SPI devices to the device tree, these structures serve as a partial device template. They hold information which can't always be determined by drivers. Information that probe can establish (such as the default transfer wordsize) is not included here. π
bestie, this is a partial template β probe can fill in stuff like the default transfer wordsize, and thatβs not listed here. periodt. π
These structures are used in two places. Their primary role is to be stored in tables of board-specific device descriptors, which are declared early in board initialization and then used (much later) to populate a controller's device tree after the that controller's driver initializes. A secondary (and atypical) role is as a parameter to spi_new_device call, which happens after those controller drivers are active in some dynamic board configuration models. π
π¦ SEE ALSO π¦
start with the Kernel file ./include/linux/spi/spi.h, then the whole bestie lineup:
struct spi_statistics(9)struct spi_delay(9)struct spi_device(9)struct spi_driver(9)spi_unregister_driver(9)module_spi_driver(9)struct spi_controller(9)struct spi_res(9)struct spi_transfer(9)struct spi_message(9)spi_message_init_with_transfers(9)spi_is_bpw_supported(9)spi_bpw_to_bytes(9)spi_controller_xfer_timeout(9)struct spi_replaced_transfers(9)spi_sync_transfer(9)spi_write(9)spi_read(9)spi_w8r8(9)spi_w8r16(9)spi_w8r16be(9)
and thatβs the page, bestie π source: ./include/linux/spi Β· date: October 2026 Β· page: struct spi_board_info(9) β bye byeee πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms