03 May, 2016

2 commits

  • This patch adds the new DEVFREQ_TRANSITION_NOTIFIER notifier to send
    the notification when the frequency of device is changed.
    This notifier has two state as following:
    - DEVFREQ_PRECHANGE : Notify it before chaning the frequency of device
    - DEVFREQ_POSTCHANGE : Notify it after changed the frequency of device

    And this patch adds the resourced-managed function to release the resource
    automatically when error happen.

    Signed-off-by: Chanwoo Choi
    [m.reichl and linux.amoon: Tested it on exynos4412-odroidu3 board]
    Tested-by: Markus Reichl
    Tested-by: Anand Moon
    Signed-off-by: MyungJoo Ham
    Acked-by: Krzysztof Kozlowski

    Chanwoo Choi
     
  • This patch adds the new devfreq_get_devfreq_by_phandle() OF helper function
    which can find the instance of devfreq device by using phandle ("devfreq").

    Signed-off-by: Chanwoo Choi
    Signed-off-by: MyungJoo Ham
    [m.reichl and linux.amoon: Tested it on exynos4412-odroidu3 board]
    Tested-by: Markus Reichl
    Tested-by: Anand Moon
    Acked-by: Krzysztof Kozlowski

    Chanwoo Choi
     

13 Jan, 2016

4 commits

  • Before this patch for a device without statistics support,

    $ cat trans_stat
    From : To
    : time(ms)
    Total transitions : 0
    $

    After this patch applied for such a device,

    $ cat trans_stat
    Not Supported.
    $

    Signed-off-by: MyungJoo Ham

    MyungJoo Ham
     
  • This patch modifies the indentation of 'trans_stat' sysfs to improve readability.
    The 1GHz is 1000,000,000. So it needs the least 10 position to show the GHz unit.

    - Before apply this patch,
    -sh-3.2# cat trans_stat
    From : To
    :50000000100000000133000000200000000400000000 time(ms)
    *50000000: 0 0 0 0 7 1817635
    100000000: 4 0 0 0 4 1590
    133000000: 1 4 0 0 7 975
    200000000: 2 2 7 0 1 2655
    400000000: 0 2 5 12 0 1860
    Total transition : 58

    - After apply this patch,
    -sh-3.2# cat trans_stat
    From : To
    : 50000000 100000000 133000000 200000000 400000000 time(ms)
    * 50000000: 0 0 0 0 7 14405
    100000000: 4 0 0 0 3 2015
    133000000: 2 3 0 0 7 1020
    200000000: 1 2 7 0 0 2970
    400000000: 0 2 5 10 0 1575
    Total transition : 53

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

    Chanwoo Choi
     
  • This patch initialize the freq_table array of each devfreq device by using
    the devfreq_set_freq_table(). If freq_table is NULL, the devfreq framework
    is not able to support the frequency transtion information through sysfs.

    The OPP core uses the integer type for the number of opps in the opp list
    and uses the 'unsigned long' type for each frequency. So, this patch
    modifies the type of some variable as following:
    - the type of freq_table : unsigned int -> unsigned long
    - the type of max_state : unsigned int -> int

    - Corrected types, format strings, mutex usages by MyungJoo

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

    Chanwoo Choi
     
  • This patch adds the 'show_one' macro to simplify the duplicate code
    of both max_freq_show() and min_freq_show().

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

    Chanwoo Choi
     

02 Oct, 2015

1 commit

  • When device_register() fails, kfree(devfreq) is called already in
    devfreq_dev_release(), hence there is no need to call kfree(devfreq)
    in err_dev again.

    Signed-off-by: Geliang Tang
    Signed-off-by: MyungJoo Ham

    Geliang Tang
     

30 Sep, 2015

1 commit


11 Sep, 2015

3 commits


30 Mar, 2015

1 commit


29 Sep, 2014

1 commit


24 May, 2014

3 commits

  • This patch add resource-managed function for devfreq opp as following
    functions. The devm_devfreq_register_opp_notifier() manages automatically
    the registration of devfreq opp using device resource management.
    - devm_devfreq_register_opp_notifier
    - devm_devfreq_unregister_opp_notifier()

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

    Chanwoo Choi
     
  • This patch add resource-managed function for devfreq device as following
    functions. The devm_devfreq_add_device() manages automatically the memory
    of devfreq device using device resource management.
    - devm_devfreq_add_device()
    - devm_devfreq_remove_device()

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

    Chanwoo Choi
     
  • This patch modify devfreq_remove_device() to improve the sequence of resource
    free. If executing existing devfreq_remove_device(), this function always
    executes _remove_devfreq() twice. In result, second _remove_devfreq() always
    return error value. So, This patch resolves complicated function sequence
    as following:

    [Flow sequence before modification]
    devfreq_remove_device()
    _remove_devfreq(devfreq, false)
    kfree(devfreq); /* Free devfreq */
    if (!skip ...) { /* skip is false */
    device_unregister(&devfreq->dev)
    put_device(&devfreq->dev);
    ...
    dev->release()
    devfreq_dev_release()
    _remove_devfreq(devfreq, true) dev)
    put_device(&devfreq->dev);
    ..
    dev->release()
    devfreq_dev_release()
    _remove_devfreq()
    kfree(devfreq); /* Free devfreq */

    Signed-off-by: Chanwoo Choi
    [Merge conflict resolved by MyungJoo]
    Signed-off-by: MyungJoo Ham

    Chanwoo Choi
     

