FROMLIST: extcon: Add the synchronization extcon APIs to support the notification
authorChanwoo Choi <cw00.choi@samsung.com>
Fri, 22 Jul 2016 04:16:34 +0000 (13:16 +0900)
committerHuang, Tao <huangtao@rock-chips.com>
Fri, 5 Aug 2016 02:06:34 +0000 (10:06 +0800)
commitcb7d0578f9c5d34c2a71b5c1a6b57e5a0ab4b52e
tree85647aa6144d693585cd667ba0a7db2c221c7566
parent8f1f87f08fff0f3dc4a4c98aa7c5281ef7a815b8
FROMLIST: extcon: Add the synchronization extcon APIs to support the notification

This patch adds the synchronization extcon APIs to support the notifications
for both state and property. When extcon_*_sync() functions is called,
the extcon informs the information from extcon provider to extcon client.

The extcon driver may need to change the both state and multiple properties
at the same time. After setting the data of a external connector,
the extcon send the notification to client driver with the extcon_*_sync().

The list of new extcon APIs as following:
- extcon_sync() : Send the notification for each external connector to
synchronize the information between extcon provider driver
and extcon client driver.
- extcon_set_state_sync() : Set the state of external connector with noti.
- extcon_set_property_sync() : Set the property of external connector with noti.

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_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);

Change-Id: Id8c04a88f28b8f3428afae122a761ff1d27a485f
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Tested-by: Chris Zhong <zyw@rock-chips.com>
Tested-by: Guenter Roeck <groeck@chromium.org>
Reviewed-by: Guenter Roeck <groeck@chromium.org>
(cherry picked from commit cc3e39670d41
 git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon.git extcon-test)
Signed-off-by: Guenter Roeck <groeck@chromium.org>
drivers/extcon/extcon.c
include/linux/extcon.h