> The function that is returning ENODEV is the driver probe function. According
> to Documentation/DocBook/writing_usb_driver/ch03.html when that function is
> called
>
> "The driver now needs to verify that this device is actually one that it can
> accept. If so, it returns 0. If not, or if any error occurs during
> initialization, an errorcode (such as -ENOMEM or -ENODEV) is returned from
> the probe function."
>
> It isn't a device the driver can accept so it returns -ENODEV
That's all true but irrelevant. That error return isn't propagated
back to userspace when it runs modprobe (and in fact it *can't* be
sanely returned to userspace -- what do you do if the probe function
succeeds for two devices and fails for a third?). So there's not
really any way for userspace to loop through a list of modules until
one succeeds.
-