Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp136129pxb; Wed, 3 Feb 2021 01:29:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJyvAMBwIPA6LYYs4Rx/3/8TdsFERWSuT5J9UJyxsnjeIKIA2iIqNUiKLGv1f9MsCVI4gwCq X-Received: by 2002:a17:906:854d:: with SMTP id h13mr994183ejy.124.1612344569979; Wed, 03 Feb 2021 01:29:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612344569; cv=none; d=google.com; s=arc-20160816; b=0RcBILlLeXhLtoihZawspIYcc/qs3vvMkaY9rm+VQnYeifYc9Jf5DV10LFoRXLsMv/ YR/BuadWhfy4hssRjgYGSdRC3TE8HyIT1sOiU5ag6rspzdsExgXxMNZ+s+cBecrlvN4D ELaGat+Or1yf6c66PWLlpDjt2LGx/5SYIlBCU9w8CLxDnbXfyt647nqKTatm2dfdjbRG HZRF9n9fPCXLgvceSsZiKsCfqJibqwe2aKpzyjMEVwbni4bt3lzHwxlkHcIttIBrlAeA HmX7NZtcjinf4fA+9kkTCxF0nVAMscnYjq9dQUTIPj1xmXo8SayWLlN/v9cpxloEtF+L E5pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=/YBwKXZIAHM5O75qgqkZJUqkDsfjvCGWB4Ihiew6J+E=; b=d3M2fN8dSp0AKL6VoE67GI8bB/Lsucyu3eo5DIZ3sUpiMv2TF2XIPgMsaRzKCkqkhQ +6F0WQXfFqwdfybk9SUceInLTOgIYrJT2ul/F7UAo9zeSURZsSLfx6hKq75zAe4ZAqcQ l8SGkcTLjY/2VJmD33c/25cNReXiQNAqvZyJ4fZx6oSVqFShWsFAqDKTAlqlftEIaNMj pbCdjkXBZ3emh01HtgwNyc206gQ7I5N+FyRbaSejqmMeQFQnuQTDaWNSFd1E3v32IAcO s7uk4XdqiXGnvmA2Xt07ln6SGCSrw2wGoq253fdLjA0pIDQ40/BCR3l6Bq3OckxrTfvc deNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=ETNwtu1Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f5si680356edx.476.2021.02.03.01.28.42; Wed, 03 Feb 2021 01:29:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=ETNwtu1Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232683AbhBCJ2H (ORCPT + 99 others); Wed, 3 Feb 2021 04:28:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233461AbhBCJ0F (ORCPT ); Wed, 3 Feb 2021 04:26:05 -0500 Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 55073C06178A for ; Wed, 3 Feb 2021 01:24:13 -0800 (PST) Received: by mail-pg1-x530.google.com with SMTP id z21so16917428pgj.4 for ; Wed, 03 Feb 2021 01:24:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/YBwKXZIAHM5O75qgqkZJUqkDsfjvCGWB4Ihiew6J+E=; b=ETNwtu1ZmDOZdrKuPYq2aSu+6XDPB8j3IGJZEojQZ9QEyMLBFOvJ8LchGtb3G/14/o KsdqcZ49CAKSR1t1HG6/OwyMHbIPHjIKzm/yyu/kDrjqkLNz1gxVZ7T9wpPJxkc07gGN 34tftBwM35J4Y7cZQvDXNbqgSWAqPDcElU5JQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/YBwKXZIAHM5O75qgqkZJUqkDsfjvCGWB4Ihiew6J+E=; b=mKrJjeUhwkmyEb9+bDcWk6/JUrRsrc9OD5+X1S4s2vOnv49pdQoSR668RenXypP8vh yrGI0cHcSYhKBdSfauBI2z16LHBJhlNq83e5BAHR6DQrkLZzQPxFQ2mr3WJqBha5VUk9 zMhPv2XcFMt+e20U2qIhF88KhEgSmuf2wHgEuYAc/QwjyexJDSry/lWUEZpBojAaGwAU 7RMDW9KATRPAmIpR15RgfxflWO+LTUdgwGbNNUbMwPSf3hvmUbInRM7eyIxltzFTp2Le i3BpG0jCF3TPGl6S3ZXIkvycr6Z0ISYv6hzvwPeOo86/mhF3ZAwWAm7FKfvSaAhF/+Lu jdeA== X-Gm-Message-State: AOAM533rRGfmLTfSr9g4OK4UE+WdlpoaWEKi4iLSAWtQnhToej8Pru1u mv7phx6eUgEuV01GDEBATqKPpg== X-Received: by 2002:a63:43c6:: with SMTP id q189mr2641475pga.245.1612344252875; Wed, 03 Feb 2021 01:24:12 -0800 (PST) Received: from hsinyi-z840.tpe.corp.google.com ([2401:fa00:1:10:743e:7944:50c8:ff72]) by smtp.gmail.com with ESMTPSA id u20sm932294pjy.36.2021.02.03.01.24.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Feb 2021 01:24:12 -0800 (PST) From: Hsin-Yi Wang To: Viresh Kumar , linux-pm@vger.kernel.org Cc: Nishanth Menon , Stephen Boyd , "Rafael J . Wysocki" , linux-kernel@vger.kernel.org, "MyungJoo Ham )" , Kyungmin Park , Chanwoo Choi , Saravana Kannan Subject: [PATCH v5 3/3] PM / devfreq: Add required OPPs support to passive governor Date: Wed, 3 Feb 2021 17:24:00 +0800 Message-Id: <20210203092400.1791884-4-hsinyi@chromium.org> X-Mailer: git-send-email 2.30.0.365.g02bc693789-goog In-Reply-To: <20210203092400.1791884-1-hsinyi@chromium.org> References: <20210203092400.1791884-1-hsinyi@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Saravana Kannan Look at the required OPPs of the "parent" device to determine the OPP that is required from the slave device managed by the passive governor. This allows having mappings between a parent device and a slave device even when they don't have the same number of OPPs. Signed-off-by: Saravana Kannan Acked-by: MyungJoo Ham Acked-by: Chanwoo Choi Signed-off-by: Hsin-Yi Wang --- drivers/devfreq/governor_passive.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/devfreq/governor_passive.c b/drivers/devfreq/governor_passive.c index 63332e4a65ae8..8d92b1964f9c3 100644 --- a/drivers/devfreq/governor_passive.c +++ b/drivers/devfreq/governor_passive.c @@ -19,7 +19,7 @@ static int devfreq_passive_get_target_freq(struct devfreq *devfreq, = (struct devfreq_passive_data *)devfreq->data; struct devfreq *parent_devfreq = (struct devfreq *)p_data->parent; unsigned long child_freq = ULONG_MAX; - struct dev_pm_opp *opp; + struct dev_pm_opp *opp = NULL, *p_opp = NULL; int i, count, ret = 0; /* @@ -56,13 +56,20 @@ static int devfreq_passive_get_target_freq(struct devfreq *devfreq, * list of parent device. Because in this case, *freq is temporary * value which is decided by ondemand governor. */ - opp = devfreq_recommended_opp(parent_devfreq->dev.parent, freq, 0); - if (IS_ERR(opp)) { - ret = PTR_ERR(opp); + p_opp = devfreq_recommended_opp(parent_devfreq->dev.parent, freq, 0); + if (IS_ERR(p_opp)) { + ret = PTR_ERR(p_opp); goto out; } - dev_pm_opp_put(opp); + if (devfreq->opp_table && parent_devfreq->opp_table) + opp = dev_pm_opp_xlate_required_opp(parent_devfreq->opp_table, + devfreq->opp_table, p_opp); + if (opp) { + *freq = dev_pm_opp_get_freq(opp); + dev_pm_opp_put(opp); + goto out; + } /* * Get the OPP table's index of decided freqeuncy by governor @@ -89,6 +96,9 @@ static int devfreq_passive_get_target_freq(struct devfreq *devfreq, *freq = child_freq; out: + if (!IS_ERR_OR_NULL(opp)) + dev_pm_opp_put(p_opp); + return ret; } -- 2.30.0.365.g02bc693789-goog