Re: [PATCH v10 0/7] devfreq: Add devfreq-event class to provide raw data for devfreq device

Chanwoo Choi
2015-01-30T00:44:35Z

Dear Kukjin,

The patch(1-3) of this patchset is merged to linux-pm.git (Rafael J. Wysocki).
We can check it on following url:
- https://git.kernel.org/cgit/linux/kernel/git/rafael/linux-pm.git/commit/?h=bleeding-edge&id=8bf997796bd9bc8e3f997f26cbac7dd2c6661a76

Could you please pick remaining patches(4-7) related to Exynos DT files?

Best Regards,
Chanwoo Choi

On 01/26/2015 01:16 PM, Chanwoo Choi wrote:
> This patchset add new devfreq_event class to provide raw data to determine
> current utilization of device which is used for devfreq governor.
>
> The following description explains the feature of two kind of devfreq class:
> - devfreq class (existing)
> : devfreq consumer device use raw data from devfreq_event device for
> determining proper current system state and change voltage/frequency
> dynamically using various governors.
> - devfreq_event class (new)
> : Provide measured raw data to devfreq device for governor
>
> Changelog:
>
> Changes from v9:
> (https://lkml.org/lkml/2015/1/20/68)
> - Fix the operation of enable_count in devfreq_event_{enable|disable}_edev().
>
> Changes from v8:
> (https://lkml.org/lkml/2015/1/12/299)
> - Fix issue of devfreq-event.c driver by Myunjoo's comment
> : Merge patch2 (resource-managed function) with patch1
> : Fix bug in devfreq_event_{enable|disable}_edev() about enable_count operation
> : Simplify error checking code in devfreq_event_get_event()
> : Define devfreq_event_get_drvdata() as static inline function type
> : Reduce the time of critical section scope in devfreq_event_remove_edev()
> : Rename field name of devfreq_event_data structure
> (total_event / event -> total_count / load_count)
> - Drop following patch[1] because Exynos5260 cannot be tested for exynos-ppmu.c driver
> [1] [PATCHv8 7/9] ARM: dts: Add PPMU dt node for Exynos5260 SoC
> - https://lkml.org/lkml/2015/1/12/301
> - Clean-up exynos-ppmu.c without update
>
> Changes from v7:
> (https://lkml.org/lkml/2015/1/7/795)
> - Use EXPORT_SYMBOL_GPL macro instead of EXPORT_SYMBOL
> - Fix the binding document of exynos-ppmu.c driver
> - Drop the devfreq-event type patch because it isnt' clear
> - Fix bug of devfreq_event_add_edev() when fail to execute device_register()
> - Modify resource free operation on following functions:
> : devfreq_event_remove_edev()
> : devfreq_event_release_edev()
>
> Changes from v6:
> (https://lkml.org/lkml/2014/12/28/139)
> - This patchset is based on v3.19-rc3.
> 1. devfreq-event class driver
> - Fix build break if devfreq-event framework is off
> - Add resource-managed function for devfreq-event device
> : devm_devfreq_event_add_edev()
> : devm_devfreq_event_remove_edev()
>
> Changes from v5:
> (https://lkml.org/lkml/2014/12/22/527)
> - Rebase these patch-set on v3.19-rc1 and Test it.
> 1. exynos-ppmu.c
> - Change the error value when of_iomap() fail to map the memory
> - Remove owner setting of platform_driver
> - Add exynos_ppmu_disable() function
> 2. exynos dts file
> - Add PPMU node to Exynos3250-based Monk board
> - Remove ppmu_cpu node on Exynos4412-based TRATS2 board and add ppmu_leftbus/rightbus node
>
> Changes from v4:
> (https://lkml.org/lkml/2014/12/16/511)
> 1. devfreq-event class driver
> - Add devfreq_event_get_edev_count() function
> - Modify the simple description of devfreq-event framework in devfreq-event.c
> - Minimize the usage range of global lock usage in devfreq_event_add_edev()
> - Remove '_is_enabled()' function pointer in devfreq_event_ops structure
> - Add separte CONFIG_PM_DEVFREQ_EVENT configuration
> - Add new devfreq-event.h header file including devfreq-event helper functions
> 2. exynos dts file
> - Add new patch to support PPMU with DEVFREQ-event on Exynos4412-based TRATS2
>
> Changes from v3:
> (https://lkml.org/lkml/2014/12/12/219)
> 1. devfreq-event class driver
> - Fix return value of devfreq_event_get_event()
> - Add new structure devfreq_event_data for devfreq_event_get_event()
> - Modify the prototype of devfreq_event_get_event() function
> - Call of_node_put after calling of_parse_phandle() to decrement refcount
> 2. exynos-ppmu driver
> - Modify usage of devfreq_event_get_event() function
> according to new prototype of this funciton
> - Add the additional description to exynos-ppmu.txt how to add PPMU node
> in board dts file
> - Use 'PPMU_EVENT' macro to remove duplicate codes
> - Add the support of PPMU for Exynos5260
> 3. exynos dts file
> - Add missing PPMU_FSYS node to exynos3250.dtsi
> - Fix 'ppmu_mfc_l' node name as 'ppmu_mfc' because exynos3250 has only one MFC IP.
> - Add missing PPMU_ACP/G3D to exynos4.dtsi
> 4. etc
> - Fix wrong abbreviation of PPMU (PPMU :Platform Performance Monitoring Unit)
> - Add new patch to support the PPMU of Exynos5260 SoC
>
> Changes from v2:
> (https://lkml.org/lkml/2014/12/9/304)
> 1. devfreq-event class driver
> - Rename all the helper functions of devfreq-event device
> - Add devfreq_event_remove_edev() instead of devfreq_put_event_dev()
> - Add devfreq_event_release_edev() to initialize it before put device
> - Add the detailed description of devfreq-event API
> - Add the attributes of devfreq-event class (enable_count)
> - Check the overflow about event/total_event data in devfreq_event_get_event()
> - Remove the 'exclusive flag' feature
> - Set set_event()/get_event() functions as mandary
> - Add missing of_node_put() call
> - Change variable type of 'get_event()' funciton from 'int' to 'u64'
> 2. exynos-ppmu driver
> - Remove un-used field (struct devfreq)
> - Use 'of_get_child_by_name()' instead of 'of_find_node_by_name()'
> - Add missing of_node_put() call
> - Fix wrong clock control
> - Use devfreq_event_remove_edev() instead of devfreq_remove_device()
> - Add the documentation for exynos-ppmu driver
> - Remove 'enable/disable/is_enabled/reset' function of exynos-ppmu driver
> 3. exynos3250-rinato.dts
> - Add ppmu_{leftbus|rightbus} dt node and remove ppmu_cpu dt node
>
> Changes from v1:
> (https://lkml.org/lkml/2014/9/5/11)
> - Code clean
> - Add the description of devfreq-event structure
> - Add 'is_enabled' function to devfreq_event_ops structure
> - Add 'enable_count' field to devfreq_event_dev structure
> - Check whether devfreq-event device is enabled or not
> during calling devfreq_event API
> - Define the type of devfreq-event device as following
> : DEVFREQ_EVENT_TYPE_RAW_DATA
> : DEVFREQ_EVENT_TYPE_UTILIZATION
> : DEVFREQ_EVENT_TYPE_BANDWIDTH
> : DEVFREQ_EVENT_TYPE_LATENCY
> - Add the exclusive feature of devfreq-event device.
> If devfreq-event device is used on only on devfreq driver,
> should used 'devfreq_enable_event_dev_exclusive()' function
> - Add new patch6 for test on Exynos3250-based Rinato board
>
> Chanwoo Choi (7):
> devfreq: event: Add new devfreq_event class to provide basic data for devfreq governor
> devfreq: event: Add exynos-ppmu devfreq-event driver
> devfreq: event: Add documentation for exynos-ppmu devfreq-event driver
> ARM: dts: Add PPMU dt node for Exynos3250 SoC
> ARM: dts: Add PPMU dt node for Exynos4 SoCs
> ARM: dts: exynos: Add PPMU node for Exynos3250-based Rinato/Monk board
> ARM: dts: exynos: Add PPMU node for Exynos4412-based TRATS2 board
>
> .../bindings/devfreq/event/exynos-ppmu.txt | 110 +++++
> arch/arm/boot/dts/exynos3250-monk.dts | 40 ++
> arch/arm/boot/dts/exynos3250-rinato.dts | 40 ++
> arch/arm/boot/dts/exynos3250.dtsi | 74 +++
> arch/arm/boot/dts/exynos4.dtsi | 108 +++++
> arch/arm/boot/dts/exynos4210.dtsi | 8 +
> arch/arm/boot/dts/exynos4412-trats2.dts | 40 ++
> drivers/devfreq/Kconfig | 2 +
> drivers/devfreq/Makefile | 6 +-
> drivers/devfreq/devfreq-event.c | 494 +++++++++++++++++++++
> drivers/devfreq/event/Kconfig | 25 ++
> drivers/devfreq/event/Makefile | 2 +
> drivers/devfreq/event/exynos-ppmu.c | 374 ++++++++++++++++
> drivers/devfreq/event/exynos-ppmu.h | 93 ++++
> include/linux/devfreq-event.h | 196 ++++++++
> 15 files changed, 1611 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/devfreq/event/exynos-ppmu.txt
> create mode 100644 drivers/devfreq/devfreq-event.c
> create mode 100644 drivers/devfreq/event/Kconfig
> create mode 100644 drivers/devfreq/event/Makefile
> create mode 100644 drivers/devfreq/event/exynos-ppmu.c
> create mode 100644 drivers/devfreq/event/exynos-ppmu.h
> create mode 100644 include/linux/devfreq-event.h
>