[PATCH v2 1/5] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs
Russell King - ARM Linux
linux at arm.linux.org.uk
Thu Jun 27 18:49:02 EST 2013
On Thu, Jun 27, 2013 at 09:17:13AM +0300, Felipe Balbi wrote:
> On Wed, Jun 26, 2013 at 05:00:34PM +0200, Sylwester Nawrocki wrote:
> > Hi,
> >
> > On 06/25/2013 05:06 PM, Felipe Balbi wrote:
> > >> +static struct platform_driver exynos_video_phy_driver = {
> > >> > + .probe = exynos_video_phy_probe,
> > >
> > > you *must* provide a remove method. drivers with NULL remove are
> > > non-removable :-)
> >
> > Actually the remove() callback can be NULL, it's just missing module_exit
> > function that makes a module not unloadable.
>
> look at the implementation of platform_drv_remove():
>
> 499 static int platform_drv_remove(struct device *_dev)
> 500 {
> 501 struct platform_driver *drv = to_platform_driver(_dev->driver);
> 502 struct platform_device *dev = to_platform_device(_dev);
> 503 int ret;
> 504
> 505 ret = drv->remove(dev);
> 506 if (ACPI_HANDLE(_dev))
> 507 acpi_dev_pm_detach(_dev, true);
> 508
> 509 return ret;
> 510 }
>
> that's not a conditional call right :-)
Wrong.
if (drv->remove)
drv->driver.remove = platform_drv_remove;
The function you quote will only be used if drv->remove is non-NULL.
You do not need to provide a remove method.
More information about the devicetree-discuss
mailing list