mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.8 KiB
134 lines
3.8 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* External Connector (extcon) framework |
|
* - linux/include/linux/extcon-provider.h for extcon provider device driver. |
|
* |
|
* Copyright (C) 2017 Samsung Electronics |
|
* Author: Chanwoo Choi <[email protected]> |
|
*/ |
|
|
|
#ifndef __LINUX_EXTCON_PROVIDER_H__ |
|
#define __LINUX_EXTCON_PROVIDER_H__ |
|
|
|
#include <linux/extcon.h> |
|
|
|
struct extcon_dev; |
|
|
|
#if IS_ENABLED(CONFIG_EXTCON) |
|
|
|
/* Following APIs register/unregister the extcon device. */ |
|
int extcon_dev_register(struct extcon_dev *edev); |
|
void extcon_dev_unregister(struct extcon_dev *edev); |
|
int devm_extcon_dev_register(struct device *dev, |
|
struct extcon_dev *edev); |
|
void devm_extcon_dev_unregister(struct device *dev, |
|
struct extcon_dev *edev); |
|
|
|
/* Following APIs allocate/free the memory of the extcon device. */ |
|
struct extcon_dev *extcon_dev_allocate(const unsigned int *cable); |
|
void extcon_dev_free(struct extcon_dev *edev); |
|
struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, |
|
const unsigned int *cable); |
|
void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev); |
|
|
|
/* Synchronize the state and property value for each external connector. */ |
|
int extcon_sync(struct extcon_dev *edev, unsigned int id); |
|
|
|
/* |
|
* Following APIs set the connected state of each external connector. |
|
* The 'id' argument indicates the defined external connector. |
|
*/ |
|
int extcon_set_state(struct extcon_dev *edev, unsigned int id, |
|
bool state); |
|
int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, |
|
bool state); |
|
|
|
/* |
|
* Following APIs set the property of each external connector. |
|
* The 'id' argument indicates the defined external connector |
|
* and the 'prop' indicates the extcon property. |
|
* |
|
* And extcon_set_property_capability() set the capability of the property |
|
* for each external connector. They are used to set the capability of the |
|
* property of each external connector based on the id and property. |
|
*/ |
|
int extcon_set_property(struct extcon_dev *edev, unsigned int id, |
|
unsigned int prop, |
|
union extcon_property_value prop_val); |
|
int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id, |
|
unsigned int prop, |
|
union extcon_property_value prop_val); |
|
int extcon_set_property_capability(struct extcon_dev *edev, |
|
unsigned int id, unsigned int prop); |
|
|
|
#else /* CONFIG_EXTCON */ |
|
static inline int extcon_dev_register(struct extcon_dev *edev) |
|
{ |
|
return 0; |
|
} |
|
|
|
static inline void extcon_dev_unregister(struct extcon_dev *edev) { } |
|
|
|
static inline int devm_extcon_dev_register(struct device *dev, |
|
struct extcon_dev *edev) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
static inline void devm_extcon_dev_unregister(struct device *dev, |
|
struct extcon_dev *edev) { } |
|
|
|
static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable) |
|
{ |
|
return ERR_PTR(-ENOSYS); |
|
} |
|
|
|
static inline void extcon_dev_free(struct extcon_dev *edev) { } |
|
|
|
static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, |
|
const unsigned int *cable) |
|
{ |
|
return ERR_PTR(-ENOSYS); |
|
} |
|
|
|
static inline void devm_extcon_dev_free(struct extcon_dev *edev) { } |
|
|
|
|
|
static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id, |
|
bool state) |
|
{ |
|
return 0; |
|
} |
|
|
|
static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, |
|
bool state) |
|
{ |
|
return 0; |
|
} |
|
|
|
static inline int extcon_sync(struct extcon_dev *edev, unsigned int id) |
|
{ |
|
return 0; |
|
} |
|
|
|
static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id, |
|
unsigned int prop, |
|
union extcon_property_value prop_val) |
|
{ |
|
return 0; |
|
} |
|
|
|
static inline int extcon_set_property_sync(struct extcon_dev *edev, |
|
unsigned int id, unsigned int prop, |
|
union extcon_property_value prop_val) |
|
{ |
|
return 0; |
|
} |
|
|
|
static inline int extcon_set_property_capability(struct extcon_dev *edev, |
|
unsigned int id, unsigned int prop) |
|
{ |
|
return 0; |
|
} |
|
#endif /* CONFIG_EXTCON */ |
|
#endif /* __LINUX_EXTCON_PROVIDER_H__ */
|
|
|