diff mbox

media: i2c: adv748x: Export I2C device table entries as module aliases

Message ID 20170809093731.3572-1-javierm@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Javier Martinez Canillas Aug. 9, 2017, 9:37 a.m. UTC
The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
device was registered via OF, and the driver is only exporting the OF ID
table entries as module aliases.

So if the driver is built as module, autoload won't work since udev/kmod
won't be able to match the registered OF device with its driver module.

Before this patch:

$ modinfo drivers/media/i2c/adv748x/adv748x.ko | grep alias
alias:          of:N*T*Cadi,adv7482C*
alias:          of:N*T*Cadi,adv7482
alias:          of:N*T*Cadi,adv7481C*
alias:          of:N*T*Cadi,adv7481

After this patch:

modinfo drivers/media/i2c/adv748x/adv748x.ko | grep alias
alias:          of:N*T*Cadi,adv7482C*
alias:          of:N*T*Cadi,adv7482
alias:          of:N*T*Cadi,adv7481C*
alias:          of:N*T*Cadi,adv7481
alias:          i2c:adv7482
alias:          i2c:adv7481

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---

 drivers/media/i2c/adv748x/adv748x-core.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Kieran Bingham Aug. 9, 2017, 10:29 a.m. UTC | #1
Hi Javier,

Thankyou for the patch

On 09/08/17 10:37, Javier Martinez Canillas wrote:
> The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
> device was registered via OF, and the driver is only exporting the OF ID
> table entries as module aliases.
> 
> So if the driver is built as module, autoload won't work since udev/kmod
> won't be able to match the registered OF device with its driver module.

Good catch, and perhaps I should have known better :D

I've only worked on this driver as a built-in so far :-) #BadExcuses

> Before this patch:
> 
> $ modinfo drivers/media/i2c/adv748x/adv748x.ko | grep alias
> alias:          of:N*T*Cadi,adv7482C*
> alias:          of:N*T*Cadi,adv7482
> alias:          of:N*T*Cadi,adv7481C*
> alias:          of:N*T*Cadi,adv7481
> 
> After this patch:
> 
> modinfo drivers/media/i2c/adv748x/adv748x.ko | grep alias
> alias:          of:N*T*Cadi,adv7482C*
> alias:          of:N*T*Cadi,adv7482
> alias:          of:N*T*Cadi,adv7481C*
> alias:          of:N*T*Cadi,adv7481
> alias:          i2c:adv7482
> alias:          i2c:adv7481
> 
> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>

Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

> ---
> 
>  drivers/media/i2c/adv748x/adv748x-core.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/media/i2c/adv748x/adv748x-core.c b/drivers/media/i2c/adv748x/adv748x-core.c
> index aeb6ae80cb18..5ee14f2c2747 100644
> --- a/drivers/media/i2c/adv748x/adv748x-core.c
> +++ b/drivers/media/i2c/adv748x/adv748x-core.c
> @@ -807,6 +807,7 @@ static const struct i2c_device_id adv748x_id[] = {
>  	{ "adv7482", 0 },
>  	{ },
>  };
> +MODULE_DEVICE_TABLE(i2c, adv748x_id);
>  
>  static const struct of_device_id adv748x_of_table[] = {
>  	{ .compatible = "adi,adv7481", },
>
Javier Martinez Canillas Aug. 9, 2017, 10:58 a.m. UTC | #2
Hi Kieran,

On 08/09/2017 12:29 PM, Kieran Bingham wrote:
> Hi Javier,
> 
> Thankyou for the patch
>

You are welcome.
 
> On 09/08/17 10:37, Javier Martinez Canillas wrote:
>> The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
>> device was registered via OF, and the driver is only exporting the OF ID
>> table entries as module aliases.
>>
>> So if the driver is built as module, autoload won't work since udev/kmod
>> won't be able to match the registered OF device with its driver module.
> 
> Good catch, and perhaps I should have known better :D
> 
> I've only worked on this driver as a built-in so far :-) #BadExcuses
>

A better excuse I think is that after all these years, one would had thought
that the I2C OF modalias issue would had been finally fixed, but not yet :)
 
