On Tue, Jan 19, 2016 at 12:25:24PM +0000, Mark Brown wrote:
On Mon, Jan 18, 2016 at 05:56:57PM +0100, Johan Hovold wrote:
On Mon, Jan 18, 2016 at 05:14:42PM +0100, Michael Trimarchi wrote:
{ .compatible = "ti,pcm1792a", },
{ }
+}; +MODULE_DEVICE_TABLE(of, pcm179x_of_match);
can match go in the common part?
For matching purposes it could, but that would prevent the OF-aliases from being defined for the driver modules.
There are a couple of codec drivers that have taken this route, and it works as long as they also define a legacy (e.g. i2c_device_id) table that modalias autoloading can fall back to.
But having having the common module carry the OF-aliases does not seem like the right thing to do (e.g. as the common module cannot drive anything on its own) even if it avoids a copy of the OF id table.
This does seem like something that the modules code should be able to cope with - we have a reference from the driver struct to the table which you'd really expect it to be using. We already have some issues there with userspace not handling multiple modaliases terribly well IIRC.
That reference is only used for matching, while the aliases are generated from the MODULE_DEVICE_TABLE macro (and elf magic).
Even if this sometimes means duplicating an id-table (and i2c and spi OF id tables aren't necessarily always identical either), it seems to me that the MODULE_DEVICE_TABLE should go in the actual driver rather than any module dependency.
Thanks, Johan