31 Oct, 2019

1 commit


11 Oct, 2019

1 commit

  • On some devices (e.g. Samsung Galaxy A5 (2015)), the bootloader
    seems to keep interrupts enabled for SM5502 when booting Linux.
    Changing the cable state (i.e. plugging in a cable) - until the driver
    is loaded - will therefore produce an interrupt that is never read.

    In this situation, the cable state will be stuck forever on the
    initial state because SM5502 stops sending interrupts.
    This can be avoided by clearing those pending interrupts after
    the driver has been loaded.

    One way to do this is to reset all registers to default state
    by writing to SM5502_REG_RESET. This ensures that we start from
    a clean state, with all interrupts disabled.

    Suggested-by: Chanwoo Choi
    Signed-off-by: Stephan Gerhold
    Signed-off-by: Chanwoo Choi

    Stephan Gerhold
     

24 Jul, 2019

1 commit


31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 3029 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

23 Oct, 2017

1 commit

  • The extcon has two type of extcon devices as following.
    - 'extcon provider deivce' adds new extcon device and detect the
    state/properties of external connector. Also, it notifies the
    state/properties to the extcon consumer device.
    - 'extcon consumer device' gets the change state/properties
    from extcon provider device.
    Prior to that, include/linux/extcon.h contains all exported API for
    both provider and consumer device driver. To clarify the meaning of
    header file and to remove the wrong use-case on consumer device,
    this patch separates into extcon.h and extcon-provider.h.

    [Description for include/linux/{extcon.h|extcon-provider.h}]
    - extcon.h includes the extcon API and data structure for extcon consumer
    device driver. This header file contains the following APIs:
    : Register/unregister the notifier to catch the change of extcon device
    : Get the extcon device instance
    : Get the extcon device name
    : Get the state of each external connector
    : Get the property value of each external connector
    : Get the property capability of each external connector

    - extcon-provider.h includes the extcon API and data structure for extcon
    provider device driver. This header file contains the following APIs:
    : Include 'include/linux/extcon.h'
    : Allocate the memory for extcon device instance
    : Register/unregister extcon device
    : Set the state of each external connector
    : Set the property value of each external connector
    : Set the property capability of each external connector

    Signed-off-by: Chanwoo Choi
    Acked-by: Sebastian Reichel
    Acked-by: Chen-Yu Tsai
    Acked-by: Charles Keepax
    Acked-by: Lee Jones
    Acked-by: Felipe Balbi
    Acked-by: Yoshihiro Shimoda
    Acked-by: Kishon Vijay Abraham I

    Chanwoo Choi
     

09 Jan, 2017

1 commit


13 Sep, 2016

1 commit

  • This patch alters the renamed extcon API to set the state of the external
    connectors instead of deprecated extcon_set_cable_state_().

    Because the patch[1] modifies the function name to maintain the function
    naming pattern.
    - extcon_set_cable_state_() -> extcon_set_state_sync()
    - extcon_get_cable_state_() -> extcon_get_state()

    [1] https://lkml.org/lkml/2016/8/4/729
    - extcon: Rename the extcon_set/get_state() to maintain the function naming pattern

    Signed-off-by: Chanwoo Choi
    Acked-by: Charles Keepax
    Acked-by: Roger Quadros

    Chanwoo Choi
     

25 Jan, 2016

2 commits


16 Oct, 2015

