Skip to content

Commit

Permalink
Extcon: support multiple states at a device.
Browse files Browse the repository at this point in the history
One switch device (e.g., MUIC(MAX8997, MAX77686, ...), and some 30-pin
devices) may have multiple cables attached. For example, one
30-pin port may inhabit a USB cable, an HDMI cable, and a mic.
Thus, one switch device requires multiple state bits each representing
a type of cable.

For such purpose, we use the 32bit state variable; thus, up to 32
different type of cables may be defined for a switch device. The list of
possible cables is defined by the array of cable names in the switch_dev
struct given to the class.

Signed-off-by: Chanwoo Choi <[email protected]>
Signed-off-by: MyungJoo Ham <[email protected]>
Signed-off-by: Kyungmin Park <[email protected]>

--
Changes from V7
- Bugfixed in _call_per_cable() (incorrect nb) (Chanwoo Choi)
- Compiler error in header for !CONFIG_EXTCON (Chanwoo Choi)

Changes from V5
- Sysfs style reformed: subdirectory per cable.
- Updated standard cable names
- Removed unnecessary printf
- Bugfixes after testing

Changes from V4
- Bugfixes after more testing at Exynos4412 boards with userspace
  processses.

Changes from V3
- Bugfixes after more testing at Exynos4412 boards.

Changes from V2
- State can be stored by user
- Documentation updated

Changes from RFC
- Switch is renamed to extcon
- Added kerneldoc comments
- Added APIs to support "standard" cable names
- Added helper APIs to support notifier block registration with cable
  name.
- Regrouped function list in the header file.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
myungjoo authored and gregkh committed Apr 20, 2012
1 parent 74c5d09 commit 806d9dd
Show file tree
Hide file tree
Showing 3 changed files with 667 additions and 20 deletions.
63 changes: 56 additions & 7 deletions Documentation/ABI/testing/sysfs-class-extcon
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
What: /sys/class/extcon/.../
Date: December 2011
Date: February 2012
Contact: MyungJoo Ham <[email protected]>
Description:
Provide a place in sysfs for the extcon objects.
This allows accessing extcon specific variables.
The name of extcon object denoted as ... is the name given
with extcon_dev_register.

One extcon device denotes a single external connector
port. An external connector may have multiple cables
attached simultaneously. Many of docks, cradles, and
accessory cables have such capability. For example,
the 30-pin port of Nuri board (/arch/arm/mach-exynos)
may have both HDMI and Charger attached, or analog audio,
video, and USB cables attached simulteneously.

What: /sys/class/extcon/.../name
Date: December 2011
Date: February 2012
Contact: MyungJoo Ham <[email protected]>
Description:
The /sys/class/extcon/.../name shows the name of the extcon
Expand All @@ -17,10 +25,51 @@ Description:
this sysfs node.

What: /sys/class/extcon/.../state
Date: December 2011
Date: February 2012
Contact: MyungJoo Ham <[email protected]>
Description:
The /sys/class/extcon/.../state shows and stores the cable
attach/detach information of the corresponding extcon object.
If the extcon object has an optional callback "show_state"
defined, the showing function is overriden with the optional
callback.

If the default callback for showing function is used, the
format is like this:
# cat state
USB_OTG=1
HDMI=0
TA=1
EAR_JACK=0
#
In this example, the extcon device have USB_OTG and TA
cables attached and HDMI and EAR_JACK cables detached.

In order to update the state of an extcon device, enter a hex
state number starting with 0x.
echo 0xHEX > state

This updates the whole state of the extcon dev.
Inputs of all the methods are required to meet the
mutually_exclusive contidions if they exist.

It is recommended to use this "global" state interface if
you need to enter the value atomically. The later state
interface associated with each cable cannot update
multiple cable states of an extcon device simultaneously.

What: /sys/class/extcon/.../cable.x/name
Date: February 2012
Contact: MyungJoo Ham <[email protected]>
Description:
The /sys/class/extcon/.../cable.x/name shows the name of cable
"x" (integer between 0 and 31) of an extcon device.

What: /sys/class/extcon/.../cable.x/state
Date: February 2012
Contact: MyungJoo Ham <[email protected]>
Description:
The /sys/class/extcon/.../state shows the cable attach/detach
information of the corresponding extcon object. If the extcon
objecct has an optional callback "show_state" defined, the
callback will provide the name with this sysfs node.
The /sys/class/extcon/.../cable.x/name shows and stores the
state of cable "x" (integer between 0 and 31) of an extcon
device. The state value is either 0 (detached) or 1
(attached).
Loading

0 comments on commit 806d9dd

Please sign in to comment.