linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Javier Martinez Canillas <javierm@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: "Mark Brown" <broonie@kernel.org>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Geert Uytterhoeven" <geert@linux-m68k.org>,
	linux-spi@vger.kernel.org,
	"Ralph Siemsen" <ralph.siemsen@linaro.org>,
	"Javier Martinez Canillas" <javierm@redhat.com>
Subject: [PATCH] spi: docs: improve the SPI userspace API documentation
Date: Thu, 18 Nov 2021 22:31:43 +0100	[thread overview]
Message-ID: <20211118213143.2345041-1-javierm@redhat.com> (raw)

This doc is fairly outdated and only uses legacy device instantiation
terminology. Let us update it and also mention the OF and ACPI device
tables, to make easier for users to figure out how should be defined.

Also, mention that devices bind could be done in user-space now using
the "driver_override" sysfs entry.

Suggested-by: Ralph Siemsen <ralph.siemsen@linaro.org>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---

 Documentation/spi/spidev.rst | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/Documentation/spi/spidev.rst b/Documentation/spi/spidev.rst
index f05dbc5ccdbc..ec0986ae6170 100644
--- a/Documentation/spi/spidev.rst
+++ b/Documentation/spi/spidev.rst
@@ -29,15 +29,39 @@ of the driver stack) that are not accessible to userspace.
 
 DEVICE CREATION, DRIVER BINDING
 ===============================
-The simplest way to arrange to use this driver is to just list it in the
-spi_board_info for a device as the driver it should use:  the "modalias"
-entry is "spidev", matching the name of the driver exposing this API.
+
+The spidev driver contains lists of SPI devices that are supported for
+the different hardware topology representations.
+
+The following are the SPI device tables supported by the spidev driver:
+
+    - struct spi_device_id spidev_spi_ids[]: list of devices that can be
+      bound when these are defined using a struct spi_board_info with a
+      .modalias field matching one of the entries in the table.
+
+    - struct of_device_id spidev_dt_ids[]: list of devices that can be
+      bound when these are defined using a Device Tree node that has a
+      compatible string matching one of the entries in the table.
+
+    - struct acpi_device_id spidev_acpi_ids[]: list of devices that can
+      be bound when these are defined using a ACPI device object with a
+      _HID matching one of the entries in the table.
+
+NOTE: it used to be supported to define an SPI device using the "spidev"
+      name.  For example as .modalias = "spidev" or compatible = "spidev".
+      But this is no longer supported by the Linux kernel and instead a
+      real SPI device name as listed in one of the tables should be used.
+
 Set up the other device characteristics (bits per word, SPI clocking,
 chipselect polarity, etc) as usual, so you won't always need to override
 them later.
 
-(Sysfs also supports userspace driven binding/unbinding of drivers to
-devices.  That mechanism might be supported here in the future.)
+Sysfs also supports userspace driven binding/unbinding of drivers to
+devices.  The mechanism works by writing to the device "driver_overrride"
+entry.  For example:
+
+    echo spidev > /sys/bus/spi/devices/spiX.Y/driver_override
+    echo spiB.C > /sys/bus/spi/drivers/spidev/bind
 
 When you do that, the sysfs node for the SPI device will include a child
 device node with a "dev" attribute that will be understood by udev or mdev.
-- 
2.33.1


             reply	other threads:[~2021-11-18 21:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-18 21:31 Javier Martinez Canillas [this message]
2021-11-19  7:45 ` [PATCH] spi: docs: improve the SPI userspace API documentation Uwe Kleine-König
2021-11-19  8:14   ` Javier Martinez Canillas
2021-11-19  8:10 ` Geert Uytterhoeven
2021-11-19  8:16   ` Javier Martinez Canillas
2021-11-19 16:03 ` Ralph Siemsen
2021-11-19 18:01   ` Javier Martinez Canillas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211118213143.2345041-1-javierm@redhat.com \
    --to=javierm@redhat.com \
    --cc=broonie@kernel.org \
    --cc=geert@linux-m68k.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=ralph.siemsen@linaro.org \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).