.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
---|
1 | 2 | /* |
---|
2 | 3 | * External Connector (extcon) framework |
---|
3 | 4 | * - linux/include/linux/extcon.h for extcon consumer device driver. |
---|
.. | .. |
---|
12 | 13 | * based on switch class driver |
---|
13 | 14 | * Copyright (C) 2008 Google, Inc. |
---|
14 | 15 | * Author: Mike Lockwood <lockwood@android.com> |
---|
15 | | - * |
---|
16 | | - * This software is licensed under the terms of the GNU General Public |
---|
17 | | - * License version 2, as published by the Free Software Foundation, and |
---|
18 | | - * may be copied, distributed, and modified under those terms. |
---|
19 | | - * |
---|
20 | | - * This program is distributed in the hope that it will be useful, |
---|
21 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
22 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
23 | | - * GNU General Public License for more details. |
---|
24 | 16 | */ |
---|
25 | 17 | |
---|
26 | 18 | #ifndef __LINUX_EXTCON_H__ |
---|
.. | .. |
---|
85 | 77 | #define EXTCON_DISP_VGA 43 /* Video Graphics Array */ |
---|
86 | 78 | #define EXTCON_DISP_DP 44 /* Display Port */ |
---|
87 | 79 | #define EXTCON_DISP_HMD 45 /* Head-Mounted Display */ |
---|
88 | | -#define EXTCON_DISP_HDMI_AUDIO 46 /* High-Definition Multimedia Interface Audio */ |
---|
| 80 | +#define EXTCON_DISP_CVBS 46 /* Composite Video Broadcast Signal */ |
---|
| 81 | +#define EXTCON_DISP_EDP 47 /* Embedded Display Port */ |
---|
89 | 82 | |
---|
90 | 83 | /* Miscellaneous external connector */ |
---|
91 | 84 | #define EXTCON_DOCK 60 |
---|
.. | .. |
---|
127 | 120 | * @type: integer (intval) |
---|
128 | 121 | * @value: 0 (USB/USB2) or 1 (USB3) |
---|
129 | 122 | * @default: 0 (USB/USB2) |
---|
130 | | - * - EXTCON_PROP_USB_TYPEC_MED_HIGH_CURRENT |
---|
131 | | - * @type: integer (intval) |
---|
132 | | - * @value: 0 (default current), 1 (medium or high current) |
---|
133 | | - * @default: 0 (default current) |
---|
134 | 123 | * |
---|
135 | 124 | */ |
---|
136 | 125 | #define EXTCON_PROP_USB_VBUS 0 |
---|
137 | 126 | #define EXTCON_PROP_USB_TYPEC_POLARITY 1 |
---|
138 | 127 | #define EXTCON_PROP_USB_SS 2 |
---|
139 | | -#define EXTCON_PROP_USB_TYPEC_MED_HIGH_CURRENT 3 |
---|
140 | 128 | |
---|
141 | 129 | #define EXTCON_PROP_USB_MIN 0 |
---|
142 | | -#define EXTCON_PROP_USB_MAX 3 |
---|
| 130 | +#define EXTCON_PROP_USB_MAX 2 |
---|
143 | 131 | #define EXTCON_PROP_USB_CNT (EXTCON_PROP_USB_MAX - EXTCON_PROP_USB_MIN + 1) |
---|
144 | 132 | |
---|
145 | 133 | /* Properties of EXTCON_TYPE_CHG. */ |
---|
.. | .. |
---|
185 | 173 | * Following APIs get the connected state of each external connector. |
---|
186 | 174 | * The 'id' argument indicates the defined external connector. |
---|
187 | 175 | */ |
---|
188 | | -extern int extcon_get_state(struct extcon_dev *edev, unsigned int id); |
---|
| 176 | +int extcon_get_state(struct extcon_dev *edev, unsigned int id); |
---|
189 | 177 | |
---|
190 | 178 | /* |
---|
191 | 179 | * Following APIs get the property of each external connector. |
---|
.. | .. |
---|
196 | 184 | * for each external connector. They are used to get the capability of the |
---|
197 | 185 | * property of each external connector based on the id and property. |
---|
198 | 186 | */ |
---|
199 | | -extern int extcon_get_property(struct extcon_dev *edev, unsigned int id, |
---|
| 187 | +int extcon_get_property(struct extcon_dev *edev, unsigned int id, |
---|
200 | 188 | unsigned int prop, |
---|
201 | 189 | union extcon_property_value *prop_val); |
---|
202 | | -extern int extcon_get_property_capability(struct extcon_dev *edev, |
---|
| 190 | +int extcon_get_property_capability(struct extcon_dev *edev, |
---|
203 | 191 | unsigned int id, unsigned int prop); |
---|
204 | 192 | |
---|
205 | 193 | /* |
---|
.. | .. |
---|
211 | 199 | * extcon_register_notifier_all(*edev, *nb) : Register a notifier block |
---|
212 | 200 | * for all supported external connectors of the extcon. |
---|
213 | 201 | */ |
---|
214 | | -extern int extcon_register_notifier(struct extcon_dev *edev, unsigned int id, |
---|
| 202 | +int extcon_register_notifier(struct extcon_dev *edev, unsigned int id, |
---|
215 | 203 | struct notifier_block *nb); |
---|
216 | | -extern int extcon_unregister_notifier(struct extcon_dev *edev, unsigned int id, |
---|
| 204 | +int extcon_unregister_notifier(struct extcon_dev *edev, unsigned int id, |
---|
217 | 205 | struct notifier_block *nb); |
---|
218 | | -extern int extcon_register_blocking_notifier(struct extcon_dev *edev, |
---|
219 | | - unsigned int id, struct notifier_block *nb); |
---|
220 | | -extern int extcon_unregister_blocking_notifier(struct extcon_dev *edev, |
---|
221 | | - unsigned int id, struct notifier_block *nb); |
---|
222 | | -extern int devm_extcon_register_notifier(struct device *dev, |
---|
| 206 | +int devm_extcon_register_notifier(struct device *dev, |
---|
223 | 207 | struct extcon_dev *edev, unsigned int id, |
---|
224 | 208 | struct notifier_block *nb); |
---|
225 | | -extern void devm_extcon_unregister_notifier(struct device *dev, |
---|
| 209 | +void devm_extcon_unregister_notifier(struct device *dev, |
---|
226 | 210 | struct extcon_dev *edev, unsigned int id, |
---|
227 | 211 | struct notifier_block *nb); |
---|
228 | 212 | |
---|
229 | | -extern int extcon_register_notifier_all(struct extcon_dev *edev, |
---|
| 213 | +int extcon_register_notifier_all(struct extcon_dev *edev, |
---|
230 | 214 | struct notifier_block *nb); |
---|
231 | | -extern int extcon_unregister_notifier_all(struct extcon_dev *edev, |
---|
| 215 | +int extcon_unregister_notifier_all(struct extcon_dev *edev, |
---|
232 | 216 | struct notifier_block *nb); |
---|
233 | | -extern int devm_extcon_register_notifier_all(struct device *dev, |
---|
| 217 | +int devm_extcon_register_notifier_all(struct device *dev, |
---|
234 | 218 | struct extcon_dev *edev, |
---|
235 | 219 | struct notifier_block *nb); |
---|
236 | | -extern void devm_extcon_unregister_notifier_all(struct device *dev, |
---|
| 220 | +void devm_extcon_unregister_notifier_all(struct device *dev, |
---|
237 | 221 | struct extcon_dev *edev, |
---|
238 | 222 | struct notifier_block *nb); |
---|
239 | 223 | |
---|
240 | 224 | /* |
---|
241 | 225 | * Following APIs get the extcon_dev from devicetree or by through extcon name. |
---|
242 | 226 | */ |
---|
243 | | -extern struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name); |
---|
244 | | -extern struct extcon_dev *extcon_find_edev_by_node(struct device_node *node); |
---|
245 | | -extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, |
---|
| 227 | +struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name); |
---|
| 228 | +struct extcon_dev *extcon_find_edev_by_node(struct device_node *node); |
---|
| 229 | +struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, |
---|
246 | 230 | int index); |
---|
247 | 231 | |
---|
248 | 232 | /* Following API get the name of extcon device. */ |
---|
249 | | -extern const char *extcon_get_edev_name(struct extcon_dev *edev); |
---|
| 233 | +const char *extcon_get_edev_name(struct extcon_dev *edev); |
---|
250 | 234 | |
---|
251 | | -extern int extcon_blocking_sync(struct extcon_dev *edev, unsigned int id, |
---|
252 | | - bool val); |
---|
253 | 235 | #else /* CONFIG_EXTCON */ |
---|
254 | 236 | static inline int extcon_get_state(struct extcon_dev *edev, unsigned int id) |
---|
255 | 237 | { |
---|
.. | .. |
---|
277 | 259 | |
---|
278 | 260 | static inline int extcon_unregister_notifier(struct extcon_dev *edev, |
---|
279 | 261 | unsigned int id, struct notifier_block *nb) |
---|
280 | | -{ |
---|
281 | | - return 0; |
---|
282 | | -} |
---|
283 | | - |
---|
284 | | -static inline int extcon_register_blocking_notifier(struct extcon_dev *edev, |
---|
285 | | - unsigned int id, |
---|
286 | | - struct notifier_block *nb) |
---|
287 | | -{ |
---|
288 | | - return 0; |
---|
289 | | -} |
---|
290 | | - |
---|
291 | | -static inline int extcon_unregister_blocking_notifier(struct extcon_dev *edev, |
---|
292 | | - unsigned int id, |
---|
293 | | - struct notifier_block *nb) |
---|
294 | 262 | { |
---|
295 | 263 | return 0; |
---|
296 | 264 | } |
---|
.. | .. |
---|
334 | 302 | return ERR_PTR(-ENODEV); |
---|
335 | 303 | } |
---|
336 | 304 | |
---|
337 | | -static inline const char *extcon_get_edev_name(struct extcon_dev *edev) |
---|
338 | | -{ |
---|
339 | | - return NULL; |
---|
340 | | -} |
---|
341 | | - |
---|
342 | 305 | static inline struct extcon_dev *extcon_find_edev_by_node(struct device_node *node) |
---|
343 | 306 | { |
---|
344 | 307 | return ERR_PTR(-ENODEV); |
---|
.. | .. |
---|
349 | 312 | { |
---|
350 | 313 | return ERR_PTR(-ENODEV); |
---|
351 | 314 | } |
---|
| 315 | + |
---|
| 316 | +static inline const char *extcon_get_edev_name(struct extcon_dev *edev) |
---|
| 317 | +{ |
---|
| 318 | + return NULL; |
---|
| 319 | +} |
---|
352 | 320 | #endif /* CONFIG_EXTCON */ |
---|
353 | 321 | |
---|
354 | 322 | /* |
---|