>> Before this patch:
>>
>> $ modinfo drivers/media/i2c/adv748x/adv748x.ko | grep alias
>> alias:          of:N*T*Cadi,adv7482C*
>> alias:          of:N*T*Cadi,adv7482
>> alias:          of:N*T*Cadi,adv7481C*
>> alias:          of:N*T*Cadi,adv7481
>>
>> After this patch:
>>
>> modinfo drivers/media/i2c/adv748x/adv748x.ko | grep alias
>> alias:          of:N*T*Cadi,adv7482C*
>> alias:          of:N*T*Cadi,adv7482
>> alias:          of:N*T*Cadi,adv7481C*
>> alias:          of:N*T*Cadi,adv7481
>> alias:          i2c:adv7482
>> alias:          i2c:adv7481
>>
>> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
> 
> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> 

Thanks!

Best regards,
Kieran Bingham Aug. 9, 2017, 11:05 a.m. UTC | #3
On 09/08/17 11:58, Javier Martinez Canillas wrote:
> Hi Kieran,
> 
> On 08/09/2017 12:29 PM, Kieran Bingham wrote:
>> Hi Javier,
>>
>> Thankyou for the patch
> 
> You are welcome.
>  
>> On 09/08/17 10:37, Javier Martinez Canillas wrote:
>>> The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
>>> device was registered via OF, and the driver is only exporting the OF ID
>>> table entries as module aliases.
>>>
>>> So if the driver is built as module, autoload won't work since udev/kmod
>>> won't be able to match the registered OF device with its driver module.
>>
>> Good catch, and perhaps I should have known better :D
>>
>> I've only worked on this driver as a built-in so far :-) #BadExcuses
>>
> 
> A better excuse I think is that after all these years, one would had thought
> that the I2C OF modalias issue would had been finally fixed, but not yet :)

Quite! Let's try to bubble that back up the todo list.
Now - where did I put my free time. I'm sure I left it around here somewhere :-)

--
Kieran
Javier Martinez Canillas Aug. 9, 2017, 11:16 a.m. UTC | #4
On 08/09/2017 01:05 PM, Kieran Bingham wrote:
> On 09/08/17 11:58, Javier Martinez Canillas wrote:
>> Hi Kieran,
>>
>> On 08/09/2017 12:29 PM, Kieran Bingham wrote:
>>> Hi Javier,
>>>
>>> Thankyou for the patch
>>
>> You are welcome.
>>  
>>> On 09/08/17 10:37, Javier Martinez Canillas wrote:
>>>> The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
>>>> device was registered via OF, and the driver is only exporting the OF ID
>>>> table entries as module aliases.
>>>>
>>>> So if the driver is built as module, autoload won't work since udev/kmod
>>>> won't be able to match the registered OF device with its driver module.
>>>
>>> Good catch, and perhaps I should have known better :D
>>>
>>> I've only worked on this driver as a built-in so far :-) #BadExcuses
>>>
>>
>> A better excuse I think is that after all these years, one would had thought
>> that the I2C OF modalias issue would had been finally fixed, but not yet :)
> 
> Quite! Let's try to bubble that back up the todo list.
> Now - where did I put my free time. I'm sure I left it around here somewhere :-)
> 

We are getting there though. I'm just waiting for the patches in this [0] series
to land and then I'll be able to post the I2C core uevent modalias patch.

I've asked Wolfram if he can at least pick the driver patches [1], but he didn't
answer me yet...

[0]: https://www.spinics.net/lists/arm-kernel/msg588431.html
[1]: https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1457427.html

Best regards,
diff mbox

Patch

diff --git a/drivers/media/i2c/adv748x/adv748x-core.c b/drivers/media/i2c/adv748x/adv748x-core.c
index aeb6ae80cb18..5ee14f2c2747 100644
--- a/drivers/media/i2c/adv748x/adv748x-core.c
+++ b/drivers/media/i2c/adv748x/adv748x-core.c
@@ -807,6 +807,7 @@  static const struct i2c_device_id adv748x_id[] = {
 	{ "adv7482", 0 },
 	{ },
 };
+MODULE_DEVICE_TABLE(i2c, adv748x_id);
 
 static const struct of_device_id adv748x_of_table[] = {
 	{ .compatible = "adi,adv7481", },