Dmitry Torokhov wrote: > You need to let go of the model that driver that drives hardware also > do the device discovery and it will all fall into place. It's not possible to sanely let go of that model. ISA discovery involves (as an example) poking at the same I/O ports as using does, meaning you will have to share a request_region() over discovery and use for one -- you can't decouple that due to obvious races. >> Anyways, the additional method would, I feel, be the conceptually >> cleanest approach. Practically speaking though, simply doing a manual >> probe and only calling platform_register() after everything is found to >> be present and accounted for is not much of a problem either. >> > > Unfortunately it breaks manual driver binding/unbinding through sysfs > so I don't think it is a good long-term solution. Yes. I don't see a significantly cleaner solution then than the slightly hackish "using drvdata as a private success flag" that I posted before. Example patch versus snd_adlib attached again. This seems to work well. Takashi: do you agree? If the probe() method return is not going to be propagated up, there are few other options. (Continuing the loop on IS_ERR(device) is then also a bit questionable again as the IS_ERR then signifies an eror in the bowels of the device model, but I feel it's still the correct thing to do) Rene.