18 Apr, 2019

2 commits


21 Jul, 2018

1 commit

  • …t/chanwoo/extcon into char-misc-next

    Chanwoo writes:

    Update extcon for 4.19

    Detailed description for this pull request:
    1. Release locking when sending the connector state in extcon_sync()
    - Previously, extcon used the spinlock before calling the notifier_call_chain
    to prevent the scheduled out of task and to prevent the notification delay.
    When spinlock is locked for sending the notification, deadlock issue
    occured on the side of extcon consumer device. To fix this issue on extcon
    consumer device, release locking when sending the connector state.

    2. Fix minor issues of extcon provider driver
    - extcon-intel-int3496.c uses 'linux/gpio/consumer.h' instead of 'linux/gpio.h'
    - extcon-usbc-cors-ec.c adds SPDX license and fix the wrong license information

    Greg Kroah-Hartman
     

12 Jul, 2018

5 commits

  • Previously, extcon used the spinlock before calling the notifier_call_chain
    to prevent the scheduled out of task and to prevent the notification delay.
    When spinlock is locked for sending the notification, deadlock issue
    occured on the side of extcon consumer device. To fix this issue,
    extcon consumer device should always use the work. it is always not
    reasonable to use work.

    To fix this issue on extcon consumer device, release locking when sending
    the notification of connector state.

    Fixes: ab11af049f88 ("extcon: Add the synchronization extcon APIs to support the notification")
    Cc: stable@vger.kernel.org
    Cc: Roger Quadros
    Cc: Kishon Vijay Abraham I
    Signed-off-by: Chanwoo Choi

    Chanwoo Choi
     
  • Adopt the SPDX license identifier headers to ease license compliance
    management.

    Signed-off-by: Enric Balletbo i Serra
    Signed-off-by: Chanwoo Choi

    Enric Balletbo i Serra
     
  • The license text is specifying "GPLv2" but the MODULE_LICENSE is set to
    GPL which means GNU Public License v2 or later. When MODULE_LICENSE and
    boiler plate does not match, go for boiler plate license.

    Signed-off-by: Enric Balletbo i Serra
    Signed-off-by: Chanwoo Choi

    Enric Balletbo i Serra
     
  • Since commit eca0f13c836a ("extcon: int3496: Ignore incorrect
    IoRestriction for ID pin"), the driver doesn't use GPIOF_* flags
    anymore. We can thus now drop the deprecated include file for GPIO and
    use the new one.

    Signed-off-by: Wolfram Sang
    Signed-off-by: Chanwoo Choi

    Wolfram Sang
     
  • Another driver turned up that is missing linux/mod_devicetable.h after
    the device IDs are split out from linux/platform_device.h:

    drivers/extcon/extcon-max3355.c:127:34: error: array type has incomplete element type 'struct of_device_id'
    static const struct of_device_id max3355_match_table[] = {

    Fixes: ac3167257b9f ("headers: separate linux/mod_devicetable.h from linux/platform_device.h")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Greg Kroah-Hartman

    Arnd Bergmann
     

07 Jul, 2018

1 commit

  • At over 4000 #includes, is the 9th most
    #included header file in the Linux kernel. It does not need
    , so drop that header and explicitly add
    to source files that need it.

    4146 #include

    After this patch, there are 225 files that use ,
    for a reduction of around 3900 times that
    does not have to be read & parsed.

    225 #include

    This patch was build-tested on 20 different arch-es.

    It also makes these drivers SubmitChecklist#1 compliant.

    Signed-off-by: Randy Dunlap
    Reported-by: kbuild test robot # drivers/media/platform/vimc/
    Reported-by: kbuild test robot # drivers/pinctrl/pinctrl-u300.c
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     

13 Jun, 2018

1 commit

  • The kzalloc() function has a 2-factor argument form, kcalloc(). This
    patch replaces cases of:

    kzalloc(a * b, gfp)

    with:
    kcalloc(a * b, gfp)

    as well as handling cases of:

    kzalloc(a * b * c, gfp)

    with:

    kzalloc(array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    kzalloc_array(array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    kzalloc(4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    type TYPE;
    expression THING, E;
    @@

    (
    kzalloc(
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    kzalloc(
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    kzalloc(
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    identifier SIZE, COUNT;
    @@

    - kzalloc
    + kcalloc
    (
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    kzalloc(
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    kzalloc(
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    kzalloc(
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    kzalloc(sizeof(THING) * C2, ...)
    |
    kzalloc(sizeof(TYPE) * C2, ...)
    |
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(C1 * C2, ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

05 Apr, 2018

1 commit

  • Pull char/misc updates from Greg KH:
    "Here is the big set of char/misc driver patches for 4.17-rc1.

    There are a lot of little things in here, nothing huge, but all
    important to the different hardware types involved:

    - thunderbolt driver updates

    - parport updates (people still care...)

    - nvmem driver updates

    - mei updates (as always)

    - hwtracing driver updates

    - hyperv driver updates

    - extcon driver updates

    - ... and a handful of even smaller driver subsystem and individual
    driver updates

    All of these have been in linux-next with no reported issues"

    * tag 'char-misc-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (149 commits)
    hwtracing: Add HW tracing support menu
    intel_th: Add ACPI glue layer
    intel_th: Allow forcing host mode through drvdata
    intel_th: Pick up irq number from resources
    intel_th: Don't touch switch routing in host mode
    intel_th: Use correct method of finding hub
    intel_th: Add SPDX GPL-2.0 header to replace GPLv2 boilerplate
    stm class: Make dummy's master/channel ranges configurable
    stm class: Add SPDX GPL-2.0 header to replace GPLv2 boilerplate
    MAINTAINERS: Bestow upon myself the care for drivers/hwtracing
    hv: add SPDX license id to Kconfig
    hv: add SPDX license to trace
    Drivers: hv: vmbus: do not mark HV_PCIE as perf_device
    Drivers: hv: vmbus: respect what we get from hv_get_synint_state()
    /dev/mem: Avoid overwriting "err" in read_mem()
    eeprom: at24: use SPDX identifier instead of GPL boiler-plate
    eeprom: at24: simplify the i2c functionality checking
    eeprom: at24: fix a line break
    eeprom: at24: tweak newlines
    eeprom: at24: refactor at24_probe()
    ...

    Linus Torvalds
     

22 Mar, 2018

1 commit

  • The AXP288 BC1.2 charger detection / extcon code may seem like a strange
    place to add code to control the USB role-switch on devices with an AXP288,
    but there are 2 reasons to do this inside the axp288 extcon code:

    1) On many devices the USB role is controlled by ACPI AML code, but the AML
    code only switches between the host and none roles, because of Windows
    not really using device mode. To make device mode work we need to toggle
    between the none/device roles based on Vbus presence, and the axp288
    extcon gets interrupts on Vbus insertion / removal.

    2) In order for our BC1.2 charger detection to work properly the role
    mux must be properly set to device mode before we do the detection.

    Also note the Kconfig help-text / obsolete depends on USB_PHY which are
    remnants from older never upstreamed code also controlling the mux from
    the axp288 extcon code.

    This commit also adds code to get notifications from the INT3496 extcon
    device, which is used on some devices to notify the kernel about id-pin
    changes instead of them being handled through AML code.

    This fixes:
    -Device mode not working on most CHT devices with an AXP288
    -Host mode not working on devices with an INT3496 ACPI device
    -Charger-type misdetection (always SDP) on devices with an INT3496 when the
    USB role (always) gets initialized as host

    Signed-off-by: Hans de Goede
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Heikki Krogerus
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

21 Mar, 2018

6 commits


08 Mar, 2018

1 commit


14 Feb, 2018

1 commit

  • Some other drivers may be waiting for our extcon to show-up, exiting their
    probe methods with -EPROBE_DEFER until we show up.

    These drivers will typically get the cable state directly after getting
    the extcon, this commit changes the int3496 code to wait for the initial
    processing of the id-pin to complete before exiting probe() with 0, which
    will cause devices waiting on the defered probe to get reprobed.

    This fixes a race where the initial work might still be running while other
    drivers were already calling extcon_get_state().

    Fixes: 2f556bdb9f2e ("extcon: int3496: Add Intel INT3496 ACPI ... driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede
    Signed-off-by: Chanwoo Choi

    Hans de Goede
     

13 Feb, 2018

2 commits


03 Jan, 2018

6 commits


15 Dec, 2017

1 commit


27 Nov, 2017

3 commits


14 Nov, 2017

1 commit

  • Pull USB/PHY updates from Greg KH:
    "Here is the big set of USB and PHY driver updates for 4.15-rc1.

    There is the usual amount of gadget and xhci driver updates, along
    with phy and chipidea enhancements. There's also a lot of SPDX tags
    and license boilerplate cleanups as well, which provide some churn in
    the diffstat.

    Other major thing is the typec code that moved out of staging and into
    the "real" part of the drivers/usb/ tree, which was nice to see
    happen.

    All of these have been in linux-next with no reported issues for a
    while"

    * tag 'usb-4.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (263 commits)
    usb: gadget: f_fs: Fix use-after-free in ffs_free_inst
    USB: usbfs: compute urb->actual_length for isochronous
    usb: core: message: remember to reset 'ret' to 0 when necessary
    USB: typec: Remove remaining redundant license text
    USB: typec: add SPDX identifiers to some files
    USB: renesas_usbhs: rcar?.h: add SPDX tags
    USB: chipidea: ci_hdrc_tegra.c: add SPDX line
    USB: host: xhci-debugfs: add SPDX lines
    USB: add SPDX identifiers to all remaining Makefiles
    usb: host: isp1362-hcd: remove a couple of redundant assignments
    USB: adutux: remove redundant variable minor
    usb: core: add a new usb_get_ptm_status() helper
    usb: core: add a 'type' parameter to usb_get_status()
    usb: core: introduce a new usb_get_std_status() helper
    usb: core: rename usb_get_status() 'type' argument to 'recip'
    usb: core: add Status Type definitions
    USB: gadget: Remove redundant license text
    USB: gadget: function: Remove redundant license text
    USB: gadget: udc: Remove redundant license text
    USB: gadget: legacy: Remove redundant license text
    ...

    Linus Torvalds
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

24 Oct, 2017

2 commits

  • SmartDock uses ADC_RESERVED_ACC_3 (0x10) ADC ID type and provides following
    features:
    1. USB host with embedded USB hub (2-4 ports) for mice, keyboard, etc,
    2. MHL for video output,
    3. charging.

    Tested with Unitek Y-2165 MHL+OTG Hub Smart Phone Dock.

    Signed-off-by: Marek Szyprowski
    Acked-by: Chanwoo Choi
    Acked-by: Lee Jones
    Signed-off-by: Chanwoo Choi

    Marek Szyprowski
     
  • Enabling power on VBUS micro-usb pin is required only when passive OTG
    cable is connected. Initially OTG VBUS power control was planned to be
    done in charger driver. However such information is not really available
    from the extcon notifications, so VBUS power control has to be done
    directly in MUIC driver, which has all information about the attached
    accessory.

    For example SmartDock is externally powered accessory, provides OTG
    (USB HOST) functionality and use VBUS pin for charging a device battery,
    so the VBUS charging pump should be disabled in such case.

    Signed-off-by: Marek Szyprowski
    Acked-by: Chanwoo Choi
    Acked-by: Lee Jones
    Signed-off-by: Chanwoo Choi

    Marek Szyprowski
     

23 Oct, 2017

3 commits

  • The variable "ret" is immediately reassigned by a following statement.
    Thus omit the explicit initialisation at the beginning.

    Signed-off-by: Markus Elfring
    Reviewed-by: Krzysztof Kozlowski
    Signed-off-by: Chanwoo Choi

    Markus Elfring
     
  • The array extcon_info is read only, local to the source and does not
    need to be in global scope, so make it static const.

    Cleans up sparse warning:
    symbol 'extcon_info' was not declared. Should it be static?

    Signed-off-by: Colin Ian King
    Signed-off-by: Chanwoo Choi

    Colin Ian King
     
  • 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
     

25 Aug, 2017

1 commit