1/* 2 * Simple Power-Managed Bus Driver 3 * 4 * Copyright (C) 2014-2015 Glider bvba 5 * 6 * This file is subject to the terms and conditions of the GNU General Public 7 * License. See the file "COPYING" in the main directory of this archive 8 * for more details. 9 */ 10 11#include <linux/module.h> 12#include <linux/of_platform.h> 13#include <linux/platform_device.h> 14#include <linux/pm_runtime.h> 15 16 17static int simple_pm_bus_probe(struct platform_device *pdev) 18{ 19 struct device_node *np = pdev->dev.of_node; 20 21 dev_dbg(&pdev->dev, "%s\n", __func__); 22 23 pm_runtime_enable(&pdev->dev); 24 25 if (np) 26 of_platform_populate(np, NULL, NULL, &pdev->dev); 27 28 return 0; 29} 30 31static int simple_pm_bus_remove(struct platform_device *pdev) 32{ 33 dev_dbg(&pdev->dev, "%s\n", __func__); 34 35 pm_runtime_disable(&pdev->dev); 36 return 0; 37} 38 39static const struct of_device_id simple_pm_bus_of_match[] = { 40 { .compatible = "simple-pm-bus", }, 41 { /* sentinel */ } 42}; 43MODULE_DEVICE_TABLE(of, simple_pm_bus_of_match); 44 45static struct platform_driver simple_pm_bus_driver = { 46 .probe = simple_pm_bus_probe, 47 .remove = simple_pm_bus_remove, 48 .driver = { 49 .name = "simple-pm-bus", 50 .of_match_table = simple_pm_bus_of_match, 51 }, 52}; 53 54module_platform_driver(simple_pm_bus_driver); 55 56MODULE_DESCRIPTION("Simple Power-Managed Bus Driver"); 57MODULE_AUTHOR("Geert Uytterhoeven <geert+renesas@glider.be>"); 58MODULE_LICENSE("GPL v2"); 59