Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp372870pxu; Tue, 5 Jan 2021 13:30:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJwAxJHMOTHw6SRJFLyVukubUNSiREaSbTCLACCUGnvSdt+bAlrZZM36zYrC5zRz0aoifGUF X-Received: by 2002:a17:907:3fa3:: with SMTP id hr35mr890568ejc.71.1609882246581; Tue, 05 Jan 2021 13:30:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609882246; cv=none; d=google.com; s=arc-20160816; b=znSud89UwEPGvJS903w2X4VrzTG9lguGM3KvoPtKTbdbkKiiTswtzMeesdU8WYp9W1 mazxu2TkmbyIc2XVZm+582JIMZtfeNmElHhc0EI907FzOlFAmBmODNtw/zmnSePb7n4N XlG1uGTGaBzf4sUPI2jJTlTu7zmwf4yhUWBuEq/DkKT9/2WC50mPw1pt0HjQp08SRTrb g6Kzj6usPHGx9rnQRd0q7TxwgqDJ+dgd+OG3enj9/StZ5aC2mLDU1ggx1uobekzWwkg4 CBl6Qv++Esinlul5Woju0cingPrd6m7J2Qv0Mr9OWreyRIYEZgtPWO9rwXd9u5ESasZo o4+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=4S/vqRJnTrbk1FK0ZWF7jPhrPXb8erXmEGggYbm7Reo=; b=SYp92XA3if4QDIHPqmTgUr7JqnuH4O3MHIlcSL14MuYOFN+FfHxXoSJ7lxUXWknr8f SjxkFFANU892S7DxQEPMY/il5muBOTG3X/bC+p52rFpn8anKBaaYjyjiqaib2yiyH5zU qX6PDaQ/iMOP69FJhn6URf02Joi7TmeOBb4x1vnvpBKbsh8877h1nFUrTP4tkULUfWpn AE/EhXNIfRsAIr3B51uf3udgQLRF7OHW5PIpNXPkd2vI2WikWN/+iXg/vN4TwhkSzbmo qUgjnC8+vHHsObcCptiO8vZ2v13bS7iYN57zZCKn6orzXUBswgYvVxll+16GZ2zzJbnP qreQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o26si139261edw.74.2021.01.05.13.30.23; Tue, 05 Jan 2021 13:30:46 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728069AbhAEQef (ORCPT + 99 others); Tue, 5 Jan 2021 11:34:35 -0500 Received: from foss.arm.com ([217.140.110.172]:57076 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726132AbhAEQee (ORCPT ); Tue, 5 Jan 2021 11:34:34 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 83C64113E; Tue, 5 Jan 2021 08:33:48 -0800 (PST) Received: from [192.168.1.179] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 647673F70D; Tue, 5 Jan 2021 08:33:37 -0800 (PST) Subject: Re: [PATCH 19/31] drm/panfrost: convert to use devm_pm_opp_* API To: Yangtao Li , myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com, krzk@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, digetx@gmail.com, thierry.reding@gmail.com, jonathanh@nvidia.com, yuq825@gmail.com, airlied@linux.ie, daniel@ffwll.ch, robdclark@gmail.com, sean@poorly.run, robh@kernel.org, tomeu.vizoso@collabora.com, alyssa.rosenzweig@collabora.com, stanimir.varbanov@linaro.org, agross@kernel.org, bjorn.andersson@linaro.org, mchehab@kernel.org, lukasz.luba@arm.com, adrian.hunter@intel.com, ulf.hansson@linaro.org, vireshk@kernel.org, nm@ti.com, sboyd@kernel.org, broonie@kernel.org, gregkh@linuxfoundation.org, jirislaby@kernel.org, rjw@rjwysocki.net, jcrouse@codeaurora.org, hoegsberg@google.com, eric@anholt.net, tzimmermann@suse.de, marijn.suijten@somainline.org, gustavoars@kernel.org, emil.velikov@collabora.com, jonathan@marek.ca, akhilpo@codeaurora.org, smasetty@codeaurora.org, airlied@redhat.com, masneyb@onstation.org, kalyan_t@codeaurora.org, tanmay@codeaurora.org, ddavenport@chromium.org, jsanka@codeaurora.org, rnayak@codeaurora.org, tongtiangen@huawei.com, miaoqinglang@huawei.com, khsieh@codeaurora.org, abhinavk@codeaurora.org, chandanu@codeaurora.org, groeck@chromium.org, varar@codeaurora.org, mka@chromium.org, harigovi@codeaurora.org, rikard.falkeborn@gmail.com, natechancellor@gmail.com, georgi.djakov@linaro.org, akashast@codeaurora.org, parashar@codeaurora.org, dianders@chromium.org Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-tegra@vger.kernel.org, dri-devel@lists.freedesktop.org, lima@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, linux-media@vger.kernel.org, linux-mmc@vger.kernel.org, linux-spi@vger.kernel.org, linux-serial@vger.kernel.org References: <20210101165507.19486-1-tiny.windzz@gmail.com> <20210101165507.19486-20-tiny.windzz@gmail.com> From: Steven Price Message-ID: <63e5e2ae-0baf-cbd1-b2eb-43fac89acb7c@arm.com> Date: Tue, 5 Jan 2021 16:33:32 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20210101165507.19486-20-tiny.windzz@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/01/2021 16:54, Yangtao Li wrote: > Use devm_pm_opp_* API to simplify code, and remove opp_table > from panfrost_devfreq. > > Signed-off-by: Yangtao Li Reviewed-by: Steven Price > --- > drivers/gpu/drm/panfrost/panfrost_devfreq.c | 34 ++++++--------------- > drivers/gpu/drm/panfrost/panfrost_devfreq.h | 1 - > 2 files changed, 10 insertions(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c > index f44d28fad085..c42fa9eb43b1 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c > +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c > @@ -92,25 +92,26 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > struct thermal_cooling_device *cooling; > struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; > > - opp_table = dev_pm_opp_set_regulators(dev, pfdev->comp->supply_names, > + opp_table = devm_pm_opp_set_regulators(dev, pfdev->comp->supply_names, > pfdev->comp->num_supplies); > if (IS_ERR(opp_table)) { > ret = PTR_ERR(opp_table); > /* Continue if the optional regulator is missing */ > if (ret != -ENODEV) { > DRM_DEV_ERROR(dev, "Couldn't set OPP regulators\n"); > - goto err_fini; > + return ret; > } > - } else { > - pfdevfreq->regulators_opp_table = opp_table; > } > > - ret = dev_pm_opp_of_add_table(dev); > + ret = devm_pm_opp_of_add_table(dev); > if (ret) { > + if (!IS_ERR(opp_table)) > + devm_pm_opp_put_regulators(dev, opp_table); > + > /* Optional, continue without devfreq */ > if (ret == -ENODEV) > ret = 0; > - goto err_fini; > + return ret; > } > pfdevfreq->opp_of_table_added = true; > > @@ -121,10 +122,8 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > cur_freq = clk_get_rate(pfdev->clock); > > opp = devfreq_recommended_opp(dev, &cur_freq, 0); > - if (IS_ERR(opp)) { > - ret = PTR_ERR(opp); > - goto err_fini; > - } > + if (IS_ERR(opp)) > + return PTR_ERR(opp); > > panfrost_devfreq_profile.initial_freq = cur_freq; > dev_pm_opp_put(opp); > @@ -133,8 +132,7 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL); > if (IS_ERR(devfreq)) { > DRM_DEV_ERROR(dev, "Couldn't initialize GPU devfreq\n"); > - ret = PTR_ERR(devfreq); > - goto err_fini; > + return PTR_ERR(devfreq); > } > pfdevfreq->devfreq = devfreq; > > @@ -145,10 +143,6 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > pfdevfreq->cooling = cooling; > > return 0; > - > -err_fini: > - panfrost_devfreq_fini(pfdev); > - return ret; > } > > void panfrost_devfreq_fini(struct panfrost_device *pfdev) > @@ -159,14 +153,6 @@ void panfrost_devfreq_fini(struct panfrost_device *pfdev) > devfreq_cooling_unregister(pfdevfreq->cooling); > pfdevfreq->cooling = NULL; > } > - > - if (pfdevfreq->opp_of_table_added) { > - dev_pm_opp_of_remove_table(&pfdev->pdev->dev); > - pfdevfreq->opp_of_table_added = false; > - } > - > - dev_pm_opp_put_regulators(pfdevfreq->regulators_opp_table); > - pfdevfreq->regulators_opp_table = NULL; > } > > void panfrost_devfreq_resume(struct panfrost_device *pfdev) > diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.h b/drivers/gpu/drm/panfrost/panfrost_devfreq.h > index db6ea48e21f9..a51854cc8c06 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.h > +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.h > @@ -15,7 +15,6 @@ struct panfrost_device; > > struct panfrost_devfreq { > struct devfreq *devfreq; > - struct opp_table *regulators_opp_table; > struct thermal_cooling_device *cooling; > bool opp_of_table_added; > >