Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp932485pxb; Thu, 4 Feb 2021 00:19:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJz95ka8bB9smczXkdRwv4d5Ae9E0aC+K2O+ODd+aVSYpfce8lrIcLeprT+rHiMlYwC+m/TC X-Received: by 2002:a17:906:24d1:: with SMTP id f17mr6867781ejb.503.1612426799256; Thu, 04 Feb 2021 00:19:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612426799; cv=none; d=google.com; s=arc-20160816; b=aYXXvVpJKSdx4SNVpxUMxRpnQwFzZqgv+o/TEvN/140jrD/GnD3dB71mv5u3w4hcsm 5/yoQd4/tK6NABTPz6mFOoAfAQHvu13Du9ZtBEMMzqJvdvMWf/jUEZv08AhyGPlbaiRp 4xQn+ubYs2q5oeyu9geKRfFBdlGbzo7AjAfqnOBHCPTRb716/rRo/AYxTg87NQ14hRf/ GqXKeUl97/hxbACrgG/XLq69XTtOiclMRIZJFwZXXXejl5wrYp7zfcy+T7u1Pg7FmA8b n5O9MuJnC2mXNpdjMLvpKke0J20R3ZeF51CogDVqAtOIPSq+7973QnWj+e6n01VTCrAW XzuA== 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=x7hwBm1kKlbRCUXjrjQz7CyPjQNfq9+xKEIyZstLmMQ=; b=x12f2y+t3pzF08BwFhYLfW7G8xFkzbQwhSndInF0yJ8cbgbyK7+WofBXPUV7vjDpWm /rxLW4b5hlwwIIT8sekPsdmDQai5j2bGq/uYWDlM/bCZGyc+2W3cthrJb3hkE9EPFznL 2rGJQ9NSUjb4dkhUubx0Om+t8bCwQ3c7Vv93KF9gS/m6rYlfiUpyCVej32pkmPz6hNdV 2IJ3AEpcYmIsuZTK2YlyzSUnxHP7Nw0HbmEfnwOvcNnkzBuMtRuSMnkJdESKkb/IzT06 SUZrjgJmhbwDe6B1bHUNNkg4aU63plA3Sr8xUnhQKJQ1DwyOXM8pC3RMstopGoGcwYBH kBuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=oXRtwD8S; 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 b8si2862583eds.433.2021.02.04.00.19.34; Thu, 04 Feb 2021 00:19:59 -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=oXRtwD8S; 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 S234904AbhBDIPx (ORCPT + 99 others); Thu, 4 Feb 2021 03:15:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58802 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234901AbhBDIPv (ORCPT ); Thu, 4 Feb 2021 03:15:51 -0500 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 659CBC061793 for ; Thu, 4 Feb 2021 00:14:36 -0800 (PST) Received: by mail-pj1-x1033.google.com with SMTP id fa16so828605pjb.1 for ; Thu, 04 Feb 2021 00:14:36 -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=x7hwBm1kKlbRCUXjrjQz7CyPjQNfq9+xKEIyZstLmMQ=; b=oXRtwD8S3IU7qmYkvuuwuGjjF13/SrDBBFsIC6RDA0gMdOXw2QlM6hRE3SJZ6mFLSv KomcMdg4+2/7ctxnxSPcDtRdN2BKk7mkig3dr04m8kr9u/wvPbYYjwJJK4Vah3PODknL z3Cp83gtMyMIbB+iJdtMRV2t2pH8SNBKpsrE4= 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=x7hwBm1kKlbRCUXjrjQz7CyPjQNfq9+xKEIyZstLmMQ=; b=lMGiaakeOoRHT4xxaH+iO4D3kbkax0eoaJvQrqG5Snc5VHzYFQT2+mnzb87sTYenHd LZBiG63oTYtspap/No2z50Uj10vf/BIkT4wU88DX9Fl2zYc20Vr2mCbDw2Ol31LoePxE LxQjedFbdDUtkM/W+kWqvqLU3rye57aDnz+gt9RIBWKB77ArTfhMx+Cl+GktmhxdsNgn W2gvIVzq7yUgbAPyKl5mxc1DXIHo5Z45TIMGnrBgvfy+gy7zGghRPelTWjtooWvq3Ve5 glGj5fUlJDlSzSBi1+x3iErTcg9LTyGH0gGevXVDG9hJ5bPDPewlremteoYg7CduNpQB 6Djw== X-Gm-Message-State: AOAM5321fN6yPmMY0yZPbJK7/jGJ3Ge+hlYrz1gUnaSOfgsnlFr6/klR HM4rxHmQSpoZSBnmVvwUl3P4nw== X-Received: by 2002:a17:90a:701:: with SMTP id l1mr7313673pjl.154.1612426475966; Thu, 04 Feb 2021 00:14:35 -0800 (PST) Received: from hsinyi-z840.tpe.corp.google.com ([2401:fa00:1:10:ed70:6d43:9c6a:2e22]) by smtp.gmail.com with ESMTPSA id e3sm5091258pgs.60.2021.02.04.00.14.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Feb 2021 00:14:35 -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 v6 3/3] PM / devfreq: Add required OPPs support to passive governor Date: Thu, 4 Feb 2021 16:14:24 +0800 Message-Id: <20210204081424.2219311-4-hsinyi@chromium.org> X-Mailer: git-send-email 2.30.0.365.g02bc693789-goog In-Reply-To: <20210204081424.2219311-1-hsinyi@chromium.org> References: <20210204081424.2219311-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 | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/drivers/devfreq/governor_passive.c b/drivers/devfreq/governor_passive.c index 63332e4a65ae8..8fd51cc9b991a 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, *p_opp = ERR_PTR(-ENODEV); int i, count, ret = 0; /* @@ -29,7 +29,7 @@ static int devfreq_passive_get_target_freq(struct devfreq *devfreq, */ if (p_data->get_target_freq) { ret = p_data->get_target_freq(devfreq, freq); - goto out; + return ret; } /* @@ -56,13 +56,22 @@ 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); - goto out; + p_opp = devfreq_recommended_opp(parent_devfreq->dev.parent, freq, 0); + if (IS_ERR(p_opp)) { + ret = PTR_ERR(p_opp); + return ret; } - 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 (!IS_ERR(opp)) { + *freq = dev_pm_opp_get_freq(opp); + dev_pm_opp_put(opp); + } else + ret = PTR_ERR(opp); + goto out; + } /* * Get the OPP table's index of decided freqeuncy by governor @@ -89,6 +98,8 @@ static int devfreq_passive_get_target_freq(struct devfreq *devfreq, *freq = child_freq; out: + dev_pm_opp_put(p_opp); + return ret; } -- 2.30.0.365.g02bc693789-goog