Blame view

drivers/regulator/internal.h 2.57 KB
2874c5fd2   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-or-later */
0cdfcc0f9   Mark Brown   regulator: core: ...
2
3
4
5
6
7
8
  /*
   * internal.h  --  Voltage/Current Regulator framework internal code
   *
   * Copyright 2007, 2008 Wolfson Microelectronics PLC.
   * Copyright 2008 SlimLogic Ltd.
   *
   * Author: Liam Girdwood <lrg@slimlogic.co.uk>
0cdfcc0f9   Mark Brown   regulator: core: ...
9
10
11
12
   */
  
  #ifndef __REGULATOR_INTERNAL_H
  #define __REGULATOR_INTERNAL_H
c360a6df0   Chunyan Zhang   regulator: make r...
13
14
15
16
17
18
19
20
  #include <linux/suspend.h>
  
  #define REGULATOR_STATES_NUM	(PM_SUSPEND_MAX + 1)
  
  struct regulator_voltage {
  	int min_uV;
  	int max_uV;
  };
0cdfcc0f9   Mark Brown   regulator: core: ...
21
22
23
24
  /*
   * struct regulator
   *
   * One for each consumer device.
c360a6df0   Chunyan Zhang   regulator: make r...
25
26
27
28
29
30
   * @voltage - a voltage array for each state of runtime, i.e.:
   *            PM_SUSPEND_ON
   *            PM_SUSPEND_TO_IDLE
   *            PM_SUSPEND_STANDBY
   *            PM_SUSPEND_MEM
   *            PM_SUSPEND_MAX
0cdfcc0f9   Mark Brown   regulator: core: ...
31
32
33
34
35
36
   */
  struct regulator {
  	struct device *dev;
  	struct list_head list;
  	unsigned int always_on:1;
  	unsigned int bypass:1;
106dcff0e   Saravana Kannan   UPSTREAM: regulat...
37
  	unsigned int device_link:1;
0cdfcc0f9   Mark Brown   regulator: core: ...
38
  	int uA_load;
5451781da   Douglas Anderson   regulator: core: ...
39
40
  	unsigned int enable_count;
  	unsigned int deferred_disables;
c360a6df0   Chunyan Zhang   regulator: make r...
41
  	struct regulator_voltage voltage[REGULATOR_STATES_NUM];
0630b6143   Stephen Boyd   regulator: Mark s...
42
  	const char *supply_name;
0cdfcc0f9   Mark Brown   regulator: core: ...
43
44
45
46
  	struct device_attribute dev_attr;
  	struct regulator_dev *rdev;
  	struct dentry *debugfs;
  };
148096af0   Maciej Purski   regulator: core: ...
47
48
49
50
51
52
  extern struct class regulator_class;
  
  static inline struct regulator_dev *dev_to_rdev(struct device *dev)
  {
  	return container_of(dev, struct regulator_dev, dev);
  }
ef126a4a8   Mark Brown   regulator: of: Ad...
53
  #ifdef CONFIG_OF
08813e0ec   Changbin Du   regulator: add du...
54
  struct regulator_dev *of_find_regulator_by_node(struct device_node *np);
a0c7b164a   Mark Brown   regulator: of: Pr...
55
56
  struct regulator_init_data *regulator_of_get_init_data(struct device *dev,
  			         const struct regulator_desc *desc,
bfa21a0df   Krzysztof Kozlowski   regulator: Allow ...
57
  				 struct regulator_config *config,
a0c7b164a   Mark Brown   regulator: of: Pr...
58
  				 struct device_node **node);
a085a31af   Maciej Purski   regulator: core: ...
59
60
61
62
63
64
65
  
  struct regulator_dev *of_parse_coupled_regulator(struct regulator_dev *rdev,
  						 int index);
  
  int of_get_n_coupled(struct regulator_dev *rdev);
  
  bool of_check_coupling_data(struct regulator_dev *rdev);
ef126a4a8   Mark Brown   regulator: of: Ad...
66
  #else
08813e0ec   Changbin Du   regulator: add du...
67
68
69
70
71
  static inline struct regulator_dev *
  of_find_regulator_by_node(struct device_node *np)
  {
  	return NULL;
  }
ef126a4a8   Mark Brown   regulator: of: Ad...
72
73
74
  static inline struct regulator_init_data *
  regulator_of_get_init_data(struct device *dev,
  			   const struct regulator_desc *desc,
bfa21a0df   Krzysztof Kozlowski   regulator: Allow ...
75
  			   struct regulator_config *config,
ef126a4a8   Mark Brown   regulator: of: Ad...
76
77
78
79
  			   struct device_node **node)
  {
  	return NULL;
  }
a0c7b164a   Mark Brown   regulator: of: Pr...
80

a085a31af   Maciej Purski   regulator: core: ...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  static inline struct regulator_dev *
  of_parse_coupled_regulator(struct regulator_dev *rdev,
  			   int index)
  {
  	return NULL;
  }
  
  static inline int of_get_n_coupled(struct regulator_dev *rdev)
  {
  	return 0;
  }
  
  static inline bool of_check_coupling_data(struct regulator_dev *rdev)
  {
  	return false;
  }
  
  #endif
a8bd42a97   Dmitry Torokhov   regulator: core: ...
99
100
101
102
103
104
105
106
107
  enum regulator_get_type {
  	NORMAL_GET,
  	EXCLUSIVE_GET,
  	OPTIONAL_GET,
  	MAX_GET_TYPE
  };
  
  struct regulator *_regulator_get(struct device *dev, const char *id,
  				 enum regulator_get_type get_type);
0cdfcc0f9   Mark Brown   regulator: core: ...
108
  #endif