From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757904Ab2C1JjN (ORCPT ); Wed, 28 Mar 2012 05:39:13 -0400 Received: from mail-iy0-f174.google.com ([209.85.210.174]:62177 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757765Ab2C1JjI (ORCPT ); Wed, 28 Mar 2012 05:39:08 -0400 MIME-Version: 1.0 In-Reply-To: <1332492784-10526-1-git-send-email-myungjoo.ham@samsung.com> References: <1332492784-10526-1-git-send-email-myungjoo.ham@samsung.com> Date: Wed, 28 Mar 2012 18:39:08 +0900 Message-ID: Subject: Re: [PATCH v7 0/6] Introduce External Connector Class (extcon) From: MyungJoo Ham To: Arnd Bergmann , LKML Cc: NeilBrown , Randy Dunlap , Mike Lockwood , =?ISO-8859-1?Q?Arve_Hj=F8nnevag?= , Kyungmin Park , gregkh@linuxfoundation.org, Linus Walleij , Dmitry Torokhov , Morten CHRISTIANSEN , Mark Brown , John Stultz , Joerg Roedel , myungjoo.ham@gmail.com, cw00.choi@samsung.com Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Dear Arnd, Could you please consider the EXTCON patchset for the current merge window? If pulling from a branch is more convinient; please consider using: A. EXTCON patchset without the RFC patch removing staging/android/switch class or B. EXTCON patchset with the RFC patch removing staging/android/switch class. -------------------- PULL REQUEST for A -------------------- The following changes since commit b01543dfe67bb1d191998e90d20534dc354de059: Linux 3.3-rc4 (2012-02-18 15:53:33 -0800) are available in the git repository at: git://git.infradead.org/users/kmpark/linux-samsung extcon-for-next-2 (http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next-2) Donggeun Kim (1): Extcon: support notification based on the state changes. MyungJoo Ham (5): Extcon (external connector): import Android's switch class and modify. Extcon: support generic GPIO extcon driver Extcon: support multiple states at a device. Extcon: support mutually exclusive relation between cables. Documentation/extcon: porting guide for Android kernel switch driver. Documentation/ABI/testing/sysfs-class-extcon | 97 +++ Documentation/extcon/porting-android-switch-class | 124 +++ drivers/Kconfig | 2 + drivers/Makefile | 1 + drivers/extcon/Kconfig | 35 + drivers/extcon/Makefile | 6 + drivers/extcon/extcon_class.c | 822 +++++++++++++++++++++ drivers/extcon/extcon_gpio.c | 175 +++++ include/linux/extcon.h | 322 ++++++++ include/linux/extcon/extcon_gpio.h | 52 ++ 10 files changed, 1636 insertions(+), 0 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-class-extcon create mode 100644 Documentation/extcon/porting-android-switch-class create mode 100644 drivers/extcon/Kconfig create mode 100644 drivers/extcon/Makefile create mode 100644 drivers/extcon/extcon_class.c create mode 100644 drivers/extcon/extcon_gpio.c create mode 100644 include/linux/extcon.h create mode 100644 include/linux/extcon/extcon_gpio.h -------------------- PULL REQUEST for B -------------------- The following changes since commit b01543dfe67bb1d191998e90d20534dc354de059: Linux 3.3-rc4 (2012-02-18 15:53:33 -0800) are available in the git repository at: git://git.infradead.org/users/kmpark/linux-samsung extcon-for-next (http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next) Donggeun Kim (1): Extcon: support notification based on the state changes. MyungJoo Ham (6): Extcon (external connector): import Android's switch class and modify. Extcon: support generic GPIO extcon driver Extcon: support multiple states at a device. Extcon: support mutually exclusive relation between cables. Documentation/extcon: porting guide for Android kernel switch driver. Remove "switch" class in drivers/staging/android/switch Documentation/ABI/testing/sysfs-class-extcon | 97 +++ Documentation/extcon/porting-android-switch-class | 124 +++ drivers/Kconfig | 2 + drivers/Makefile | 1 + drivers/extcon/Kconfig | 35 + drivers/extcon/Makefile | 6 + drivers/extcon/extcon_class.c | 822 +++++++++++++++++++++ drivers/extcon/extcon_gpio.c | 175 +++++ drivers/staging/android/Kconfig | 2 - drivers/staging/android/Makefile | 1 - drivers/staging/android/switch/Kconfig | 11 - drivers/staging/android/switch/Makefile | 4 - drivers/staging/android/switch/switch.h | 53 -- drivers/staging/android/switch/switch_class.c | 174 ----- drivers/staging/android/switch/switch_gpio.c | 172 ----- include/linux/extcon.h | 322 ++++++++ include/linux/extcon/extcon_gpio.h | 52 ++ 17 files changed, 1636 insertions(+), 417 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-class-extcon create mode 100644 Documentation/extcon/porting-android-switch-class create mode 100644 drivers/extcon/Kconfig create mode 100644 drivers/extcon/Makefile create mode 100644 drivers/extcon/extcon_class.c create mode 100644 drivers/extcon/extcon_gpio.c delete mode 100644 drivers/staging/android/switch/Kconfig delete mode 100644 drivers/staging/android/switch/Makefile delete mode 100644 drivers/staging/android/switch/switch.h delete mode 100644 drivers/staging/android/switch/switch_class.c delete mode 100644 drivers/staging/android/switch/switch_gpio.c create mode 100644 include/linux/extcon.h create mode 100644 include/linux/extcon/extcon_gpio.h On Fri, Mar 23, 2012 at 5:52 PM, MyungJoo Ham wrote: > For external connectors, which may have different types of cables attached > (USB, TA, HDMI, Analog A/V, and others), we often have seperated device > drivers that detect the state changes at the port and device drivers that > do something according to the state changes. > > An example is a 4-pin (or more pins?) analog audio connector > (usually referred as "3.5-pi" jacks). It can be implemented with the 5/5 > patch, "adc-jack", supplied with information about IRQ, a method to get > ADC values, and ADC value ranges. With a 4-pin 3.5-pi port and adc-jack > driver with proper ADC configurations, the following modes may be > detected: "standard mono cable", "standard stereo cable", > "standard stereo + remote cable", "standard stereo + mic + remote cable", > "standard stereo + different-spec mic + remote cable", and such. > Note that for 4-pin cables with mic and remote, there are multiple > standards (at least Samsung and Apple use different configurations for > those 4-pin earphones although the pins looks exactly same.) > and they often can be distinguished with ADC values. > > Although we may have simply given different "cable id" for "stereo" and > "stereo + mic". However, for those userspace processes or other device > drivers that are interested only in "stereo" part of possible combinations, > having seperated mode/id for "stereo" and "mic" is more desirable. > For example, if we do not have multistate capabilities, those who want > to know "stereo" is attached or not should monitor everything: > "standard stereo cable", "standard stereo + remove cable", > "standard stereo + mic + remote cable", and others. However, with > multistate capabilities, they only need to monitor the bit associated > with "standard stero". > > For another example, when MAX8997-MUIC detects a Charger cable insertion, > another device driver (such as MAX8903 charger, MAX8997 charger, Charger > Manager, or board file) needs to set charger current limit accordingly > and when MAX8997-MUIC detects a HDMI cable insertion, multimedia device > drivers need to do some operations accordingly. > > > This patchset supports the usage of notifier for passing such information > between device drivers. > > Another issue is that at a single switch port, there might be multiple > and heterogeneous cables attached at the same time. Besides the state > (Attached or Detached) of each cable may alter independently. Such extcon > devices that support simultaneous mult-cable attachment include, bot not > limited to, docks, cradles, and 30-pin-like ports (like that of NURI board > in linux/arch/arm/mach-exynos, which resembles Samsung Galaxy Tab series). > For example, the 30-pin port of NURI board may be used to connect analog > audio cables, analog video cable, and a USB or a charger. Because such > cables coonnect part of the 30 pins to external devices/cables, the > possible combinations of external devices/cables vary significantly and > users may fabricate their own design; e.g., an 30-pin adaptor connecting > USB, AC-DC adaptor, HDMI, analog audio, analog video, USB-host, SD-card, > and so on. > > In order to address such issues, Android kernel's "Switch" class seems to > be a good basis and we have implemented "Multistate Switch Class" based on > it. The "Switch" class code of Android kernel is GPL as well. > > > Though there can be synchronization delay (up to 12hours), you can see > the extcon-for-next branch at > http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next > > Along with the 6 patches (1/6 ... 6/6), there is one additional RFC patch > that suggests to remove drivers/staging/android/switch. > > Summary of changes from v6 patchset > - Added documentation, "porting guide for Android switch device drivers" > - Usage of class_compat to create /sys/class/switch/* along with > /sys/class/extcon/* if CONFIG_ANDROID is enabled. However, we cannot > enable "switch" class_compat if CONFIG_ANDROID_SWITCH is enabled because > we cannot create two classes with the same name. > > Summary of changes from v5 patchset > - Excluded adc-jack from the "default" patchset. Adc-jack will be later > added after Extcon is finalized. > - Sysfs style updated > - Bugfixes after using at Exynos4412 boards with userspace processes > - Code stype updated > > Summary of changes from v4 patchset > - Bugfixes after testing at Exynos4412 boards with userspace processes > - Added adc-jack to support 3.5-pi jack and other ADC-based cable detection > ports. > > Summary of changes from v3 patchset > - Bugfixes after testing at Exynos4412 boards. > > Summary of changes from v2 patchset > - Support to express mutually exclusive set of cables > - Revised device/class/sysfs-entries add/removal methods > - Added sysfs entries > - Revised documentation and comments > - Some bugfixes > - Compatible with Android (for extcon devices with "use_class_name_switch" set) > > Summary of changes from RFC > - ABI documentation added > - Notifees may get notified for a state change of a specific cable, not > every cable of the corresponding extcon. > - Added kerneldoc comments > - Moved to /drivers/extcon/ > - Added helper functions > - Some bugfixes > > Donggeun Kim (1): > Extcon: support notification based on the state changes. > > MyungJoo Ham (5): > Extcon (external connector): import Android's switch class and > modify. > Extcon: support generic GPIO extcon driver > Extcon: support multiple states at a device. > Extcon: support mutually exclusive relation between cables. > Documentation/extcon: porting guide for Android kernel switch driver. > > Documentation/ABI/testing/sysfs-class-extcon | 97 +++ > Documentation/extcon/porting-android-switch-class | 124 +++ > drivers/Kconfig | 2 + > drivers/Makefile | 1 + > drivers/extcon/Kconfig | 35 + > drivers/extcon/Makefile | 6 + > drivers/extcon/extcon_class.c | 822 +++++++++++++++++++++ > drivers/extcon/extcon_gpio.c | 175 +++++ > include/linux/extcon.h | 322 ++++++++ > include/linux/extcon/extcon_gpio.h | 52 ++ > 10 files changed, 1636 insertions(+), 0 deletions(-) > create mode 100644 Documentation/ABI/testing/sysfs-class-extcon > create mode 100644 Documentation/extcon/porting-android-switch-class > create mode 100644 drivers/extcon/Kconfig > create mode 100644 drivers/extcon/Makefile > create mode 100644 drivers/extcon/extcon_class.c > create mode 100644 drivers/extcon/extcon_gpio.c > create mode 100644 include/linux/extcon.h > create mode 100644 include/linux/extcon/extcon_gpio.h > > -- > 1.7.4.1 > -- MyungJoo Ham, Ph.D. System S/W Lab, S/W Center, Samsung Electronics