1 commit

  • This patch modifies the id and name of external connector with the
    additional prefix to clarify both attribute and meaning of external
    connector as following:
    - EXTCON_CHG_* mean the charger connector.
    - EXTCON_JACK_* mean the jack connector.
    - EXTCON_DISP_* mean the display port connector.

    Following table show the new name of external connector with old name:
    --------------------------------------------------
    Old extcon name | New extcon name |
    --------------------------------------------------
    EXTCON_TA | EXTCON_CHG_USB_DCP |
    EXTCON_CHARGE_DOWNSTREAM| EXTCON_CHG_USB_CDP |
    EXTCON_FAST_CHARGER | EXTCON_CHG_USB_FAST |
    EXTCON_SLOW_CHARGER | EXTCON_CHG_USB_SLOW |
    --------------------------------------------------
    EXTCON_MICROPHONE | EXTCON_JACK_MICROPHONE |
    EXTCON_HEADPHONE | EXTCON_JACK_HEADPHONE |
    EXTCON_LINE_IN | EXTCON_JACK_LINE_IN |
    EXTCON_LINE_OUT | EXTCON_JACK_LINE_OUT |
    EXTCON_VIDEO_IN | EXTCON_JACK_VIDEO_IN |
    EXTCON_VIDEO_OUT | EXTCON_JACK_VIDEO_OUT |
    EXTCON_SPDIF_IN | EXTCON_JACK_SPDIF_IN |
    EXTCON_SPDIF_OUT | EXTCON_JACK_SPDIF_OUT |
    --------------------------------------------------
    EXTCON_HMDI | EXTCON_DISP_HDMI |
    EXTCON_MHL | EXTCON_DISP_MHL |
    EXTCON_DVI | EXTCON_DISP_DVI |
    EXTCON_VGA | EXTCON_DISP_VGA |
    --------------------------------------------------

    And, when altering the name of USB charger connector, EXTCON refers to the
    "Battery Charging v1.2 Spec and Adopters Agreement"[1] to use the standard
    name of USB charging port as following. Following name of USB charging port
    are already used in power_supply subsystem. We chan check it on patch[2].
    - EXTCON_CHG_USB_SDP /* Standard Downstream Port */
    - EXTCON_CHG_USB_DCP /* Dedicated Charging Port */
    - EXTCON_CHG_USB_CDP /* Charging Downstream Port */
    - EXTCON_CHG_USB_ACA /* Accessory Charger Adapter */

    [1] www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip
    [2] commit 85efc8a18ced ("power_supply: Add types for USB chargers")

    Signed-off-by: Chanwoo Choi
    [ckeepax: For the Arizona changes]
    Acked-by: Charles Keepax
    Reviewed-by: Roger Quadros

    Chanwoo Choi
     

29 Sep, 2015

2 commits

  • The function can return negative value.

    The problem has been detected using proposed semantic patch
    scripts/coccinelle/tests/assign_signed_to_unsigned.cocci [1].

    [1]: http://permalink.gmane.org/gmane.linux.kernel/2046107

    Signed-off-by: Andrzej Hajda
    Signed-off-by: Chanwoo Choi

    Andrzej Hajda
     
  • The I2C core always reports the MODALIAS uevent as "i2c:"
    regardless of the mechanism that was used to register the device
    (i.e: OF or board code) and the table that is used later to match
    the driver with the device (i.e: I2C id table or OF match table).

    So drivers needs to export the I2C id table and this be built into
    the module or udev won't have the necessary information to autoload
    the needed driver module when the device is added.

    But this means that OF-only drivers needs to have both OF and I2C id
    tables that have to be kept in sync and also the dev node compatible
    manufacturer prefix is stripped when reporting the MODALIAS. Which can
    lead to issues if two vendors use the same I2C device name for example.

    To avoid the above, the I2C core behavior may be changed in the future
    to not require an SPI device table for OF-only drivers and report the
    OF module alias. So, it's better to also export the OF table even when
    is unused now to prevent breaking module loading when the core changes.

    Signed-off-by: Javier Martinez Canillas
    Signed-off-by: Chanwoo Choi

    Javier Martinez Canillas
     

10 Aug, 2015

1 commit


13 Jun, 2015

1 commit

  • This patch just redefine the unique id of supported external connectors without
    'enum extcon' type. Because unique id would be used on devictree file(*.dts) to
    indicate the specific external connectors like key number of input framework.
    So, I have the plan to move this definitions to following header file which
    includes the unique id of supported external connectors.
    - include/dt-bindings/extcon/extcon.h

    Fixes: 2a9de9c0f08d ("extcon: Use the unique id for external connector instead of string")
    Signed-off-by: Chanwoo Choi
    Signed-off-by: Greg Kroah-Hartman

    Chanwoo Choi
     

22 May, 2015

