diff options
Diffstat (limited to 'include/linux/extcon.h')
| -rw-r--r-- | include/linux/extcon.h | 115 | 
1 files changed, 39 insertions, 76 deletions
| diff --git a/include/linux/extcon.h b/include/linux/extcon.h index 7abf674c388c..61004413dc64 100644 --- a/include/linux/extcon.h +++ b/include/linux/extcon.h @@ -126,42 +126,6 @@ struct extcon_dev {  	struct device_attribute *d_attrs_muex;  }; -/** - * struct extcon_cable - An internal data for each cable of extcon device. - * @edev:		The extcon device - * @cable_index:	Index of this cable in the edev - * @attr_g:		Attribute group for the cable - * @attr_name:		"name" sysfs entry - * @attr_state:		"state" sysfs entry - * @attrs:		Array pointing to attr_name and attr_state for attr_g - */ -struct extcon_cable { -	struct extcon_dev *edev; -	int cable_index; - -	struct attribute_group attr_g; -	struct device_attribute attr_name; -	struct device_attribute attr_state; - -	struct attribute *attrs[3]; /* to be fed to attr_g.attrs */ -}; - -/** - * struct extcon_specific_cable_nb - An internal data for - *				     extcon_register_interest(). - * @user_nb:		user provided notifier block for events from - *			a specific cable. - * @cable_index:	the target cable. - * @edev:		the target extcon device. - * @previous_value:	the saved previous event value. - */ -struct extcon_specific_cable_nb { -	struct notifier_block *user_nb; -	int cable_index; -	struct extcon_dev *edev; -	unsigned long previous_value; -}; -  #if IS_ENABLED(CONFIG_EXTCON)  /* @@ -201,29 +165,12 @@ extern int extcon_update_state(struct extcon_dev *edev, u32 mask, u32 state);  /*   * get/set_cable_state access each bit of the 32b encoded state value. - * They are used to access the status of each cable based on the cable_name. + * They are used to access the status of each cable based on the cable id.   */  extern int extcon_get_cable_state_(struct extcon_dev *edev, unsigned int id);  extern int extcon_set_cable_state_(struct extcon_dev *edev, unsigned int id,  				   bool cable_state); -extern int extcon_get_cable_state(struct extcon_dev *edev, -				  const char *cable_name); -extern int extcon_set_cable_state(struct extcon_dev *edev, -				  const char *cable_name, bool cable_state); - -/* - * Following APIs are for notifiees (those who want to be notified) - * to register a callback for events from a specific cable of the extcon. - * Notifiees are the connected device drivers wanting to get notified by - * a specific external port of a connection device. - */ -extern int extcon_register_interest(struct extcon_specific_cable_nb *obj, -				    const char *extcon_name, -				    const char *cable_name, -				    struct notifier_block *nb); -extern int extcon_unregister_interest(struct extcon_specific_cable_nb *nb); -  /*   * Following APIs are to monitor every action of a notifier.   * Registrar gets notified for every external port of a connection device. @@ -235,6 +182,12 @@ extern int extcon_register_notifier(struct extcon_dev *edev, unsigned int id,  				    struct notifier_block *nb);  extern int extcon_unregister_notifier(struct extcon_dev *edev, unsigned int id,  				    struct notifier_block *nb); +extern int devm_extcon_register_notifier(struct device *dev, +				struct extcon_dev *edev, unsigned int id, +				struct notifier_block *nb); +extern void devm_extcon_unregister_notifier(struct device *dev, +				struct extcon_dev *edev, unsigned int id, +				struct notifier_block *nb);  /*   * Following API get the extcon device from devicetree. @@ -246,6 +199,7 @@ extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev,  /* Following API to get information of extcon device */  extern const char *extcon_get_edev_name(struct extcon_dev *edev); +  #else /* CONFIG_EXTCON */  static inline int extcon_dev_register(struct extcon_dev *edev)  { @@ -306,18 +260,6 @@ static inline int extcon_set_cable_state_(struct extcon_dev *edev,  	return 0;  } -static inline int extcon_get_cable_state(struct extcon_dev *edev, -			const char *cable_name) -{ -	return 0; -} - -static inline int extcon_set_cable_state(struct extcon_dev *edev, -			const char *cable_name, int state) -{ -	return 0; -} -  static inline struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name)  {  	return NULL; @@ -337,19 +279,16 @@ static inline int extcon_unregister_notifier(struct extcon_dev *edev,  	return 0;  } -static inline int extcon_register_interest(struct extcon_specific_cable_nb *obj, -					   const char *extcon_name, -					   const char *cable_name, -					   struct notifier_block *nb) +static inline int devm_extcon_register_notifier(struct device *dev, +				struct extcon_dev *edev, unsigned int id, +				struct notifier_block *nb)  { -	return 0; +	return -ENOSYS;  } -static inline int extcon_unregister_interest(struct extcon_specific_cable_nb -						    *obj) -{ -	return 0; -} +static inline  void devm_extcon_unregister_notifier(struct device *dev, +				struct extcon_dev *edev, unsigned int id, +				struct notifier_block *nb) { }  static inline struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev,  							    int index) @@ -357,4 +296,28 @@ static inline struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev,  	return ERR_PTR(-ENODEV);  }  #endif /* CONFIG_EXTCON */ + +/* + * Following structure and API are deprecated. EXTCON remains the function + * definition to prevent the build break. + */ +struct extcon_specific_cable_nb { +       struct notifier_block *user_nb; +       int cable_index; +       struct extcon_dev *edev; +       unsigned long previous_value; +}; + +static inline int extcon_register_interest(struct extcon_specific_cable_nb *obj, +			const char *extcon_name, const char *cable_name, +			struct notifier_block *nb) +{ +	return -EINVAL; +} + +static inline int extcon_unregister_interest(struct extcon_specific_cable_nb +						    *obj) +{ +	return -EINVAL; +}  #endif /* __LINUX_EXTCON_H__ */ |