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 deviceAnd 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 -
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
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
-
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 : 53Signed-off-by: Chanwoo Choi
Signed-off-by: MyungJoo Ham -
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 -
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
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
30 Sep, 2015
1 commit
-
Writing the currently set governor into sysfs currently
seems to fail.
Fix this by setting the return code to zero before
leaving governor_store().Signed-off-by: Tobias Jakobi
Signed-off-by: MyungJoo Ham
11 Sep, 2015
3 commits
-
time_in_state in struct devfreq is defined as unsigned long, so
devm_kzalloc should use sizeof(unsigned long) as argument instead
of sizeof(unsigned int), otherwise it will cause unexpected result
in 64bit system.Signed-off-by: Xiaolong Ye
Signed-off-by: Kevin Liu
Signed-off-by: MyungJoo Ham -
The thermal infrastructure should use the devfreq cooling device, which
uses the OPP library to disable OPPs as necessary.Fix a couple of typos in the same comment while we are at it.
Signed-off-by: Javi Merino
Signed-off-by: MyungJoo Ham -
IS_ERR(_OR_NULL) already contain an 'unlikely' compiler flag and there
is no need to do that again from its callers. Drop it.Signed-off-by: Viresh Kumar
Signed-off-by: MyungJoo Ham
30 Mar, 2015
1 commit
-
_remove_devfreq() does not have @skip anymore after 3.16.
The comment for _remove_devfreq() has been updated correspondingly.Signed-off-by: MyungJoo Ham
29 Sep, 2014
1 commit
-
These functions are indended for use by drivers and should be available
also when the driver is built as a module.Cc: MyungJoo Ham
Cc: Kyungmin Park
Signed-off-by: Ãrjan Eide
Signed-off-by: MyungJoo Ham
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 -
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 -
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
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
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
28 Oct, 2013
1 commit
-
The create_freezable_workqueue() function returns a NULL on error and
not an ERR_PTR.Signed-off-by: Dan Carpenter
Signed-off-by: MyungJoo Ham
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.hReported-by: Randy Dunlap
Signed-off-by: Nishanth Menon
Signed-off-by: Rafael J. Wysocki -
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_eventMinor 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 -
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_tableReported-by: Randy Dunlap
Signed-off-by: Nishanth Menon
Acked-by: Viresh Kumar
Signed-off-by: Rafael J. Wysocki
20 Aug, 2013
1 commit
-
The dev_attrs field of struct class is going away soon, dev_groups
should be used instead. This converts the devfreq_class code to use the
correct field.Cc: MyungJoo Ham
Cc: Kyungmin Park
Signed-off-by: Greg Kroah-Hartman
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
... -
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
03 Jun, 2013
2 commits
-
- Added missing ABI documents
- Added comments to clarify the objectives of functionsSigned-off-by: MyungJoo Ham
Acked-by: Nishanth Menon
Acked-by: Rajagopal Venkat -
devfreq stats is not taking device suspend and resume into
account. Fix it.Signed-off-by: Rajagopal Venkat
Acked-by: MyungJoo Ham
22 Jan, 2013
1 commit
-
OPP pointers are protected by RCU locks, the pointer validity is
permissible only under the section of rcu_read_lock to rcu_read_unlockAdd documentation to the effect.
Signed-off-by: Nishanth Menon
Signed-off-by: Rafael J. Wysocki
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
...
29 Nov, 2012
1 commit
-
Governors compiled as modules may use these functions.
Signed-off-by: MyungJoo Ham
Signed-off-by: Rafael J. Wysocki
26 Nov, 2012
3 commits
-
Use the value obtained from the function instead of -EINVAL.
Signed-off-by: Sachin Kamat
Signed-off-by: MyungJoo Ham -
'g' is cast to the error return code. Hence gives the following error
which is fixed by this patch.drivers/devfreq/devfreq.c:645 devfreq_remove_governor() error:
'g' dereferencing possible ERR_PTR()Signed-off-by: Sachin Kamat
Signed-off-by: MyungJoo Ham -
opp_get_notifier() uses find_device_opp(), which requires to
held rcu_read_lock. In order to keep the notifier-header
valid, we have added rcu_read_lock().Reported-by: Kees Cook
Signed-off-by: MyungJoo Ham
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.orgSigned-off-by: Nishanth Menon
Signed-off-by: MyungJoo Ham -
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
governorCc: 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.orgSigned-off-by: Nishanth Menon
Acked-by: MyungJoo Ham
Signed-off-by: MyungJoo Ham -
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 staticNOTE: 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.orgSigned-off-by: Nishanth Menon
[Merge conflict resolved by MyungJoo Ham]
Signed-off-by: MyungJoo Ham -
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.orgSigned-off-by: Nishanth Menon
Acked-by: MyungJoo Ham -
Allow update_devfreq to be used by devfreq governor built
as modulesCc: 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.orgSigned-off-by: Nishanth Menon
Acked-by: MyungJoo Ham
Signed-off-by: MyungJoo Ham -
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 -
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.orgSigned-off-by: Nishanth Menon
Signed-off-by: MyungJoo Ham