mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-26 14:17:26 -04:00
extcon: Split out extcon header file for consumer and provider device
The extcon has two type of extcon devices as following. - 'extcon provider deivce' adds new extcon device and detect the state/properties of external connector. Also, it notifies the state/properties to the extcon consumer device. - 'extcon consumer device' gets the change state/properties from extcon provider device. Prior to that, include/linux/extcon.h contains all exported API for both provider and consumer device driver. To clarify the meaning of header file and to remove the wrong use-case on consumer device, this patch separates into extcon.h and extcon-provider.h. [Description for include/linux/{extcon.h|extcon-provider.h}] - extcon.h includes the extcon API and data structure for extcon consumer device driver. This header file contains the following APIs: : Register/unregister the notifier to catch the change of extcon device : Get the extcon device instance : Get the extcon device name : Get the state of each external connector : Get the property value of each external connector : Get the property capability of each external connector - extcon-provider.h includes the extcon API and data structure for extcon provider device driver. This header file contains the following APIs: : Include 'include/linux/extcon.h' : Allocate the memory for extcon device instance : Register/unregister extcon device : Set the state of each external connector : Set the property value of each external connector : Set the property capability of each external connector Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Acked-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Acked-by: Chen-Yu Tsai <wens@csie.org> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Acked-by: Lee Jones <lee.jones@linaro.org> Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com> Acked-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
This commit is contained in:
parent
2bd6bf03f4
commit
176aa36012
27 changed files with 172 additions and 129 deletions
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* External Connector (extcon) framework
|
||||
* - linux/include/linux/extcon.h for extcon consumer device driver.
|
||||
*
|
||||
* Copyright (C) 2015 Samsung Electronics
|
||||
* Author: Chanwoo Choi <cw00.choi@samsung.com>
|
||||
|
@ -170,61 +171,29 @@ union extcon_property_value {
|
|||
int intval; /* type : integer (intval) */
|
||||
};
|
||||
|
||||
struct extcon_cable;
|
||||
struct extcon_dev;
|
||||
|
||||
#if IS_ENABLED(CONFIG_EXTCON)
|
||||
|
||||
/* Following APIs register/unregister the extcon device. */
|
||||
extern int extcon_dev_register(struct extcon_dev *edev);
|
||||
extern void extcon_dev_unregister(struct extcon_dev *edev);
|
||||
extern int devm_extcon_dev_register(struct device *dev,
|
||||
struct extcon_dev *edev);
|
||||
extern void devm_extcon_dev_unregister(struct device *dev,
|
||||
struct extcon_dev *edev);
|
||||
|
||||
/* Following APIs allocate/free the memory of the extcon device. */
|
||||
extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable);
|
||||
extern void extcon_dev_free(struct extcon_dev *edev);
|
||||
extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev,
|
||||
const unsigned int *cable);
|
||||
extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev);
|
||||
|
||||
/* Synchronize the state and property value for each external connector. */
|
||||
extern int extcon_sync(struct extcon_dev *edev, unsigned int id);
|
||||
|
||||
/*
|
||||
* Following APIs get/set the connected state of each external connector.
|
||||
* Following APIs get the connected state of each external connector.
|
||||
* The 'id' argument indicates the defined external connector.
|
||||
*/
|
||||
extern int extcon_get_state(struct extcon_dev *edev, unsigned int id);
|
||||
extern int extcon_set_state(struct extcon_dev *edev, unsigned int id,
|
||||
bool state);
|
||||
extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
|
||||
bool state);
|
||||
|
||||
/*
|
||||
* Following APIs get/set the property of each external connector.
|
||||
* Following APIs get the property of each external connector.
|
||||
* The 'id' argument indicates the defined external connector
|
||||
* and the 'prop' indicates the extcon property.
|
||||
*
|
||||
* And extcon_get/set_property_capability() set the capability of the property
|
||||
* for each external connector. They are used to set the capability of the
|
||||
* And extcon_get_property_capability() get the capability of the property
|
||||
* for each external connector. They are used to get the capability of the
|
||||
* property of each external connector based on the id and property.
|
||||
*/
|
||||
extern int extcon_get_property(struct extcon_dev *edev, unsigned int id,
|
||||
unsigned int prop,
|
||||
union extcon_property_value *prop_val);
|
||||
extern int extcon_set_property(struct extcon_dev *edev, unsigned int id,
|
||||
unsigned int prop,
|
||||
union extcon_property_value prop_val);
|
||||
extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id,
|
||||
unsigned int prop,
|
||||
union extcon_property_value prop_val);
|
||||
extern int extcon_get_property_capability(struct extcon_dev *edev,
|
||||
unsigned int id, unsigned int prop);
|
||||
extern int extcon_set_property_capability(struct extcon_dev *edev,
|
||||
unsigned int id, unsigned int prop);
|
||||
|
||||
/*
|
||||
* Following APIs register the notifier block in order to detect
|
||||
|
@ -268,79 +237,17 @@ extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev,
|
|||
extern const char *extcon_get_edev_name(struct extcon_dev *edev);
|
||||
|
||||
#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_get_state(struct extcon_dev *edev, unsigned int id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
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_get_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(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_get_property_capability(struct extcon_dev *edev,
|
||||
unsigned int id, unsigned int prop)
|
||||
|
@ -348,12 +255,6 @@ static inline int extcon_get_property_capability(struct extcon_dev *edev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int extcon_set_property_capability(struct extcon_dev *edev,
|
||||
unsigned int id, unsigned int prop)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int extcon_register_notifier(struct extcon_dev *edev,
|
||||
unsigned int id, struct notifier_block *nb)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue