From patchwork Tue Mar 23 02:59:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 12156721 X-Patchwork-Delegate: cw00.choi@samsung.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A6BEC433E1 for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5FC00619C5 for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229890AbhCWDNI (ORCPT ); Mon, 22 Mar 2021 23:13:08 -0400 Received: from inva021.nxp.com ([92.121.34.21]:55216 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229673AbhCWDNF (ORCPT ); Mon, 22 Mar 2021 23:13:05 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id C9A95200D74; Tue, 23 Mar 2021 04:13:01 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 18973200D76; Tue, 23 Mar 2021 04:12:57 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id B56DD402B0; Tue, 23 Mar 2021 04:12:50 +0100 (CET) From: Dong Aisheng To: linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: dongas86@gmail.com, kernel@pengutronix.de, shawnguo@kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com, abel.vesa@nxp.com, Dong Aisheng Subject: [PATCH V2 1/6] PM / devfreq: fix build error when DEVFREQ_GOV_PASSIVE enabled Date: Tue, 23 Mar 2021 10:59:14 +0800 Message-Id: <1616468359-14513-2-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> References: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> MIME-Version: 1.0 X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org drivers/devfreq/devfreq.c: In function ‘devfreq_transitions_show’: drivers/devfreq/devfreq.c:2188:25: error: ‘struct devfreq’ has no member named ‘governor_name’; did you mean ‘governor’? 2188 | if (!strncmp(devfreq->governor_name, | ^~~~~~~~~~~~~ | governor Fixes: 5cc75e9252e9 ("PM / devfreq: Add devfreq_transitions debugfs file") Signed-off-by: Dong Aisheng --- drivers/devfreq/devfreq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index d625b268adf2..107badfc6b2b 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -2185,7 +2185,7 @@ static int devfreq_transitions_show(struct seq_file *s, void *data) continue; #if IS_ENABLED(CONFIG_DEVFREQ_GOV_PASSIVE) - if (!strncmp(devfreq->governor_name, + if (!strncmp(devfreq->governor->name, DEVFREQ_GOV_PASSIVE, DEVFREQ_NAME_LEN)) { struct devfreq_passive_data *data = devfreq->data; From patchwork Tue Mar 23 02:59:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 12156727 X-Patchwork-Delegate: cw00.choi@samsung.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1348C433E3 for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 98D00619C2 for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229761AbhCWDNI (ORCPT ); Mon, 22 Mar 2021 23:13:08 -0400 Received: from inva020.nxp.com ([92.121.34.13]:36350 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229854AbhCWDNG (ORCPT ); Mon, 22 Mar 2021 23:13:06 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 0E1EB1A1B1A; Tue, 23 Mar 2021 04:13:03 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 4FD9F1A097D; Tue, 23 Mar 2021 04:12:58 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 20BE6402B3; Tue, 23 Mar 2021 04:12:52 +0100 (CET) From: Dong Aisheng To: linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: dongas86@gmail.com, kernel@pengutronix.de, shawnguo@kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com, abel.vesa@nxp.com, Dong Aisheng Subject: [PATCH V2 2/6] PM / devfreq: Use more accurate returned new_freq as resume_freq Date: Tue, 23 Mar 2021 10:59:15 +0800 Message-Id: <1616468359-14513-3-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> References: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Use the more accurate returned new_freq as resume_freq. It's the same as how devfreq->previous_freq was updated. Fixes: 83f8ca45afbf0 ("PM / devfreq: add support for suspend/resume of a devfreq device") Signed-off-by: Dong Aisheng --- drivers/devfreq/devfreq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index 107badfc6b2b..b537fd9602cd 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -443,7 +443,7 @@ static int devfreq_set_target(struct devfreq *devfreq, unsigned long new_freq, devfreq->previous_freq = new_freq; if (devfreq->suspend_freq) - devfreq->resume_freq = cur_freq; + devfreq->resume_freq = new_freq; return err; } From patchwork Tue Mar 23 02:59:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 12156723 X-Patchwork-Delegate: cw00.choi@samsung.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B85E4C433E2 for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7763D619AB for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229870AbhCWDNI (ORCPT ); Mon, 22 Mar 2021 23:13:08 -0400 Received: from inva020.nxp.com ([92.121.34.13]:36552 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229810AbhCWDNG (ORCPT ); Mon, 22 Mar 2021 23:13:06 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id A69491A4D2F; Tue, 23 Mar 2021 04:13:04 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id F40831A09AA; Tue, 23 Mar 2021 04:12:59 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 58923402D3; Tue, 23 Mar 2021 04:12:53 +0100 (CET) From: Dong Aisheng To: linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: dongas86@gmail.com, kernel@pengutronix.de, shawnguo@kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com, abel.vesa@nxp.com, Dong Aisheng Subject: [PATCH V2 3/6] PM / devfreq: Remove the invalid description for get_target_freq Date: Tue, 23 Mar 2021 10:59:16 +0800 Message-Id: <1616468359-14513-4-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> References: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org First of all, no_central_polling was removed since commit 7e6fdd4bad03 ("PM / devfreq: Core updates to support devices which can idle") Secondly, get_target_freq() is not only called only with update_devfreq() notified by OPP now, but also min/max freq qos notifier. So remove this invalid description now to avoid confusing. Signed-off-by: Dong Aisheng --- Documentation/ABI/testing/sysfs-class-devfreq | 5 +---- drivers/devfreq/governor.h | 2 -- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-class-devfreq b/Documentation/ABI/testing/sysfs-class-devfreq index 22408cfa7ed2..e71595c84f22 100644 --- a/Documentation/ABI/testing/sysfs-class-devfreq +++ b/Documentation/ABI/testing/sysfs-class-devfreq @@ -97,10 +97,7 @@ Description: object. The values are represented in ms. If the value is less than 1 jiffy, it is considered to be 0, which means no polling. This value is meaningless if the governor is - not polling; thus. If the governor is not using - devfreq-provided central polling - (/sys/class/devfreq/.../central_polling is 0), this value - may be useless. + not polling. A list of governors that support the node: - simple_ondmenad diff --git a/drivers/devfreq/governor.h b/drivers/devfreq/governor.h index 48736a2ae970..9d72f5b66bfa 100644 --- a/drivers/devfreq/governor.h +++ b/drivers/devfreq/governor.h @@ -67,8 +67,6 @@ * Basically, get_target_freq will run * devfreq_dev_profile.get_dev_status() to get the * status of the device (load = busy_time / total_time). - * If no_central_polling is set, this callback is called - * only with update_devfreq() notified by OPP. * @event_handler: Callback for devfreq core framework to notify events * to governors. Events include per device governor * init and exit, opp changes out of devfreq, suspend From patchwork Tue Mar 23 02:59:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 12156725 X-Patchwork-Delegate: cw00.choi@samsung.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0C55C433E4 for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B1F66619CF for ; Tue, 23 Mar 2021 03:13:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229548AbhCWDNI (ORCPT ); Mon, 22 Mar 2021 23:13:08 -0400 Received: from inva021.nxp.com ([92.121.34.21]:55372 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229865AbhCWDNG (ORCPT ); Mon, 22 Mar 2021 23:13:06 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id B2911201B09; Tue, 23 Mar 2021 04:13:05 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 029D220011B; Tue, 23 Mar 2021 04:13:01 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 8377A4030B; Tue, 23 Mar 2021 04:12:54 +0100 (CET) From: Dong Aisheng To: linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: dongas86@gmail.com, kernel@pengutronix.de, shawnguo@kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com, abel.vesa@nxp.com, Dong Aisheng Subject: [PATCH V2 4/6] PM / devfreq: bail out early if no freq changes in devfreq_set_target Date: Tue, 23 Mar 2021 10:59:17 +0800 Message-Id: <1616468359-14513-5-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> References: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org It's unnecessary to set the same freq again and run notifier calls. Signed-off-by: Dong Aisheng --- drivers/devfreq/devfreq.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index b537fd9602cd..cacda7d1f858 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -403,13 +403,16 @@ static int devfreq_set_target(struct devfreq *devfreq, unsigned long new_freq, { struct devfreq_freqs freqs; unsigned long cur_freq; - int err = 0; + int err; if (devfreq->profile->get_cur_freq) devfreq->profile->get_cur_freq(devfreq->dev.parent, &cur_freq); else cur_freq = devfreq->previous_freq; + if (new_freq == cur_freq) + return 0; + freqs.old = cur_freq; freqs.new = new_freq; devfreq_notify_transition(devfreq, &freqs, DEVFREQ_PRECHANGE); @@ -426,7 +429,7 @@ static int devfreq_set_target(struct devfreq *devfreq, unsigned long new_freq, * and DEVFREQ_POSTCHANGE because for showing the correct frequency * change order of between devfreq device and passive devfreq device. */ - if (trace_devfreq_frequency_enabled() && new_freq != cur_freq) + if (trace_devfreq_frequency_enabled()) trace_devfreq_frequency(devfreq, new_freq, cur_freq); devfreq_update_transitions(devfreq, cur_freq, new_freq, @@ -445,7 +448,7 @@ static int devfreq_set_target(struct devfreq *devfreq, unsigned long new_freq, if (devfreq->suspend_freq) devfreq->resume_freq = new_freq; - return err; + return 0; } /** From patchwork Tue Mar 23 02:59:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 12156731 X-Patchwork-Delegate: cw00.choi@samsung.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3627BC433E1 for ; Tue, 23 Mar 2021 03:14:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 097C8619AB for ; Tue, 23 Mar 2021 03:14:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230063AbhCWDNl (ORCPT ); Mon, 22 Mar 2021 23:13:41 -0400 Received: from inva020.nxp.com ([92.121.34.13]:36726 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229868AbhCWDNI (ORCPT ); Mon, 22 Mar 2021 23:13:08 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 0EA4F1A1B18; Tue, 23 Mar 2021 04:13:07 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 283961A1B04; Tue, 23 Mar 2021 04:13:02 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id DB246402BB; Tue, 23 Mar 2021 04:12:55 +0100 (CET) From: Dong Aisheng To: linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: dongas86@gmail.com, kernel@pengutronix.de, shawnguo@kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com, abel.vesa@nxp.com, Dong Aisheng Subject: [PATCH V2 5/6] PM / devfreq: governor: optimize simpleondemand get_target_freq Date: Tue, 23 Mar 2021 10:59:18 +0800 Message-Id: <1616468359-14513-6-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> References: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org The device profile up_threshold/down_differential only needs to be initialized once when calling devm_devfreq_add_device. It's unnecessary to put the data check logic in the hot path (.get_target_freq()) where it will be called all the time during polling. Instead, we only check and initialize it one time during DEVFREQ_GOV_START. This also helps check data validability in advance during DEVFREQ_GOV_START rather than checking it later when running .get_target_freq(). Signed-off-by: Dong Aisheng --- Change Log: v1->v2: * rebase to devfreq-testing --- drivers/devfreq/devfreq.c | 24 +++++------------- drivers/devfreq/governor_simpleondemand.c | 31 +++++++++++++++-------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index cacda7d1f858..270e51f5318f 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -1908,9 +1908,7 @@ static ssize_t up_threshold_show(struct device *dev, if (!df->profile) return -EINVAL; - return sprintf(buf, "%d\n", df->profile->up_threshold - ? df->profile->up_threshold - : DEVFREQ_UP_THRESHOLD); + return sprintf(buf, "%d\n", df->profile->up_threshold); } static ssize_t up_threshold_store(struct device *dev, @@ -1934,9 +1932,7 @@ static ssize_t up_threshold_store(struct device *dev, if (value > 100) value = 100; - down_differential = df->profile->down_differential - ? df->profile->down_differential - : DEVFREQ_DOWN_DIFFERENCTIAL; + down_differential = df->profile->down_differential; if (value < down_differential) value = down_differential; @@ -1961,9 +1957,7 @@ static ssize_t down_differential_show(struct device *dev, if (!df->profile) return -EINVAL; - return sprintf(buf, "%d\n", df->profile->down_differential - ? df->profile->down_differential - : DEVFREQ_DOWN_DIFFERENCTIAL); + return sprintf(buf, "%d\n", df->profile->down_differential); } static ssize_t down_differential_store(struct device *dev, @@ -1984,9 +1978,7 @@ static ssize_t down_differential_store(struct device *dev, if (ret != 1) return -EINVAL; - up_threshold = df->profile->up_threshold - ? df->profile->up_threshold - : DEVFREQ_UP_THRESHOLD; + up_threshold = df->profile->up_threshold; if (value > up_threshold) value = up_threshold; @@ -2113,16 +2105,12 @@ static int devfreq_summary_show(struct seq_file *s, void *data) polling_ms = 0; if (IS_SUPPORTED_ATTR(devfreq->governor->attrs, UP_THRESHOLD)) - up_threshold = devfreq->profile->up_threshold - ? devfreq->profile->up_threshold - : DEVFREQ_UP_THRESHOLD; + up_threshold = devfreq->profile->up_threshold; else up_threshold = 0; if (IS_SUPPORTED_ATTR(devfreq->governor->attrs, DOWN_DIFF)) - down_differential = devfreq->profile->down_differential - ? devfreq->profile->down_differential - : DEVFREQ_DOWN_DIFFERENCTIAL; + down_differential = devfreq->profile->down_differential; else down_differential = 0; mutex_unlock(&devfreq->lock); diff --git a/drivers/devfreq/governor_simpleondemand.c b/drivers/devfreq/governor_simpleondemand.c index 93f6061667d9..3e195b46554a 100644 --- a/drivers/devfreq/governor_simpleondemand.c +++ b/drivers/devfreq/governor_simpleondemand.c @@ -18,8 +18,8 @@ static int devfreq_simple_ondemand_func(struct devfreq *df, int err; struct devfreq_dev_status *stat; unsigned long long a, b; - unsigned int dfso_upthreshold = DEVFREQ_UP_THRESHOLD; - unsigned int dfso_downdifferential = DEVFREQ_DOWN_DIFFERENCTIAL; + unsigned int dfso_upthreshold = df->profile->up_threshold; + unsigned int dfso_downdifferential = df->profile->down_differential; err = devfreq_update_stats(df); if (err) @@ -27,15 +27,6 @@ static int devfreq_simple_ondemand_func(struct devfreq *df, stat = &df->last_status; - if (df->profile->up_threshold) - dfso_upthreshold = df->profile->up_threshold; - if (df->profile->down_differential) - dfso_downdifferential = df->profile->down_differential; - - if (dfso_upthreshold > 100 || - dfso_upthreshold < dfso_downdifferential) - return -EINVAL; - /* Assume MAX if it is going to be divided by zero */ if (stat->total_time == 0) { *freq = DEVFREQ_MAX_FREQ; @@ -79,11 +70,29 @@ static int devfreq_simple_ondemand_func(struct devfreq *df, return 0; } +static int devfreq_simple_ondemand_check_od(struct devfreq *df) +{ + if (!df->profile->up_threshold) + df->profile->up_threshold = DEVFREQ_UP_THRESHOLD; + + if (!df->profile->down_differential) + df->profile->down_differential = DEVFREQ_DOWN_DIFFERENCTIAL; + + if (df->profile->up_threshold > 100 || + df->profile->up_threshold < df->profile->down_differential) + return -EINVAL; + + return 0; +} + static int devfreq_simple_ondemand_handler(struct devfreq *devfreq, unsigned int event, void *data) { switch (event) { case DEVFREQ_GOV_START: + if (devfreq_simple_ondemand_check_od(devfreq)) + return -EINVAL; + devfreq_monitor_start(devfreq); break; From patchwork Tue Mar 23 02:59:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 12156729 X-Patchwork-Delegate: cw00.choi@samsung.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6533AC433DB for ; Tue, 23 Mar 2021 03:14:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1F99D619A8 for ; Tue, 23 Mar 2021 03:14:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229898AbhCWDNk (ORCPT ); Mon, 22 Mar 2021 23:13:40 -0400 Received: from inva021.nxp.com ([92.121.34.21]:55426 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229893AbhCWDNJ (ORCPT ); Mon, 22 Mar 2021 23:13:09 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 3E8AF20011B; Tue, 23 Mar 2021 04:13:08 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 8199A201B03; Tue, 23 Mar 2021 04:13:03 +0100 (CET) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 30FCB402C9; Tue, 23 Mar 2021 04:12:57 +0100 (CET) From: Dong Aisheng To: linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: dongas86@gmail.com, kernel@pengutronix.de, shawnguo@kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com, abel.vesa@nxp.com, Dong Aisheng Subject: [PATCH V2 6/6] PM / devfreq: imx8m-ddrc: remove imx8m_ddrc_get_dev_status Date: Tue, 23 Mar 2021 10:59:19 +0800 Message-Id: <1616468359-14513-7-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> References: <1616468359-14513-1-git-send-email-aisheng.dong@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Current driver actually does not support simple ondemand governor as it's unable to provide device load information. So removing the unnecessary callback to avoid confusing. Right now the driver is using userspace governor by default. polling_ms was also dropped as it's not needed for non-ondemand governor. Signed-off-by: Dong Aisheng --- drivers/devfreq/imx8m-ddrc.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/devfreq/imx8m-ddrc.c b/drivers/devfreq/imx8m-ddrc.c index bc82d3653bff..ecb9375aa877 100644 --- a/drivers/devfreq/imx8m-ddrc.c +++ b/drivers/devfreq/imx8m-ddrc.c @@ -280,18 +280,6 @@ static int imx8m_ddrc_get_cur_freq(struct device *dev, unsigned long *freq) return 0; } -static int imx8m_ddrc_get_dev_status(struct device *dev, - struct devfreq_dev_status *stat) -{ - struct imx8m_ddrc *priv = dev_get_drvdata(dev); - - stat->busy_time = 0; - stat->total_time = 0; - stat->current_frequency = clk_get_rate(priv->dram_core); - - return 0; -} - static int imx8m_ddrc_init_freq_info(struct device *dev) { struct imx8m_ddrc *priv = dev_get_drvdata(dev); @@ -429,9 +417,7 @@ static int imx8m_ddrc_probe(struct platform_device *pdev) if (ret < 0) goto err; - priv->profile.polling_ms = 1000; priv->profile.target = imx8m_ddrc_target; - priv->profile.get_dev_status = imx8m_ddrc_get_dev_status; priv->profile.exit = imx8m_ddrc_exit; priv->profile.get_cur_freq = imx8m_ddrc_get_cur_freq; priv->profile.initial_freq = clk_get_rate(priv->dram_core);