File Index
Files and directories
Sign in
FILE

extcon-provider.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/extcon-provider.h C
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 * External Connector (extcon) framework
  4 * - linux/include/linux/extcon-provider.h for extcon provider device driver.
  5 *
  6 * Copyright (C) 2017 Samsung Electronics
  7 * Author: Chanwoo Choi <cw00.choi@samsung.com>
  8 */
  9
 10#ifndef __LINUX_EXTCON_PROVIDER_H__
 11#define __LINUX_EXTCON_PROVIDER_H__
 12
 13#include <linux/extcon.h>
 14
 15struct extcon_dev;
 16
 17#if IS_ENABLED(CONFIG_EXTCON)
 18
 19/* Following APIs register/unregister the extcon device. */
 20int extcon_dev_register(struct extcon_dev *edev);
 21void extcon_dev_unregister(struct extcon_dev *edev);
 22int devm_extcon_dev_register(struct device *dev,
 23				struct extcon_dev *edev);
 24void devm_extcon_dev_unregister(struct device *dev,
 25				struct extcon_dev *edev);
 26
 27/* Following APIs allocate/free the memory of the extcon device. */
 28struct extcon_dev *extcon_dev_allocate(const unsigned int *cable);
 29void extcon_dev_free(struct extcon_dev *edev);
 30struct extcon_dev *devm_extcon_dev_allocate(struct device *dev,
 31				const unsigned int *cable);
 32void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev);
 33
 34/* Synchronize the state and property value for each external connector. */
 35int extcon_sync(struct extcon_dev *edev, unsigned int id);
 36
 37/*
 38 * Following APIs set the connected state of each external connector.
 39 * The 'id' argument indicates the defined external connector.
 40 */
 41int extcon_set_state(struct extcon_dev *edev, unsigned int id,
 42				bool state);
 43int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
 44				bool state);
 45
 46/*
 47 * Following APIs set the property of each external connector.
 48 * The 'id' argument indicates the defined external connector
 49 * and the 'prop' indicates the extcon property.
 50 *
 51 * And extcon_set_property_capability() set the capability of the property
 52 * for each external connector. They are used to set the capability of the
 53 * property of each external connector based on the id and property.
 54 */
 55int extcon_set_property(struct extcon_dev *edev, unsigned int id,
 56				unsigned int prop,
 57				union extcon_property_value prop_val);
 58int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id,
 59				unsigned int prop,
 60				union extcon_property_value prop_val);
 61int extcon_set_property_capability(struct extcon_dev *edev,
 62				unsigned int id, unsigned int prop);
 63
 64#else /* CONFIG_EXTCON */
 65static inline int extcon_dev_register(struct extcon_dev *edev)
 66{
 67	return 0;
 68}
 69
 70static inline void extcon_dev_unregister(struct extcon_dev *edev) { }
 71
 72static inline int devm_extcon_dev_register(struct device *dev,
 73				struct extcon_dev *edev)
 74{
 75	return -EINVAL;
 76}
 77
 78static inline void devm_extcon_dev_unregister(struct device *dev,
 79				struct extcon_dev *edev) { }
 80
 81static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable)
 82{
 83	return ERR_PTR(-ENOSYS);
 84}
 85
 86static inline void extcon_dev_free(struct extcon_dev *edev) { }
 87
 88static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev,
 89				const unsigned int *cable)
 90{
 91	return ERR_PTR(-ENOSYS);
 92}
 93
 94static inline void devm_extcon_dev_free(struct extcon_dev *edev) { }
 95
 96
 97static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id,
 98				bool state)
 99{
100	return 0;
101}
102
103static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
104				bool state)
105{
106	return 0;
107}
108
109static inline int extcon_sync(struct extcon_dev *edev, unsigned int id)
110{
111	return 0;
112}
113
114static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id,
115				unsigned int prop,
116				union extcon_property_value prop_val)
117{
118	return 0;
119}
120
121static inline int extcon_set_property_sync(struct extcon_dev *edev,
122				unsigned int id, unsigned int prop,
123				union extcon_property_value prop_val)
124{
125	return 0;
126}
127
128static inline int extcon_set_property_capability(struct extcon_dev *edev,
129				unsigned int id, unsigned int prop)
130{
131	return 0;
132}
133#endif /* CONFIG_EXTCON */
134#endif /* __LINUX_EXTCON_PROVIDER_H__ */
~/ Read-only file preview.