On Sunday 10 February 2008, Adrian McMenamin wrote: > +static int dc_pad_connect(struct maple_device *mdev) > +{ > + ... > + if (data&(1<= 0) could use a few spaces in that first expression > +/* allow the controller to be used */ > +static int probe_maple_controller(struct device *dev) > +{ > + struct maple_device *mdev = to_maple_dev(dev); > + struct maple_driver *mdrv = to_maple_driver(dev->driver); > + int error; > + > + error = dc_pad_connect(mdev); > + if (error) > + return error; > + > + mdev->driver = mdrv; > + > + return 0; > +} > + > +static struct maple_driver dc_pad_driver = { > + .function = MAPLE_FUNC_CONTROLLER, > + .connect = dc_pad_connect, > + .disconnect = dc_pad_disconnect, > + .drv = { > + .name = "Dreamcast_controller", > + .probe = probe_maple_controller, > + }, > +}; no remove function ? looks like the probe() forces a connect, but there's no remove() to force a disconnect ... -mike