[PATCH v2 0/2] spi: add sysfs interface for userspace device instantiation

From: Vishwaroop A

Date: Sat Apr 25 2026 - 13:35:11 EST


Development boards such as the Jetson AGX Orin expose SPI buses on
expansion headers so that users can connect and interact with SPI
peripherals from userspace via /dev/spidevB.C character devices.

Today there is no viable upstream mechanism to create these device nodes:

- The spidev driver rejects the bare "spidev" compatible string in DT,
since spidev is a Linux software interface, not a hardware description.
- Vendor-specific compatible strings (e.g. "nvidia,tegra-spidev") have
been rejected by DT maintainers for the same reason.

The I2C subsystem solved an analogous problem years ago by exposing
new_device/delete_device sysfs attributes on each i2c adapter. This
series adds the same interface to SPI host controllers.

Patch 1 adds the core implementation: new_device and delete_device sysfs
attributes under /sys/class/spi_master/spiB/, allowing userspace to
dynamically instantiate and remove SPI devices at runtime.

Patch 2 adds documentation: an RST guide describing usage, parameters,
examples, and limitations, plus a formal ABI entry.

Link: https://lore.kernel.org/linux-tegra/909f0c92-d110-4253-903e-5c81e21e12c9@xxxxxxxxxx/

Changes in v2:
- Fixed race between new_device_store() and spi_unregister_controller():
replaced spi_add_device() with direct __spi_add_device() call under
add_lock so that device registration and userspace_clients list
insertion are atomic with respect to controller teardown.
(Mark Brown)

Vishwaroop A (2):
spi: add new_device/delete_device sysfs interface
docs: spi: add documentation for userspace device instantiation

.../ABI/testing/sysfs-class-spi-master | 34 ++++
Documentation/spi/index.rst | 1 +
Documentation/spi/instantiating-devices.rst | 88 ++++++++
drivers/spi/spi.c | 190 ++++++++++++++++++
include/linux/spi/spi.h | 10 +
5 files changed, 323 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-class-spi-master
create mode 100644 Documentation/spi/instantiating-devices.rst

--
2.17.1