19 Aug, 2018

1 commit

  • Pull char/misc driver updates from Greg KH:
    "Here is the bit set of char/misc drivers for 4.19-rc1

    There is a lot here, much more than normal, seems like everyone is
    writing new driver subsystems these days... Anyway, major things here
    are:

    - new FSI driver subsystem, yet-another-powerpc low-level hardware
    bus

    - gnss, finally an in-kernel GPS subsystem to try to tame all of the
    crazy out-of-tree drivers that have been floating around for years,
    combined with some really hacky userspace implementations. This is
    only for GNSS receivers, but you have to start somewhere, and this
    is great to see.

    Other than that, there are new slimbus drivers, new coresight drivers,
    new fpga drivers, and loads of DT bindings for all of these and
    existing drivers.

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

    * tag 'char-misc-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (255 commits)
    android: binder: Rate-limit debug and userspace triggered err msgs
    fsi: sbefifo: Bump max command length
    fsi: scom: Fix NULL dereference
    misc: mic: SCIF Fix scif_get_new_port() error handling
    misc: cxl: changed asterisk position
    genwqe: card_base: Use true and false for boolean values
    misc: eeprom: assignment outside the if statement
    uio: potential double frees if __uio_register_device() fails
    eeprom: idt_89hpesx: clean up an error pointer vs NULL inconsistency
    misc: ti-st: Fix memory leak in the error path of probe()
    android: binder: Show extra_buffers_size in trace
    firmware: vpd: Fix section enabled flag on vpd_section_destroy
    platform: goldfish: Retire pdev_bus
    goldfish: Use dedicated macros instead of manual bit shifting
    goldfish: Add missing includes to goldfish.h
    mux: adgs1408: new driver for Analog Devices ADGS1408/1409 mux
    dt-bindings: mux: add adi,adgs1408
    Drivers: hv: vmbus: Cleanup synic memory free path
    Drivers: hv: vmbus: Remove use of slow_virt_to_phys()
    Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind()
    ...

    Linus Torvalds
     

18 Jul, 2018

