root/include/linux/pm_clock.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. pm_clk_no_clocks
  2. pm_clk_no_clocks
  3. pm_clk_init
  4. pm_clk_create
  5. pm_clk_destroy
  6. pm_clk_add
  7. pm_clk_add_clk
  8. of_pm_clk_add_clks
  9. pm_clk_remove
  10. pm_clk_remove_clk
  11. pm_clk_add_notifier

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * pm_clock.h - Definitions and headers related to device clocks.
   4  *
   5  * Copyright (C) 2011 Rafael J. Wysocki <rjw@sisk.pl>, Renesas Electronics Corp.
   6  */
   7 
   8 #ifndef _LINUX_PM_CLOCK_H
   9 #define _LINUX_PM_CLOCK_H
  10 
  11 #include <linux/device.h>
  12 #include <linux/notifier.h>
  13 
  14 struct pm_clk_notifier_block {
  15         struct notifier_block nb;
  16         struct dev_pm_domain *pm_domain;
  17         char *con_ids[];
  18 };
  19 
  20 struct clk;
  21 
  22 #ifdef CONFIG_PM
  23 extern int pm_clk_runtime_suspend(struct device *dev);
  24 extern int pm_clk_runtime_resume(struct device *dev);
  25 #define USE_PM_CLK_RUNTIME_OPS \
  26         .runtime_suspend = pm_clk_runtime_suspend, \
  27         .runtime_resume = pm_clk_runtime_resume,
  28 #else
  29 #define USE_PM_CLK_RUNTIME_OPS
  30 #endif
  31 
  32 #ifdef CONFIG_PM_CLK
  33 static inline bool pm_clk_no_clocks(struct device *dev)
  34 {
  35         return dev && dev->power.subsys_data
  36                 && list_empty(&dev->power.subsys_data->clock_list);
  37 }
  38 
  39 extern void pm_clk_init(struct device *dev);
  40 extern int pm_clk_create(struct device *dev);
  41 extern void pm_clk_destroy(struct device *dev);
  42 extern int pm_clk_add(struct device *dev, const char *con_id);
  43 extern int pm_clk_add_clk(struct device *dev, struct clk *clk);
  44 extern int of_pm_clk_add_clk(struct device *dev, const char *name);
  45 extern int of_pm_clk_add_clks(struct device *dev);
  46 extern void pm_clk_remove(struct device *dev, const char *con_id);
  47 extern void pm_clk_remove_clk(struct device *dev, struct clk *clk);
  48 extern int pm_clk_suspend(struct device *dev);
  49 extern int pm_clk_resume(struct device *dev);
  50 #else
  51 static inline bool pm_clk_no_clocks(struct device *dev)
  52 {
  53         return true;
  54 }
  55 static inline void pm_clk_init(struct device *dev)
  56 {
  57 }
  58 static inline int pm_clk_create(struct device *dev)
  59 {
  60         return -EINVAL;
  61 }
  62 static inline void pm_clk_destroy(struct device *dev)
  63 {
  64 }
  65 static inline int pm_clk_add(struct device *dev, const char *con_id)
  66 {
  67         return -EINVAL;
  68 }
  69 
  70 static inline int pm_clk_add_clk(struct device *dev, struct clk *clk)
  71 {
  72         return -EINVAL;
  73 }
  74 static inline int of_pm_clk_add_clks(struct device *dev)
  75 {
  76         return -EINVAL;
  77 }
  78 static inline void pm_clk_remove(struct device *dev, const char *con_id)
  79 {
  80 }
  81 #define pm_clk_suspend  NULL
  82 #define pm_clk_resume   NULL
  83 static inline void pm_clk_remove_clk(struct device *dev, struct clk *clk)
  84 {
  85 }
  86 #endif
  87 
  88 #ifdef CONFIG_HAVE_CLK
  89 extern void pm_clk_add_notifier(struct bus_type *bus,
  90                                         struct pm_clk_notifier_block *clknb);
  91 #else
  92 static inline void pm_clk_add_notifier(struct bus_type *bus,
  93                                         struct pm_clk_notifier_block *clknb)
  94 {
  95 }
  96 #endif
  97 
  98 #endif

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