21 Mar, 2014

1 commit

  • The current devfreq_update_status() has the following bugs:
    - If previous frequency doesn't have a valid level, it does an out of bounds
    access into the trans_table and causes memory corruption.
    - When the new frequency doesn't have a valid level, the time spent in the
    new frequency is counted towards the next valid frequency switch instead of
    being ignored.
    - The time spent on the previous frequency is added to the new frequency's
    stats instead of the previous frequency's stats.

    This patch fixes all of this.

    Signed-off-by: Saravana Kannan
    Signed-off-by: MyungJoo Ham

    Saravana Kannan
     

08 Nov, 2013

1 commit

  • * pm-devfreq:
    PM / devfreq: create_freezable_workqueue() doesn't return an ERR_PTR
    PM / devfreq: Remove duplicate header file inclusion in exynos5_bus.c
    PM / devfreq: Use devm_* APIs in exynos5_bus.c
    PM / devfreq: Remove redundant platform_set_drvdata() in exynos5_bus.c
    PM / devfreq: Fix incorrect usage of IS_ERR_OR_NULL in exynos5_bus.c

    Rafael J. Wysocki
     

28 Oct, 2013

1 commit


26 Oct, 2013

3 commits

  • Since Operating Performance Points (OPP) functions are specific
    to device specific power management, be specific and rename opp.h
    to pm_opp.h

    Reported-by: Randy Dunlap
    Signed-off-by: Nishanth Menon
    Signed-off-by: Rafael J. Wysocki

    Nishanth Menon
     
  • Since Operating Performance Points (OPP) data structures are specific
    to device specific power management, be specific and rename opp_* data
    structures in OPP library with dev_pm_opp_* equivalent.

    Affected structures are:
    struct opp
    enum opp_event

    Minor checkpatch warning resulting of this change was fixed as well.

    Reported-by: Randy Dunlap
    Signed-off-by: Nishanth Menon
    Signed-off-by: Rafael J. Wysocki

    Nishanth Menon
     
  • Since Operating Performance Points (OPP) functions are specific to
    device specific power management, be specific and rename opp_*
    accessors in OPP library with dev_pm_opp_* equivalent.

    Affected functions are:
    opp_get_voltage
    opp_get_freq
    opp_get_opp_count
    opp_find_freq_exact
    opp_find_freq_floor
    opp_find_freq_ceil
    opp_add
    opp_enable
    opp_disable
    opp_get_notifier
    opp_init_cpufreq_table
    opp_free_cpufreq_table

    Reported-by: Randy Dunlap
    Signed-off-by: Nishanth Menon
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Nishanth Menon
     

20 Aug, 2013

1 commit


04 Jul, 2013

2 commits

  • Merge first patch-bomb from Andrew Morton:
    - various misc bits
    - I'm been patchmonkeying ocfs2 for a while, as Joel and Mark have been
    distracted. There has been quite a bit of activity.
    - About half the MM queue
    - Some backlight bits
    - Various lib/ updates
    - checkpatch updates
    - zillions more little rtc patches
    - ptrace
    - signals
    - exec
    - procfs
    - rapidio
    - nbd
    - aoe
    - pps
    - memstick
    - tools/testing/selftests updates

    * emailed patches from Andrew Morton : (445 commits)
    tools/testing/selftests: don't assume the x bit is set on scripts
    selftests: add .gitignore for kcmp
    selftests: fix clean target in kcmp Makefile
    selftests: add .gitignore for vm
    selftests: add hugetlbfstest
    self-test: fix make clean
    selftests: exit 1 on failure
    kernel/resource.c: remove the unneeded assignment in function __find_resource
    aio: fix wrong comment in aio_complete()
    drivers/w1/slaves/w1_ds2408.c: add magic sequence to disable P0 test mode
    drivers/memstick/host/r592.c: convert to module_pci_driver
    drivers/memstick/host/jmb38x_ms: convert to module_pci_driver
    pps-gpio: add device-tree binding and support
    drivers/pps/clients/pps-gpio.c: convert to module_platform_driver
    drivers/pps/clients/pps-gpio.c: convert to devm_* helpers
    drivers/parport/share.c: use kzalloc
    Documentation/accounting/getdelays.c: avoid strncpy in accounting tool
    aoe: update internal version number to v83
    aoe: update copyright date
    aoe: perform I/O completions in parallel
    ...

    Linus Torvalds
     
  • Calling dev_set_name with a single paramter causes it to be handled as a
    format string. Many callers are passing potentially dynamic string
    content, so use "%s" in those cases to avoid any potential accidents,
    including wrappers like device_create*() and bdi_register().

    Signed-off-by: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kees Cook
     