7 commits

  • The opp table is not removed when the driver is unloaded neither when
    there is an error within probe, so if the driver is reloaded the opp
    core shows the following warning:

    rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq:
    200000000, volt: 900000, enabled: 1. New: freq: 200000000,
    volt: 900000, enabled: 1
    rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq:
    400000000, volt: 900000, enabled: 1. New: freq: 400000000,
    volt: 900000, enabled: 1
    rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq:
    666000000, volt: 900000, enabled: 1. New: freq: 666000000,
    volt: 900000, enabled: 1
    rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq:
    800000000, volt: 900000, enabled: 1. New: freq: 800000000,
    volt: 900000, enabled: 1
    rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq:
    928000000, volt: 900000, enabled: 1. New: freq: 928000000,
    volt: 900000, enabled: 1

    This patch fixes the error path in the probe function and adds a .remove
    function to properly cleanup the opp table on unloading.

    Fixes: 5a893e31a636c (PM / devfreq: rockchip: add devfreq driver for rk3399 dmc)
    Signed-off-by: Enric Balletbo i Serra
    Reviewed-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Enric Balletbo i Serra
     
  • Commit ab8f58ad72c4 ("PM / devfreq: Set min/max_freq when adding
    the devfreq device") introduced the initialization of the user
    limits min/max_freq from the lowest/highest available OPPs. Later
    commit f1d981eaecf8 ("PM / devfreq: Use the available min/max
    frequency") added scaling_min/max_freq, which actually represent
    the frequencies of the lowest/highest available OPP. scaling_min/
    max_freq are initialized with the values from min/max_freq, which
    is totally correct in the context, but a bit awkward to read.

    Swap the initialization and assign scaling_min/max_freq with the
    OPP freqs and then the user limts min/max_freq with scaling_min/
    max_freq.

    Needless to say that this change is a NOP, intended to improve
    readability.

    Signed-off-by: Matthias Kaehlcke
    Reviewed-by: Chanwoo Choi
    Reviewed-by: Brian Norris
    Signed-off-by: MyungJoo Ham

    Matthias Kaehlcke
     
  • Fix some spelling mistakes in error and debug messages.

    Signed-off-by: Enric Balletbo i Serra
    Signed-off-by: MyungJoo Ham

    Enric Balletbo i Serra
     
  • We just return -EPROBE_DEFER error code to caller and do not
    print error message when try to get center logic regulator
    and DMC clock defer.

    Signed-off-by: Lin Huang
    Signed-off-by: Enric Balletbo i Serra
    Reviewed-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Lin Huang
     
  • We have already wait dcf done in ATF, so don't need wait dcf irq
    in kernel, besides, clear dcf irq in kernel will import competiton
    between kernel and ATF, only handle dcf irq in ATF is a better way.

    Signed-off-by: Lin Huang
    Signed-off-by: Enric Balletbo i Serra
    Reviewed-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Enric Balletbo i Serra
     
  • Never directly free @dev after calling device_register() or
    device_unregister(), even if device_register() returned an error.
    Always use put_device() to give up the reference initialized.

    Signed-off-by: Arvind Yadav
    Reviewed-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Arvind Yadav
     
  • …n in exynos_ppmu_probe()

    Omit an extra message for a memory allocation failure in this function.

    This issue was detected by using the Coccinelle software.

    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>

    Markus Elfring
     

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 devm_kzalloc() function has a 2-factor argument form, devm_kcalloc().
    This patch replaces cases of:

    devm_kzalloc(handle, a * b, gfp)

    with:
    devm_kcalloc(handle, a * b, gfp)

    as well as handling cases of:

    devm_kzalloc(handle, a * b * c, gfp)

    with:

    devm_kzalloc(handle, array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    devm_kcalloc(handle, array_size(a, b), c, gfp)

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

    devm_kzalloc(handle, 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.

    Some manual whitespace fixes were needed in this patch, as Coccinelle
    really liked to write "=devm_kcalloc..." instead of "= devm_kcalloc...".

    The Coccinelle script used for this was:

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

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

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

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

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

    (
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

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

    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

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

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

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

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

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

    (
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - 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 HANDLE;
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - 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 HANDLE;
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, sizeof(THING) * C2, ...)
    |
    devm_kzalloc(HANDLE, sizeof(TYPE) * C2, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2, ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

02 Jan, 2018

2 commits

  • df->governor is being dereferenced before it is null checked,
    hence there is a potential null pointer dereference.

    Notice that df->governor is being null checked at line 1004:
    if (df->governor) {, which implies it might be null.

    Fix this by null checking df->governor before dereferencing it.

    Addresses-Coverity-ID: 1401988 ("Dereference before null check")
    Fixes: bcf23c79c4e4 ("PM / devfreq: Fix available_governor sysfs")
    Signed-off-by: Gustavo A. R. Silva
    Reviewed-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Gustavo A. R. Silva
     
  • Propagate the error of devfreq_add_device() in devm_devfreq_add_device()
    rather than statically returning ENOMEM. This makes it slightly faster
    to pinpoint the cause of a returned error.

    Fixes: 8cd84092d35e ("PM / devfreq: Add resource-managed function for devfreq device")
    Cc: stable@vger.kernel.org
    Acked-by: Chanwoo Choi
    Signed-off-by: Bjorn Andersson
    Signed-off-by: MyungJoo Ham

    Bjorn Andersson
     

13 Nov, 2017

1 commit

  • * pm-devfreq:
    PM / devfreq: Define the constant governor name
    PM / devfreq: Remove unneeded conditional statement
    PM / devfreq: Show the all available frequencies
    PM / devfreq: Change return type of devfreq_set_freq_table()
    PM / devfreq: Use the available min/max frequency
    Revert "PM / devfreq: Add show_one macro to delete the duplicate code"
    PM / devfreq: Set min/max_freq when adding the devfreq device

    * pm-tools:
    tools/power/cpupower: add libcpupower.so.0.0.1 to .gitignore
    tools/power/cpupower: Add 64 bit library detection
    MAINTAINERS: add maintainer for tools/power/cpupower
    cpupower: Fix no-rounding MHz frequency output

    Rafael J. Wysocki
     

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
     

26 Oct, 2017

7 commits

  • Prior to that, the devfreq device uses the governor name when adding
    the itself. In order to prevent the mistake used the wrong governor name,
    this patch defines the governor name as a constant and then uses them
    instead of using the string directly.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham
    Cc: Kukjin Kim
    Cc: Krzysztof Kozlowski
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org

    Chanwoo Choi
     
  • The freq_table array of each devfreq device is always not NULL.
    In result, it is unneeded to check whether profile->freq_table
    is NULL or not.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • The commit a76caf55e5b35 ("thermal: Add devfreq cooling") allows
    the devfreq device to use the cooling device. When the cooling down
    are required, the devfreq_cooling.c disables the OPP entry with
    the dev_pm_opp_disable(). In result, 'available_frequencies'[1]
    sysfs node never came to show the all available frequencies.
    [1] /sys/class/devfreq/.../available_frequencies

    So, this patch uses the 'freq_table' in the 'struct devfreq_dev_profile'
    in order to show the all available frequencies.
    - If 'freq_table' is NULL, devfreq core initializes them by using OPP values.
    - If 'freq_table' is initialized, devfreq core just uses the 'freq_table'.

    And this patch adds some comment about the sort way of 'freq_table'.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • This patch changes the return type of devfreq_set_freq_table()
    from 'void' to 'int' in order to check whether it fails or not.

    And This patch just removes the 'devfreq' prefix and the description
    of function. Because the helper functions are only used by the devfreq.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • The commit a76caf55e5b35 ("thermal: Add devfreq cooling") is able
    to disable OPP as a cooling device. In result, both update_devfreq()
    and {min|max}_freq_show() have to consider the 'opp->available'
    status of each OPP.

    So, this patch adds the 'scaling_{min|max}_freq' to struct devfreq
    in order to indicate the available mininum and maximum frequency
    by adjusting OPP interface such as dev_pm_opp_{disable|enable}().
    The 'scaling_{min|max}_freq' are used for on both update_devfreq()
    and {min|max}_freq_show().

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • This reverts commit 3104fa3081126c9bda35793af5f335d0ee0d5818.

    The {min|max}_freq_show() show the stored value of the struct devfreq.
    But, if the drivers/thermal/devfreq_cooling.c disables the specific
    frequency value, {min|max}_freq_show() have to check this situation
    before showing the stored value. So, this patch revert the macro
    in order to add the additional codes.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • Prior to that, the min/max_freq of the devfreq device are always zero
    before the user changes the min/max_freq through sysfs entries.
    It might make the confusion for the min/max_freq.

    This patch initializes the available min/max_freq by using the OPP
    during adding the devfreq device.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     

28 Aug, 2017

4 commits

  • When the devfreq_add_device fails to register deivce, the memory
    leak of devfreq instance happen. So, this patch fix the memory
    leak issue. Before freeing the devfreq instance checks whether
    devfreq instance is NULL or not because the device_unregister()
    frees the devfreq instance when jumping to the 'err_init'.
    It is to prevent the duplicate the kfee(devfreq).

    Cc: stable@vger.kernel.org
    Fixes: ac4b281176a5 ("PM / devfreq: fix duplicated kfree on devfreq pointer")
    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • The devfreq ues the OPP library to handle the voltage and frequency
    for the device basically. This patch adds the dependency on CONFIG_PM_OPP
    in order to prevent either the build break or the unknow behavior.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • THe devfreq_update_stats() updates the 'struct devfreq_dev_status'
    in order to get current status of devfreq device. It is only used
    for the governors.

    This patch moves the devfreq_update_stats() into devfreq directory.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • Now that we have a custom printf format specifier, convert users of
    full_name to use %pOF instead. This is preparation to remove storing
    of the full path string for each node.

    Signed-off-by: Rob Herring
    Reviewed-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: linux-pm@vger.kernel.org

    Rob Herring
     

06 Jul, 2017

3 commits

  • attribute_groups are not supposed to change at runtime. All functions
    working with attribute_groups provided by work with const
    attribute_group. So mark the non-const structs as const.

    File size before:
    text data bss dec hex filename
    621 176 0 797 31d drivers/devfreq/governor_userspace.o

    File size After adding 'const':
    text data bss dec hex filename
    670 144 0 814 32e drivers/devfreq/governor_userspace.o

    Signed-off-by: Arvind Yadav
    Reviewed-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Arvind Yadav
     
  • platform_get_irq() returns an error code, but the tegra-devfreq
    driver ignores it and always returns -ENODEV. This is not correct,
    and prevents -EPROBE_DEFER from being propagated properly.

    Notice that platform_get_irq() no longer returns 0 on error:
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e330b9a6bb35dc7097a4f02cb1ae7b6f96df92af

    Print and propagate the return value of platform_get_irq on failure.

    Reviewed-by: Chanwoo Choi
    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: MyungJoo Ham

    Gustavo A. R. Silva
     
  • platform_get_irq() returns an error code, but the rk3399_dmc
    driver ignores it and always returns -EINVAL. This is not correct,
    and prevents -EPROBE_DEFER from being propagated properly.

    Notice that platform_get_irq() no longer returns 0 on error:
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e330b9a6bb35dc7097a4f02cb1ae7b6f96df92af

    Print and propagate the return value of platform_get_irq on failure.

    Reviewed-by: Chanwoo Choi
    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: MyungJoo Ham

    Gustavo A. R. Silva
     

12 Jun, 2017

3 commits


12 Apr, 2017

1 commit


28 Feb, 2017

1 commit

  • Fix typos and add the following to the scripts/spelling.txt:

    followings||following

    While we are here, add a missing colon in the boilerplate in DT binding
    documents. The "you SoC" in allwinner,sunxi-pinctrl.txt was fixed as
    well.

    I reworded "as the followings:" to "as follows:" for
    drivers/usb/gadget/udc/renesas_usb3.c.

    Link: http://lkml.kernel.org/r/1481573103-11329-32-git-send-email-yamada.masahiro@socionext.com
    Signed-off-by: Masahiro Yamada
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Masahiro Yamada
     

20 Feb, 2017

1 commit

  • * pm-devfreq:
    PM / devfreq: Modify the device name as devfreq(X) for sysfs
    PM / devfreq: Simplify the sysfs name of devfreq-event device
    PM / devfreq: Remove unnecessary separate _remove_devfreq()
    PM / devfreq: Fix wrong trans_stat of passive devfreq device
    PM / devfreq: Fix available_governor sysfs
    PM / devfreq: exynos-ppmu: Show the registred device for ppmu device
    PM / devfreq: Fix the wrong description for userspace governor
    PM / devfreq: Fix the checkpatch warnings
    PM / devfreq: exynos-bus: Print the real clock rate of bus
    PM / devfreq: exynos-ppmu: Use the regmap interface to handle the registers
    PM / devfreq: exynos-bus: Add the detailed correlation for Exynos5433
    PM / devfreq: Don't delete sysfs group twice

    Rafael J. Wysocki
     

31 Jan, 2017

6 commits

  • This patch modifies the device name as devfreq(X) for sysfs by using the 'devfreq'
    prefix word instead of separate device name. On user-space aspect, user would
    find the some devfreq drvier with 'devfreq(X)' pattern. So, this patch modify the
    device name as following:
    - /sys/class/devfreq/[non-standard device name] -> /sys/class/devfreq/devfreq(X)

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • This patch just removes '.' character from the sysfs name of devfreq-event
    device as following. Usually, the subsystem uses the similiar naming style
    such as {framework name}{Number}.
    - old : /sys/class/devfreq-event/event.(X)
    - new : /sys/class/devfreq-event/event(X)

    And this patch initializes the value of 'event_no' with -1
    in order to remove the unneeded operation (-1) when calling
    the atomic_inc_return(&event_no).

    Lastly, this patch adds the ABI document for devfreq-event class.

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • The _remove_devfreq() releases the all resources of the devfreq
    device. This function is only called in the devfreq_dev_release().
    For that reason, the devfreq core doesn't need to leave the
    _remove_devfreq() separately. This patch releases the all
    resources in the devfreq_dev_release() and then removes the
    _remove_devfreq().

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • Until now, the trans_stat information of passive devfreq is not updated.
    This patch updates the trans_stat information after setting the target
    frequency of passive devfreq device.

    Fixes: 996133119f57 ("PM / devfreq: Add new passive governor")
    Cc: stable@vger.kernel.org
    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • The devfreq using passive governor is not able to change the governor.
    So, the user can not change the governor through 'available_governor' sysfs
    entry. Also, the devfreq which don't use the passive governor is not able to
    change to 'passive' governor on the fly.

    Fixes: 996133119f57 ("PM / devfreq: Add new passive governor")
    Cc: stable@vger.kernel.org
    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     
  • This patch just adds the simple log to show the PPMU device's registration
    during the kernel booting.

    Cc: Kukjin Kim
    Cc: Krzysztof Kozlowski
    Cc: Javier Martinez Canillas
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-samsung-soc@vger.kernel.org
    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi