Linux Audio

Check our new training course

Loading...
v6.13.7
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 * internal.h  --  Voltage/Current Regulator framework internal code
  4 *
  5 * Copyright 2007, 2008 Wolfson Microelectronics PLC.
  6 * Copyright 2008 SlimLogic Ltd.
  7 *
  8 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
  9 */
 10
 11#ifndef __REGULATOR_INTERNAL_H
 12#define __REGULATOR_INTERNAL_H
 13
 14#include <linux/suspend.h>
 15
 16#define REGULATOR_STATES_NUM	(PM_SUSPEND_MAX + 1)
 17
 18#define rdev_crit(rdev, fmt, ...)					\
 19	pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 20#define rdev_err(rdev, fmt, ...)					\
 21	pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 22#define rdev_warn(rdev, fmt, ...)					\
 23	pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 24#define rdev_info(rdev, fmt, ...)					\
 25	pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 26#define rdev_dbg(rdev, fmt, ...)					\
 27	pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 28
 29struct regulator_voltage {
 30	int min_uV;
 31	int max_uV;
 32};
 33
 34/*
 35 * struct regulator
 36 *
 37 * One for each consumer device.
 38 * @voltage - a voltage array for each state of runtime, i.e.:
 39 *            PM_SUSPEND_ON
 40 *            PM_SUSPEND_TO_IDLE
 41 *            PM_SUSPEND_STANDBY
 42 *            PM_SUSPEND_MEM
 43 *            PM_SUSPEND_MAX
 44 */
 45struct regulator {
 46	struct device *dev;
 47	struct list_head list;
 48	unsigned int always_on:1;
 49	unsigned int bypass:1;
 50	unsigned int device_link:1;
 51	int uA_load;
 52	unsigned int enable_count;
 53	unsigned int deferred_disables;
 54	struct regulator_voltage voltage[REGULATOR_STATES_NUM];
 55	const char *supply_name;
 56	struct device_attribute dev_attr;
 57	struct regulator_dev *rdev;
 58	struct dentry *debugfs;
 59};
 60
 61extern const struct class regulator_class;
 62
 63static inline struct regulator_dev *dev_to_rdev(struct device *dev)
 64{
 65	return container_of(dev, struct regulator_dev, dev);
 66}
 67
 68enum regulator_get_type {
 69	NORMAL_GET,
 70	EXCLUSIVE_GET,
 71	OPTIONAL_GET,
 72	MAX_GET_TYPE
 73};
 74
 75#ifdef CONFIG_OF
 76struct regulator_dev *of_regulator_dev_lookup(struct device *dev,
 77					      struct device_node *np,
 78					      const char *supply);
 79struct regulator_init_data *regulator_of_get_init_data(struct device *dev,
 80			         const struct regulator_desc *desc,
 81				 struct regulator_config *config,
 82				 struct device_node **node);
 83
 84struct regulator *_of_regulator_get(struct device *dev, struct device_node *node,
 85				    const char *id, enum regulator_get_type get_type);
 86
 87struct regulator_dev *of_parse_coupled_regulator(struct regulator_dev *rdev,
 88						 int index);
 89
 90int of_get_n_coupled(struct regulator_dev *rdev);
 91
 92bool of_check_coupling_data(struct regulator_dev *rdev);
 93
 94#else
 95static inline struct regulator_dev *of_regulator_dev_lookup(struct device *dev,
 96							    struct device_node *np,
 97							    const char *supply)
 98{
 99	return ERR_PTR(-ENODEV);
100}
101
102static inline struct regulator_init_data *
103regulator_of_get_init_data(struct device *dev,
104			   const struct regulator_desc *desc,
105			   struct regulator_config *config,
106			   struct device_node **node)
107{
108	return NULL;
109}
110
111static inline struct regulator_dev *
112of_parse_coupled_regulator(struct regulator_dev *rdev,
113			   int index)
114{
115	return NULL;
116}
117
118static inline int of_get_n_coupled(struct regulator_dev *rdev)
119{
120	return 0;
121}
122
123static inline bool of_check_coupling_data(struct regulator_dev *rdev)
124{
125	return false;
126}
127
128#endif
 
 
 
 
 
 
129
130int _regulator_get_common_check(struct device *dev, const char *id,
131				enum regulator_get_type get_type);
132struct regulator *_regulator_get_common(struct regulator_dev *rdev, struct device *dev,
133					const char *id, enum regulator_get_type get_type);
134struct regulator *_regulator_get(struct device *dev, const char *id,
135				 enum regulator_get_type get_type);
136int _regulator_bulk_get(struct device *dev, int num_consumers,
137			struct regulator_bulk_data *consumers, enum regulator_get_type get_type);
138#endif
v6.2
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 * internal.h  --  Voltage/Current Regulator framework internal code
  4 *
  5 * Copyright 2007, 2008 Wolfson Microelectronics PLC.
  6 * Copyright 2008 SlimLogic Ltd.
  7 *
  8 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
  9 */
 10
 11#ifndef __REGULATOR_INTERNAL_H
 12#define __REGULATOR_INTERNAL_H
 13
 14#include <linux/suspend.h>
 15
 16#define REGULATOR_STATES_NUM	(PM_SUSPEND_MAX + 1)
 17
 18#define rdev_crit(rdev, fmt, ...)					\
 19	pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 20#define rdev_err(rdev, fmt, ...)					\
 21	pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 22#define rdev_warn(rdev, fmt, ...)					\
 23	pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 24#define rdev_info(rdev, fmt, ...)					\
 25	pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 26#define rdev_dbg(rdev, fmt, ...)					\
 27	pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
 28
 29struct regulator_voltage {
 30	int min_uV;
 31	int max_uV;
 32};
 33
 34/*
 35 * struct regulator
 36 *
 37 * One for each consumer device.
 38 * @voltage - a voltage array for each state of runtime, i.e.:
 39 *            PM_SUSPEND_ON
 40 *            PM_SUSPEND_TO_IDLE
 41 *            PM_SUSPEND_STANDBY
 42 *            PM_SUSPEND_MEM
 43 *            PM_SUSPEND_MAX
 44 */
 45struct regulator {
 46	struct device *dev;
 47	struct list_head list;
 48	unsigned int always_on:1;
 49	unsigned int bypass:1;
 50	unsigned int device_link:1;
 51	int uA_load;
 52	unsigned int enable_count;
 53	unsigned int deferred_disables;
 54	struct regulator_voltage voltage[REGULATOR_STATES_NUM];
 55	const char *supply_name;
 56	struct device_attribute dev_attr;
 57	struct regulator_dev *rdev;
 58	struct dentry *debugfs;
 59};
 60
 61extern struct class regulator_class;
 62
 63static inline struct regulator_dev *dev_to_rdev(struct device *dev)
 64{
 65	return container_of(dev, struct regulator_dev, dev);
 66}
 67
 
 
 
 
 
 
 
 68#ifdef CONFIG_OF
 69struct regulator_dev *of_find_regulator_by_node(struct device_node *np);
 
 
 70struct regulator_init_data *regulator_of_get_init_data(struct device *dev,
 71			         const struct regulator_desc *desc,
 72				 struct regulator_config *config,
 73				 struct device_node **node);
 74
 
 
 
 75struct regulator_dev *of_parse_coupled_regulator(struct regulator_dev *rdev,
 76						 int index);
 77
 78int of_get_n_coupled(struct regulator_dev *rdev);
 79
 80bool of_check_coupling_data(struct regulator_dev *rdev);
 81
 82#else
 83static inline struct regulator_dev *
 84of_find_regulator_by_node(struct device_node *np)
 
 85{
 86	return NULL;
 87}
 88
 89static inline struct regulator_init_data *
 90regulator_of_get_init_data(struct device *dev,
 91			   const struct regulator_desc *desc,
 92			   struct regulator_config *config,
 93			   struct device_node **node)
 94{
 95	return NULL;
 96}
 97
 98static inline struct regulator_dev *
 99of_parse_coupled_regulator(struct regulator_dev *rdev,
100			   int index)
101{
102	return NULL;
103}
104
105static inline int of_get_n_coupled(struct regulator_dev *rdev)
106{
107	return 0;
108}
109
110static inline bool of_check_coupling_data(struct regulator_dev *rdev)
111{
112	return false;
113}
114
115#endif
116enum regulator_get_type {
117	NORMAL_GET,
118	EXCLUSIVE_GET,
119	OPTIONAL_GET,
120	MAX_GET_TYPE
121};
122
 
 
 
 
123struct regulator *_regulator_get(struct device *dev, const char *id,
124				 enum regulator_get_type get_type);
125int _regulator_bulk_get(struct device *dev, int num_consumers,
126			struct regulator_bulk_data *consumers, enum regulator_get_type get_type);
127#endif