Re: Driver core change request

Greg KH
2004-10-07T22:01:56Z

On Wed, Oct 06, 2004 at 11:54:18PM -0500, Dmitry Torokhov wrote:
> Hi,
>
> I am reworking my sysfs serio patches (trying to get dynamic psmouse
> protocol switching) and I am wondering if we could export device_attach
> function. Serio system allows user to request device rescan - force current
> driver to let go off the device and find another suitable driver. Also user
> can manually request device to be disconnected/connected to a driver. By
> having device_attach exported I could get rid of some duplicated code.

driver_attach() is global, so I don't have a problem with making
device_attach() global either. Just send me a patch :)

> Also serio allows user to request a specific driver to be bound to a device
> in case there are several options (psmouse/serio_raw for example). To do
> that and not poke in the driver core guts too much I need something like the
> following:
>
> int driver_probe_device(struct device_driver *dev, struct device *dev)
> {
> int error;
>
> dev->driver = drv;
> if (drv->probe) {
> if ((error = drv->probe(dev))) {
> dev->driver = NULL;
> return error;
> }
> }
> device_bind_driver(dev);
> return 0;
> }
>
>
> static int bus_match(struct device * dev, struct device_driver * drv)
> {
> if (dev->bus->match(dev, drv))
> return driver_probe_device(drv, dev);
>
> return -ENODEV;
> }
>
> I.e driver_probe_device is exported. Does it have a chance to be accepted?

What's wrong with doing what the pci core does in this situation and
call driver_attach()?

thanks,

greg k-h