linux/drivers/bus/simple-pm-bus.c
<<
>>
Prefs
   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