03 Jun, 2013

2 commits


22 Jan, 2013

1 commit


08 Dec, 2012

1 commit

  • * pm-devfreq: (23 commits)
    PM / devfreq: remove compiler error with module governors (2)
    PM / devfreq: Fix return value in devfreq_remove_governor()
    PM / devfreq: Fix incorrect argument in error message
    PM / devfreq: missing rcu_read_lock() added for find_device_opp()
    PM / devfreq: remove compiler error when a governor is module
    PM / devfreq: exynos4_bus.c: Fixed an alignment of the func call args.
    PM / devfreq: Add sysfs node to expose available governors
    PM / devfreq: allow sysfs governor node to switch governor
    PM / devfreq: governors: add GPL module license and allow module build
    PM / devfreq: map devfreq drivers to governor using name
    PM / devfreq: register governors with devfreq framework
    PM / devfreq: provide hooks for governors to be registered
    PM / devfreq: export update_devfreq
    PM / devfreq: Add sysfs node for representing frequency transition information.
    PM / devfreq: Add sysfs node to expose available frequencies
    PM / devfreq: documentation cleanups for devfreq header
    PM / devfreq: Use devm_* functions in exynos4_bus.c
    PM / devfreq: make devfreq_class static
    PM / devfreq: fix sscanf handling for writable sysfs entries
    PM / devfreq: kernel-doc typo corrections
    ...

    Rafael J. Wysocki
     

29 Nov, 2012

1 commit


26 Nov, 2012

3 commits


20 Nov, 2012

7 commits

  • Now that governor list can be variable, knowing the available governors
    is useful to be able to select a governor using relevant sysfs node.

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    Signed-off-by: MyungJoo Ham

    Nishanth Menon
     
  • This allows us to select governor runtime from the
    default configuration without having to rebuild kernel
    or the devfreq driver using the sysfs node:
    /sys/class/devfreq/.../governor
    cat of the governor will return valid governor
    and an echo 'governor_name'>governor will switch
    governor

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    Acked-by: MyungJoo Ham
    Signed-off-by: MyungJoo Ham

    Nishanth Menon
     
  • Allow devfreq drivers to register a preferred governor name
    and when the devfreq governor loads itself at a later point
    required drivers are managed appropriately, at the time of
    unload of a devfreq governor, stop managing those drivers
    as well.

    Since the governor structures do not need to be exposed
    anymore, remove the definitions and make them static

    NOTE: devfreq_list_lock is now used to protect governor
    start and stop - as this allows us to protect governors and
    devfreq with the proper dependencies as needed.

    As part of this change, change the registration of exynos
    bus driver to request for ondemand using the governor name.

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    [Merge conflict resolved by MyungJoo Ham]
    Signed-off-by: MyungJoo Ham

    Nishanth Menon
     
  • Add devfreq_add_governor and devfreq_remove_governor which
    can be invoked by governors to register with devfreq.

    This sets up the stage to dynamically switch governors and
    allow governors to be dynamically loaded as well.

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    Acked-by: MyungJoo Ham

    Nishanth Menon
     
  • Allow update_devfreq to be used by devfreq governor built
    as modules

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    Acked-by: MyungJoo Ham
    Signed-off-by: MyungJoo Ham

    Nishanth Menon
     
  • This patch adds sysfs node which can be used to get information of frequency
    transition. It represents transition table which contains total number of transition of
    each freqeuncy state and time spent. It is inspired CPUFREQ's status driver.

    Signed-off-by: Jonghwa Lee
    [Added Documentation/ABI entry, updated kernel-doc, and resolved merge conflict]
    Signed-off-by: MyungJoo Ham

    Jonghwa Lee
     
  • devfreq governors such as ondemand are controlled by a min and
    max frequency, while governors like userspace governor allow us
    to set a specific frequency.
    However, for the same specific device, depending on the SoC, the
    available frequencies can vary.

    So expose the available frequencies as a snapshot over sysfs to
    allow informed decisions.

    This was inspired by cpufreq framework's equivalent for similar
    usage sysfs node: scaling_available_frequencies.

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    Signed-off-by: MyungJoo Ham

    Nishanth Menon