brintos

brintos / linux-shallow public Read only

0
0
Text · 3.5 KiB · 5b43f80 Raw
133 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * internal.h  --  Voltage/Current Regulator framework internal code4 *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_H12#define __REGULATOR_INTERNAL_H13 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 regulator36 *37 * One for each consumer device.38 * @voltage - a voltage array for each state of runtime, i.e.:39 *            PM_SUSPEND_ON40 *            PM_SUSPEND_TO_IDLE41 *            PM_SUSPEND_STANDBY42 *            PM_SUSPEND_MEM43 *            PM_SUSPEND_MAX44 */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 68#ifdef CONFIG_OF69struct regulator_dev *of_regulator_dev_lookup(struct device *dev,70					      const char *supply);71struct regulator_init_data *regulator_of_get_init_data(struct device *dev,72			         const struct regulator_desc *desc,73				 struct regulator_config *config,74				 struct device_node **node);75 76struct regulator_dev *of_parse_coupled_regulator(struct regulator_dev *rdev,77						 int index);78 79int of_get_n_coupled(struct regulator_dev *rdev);80 81bool of_check_coupling_data(struct regulator_dev *rdev);82 83#else84static inline struct regulator_dev *of_regulator_dev_lookup(struct device *dev,85							    const char *supply)86{87	return ERR_PTR(-ENODEV);88}89 90static inline struct regulator_init_data *91regulator_of_get_init_data(struct device *dev,92			   const struct regulator_desc *desc,93			   struct regulator_config *config,94			   struct device_node **node)95{96	return NULL;97}98 99static inline struct regulator_dev *100of_parse_coupled_regulator(struct regulator_dev *rdev,101			   int index)102{103	return NULL;104}105 106static inline int of_get_n_coupled(struct regulator_dev *rdev)107{108	return 0;109}110 111static inline bool of_check_coupling_data(struct regulator_dev *rdev)112{113	return false;114}115 116#endif117enum regulator_get_type {118	NORMAL_GET,119	EXCLUSIVE_GET,120	OPTIONAL_GET,121	MAX_GET_TYPE122};123 124int _regulator_get_common_check(struct device *dev, const char *id,125				enum regulator_get_type get_type);126struct regulator *_regulator_get_common(struct regulator_dev *rdev, struct device *dev,127					const char *id, enum regulator_get_type get_type);128struct regulator *_regulator_get(struct device *dev, const char *id,129				 enum regulator_get_type get_type);130int _regulator_bulk_get(struct device *dev, int num_consumers,131			struct regulator_bulk_data *consumers, enum regulator_get_type get_type);132#endif133