1 commit

  • This patch uses the unique id to identify the type of external connector instead
    of string name. The string name have the many potential issues. So, this patch
    defines the 'extcon' enumeration which includes all supported external connector
    on EXTCON subsystem. If new external connector is necessary, the unique id of
    new connector have to be added in 'extcon' enumeration. There are current
    supported external connector in 'enum extcon' as following:

    enum extcon {
    EXTCON_NONE = 0x0,

    /* USB external connector */
    EXTCON_USB = 0x1,
    EXTCON_USB_HOST = 0x2,

    /* Charger external connector */
    EXTCON_TA = 0x10,
    EXTCON_FAST_CHARGER = 0x11,
    EXTCON_SLOW_CHARGER = 0x12,
    EXTCON_CHARGE_DOWNSTREAM = 0x13,

    /* Audio and video external connector */
    EXTCON_LINE_IN = 0x20,
    EXTCON_LINE_OUT = 0x21,
    EXTCON_MICROPHONE = 0x22,
    EXTCON_HEADPHONE = 0x23,

    EXTCON_HDMI = 0x30,
    EXTCON_MHL = 0x31,
    EXTCON_DVI = 0x32,
    EXTCON_VGA = 0x33,
    EXTCON_SPDIF_IN = 0x34,
    EXTCON_SPDIF_OUT = 0x35,
    EXTCON_VIDEO_IN = 0x36,
    EXTCON_VIDEO_OUT = 0x37,

    /* Miscellaneous external connector */
    EXTCON_DOCK = 0x50,
    EXTCON_JIG = 0x51,
    EXTCON_MECHANICAL = 0x52,

    EXTCON_END,
    };

    For example in extcon-arizona.c:
    To use unique id removes the potential issue about handling
    the inconsistent name of external connector with string.
    - Previously, use the string to register the type of arizona jack connector
    static const char *arizona_cable[] = {
    "Mechanical",
    "Microphone",
    "Headphone",
    "Line-out",
    };
    - Newly, use the unique id to register the type of arizona jack connector
    static const enum extcon arizona_cable[] = {
    EXTCON_MECHANICAL,
    EXTCON_MICROPHONE,
    EXTCON_HEADPHONE,
    EXTCON_LINE_OUT,

    EXTCON_NONE,
    };

    And this patch modify the prototype of extcon_{get|set}_cable_state_() which
    uses the 'enum extcon id' instead of 'cable_index'. Because although one more
    extcon drivers support USB cable, each extcon driver might has the differnt
    'cable_index' for USB cable. All extcon drivers can use the unique id number
    for same external connector with modified extcon_{get|set}_cable_state_().

    - Previously, use 'cable_index' on these functions:
    extcon_get_cable_state_(struct extcon_dev*, int cable_index)
    extcon_set_cable_state_(struct extcon_dev*, int cable_index, bool state)

    -Newly, use 'enum extcon id' on these functions:
    extcon_get_cable_state_(struct extcon_dev*, enum extcon id)
    extcon_set_cable_state_(struct extcon_dev*, enum extcon id, bool state)

    Cc: Arnd Bergmann
    Cc: Felipe Balbi
    Signed-off-by: Chanwoo Choi
    Acked-by: Roger Quadros
    Acked-by: Charles Keepax
    Acked-by: Ramakrishna Pallala
    Reviewed-by: Krzysztof Kozlowski
    [arnd: Report the build break about drivers/usb/phy/phy-tahvo.c after using the
    unique id for external connector insteadf of string]
    Reported-by: Arnd Bergmann
    [dan.carpenter: Report the build warning of extcon_{set|get}_cable_state_()]
    Reported-by: Dan Carpenter

    Chanwoo Choi
     

19 May, 2015

1 commit

  • This patch removes the optional name of extcon device. Instead,
    extcon_dev_register() set the device name as 'extcon[number]' naming pattern.
    - /sys/class/extcon/[hardcoded device name] -> /sys/class/extcon/extcon[number]

    Signed-off-by: Chanwoo Choi
    Acked-by: Krzysztof Kozlowski
    Cc: MyungJoo Ham
    Cc: Charles Keepax
    Cc: Graeme Gregory
    Cc: Kishon Vijay Abraham I
    Cc: Krzysztof Kozlowski
    Cc: Jaewon Kim

    Chanwoo Choi
     

07 Mar, 2015

1 commit


22 Sep, 2014

4 commits


23 Jul, 2014

3 commits