Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752179AbdIUAeF (ORCPT ); Wed, 20 Sep 2017 20:34:05 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:55647 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751873AbdIUAd6 (ORCPT ); Wed, 20 Sep 2017 20:33:58 -0400 X-AuditID: b6c32a35-f798c6d000005940-c4-59c308f36291 From: Chanwoo Choi To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com Cc: rafael.j.wysocki@intel.com, chanwoo@kernel.org, inki.dae@samsung.com, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 0/8] PM / devfreq: Use OPP interface to handle the frequency Date: Thu, 21 Sep 2017 09:33:44 +0900 Message-id: <1505954032-3327-1-git-send-email-cw00.choi@samsung.com> X-Mailer: git-send-email 1.8.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrGKsWRmVeSWpSXmKPExsWy7bCmru5njsORBuuPm1hMvHGFxeL6l+es FpPuT2CxONv0ht3i8q45bBafe48wWtxuXMFm8XjFW3YHDo/Fe14yeWxa1cnm0bdlFaPH501y ASxRqTYZqYkpqUUKqXnJ+SmZeem2St7B8c7xpmYGhrqGlhbmSgp5ibmptkouPgG6bpk5QGco KZQl5pQChQISi4uV9O1sivJLS1IVMvKLS2yVog0NjfQMDcz1jIyM9EyMY62MTIFKElIzDsw+ yFbQJ1+xd9tb9gbGaxJdjJwcEgImEt9v3mCFsMUkLtxbz9bFyMUhJLCDUWJp/292kISQwHdG iVW3qmAajp/sZYQo2s0ocfL7KWaIoh+MEpc2BILYbAJaEvtf3GADsUUEAiQ6165iArGZBZoY JaYucwCxhQUCJeauWQE0iIODRUBVYs4KZZAwr4CLxN83t5ggdslJfNjziB1kl4TAV1aJw037 WSASLhJPJ7ZA2cISr45vYQeZIyEgLXHpqC1EfTujxOY591ggnA5GifsrG6HeNJY41dUIdRCf xLuvPawQzbwSHW1CECUeEofvv4A6wlHi4jaQh0F+jJX41niGaQKj1AJGhlWMYqkFxbnpqcWG BYZ6xYm5xaV56XrJ+bmbGMFpRMt0B+OUcz6HGAU4GJV4eFfYHIwUYk0sK67MPcQowcGsJMIb 8/BQpBBvSmJlVWpRfnxRaU5q8SFGU2BwTGSWEk3OB6a4vJJ4QxNLAxMzI2BKsDQ0VBLnFV1/ LUJIID2xJDU7NbUgtQimj4mDU6qBkc2ZhcWYbfcHmyePXgl5bl1mcDTm84WHZRY+kV6MnS8d Vn7k9V2+xHCTS4aiFNvz44Zemclz3x21feq9629Qd2mArZSLxpoLrxY1CF+psKw79cFVJfP4 m31Fjj0n280OCT7Uf+jG3pB9uyH158vI2uhLWVY9Uhcb6iSj3U10fuwuc5SLXn9diaU4I9FQ i7moOBEA6gjmvTkDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrCJMWRmVeSWpSXmKPExsVy+t9jAd3PHIcjDSbPU7aYeOMKi8X1L89Z LSbdn8BicbbpDbvF5V1z2Cw+9x5htLjduILN4vGKt+wOHB6L97xk8ti0qpPNo2/LKkaPz5vk AliiuGxSUnMyy1KL9O0SuDIOzD7IVtAnX7F321v2BsZrEl2MnBwSAiYSx0/2MnYxcnEICexk lNg5dwErhPODUeLW3bPsIFVsAloS+1/cYAOxRQT8JLbPXw/WwSzQxCix8dkBJpCEsIC/xOe5 n4GKODhYBFQl5qxQBgnzCrhI/H1ziwlim5zEhz2P2Ccwci1gZFjFKJlaUJybnltsVGCYl1qu V5yYW1yal66XnJ+7iREYFtsOa/XtYLy/JP4QowAHoxIPb4DVwUgh1sSy4srcQ4wSHMxKIrwx Dw9FCvGmJFZWpRblxxeV5qQWH2KU5mBREufN7JsRKSSQnliSmp2aWpBaBJNl4uCUamDkPNu1 8tT/7OCz/78qTTc42jG5bK1W0lpuQ/2l/OvK97MGtZVv3J8qHjt3Jiu/4LYYA6Z5GcIthW9e cHJF6pWYFv/67ta/deFTjtdXT+YnX4h5xn5ss8uHp/N/nDvqy/5CZvtiPo8qGdclq7wrZ6rO 2ynfOFEg3vSwhGhdVaCDwUbvyW8KnxYosRRnJBpqMRcVJwIAIJ4W8gcCAAA= X-CMS-MailID: 20170921003355epcas1p1d1bbb04ff7a7c46946f62a91883bd6a6 X-Msg-Generator: CA X-Sender-IP: 182.195.42.142 X-Local-Sender: =?UTF-8?B?7LWc7LCs7JqwG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbU2VuaW9yIEVuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?Q2hhbndvbyBDaG9pG1RpemVuIFBsYXRmb3JtIExhYi4bU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtTZW5pb3IgRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG1RFTEUbQzEwVjgxMTE=?= CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20170921003355epcas1p1d1bbb04ff7a7c46946f62a91883bd6a6 X-RootMTR: 20170921003355epcas1p1d1bbb04ff7a7c46946f62a91883bd6a6 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3898 Lines: 82 These patches makes the devfreq to use the OPP interface and clean-up codes. - patch 1~5 are related to the OPP interfaces. - patch 6 removes the unneeded code. - patch 7 clean-up for the governor name. - patch 8 registers the cooling device for exynos-bus. [Detaild Descripion] The commit a76caf55e5b3 ("thermal: Add devfreq cooling") provides the devfreq cooling device by using the OPP interface such as dev_pm_opp_disable() and dev_pm_opp_enable(). It means that the OPP interface is able to change the available status of the frequency. Firstly, the existing devfreq doesn't use the OPP interface when showing the minimum and maximum frequency through the following sysfs nodes: It shows the wrong frequency value because min_freq/max_freq don't consider the frequency status by handling OPP interface (opp_dev_pm_opp_{disable|add}()). So, these patches fix this issue. - /sys/class/devfreq/devfreqX/min_freq - /sys/class/devfreq/devfreqX/max_freq Second, the 'available_frequencies' should show the all supported frequencis even if the specific frequency is not available. It doesn't matter whether frequneyc is available or not. Because the role of 'available_frequencies' shows the all frequencies. Also, these patches fix this issue. - /sys/class/devfreq/devfreqX/available_frequencies Third, update_devfreq() get the available next frequency by using the devfreq_recommended_opp() in order to consider the disabled OPP. For example, - devfreq's min_freq is 100Mhz and max_freq is 700Mhz. - OPP disabled 500/600/700Mhz due to devfreq-cooling.c. - simple_ondemand govenor decided the next target_freq (600Mhz) |----------|-------------------------------------------------------------| |Freq(MHz) |100 |200 |300 |400 |500 |600 |70 0 | |Devfreq |min_freq| | | | | |max_freq| |OPP avail |enabled |enabled|enabled|enabled |Disabled| Disabled|Disabled| |Ondmenad | | | | | |next_freq| | |------------------------------------------------------------------------| In result, - Before this patch, target_freq is 600Mhz and TRANSITION_NOTIFIER sends the next_freq is 600Mhz to the notifiee. - After this patch, target_freq is 400Mhz because 500/600 were disabled by OPP. And TRANSITION_NOTIFIER sends the next_freq is 400Mhz to the notifiee. Lastly, - patch6/7 fix the minor issue and cleanup codes. - patch8 register the cooling device. It depends on opp patch[1]. [1] https://patchwork.kernel.org/patch/9962387/ Changes from v1: (https://lkml.org/lkml/2017/8/23/785) - Show the available frequencies as an ascending order - Change the author info from cwchoi00@gmail.com to cw00.choi@samsung.com - Drop the patches related to opp_notifier - Add new patch5/6/7/8 Chanwoo Choi (8): PM / devfreq: Set min/max_freq when adding the devfreq device Revert "PM / devfreq: Add show_one macro to delete the duplicate code" PM / devfreq: Show the available min/max frequency through sysfs node PM / devfreq: Show the all available frequencies PM / devfreq: Get the available next frequency on update_devfreq() PM / devfreq: Remove unneeded conditional statement PM / devfreq: Define the constant governor name PM / devfreq: exynos-bus: Register cooling device drivers/devfreq/Kconfig | 1 + drivers/devfreq/devfreq.c | 121 +++++++++++++++++++++++------- drivers/devfreq/exynos-bus.c | 16 +++- drivers/devfreq/governor_passive.c | 2 +- drivers/devfreq/governor_performance.c | 2 +- drivers/devfreq/governor_powersave.c | 2 +- drivers/devfreq/governor_simpleondemand.c | 2 +- drivers/devfreq/governor_userspace.c | 2 +- drivers/devfreq/rk3399_dmc.c | 2 +- include/linux/devfreq.h | 7 ++ 10 files changed, 123 insertions(+), 34 deletions(-) -- 1.9.1