2015-02-05 13:11:28 +03:00
/*
* Simple Power - Managed Bus Driver
*
* Copyright ( C ) 2014 - 2015 Glider bvba
*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*/
# include <linux/module.h>
# include <linux/of_platform.h>
# include <linux/platform_device.h>
# include <linux/pm_runtime.h>
static int simple_pm_bus_probe ( struct platform_device * pdev )
{
2021-01-15 11:47:17 +03:00
const struct of_dev_auxdata * lookup = dev_get_platdata ( & pdev - > dev ) ;
2015-02-05 13:11:28 +03:00
struct device_node * np = pdev - > dev . of_node ;
dev_dbg ( & pdev - > dev , " %s \n " , __func__ ) ;
pm_runtime_enable ( & pdev - > dev ) ;
if ( np )
2021-01-15 11:47:17 +03:00
of_platform_populate ( np , NULL , lookup , & pdev - > dev ) ;
2015-02-05 13:11:28 +03:00
return 0 ;
}
static int simple_pm_bus_remove ( struct platform_device * pdev )
{
dev_dbg ( & pdev - > dev , " %s \n " , __func__ ) ;
pm_runtime_disable ( & pdev - > dev ) ;
return 0 ;
}
static const struct of_device_id simple_pm_bus_of_match [ ] = {
{ . compatible = " simple-pm-bus " , } ,
{ /* sentinel */ }
} ;
MODULE_DEVICE_TABLE ( of , simple_pm_bus_of_match ) ;
static struct platform_driver simple_pm_bus_driver = {
. probe = simple_pm_bus_probe ,
. remove = simple_pm_bus_remove ,
. driver = {
. name = " simple-pm-bus " ,
. of_match_table = simple_pm_bus_of_match ,
} ,
} ;
module_platform_driver ( simple_pm_bus_driver ) ;
MODULE_DESCRIPTION ( " Simple Power-Managed Bus Driver " ) ;
MODULE_AUTHOR ( " Geert Uytterhoeven <geert+renesas@glider.be> " ) ;
MODULE_LICENSE ( " GPL v2 " ) ;