0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __LINUX_REGULATOR_COUPLER_H_
0009 #define __LINUX_REGULATOR_COUPLER_H_
0010
0011 #include <linux/kernel.h>
0012 #include <linux/suspend.h>
0013
0014 struct regulator_coupler;
0015 struct regulator_dev;
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 struct regulator_coupler {
0042 struct list_head list;
0043
0044 int (*attach_regulator)(struct regulator_coupler *coupler,
0045 struct regulator_dev *rdev);
0046 int (*detach_regulator)(struct regulator_coupler *coupler,
0047 struct regulator_dev *rdev);
0048 int (*balance_voltage)(struct regulator_coupler *coupler,
0049 struct regulator_dev *rdev,
0050 suspend_state_t state);
0051 };
0052
0053 #ifdef CONFIG_REGULATOR
0054 int regulator_coupler_register(struct regulator_coupler *coupler);
0055 int regulator_check_consumers(struct regulator_dev *rdev,
0056 int *min_uV, int *max_uV,
0057 suspend_state_t state);
0058 int regulator_check_voltage(struct regulator_dev *rdev,
0059 int *min_uV, int *max_uV);
0060 int regulator_get_voltage_rdev(struct regulator_dev *rdev);
0061 int regulator_set_voltage_rdev(struct regulator_dev *rdev,
0062 int min_uV, int max_uV,
0063 suspend_state_t state);
0064 int regulator_do_balance_voltage(struct regulator_dev *rdev,
0065 suspend_state_t state, bool skip_coupled);
0066 #else
0067 static inline int regulator_coupler_register(struct regulator_coupler *coupler)
0068 {
0069 return 0;
0070 }
0071 static inline int regulator_check_consumers(struct regulator_dev *rdev,
0072 int *min_uV, int *max_uV,
0073 suspend_state_t state)
0074 {
0075 return -EINVAL;
0076 }
0077 static inline int regulator_check_voltage(struct regulator_dev *rdev,
0078 int *min_uV, int *max_uV)
0079 {
0080 return -EINVAL;
0081 }
0082 static inline int regulator_get_voltage_rdev(struct regulator_dev *rdev)
0083 {
0084 return -EINVAL;
0085 }
0086 static inline int regulator_set_voltage_rdev(struct regulator_dev *rdev,
0087 int min_uV, int max_uV,
0088 suspend_state_t state)
0089 {
0090 return -EINVAL;
0091 }
0092 static inline int regulator_do_balance_voltage(struct regulator_dev *rdev,
0093 suspend_state_t state,
0094 bool skip_coupled)
0095 {
0096 return -EINVAL;
0097 }
0098 #endif
0099
0100 #endif