STRUCT RMI_DEVICE_PLATFORM_DATA_SPI(9)
π NAME π
Okay bestie, so struct rmi_device_platform_data_spi β it provides parameters used in SPI communications π«Ά. That's the whole vibe. This page lives in the Kernel API Manual and the page itself is literally called struct rmi_...orm_data_spi(9), iykyk.
Real talk though: all Synaptics SPI products support a standard SPI interface β¨. Some of them also support what is called SPI V2 mode, depending on firmware and/or ASIC limitations. In V2 mode, the touch sensor can support shorter delays during certain operations, and these are specified separately from the standard mode delays. So there's standard-mode delays and V2-mode delays and they do NOT mix, periodt π.
β¨ SYNOPSIS β¨
struct rmi_device_platform_data_spi {
u32 block_delay_us;
u32 split_read_block_delay_us;
u32 read_delay_us;
u32 write_delay_us;
u32 split_read_byte_delay_us;
u32 pre_delay_us;
u32 post_delay_us;
u8 bits_per_word;
u16 mode;
void *cs_assert_data;
int (*cs_assert)(const void *cs_assert_data, const bool assert);
};
π Members π
It's giving "the lineup" β every field is right up there in the synopsis π. The Description below is where the actual lore drops πΈ.
π¦ Description π¦
block_delay_usβ for standard SPI transactions consisting of both a read and write operation, this is the delay (in microseconds) between the read and write operations β³.split_read_block_delay_usβ same idea but for V2 SPI transactions consisting of both a read and write operation: the delay (in microseconds) between the read and write operations β¨.read_delay_usβ the delay between each byte of a read operation in normal SPI mode π.write_delay_usβ the delay between each byte of a write operation in normal SPI mode π.split_read_byte_delay_usβ the delay between each byte of a read operation in V2 mode π.pre_delay_usβ the delay before the start of a SPI transaction. This is typically useful in conjunction with custom chip select assertions (see below) π.post_delay_usβ the delay after the completion of an SPI transaction. This is typically useful in conjunction with custom chip select assertions (see below) π.cs_assertβ For systems where the SPI subsystem does not control the CS/SSB line, or where such control is broken, you can provide a custom routine to handle a GPIO as CS/SSB π₯. This routine will be called at the beginning and end of each SPI transaction. The RMI SPI implementation will waitpre_delay_usafter this routine returns before starting the SPI transfer; andpost_delay_usafter completion of the SPI transfer(s) before calling it withassert==FALSEπ.
Ngl the "such control is broken" line is doing a LOT of emotional heavy lifting here π β but that's literally what it says, so.
π SEE ALSO π
Kernel file ./include/linux/rmi.h and the whole friend group: struct rmi_2d_axis_alignment(9), struct rmi_gpio_data(9), struct rmi_f01_power_management(9), struct rmi_device_platform_data(9), struct rmi_function_descriptor(9), struct rmi_transport_dev(9), struct rmi_transport_ops(9), struct rmi_driver(9), struct rmi_device(9) π«Άπ¦
Okay that's the whole page, you ate that π
β¨ β this lil gem comes from ./include/linux, dated October 2026, and it's filed under struct rmi_...orm_data_spi(9). Go forth and delay responsibly π
π¦ 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