Re: [PATCH 1/3] of: Add prefix parameter to of_modalias_node().
From: David Daney <hidden>
Date: 2012-05-22 19:45:13
Also in:
alsa-devel, linux-mips, linux-spi, linuxppc-dev, lkml
On 05/19/2012 11:08 PM, Grant Likely wrote:
On Sat, 19 May 2012 23:54:36 -0600, Grant Likely[off-list ref] wrote:quoted
On Fri, 11 May 2012 15:05:21 -0700, David Daney[off-list ref] wrote:quoted
From: David Daney<redacted> When generating MODALIASes, it is convenient to add things like "spi:" or "i2c:" to the front of the strings. This allows the standard modprobe to find the right driver when automatically populating bus children from the device tree structure. Add a prefix parameter, and adjust callers. For of_register_spi_devices() use the "spi:" prefix. Signed-off-by: David Daney<redacted>Applied, thanks. Some notes below...Wait... why is this necessary?
Because in of_register_spi_devices() in of_spi.c, you do: request_module(spi->modalias); The string passed to request_module() must have the "spi:" prefix.
The module type prefix isn't stored in the modalias value for any other bus type as far as I can see,
It is only useful with the prefix, so I though I would add it to the stored value.
and with this series it appears that the "spi:" prefix may or may not be present in the modalias. That doesn't look right.
Perhaps, but the with the combination of patches 1/3 and 2/3 I tried to ensure that the prefix would always be present for SPI devices.
Why isn't prefixing spi: at uevent time sufficient?
Because udev may not be loading the driver.
IIUC, modprobe depends on either UEVENT or the modalias attribute to know which driver to probe. It does look like the attribute is missing the spi: prefix though. Does the following change work instead of these two patches?
No.
quoted hunk ↗ jump to hunk
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 3d8f662..da8aac7 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c@@ -51,7 +51,7 @@ modalias_show(struct device *dev, struct device_attribute *a, char *buf) { const struct spi_device *spi = to_spi_device(dev); - return sprintf(buf, "%s\n", spi->modalias); + return sprintf(buf, "%s%s\n", SPI_MODULE_PREFIX, spi->modalias); }So, I've dropped this patch from my tree. If the change above works for you then I'll push it out. g.