Re: [PATCH v2 0/6] extcon: Add the support for extcon type and property
From: Guenter Roeck
Date: Mon Aug 01 2016 - 14:26:19 EST
On Sun, Jul 31, 2016 at 10:50 PM, Chanwoo Choi <cw00.choi@xxxxxxxxxxx> wrote:
> This patch-set add the support the extcon type, extcon property
> and the synchronization functions.
>
> The each external connector has the common characters. So, the external
> connectors are able to gather in the specific type. And the each external
> connectors has the specific H/W desigin to support the multiple features
> throught h/w lines. There are the requirement to express the each h/w
> character of each external connector. Lastly, when the state and property
> are changed, the extcon notify the extcon client driver of the changed
> information. To support the notification on extcon provider drivers,
> this patches support the three sync functions.
>
> Changes from v1:
> - Expand the size (+1) of the property array for each extcon type.
> - Use the memset() to initialize the property when connector is detached.
> - Wrap the data of struct extcon_dev in the lock mechanism.
> - Don't send the notification if connector state is not changed in
> extcon_set_state_sync()
> - Fix the minor issue.
> - Add Tested-by tag of Chris Zhong for these patches.
> - Add Signed-off tag of Myungjoo Ham for patch1.
> - Add Reviewed-by tag of Guenter Roeck for patch6.
>
> Depends on:
> This patch depend on the extcon git repository[2]. (branch : extcon-next)
>
For the series:
Tested-by: Guenter Roeck <groeck@xxxxxxxxxxxx>
> [1] https://en.wikipedia.org/wiki/DisplayPort
> [2] https://git.kernel.org/cgit/linux/kernel/git/chanwoo/extcon.git/
>
> [Detailed description of these patches]
> 1. Add the extcon type to group the each external connector.
> There are five categories unitl now as following:
> - EXTCON_TYPE_USB : USB connector
> - EXTCON_TYPE_CHG : Charger connector
> - EXTCON_TYPE_JACK : Jack connector
> - EXTCON_TYPE_DISP : Display connector
> - EXTCON_TYPE_MISC : Miscellaneous connector
>
> 2. Add the extcon property to support the multiple characteristic
> for the specific H/W design.
> - EXTCON_PROP_USB_[property name]
> - EXTCON_PROP_CHG_[property name]
> - EXTCON_PROP_JACK_[property name]
> - EXTCON_PROP_DISP_[property name]
> e.g., EXTCON_PROP_USB_ID and EXTCON_PROP_USB_VBUS
> The list of the new extcon APIs for the property as following:
> - int extcon_get_property(struct extcon_dev *edev,
> unsigned int id, unsigned int prop,
> union extcon_property_value *prop_val)
> - int extcon_set_property(struct extcon_dev *edev,
> unsigned int id, unsigned int prop,
> union extcon_property_value prop_val)
> - int extcon_get_property_capability(struct extcon_dev *edev,
> unsigned int id, unsigned int prop);
> - int extcon_set_property_capability(struct extcon_dev *edev,
> unsigned int id, unsigned int prop);
>
> 3. Add the sync functions to synchronize the data of each external connector
> between an extcon provider driver and the extcon client drivers.
> The list of the new extcon sync APIs as following:
> - extcon_sync() : Send the notification for each external connector to
> synchronize the information between and extcon provider driver
> and the extcon client drivers.
> - extcon_set_state_sync() : Set the state of external connector with noti.
> - extcon_set_property_sync() : Set the property of external connector with noti.
>
> 4. Add the new external connector definition. The EXTCON_DISP_DP
> means the Display external connector[1].
> The list of new external connector as following:
> - EXTCON_DISP_DP
> The list of new property of USB connector as following:
> - EXTCON_PROP_USB_TYPEC_POLARITY
>
> 5. Rename the renames the existing extcon_get/set_cable_state_()
> to maintain the function naming pattern like as extcon APIs for property.
> - extcon_set_cable_state_() -> extcon_set_state()
> - extcon_get_cable_state_() -> extcon_get_state()
>
> For example,
> case 1, change the state of external connector and synchronized the data.
> extcon_set_state_sync(edev, EXTCON_USB, 1);
> case 2, change both the state and property of external connector
> and synchronized the data.
> extcon_set_state(edev, EXTCON_USB, 1);
> extcon_set_property(edev, EXTCON_USB, EXTCON_PROP_USB_ID, 1);
> extcon_set_property(edev, EXTCON_USB, EXTCON_PROP_USB_VBUS, 0);
> extcon_sync(edev, EXTCON_USB);
> case 3, change the property of external connector and synchronized the data.
> extcon_set_property(edev, EXTCON_USB, EXTCON_PROP_USB_VBUS, 0);
> extcon_set_property(edev, EXTCON_USB, EXTCON_PROP_USB_ID, 1);
> extcon_sync(edev, EXTCON_USB);
> case 4, change the property of external connector and synchronized the data.
> extcon_set_property_sync(edev, EXTCON_USB, EXTCON_PROP_USB_VBUS, 0);
>
>
> Chanwoo Choi (5):
> extcon: Add the extcon_type to gather each connector into five category
> extcon: Add the support for extcon property according to extcon type
> extcon: Add the support for the capability of each property
> extcon: Rename the extcon_set/get_state() to maintain the function naming pattern
> extcon: Add the synchronization extcon APIs to support the notification
>
> Chris Zhong (1):
> extcon: Add EXTCON_DISP_DP and the property for USB Type-C
>
> drivers/extcon/extcon.c | 730 ++++++++++++++++++++++++++++++++++++++++--------
> include/linux/extcon.h | 176 +++++++++++-
> 2 files changed, 786 insertions(+), 120 deletions(-)
>
> --
> 1.9.1
>