root/drivers/cpuidle/cpuidle-clps711x.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. clps711x_cpuidle_halt
  2. clps711x_cpuidle_probe

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  *  CLPS711X CPU idle driver
   4  *
   5  *  Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
   6  */
   7 
   8 #include <linux/cpuidle.h>
   9 #include <linux/err.h>
  10 #include <linux/io.h>
  11 #include <linux/init.h>
  12 #include <linux/platform_device.h>
  13 
  14 #define CLPS711X_CPUIDLE_NAME   "clps711x-cpuidle"
  15 
  16 static void __iomem *clps711x_halt;
  17 
  18 static int clps711x_cpuidle_halt(struct cpuidle_device *dev,
  19                                  struct cpuidle_driver *drv, int index)
  20 {
  21         writel(0xaa, clps711x_halt);
  22 
  23         return index;
  24 }
  25 
  26 static struct cpuidle_driver clps711x_idle_driver = {
  27         .name           = CLPS711X_CPUIDLE_NAME,
  28         .owner          = THIS_MODULE,
  29         .states[0]      = {
  30                 .name           = "HALT",
  31                 .desc           = "CLPS711X HALT",
  32                 .enter          = clps711x_cpuidle_halt,
  33                 .exit_latency   = 1,
  34         },
  35         .state_count    = 1,
  36 };
  37 
  38 static int __init clps711x_cpuidle_probe(struct platform_device *pdev)
  39 {
  40         struct resource *res;
  41 
  42         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  43         clps711x_halt = devm_ioremap_resource(&pdev->dev, res);
  44         if (IS_ERR(clps711x_halt))
  45                 return PTR_ERR(clps711x_halt);
  46 
  47         return cpuidle_register(&clps711x_idle_driver, NULL);
  48 }
  49 
  50 static struct platform_driver clps711x_cpuidle_driver = {
  51         .driver = {
  52                 .name   = CLPS711X_CPUIDLE_NAME,
  53         },
  54 };
  55 builtin_platform_driver_probe(clps711x_cpuidle_driver, clps711x_cpuidle_probe);

/* [<][>][^][v][top][bottom][index][help] */