Re: [PATCH 1/3] of: Add prefix parameter to of_modalias_node().

From: David Daney
Date: Tue May 22 2012 - 15:45:10 EST


On 05/19/2012 11:08 PM, Grant Likely wrote:
On Sat, 19 May 2012 23:54:36 -0600, Grant Likely<grant.likely@xxxxxxxxxxxx> wrote:
On Fri, 11 May 2012 15:05:21 -0700, David Daney<ddaney.cavm@xxxxxxxxx> wrote:
From: David Daney<david.daney@xxxxxxxxxx>

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<david.daney@xxxxxxxxxx>

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.

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.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/