[Cbe-oss-dev] [PATCH 2/4] Create and hook up of_platform_device_shutdown

Benjamin Herrenschmidt benh at kernel.crashing.org
Tue Feb 5 11:19:49 EST 2008


On Fri, 2008-01-25 at 16:59 +1100, Michael Ellerman wrote:
> Although of_platform_device's can have a shutdown routine, at the moment
> the bus code doesn't actually call it. So add the required glue to
> hook the shutdown routine.
> 
> Signed-off-by: Michael Ellerman <michael at ellerman.id.au>

Acked-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>

> ---
>  drivers/of/platform.c |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
> 
> 
> CC various folks who've written/touched of_platform_drivers which already
> have shutdown routines. These routines have never been called so they're
> about to get their first testing.
> 
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index b47bb2d..ca09a63 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -85,6 +85,15 @@ static int of_platform_device_resume(struct device * dev)
>  	return error;
>  }
>  
> +static void of_platform_device_shutdown(struct device *dev)
> +{
> +	struct of_device *of_dev = to_of_device(dev);
> +	struct of_platform_driver *drv = to_of_platform_driver(dev->driver);
> +
> +	if (dev->driver && drv->shutdown)
> +		drv->shutdown(of_dev);
> +}
> +
>  int of_bus_type_init(struct bus_type *bus, const char *name)
>  {
>  	bus->name = name;
> @@ -93,6 +102,7 @@ int of_bus_type_init(struct bus_type *bus, const char *name)
>  	bus->remove = of_platform_device_remove;
>  	bus->suspend = of_platform_device_suspend;
>  	bus->resume = of_platform_device_resume;
> +	bus->shutdown = of_platform_device_shutdown;
>  	return bus_register(bus);
>  }
>  




More information about the cbe-oss-dev mailing list