summaryrefslogtreecommitdiffstats
path: root/include/regulator.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/regulator.h')
-rw-r--r--include/regulator.h56
1 files changed, 47 insertions, 9 deletions
diff --git a/include/regulator.h b/include/regulator.h
index dfdfbf0332..305da0d774 100644
--- a/include/regulator.h
+++ b/include/regulator.h
@@ -2,7 +2,10 @@
#ifndef __REGULATOR_H
#define __REGULATOR_H
-struct device_d;
+#include <linux/bitops.h>
+#include <linux/err.h>
+
+struct device;
/* struct regulator is an opaque object for consumers */
struct regulator;
@@ -32,6 +35,8 @@ struct regulator_bulk_data {
* structure contains the non-varying parts of the regulator
* description.
*
+ * @supply_name: Identifying the supply of this regulator
+ *
* @n_voltages: Number of selectors available for ops.list_voltage().
* @ops: Regulator operations table.
*
@@ -57,6 +62,7 @@ struct regulator_bulk_data {
*/
struct regulator_desc {
+ const char *supply_name;
unsigned n_voltages;
const struct regulator_ops *ops;
@@ -82,12 +88,22 @@ struct regulator_desc {
};
struct regulator_dev {
+ const char *name;
+ struct list_head list;
+ struct device_node *node;
+ int enable_count;
+ int enable_time_us;
+ int min_uv;
+ int max_uv;
+ struct list_head consumer_list;
const struct regulator_desc *desc;
struct regmap *regmap;
bool boot_on;
bool always_on;
/* the device this regulator device belongs to */
- struct device_d *dev;
+ struct device *dev;
+ /* The regulator powering this device */
+ struct regulator *supply;
};
struct regulator_ops {
@@ -140,14 +156,28 @@ static inline int of_regulator_register(struct regulator_dev *rd,
return -ENOSYS;
}
#endif
-int dev_regulator_register(struct regulator_dev *rd, const char * name,
- const char* supply);
+int dev_regulator_register(struct regulator_dev *rd, const char *name);
+
+#define REGULATOR_PRINT_DEVS BIT(0)
+void regulators_print(unsigned flags);
+
+const char *rdev_get_name(struct regulator_dev *rdev);
-void regulators_print(void);
+#define rdev_crit(rdev, fmt, ...) \
+ pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
+#define rdev_err(rdev, fmt, ...) \
+ pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
+#define rdev_warn(rdev, fmt, ...) \
+ pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
+#define rdev_info(rdev, fmt, ...) \
+ pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
+#define rdev_dbg(rdev, fmt, ...) \
+ pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
#ifdef CONFIG_REGULATOR
-struct regulator *regulator_get(struct device_d *, const char *);
+struct regulator *regulator_get(struct device *, const char *);
+void regulator_put(struct regulator *r);
struct regulator *regulator_get_name(const char *name);
int regulator_enable(struct regulator *);
int regulator_disable(struct regulator *);
@@ -167,7 +197,7 @@ int regulator_list_voltage_linear_range(struct regulator_dev *rdev,
int regulator_get_voltage_sel_regmap(struct regulator_dev *rdev);
int regulator_map_voltage_iterate(struct regulator_dev *rdev,
int min_uV, int max_uV);
-int regulator_bulk_get(struct device_d *dev, int num_consumers,
+int regulator_bulk_get(struct device *dev, int num_consumers,
struct regulator_bulk_data *consumers);
int regulator_bulk_enable(int num_consumers,
struct regulator_bulk_data *consumers);
@@ -198,7 +228,8 @@ int regulator_list_voltage_table(struct regulator_dev *rdev,
unsigned int selector);
#else
-static inline struct regulator *regulator_get(struct device_d *dev, const char *id)
+static inline struct regulator *regulator_get(struct device *dev,
+ const char *id)
{
return NULL;
}
@@ -224,7 +255,7 @@ static inline int regulator_set_voltage(struct regulator *regulator,
return 0;
}
-static inline int regulator_bulk_get(struct device_d *dev, int num_consumers,
+static inline int regulator_bulk_get(struct device *dev, int num_consumers,
struct regulator_bulk_data *consumers)
{
return 0;
@@ -254,4 +285,11 @@ static inline int regulator_get_voltage(struct regulator *regulator)
#endif
+static inline struct regulator *regulator_get_optional(struct device *dev,
+ const char *id)
+{
+ return regulator_get(dev, id) ?: ERR_PTR(-ENODEV);
+}
+
+
#endif /* __REGULATOR_H */