0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef __LINUX_PINCTRL_CONSUMER_H
0012 #define __LINUX_PINCTRL_CONSUMER_H
0013
0014 #include <linux/err.h>
0015 #include <linux/list.h>
0016 #include <linux/seq_file.h>
0017 #include <linux/pinctrl/pinctrl-state.h>
0018
0019
0020 struct pinctrl;
0021 struct pinctrl_state;
0022 struct device;
0023
0024 #ifdef CONFIG_PINCTRL
0025
0026
0027 extern bool pinctrl_gpio_can_use_line(unsigned gpio);
0028 extern int pinctrl_gpio_request(unsigned gpio);
0029 extern void pinctrl_gpio_free(unsigned gpio);
0030 extern int pinctrl_gpio_direction_input(unsigned gpio);
0031 extern int pinctrl_gpio_direction_output(unsigned gpio);
0032 extern int pinctrl_gpio_set_config(unsigned gpio, unsigned long config);
0033
0034 extern struct pinctrl * __must_check pinctrl_get(struct device *dev);
0035 extern void pinctrl_put(struct pinctrl *p);
0036 extern struct pinctrl_state * __must_check pinctrl_lookup_state(
0037 struct pinctrl *p,
0038 const char *name);
0039 extern int pinctrl_select_state(struct pinctrl *p, struct pinctrl_state *s);
0040
0041 extern struct pinctrl * __must_check devm_pinctrl_get(struct device *dev);
0042 extern void devm_pinctrl_put(struct pinctrl *p);
0043 extern int pinctrl_select_default_state(struct device *dev);
0044
0045 #ifdef CONFIG_PM
0046 extern int pinctrl_pm_select_default_state(struct device *dev);
0047 extern int pinctrl_pm_select_sleep_state(struct device *dev);
0048 extern int pinctrl_pm_select_idle_state(struct device *dev);
0049 #else
0050 static inline int pinctrl_pm_select_default_state(struct device *dev)
0051 {
0052 return 0;
0053 }
0054 static inline int pinctrl_pm_select_sleep_state(struct device *dev)
0055 {
0056 return 0;
0057 }
0058 static inline int pinctrl_pm_select_idle_state(struct device *dev)
0059 {
0060 return 0;
0061 }
0062 #endif
0063
0064 #else
0065
0066 static inline bool pinctrl_gpio_can_use_line(unsigned gpio)
0067 {
0068 return true;
0069 }
0070
0071 static inline int pinctrl_gpio_request(unsigned gpio)
0072 {
0073 return 0;
0074 }
0075
0076 static inline void pinctrl_gpio_free(unsigned gpio)
0077 {
0078 }
0079
0080 static inline int pinctrl_gpio_direction_input(unsigned gpio)
0081 {
0082 return 0;
0083 }
0084
0085 static inline int pinctrl_gpio_direction_output(unsigned gpio)
0086 {
0087 return 0;
0088 }
0089
0090 static inline int pinctrl_gpio_set_config(unsigned gpio, unsigned long config)
0091 {
0092 return 0;
0093 }
0094
0095 static inline struct pinctrl * __must_check pinctrl_get(struct device *dev)
0096 {
0097 return NULL;
0098 }
0099
0100 static inline void pinctrl_put(struct pinctrl *p)
0101 {
0102 }
0103
0104 static inline struct pinctrl_state * __must_check pinctrl_lookup_state(
0105 struct pinctrl *p,
0106 const char *name)
0107 {
0108 return NULL;
0109 }
0110
0111 static inline int pinctrl_select_state(struct pinctrl *p,
0112 struct pinctrl_state *s)
0113 {
0114 return 0;
0115 }
0116
0117 static inline struct pinctrl * __must_check devm_pinctrl_get(struct device *dev)
0118 {
0119 return NULL;
0120 }
0121
0122 static inline void devm_pinctrl_put(struct pinctrl *p)
0123 {
0124 }
0125
0126 static inline int pinctrl_select_default_state(struct device *dev)
0127 {
0128 return 0;
0129 }
0130
0131 static inline int pinctrl_pm_select_default_state(struct device *dev)
0132 {
0133 return 0;
0134 }
0135
0136 static inline int pinctrl_pm_select_sleep_state(struct device *dev)
0137 {
0138 return 0;
0139 }
0140
0141 static inline int pinctrl_pm_select_idle_state(struct device *dev)
0142 {
0143 return 0;
0144 }
0145
0146 #endif
0147
0148 static inline struct pinctrl * __must_check pinctrl_get_select(
0149 struct device *dev, const char *name)
0150 {
0151 struct pinctrl *p;
0152 struct pinctrl_state *s;
0153 int ret;
0154
0155 p = pinctrl_get(dev);
0156 if (IS_ERR(p))
0157 return p;
0158
0159 s = pinctrl_lookup_state(p, name);
0160 if (IS_ERR(s)) {
0161 pinctrl_put(p);
0162 return ERR_CAST(s);
0163 }
0164
0165 ret = pinctrl_select_state(p, s);
0166 if (ret < 0) {
0167 pinctrl_put(p);
0168 return ERR_PTR(ret);
0169 }
0170
0171 return p;
0172 }
0173
0174 static inline struct pinctrl * __must_check pinctrl_get_select_default(
0175 struct device *dev)
0176 {
0177 return pinctrl_get_select(dev, PINCTRL_STATE_DEFAULT);
0178 }
0179
0180 static inline struct pinctrl * __must_check devm_pinctrl_get_select(
0181 struct device *dev, const char *name)
0182 {
0183 struct pinctrl *p;
0184 struct pinctrl_state *s;
0185 int ret;
0186
0187 p = devm_pinctrl_get(dev);
0188 if (IS_ERR(p))
0189 return p;
0190
0191 s = pinctrl_lookup_state(p, name);
0192 if (IS_ERR(s)) {
0193 devm_pinctrl_put(p);
0194 return ERR_CAST(s);
0195 }
0196
0197 ret = pinctrl_select_state(p, s);
0198 if (ret < 0) {
0199 devm_pinctrl_put(p);
0200 return ERR_PTR(ret);
0201 }
0202
0203 return p;
0204 }
0205
0206 static inline struct pinctrl * __must_check devm_pinctrl_get_select_default(
0207 struct device *dev)
0208 {
0209 return devm_pinctrl_get_select(dev, PINCTRL_STATE_DEFAULT);
0210 }
0211
0212 #endif