From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754316AbbCRFYK (ORCPT ); Wed, 18 Mar 2015 01:24:10 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:56971 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750827AbbCRFYH (ORCPT ); Wed, 18 Mar 2015 01:24:07 -0400 X-AuditID: cbfee690-f79ab6d0000046f7-c5-55090bf0f555 Date: Wed, 18 Mar 2015 05:24:00 +0000 (GMT) From: MyungJoo Ham Subject: Re: [PATCH v6 5/8] PM / devfreq: tegra: remove operating-points To: Tomeu Vizoso , "linux-tegra@vger.kernel.org" Cc: Mikko Perttunen , =?utf-8?Q?=EB=B0=95=EA=B2=BD=EB=AF=BC?= , Stephen Warren , Thierry Reding , Alexandre Courbot , "linux-pm@vger.kernel.org" , "linux-kernel@vger.kernel.org" Reply-to: myungjoo.ham@samsung.com MIME-version: 1.0 X-MTR: 20150318052255857@myungjoo.ham Msgkey: 20150318052255857@myungjoo.ham X-EPLocale: ko_KR.utf-8 X-Priority: 3 X-EPWebmail-Msg-Type: personal X-EPWebmail-Reply-Demand: 0 X-EPApproval-Locale: X-EPHeader: ML X-MLAttribute: X-RootMTR: 20150318052255857@myungjoo.ham X-ParentMTR: X-ArchiveUser: X-CPGSPASS: N X-ConfirmMail: N,general Content-type: text/plain; charset=utf-8 MIME-version: 1.0 Message-id: <192647817.276191426656237193.JavaMail.weblogic@epmlwas07d> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrCIsWRmVeSWpSXmKPExsWyRsSkRPcDN2eowdsJNhaXd81hc2D0+LxJ LoAxissmJTUnsyy1SN8ugStjy8+rTAXLxCpmLJrL3sB4Q7SLkZNDSEBdYtGSk2wgtoSAiUTX wresELaYxIV764HiXEA1SxklnratgCs69XMiI0RiDqPEuyePwRIsAqoSsycfYe9i5OBgE9CT mPk5GSQsLOAh0bl4EguILSKQJ/Hm9GNWkF5mgR9MEqf3b2OGuEJJYs2+V2BFvAKCEidnPmGB WKYq0Ta3iQkiriZxd3sf1HXiEhfmXmKHsHklZrQ/haqXk5j2dQ0zhC0tcX7WBkaYbxZ/fwwV 55c4dnsHE4QtIDH1zEGoGi2JaY0noWr4JNYsfMsCU7/r1HJmmF33t8yF6pWQ2NryBOweZgFF iSndD8F+ZxbQlFi/Sx/dK7wC7hKvtoKM4QJqncghMf/IaaYJjEqzkNTNQjJqFsIoZCULGFlW MYqmFiQXFCelF5noFSfmFpfmpesl5+duYgQmhtP/nk3YwXjvgPUhRgEORiUeXsmrHKFCrIll xZW5hxhNgbE0kVlKNDkfmH7ySuINjc2MLExNTI2NzC3NlMR5X0v9DBYSSE8sSc1OTS1ILYov Ks1JLT7EyMTBKdXAWOt2leERzyOTHedldzSb5S4QPlxfVe/Zzrq2zGvzovTiCX3HD66XmbOs JOiGbnfU+h8c/2t0UmsN1bzTnPtmhbbGhp2vyZ32UqN0sfup382THLI6e9zsp27nzjXME3mt sPl+WcUzptzCHRsm35XiKOuWOf11/7PY3Nr/jQ67UrZ8MvukeNtSiaU4I9FQi7moOBEA4hgv JAcDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKKsWRmVeSWpSXmKPExsVy+t/tXt0P3JyhBs8+mVhc3jWHzYHR4/Mm uQDGqDSbjNTElNQihdS85PyUzLx0WyXv4HjneFMzA0NdQ0sLcyWFvMTcVFslF58AXbfMHKCh SgpliTmlQKGAxOJiJX07m6L80pJUhYz84hJbpWhDcyM9IwM9UyM9Q+NYK0MDAyNToJqEtIwt P68yFSwTq5ixaC57A+MN0S5GTg4hAXWJRUtOsoHYEgImEqd+TmSEsMUkLtxbDxTnAqqZwyjx 7sljsCIWAVWJ2ZOPsHcxcnCwCehJzPycDBIWFvCQ6Fw8iQXEFhHIk3hz+jErSC+zwA8midP7 tzFDLFOSWLPvFVgRr4CgxMmZT1gglqlKtM1tYoKIq0nc3d7HChEXl7gw9xI7hM0rMaP9KVS9 nMS0r2uYIWxpifOzNsAdvfj7Y6g4v8Sx2zuYIGwBialnDkLVaElMazwJVcMnsWbhWxaY+l2n ljPD7Lq/ZS5Ur4TE1pYnYPcwCyhKTOl+CPY7s4CmxPpd+uhe4RVwl3i1dTnzBEbZWUhSs5B0 z0LoRlaygJFlFaNoakFyQXFSeoWRXnFibnFpXrpecn7uJkZwEnq2aAfjv/PWhxgFOBiVeHgl rnKECrEmlhVX5h5ilOBgVhLh1WoBCvGmJFZWpRblxxeV5qQWH2I0BcbZRGYp0eR8YILMK4k3 NDY2MTMxtTSxMDA1VxLn/X8uN0RIID2xJDU7NbUgtQimj4mDU6qBUXbj/UkZP1KX+M1YkfN+ 4qGOqqQ5B87xKMnVWYXyn334KOVRaN/vPan5+1nWWF54I37gbVV5+KqI03+nWi/nmrWyiFf/ dP2dJ3Gvw3z+ned8LOHUtWrimjqv6lPXueR+pl081JPKn7JgtW63+MviWLtLNdtS2gJ3Mud8 qWe0/RzXekuJb3rYTyWW4oxEQy3mouJEAEmb2cNYAwAA DLP-Filter: Pass X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id t2I5OEll006875 > As the DT bindings don't have an operating-points property any more, > build the OPP table from the frequencies supported by the EMC clock. > > Signed-off-by: Tomeu Vizoso > --- > drivers/devfreq/tegra-devfreq.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/devfreq/tegra-devfreq.c b/drivers/devfreq/tegra-devfreq.c > index 5a6164c..1de3f8b 100644 > --- a/drivers/devfreq/tegra-devfreq.c > +++ b/drivers/devfreq/tegra-devfreq.c > @@ -618,6 +618,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > struct tegra_devfreq_device *dev; > struct resource *res; > unsigned int i; > + unsigned long rate; > int irq; > int err; > > @@ -649,12 +650,6 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > return PTR_ERR(tegra->emc_clock); > } > > - err = of_init_opp_table(&pdev->dev); > - if (err) { > - dev_err(&pdev->dev, "Failed to init operating point table\n"); > - return err; > - } > - > clk_set_rate(tegra->emc_clock, ULONG_MAX); > > tegra->rate_change_nb.notifier_call = tegra_actmon_rate_notify_cb; > @@ -691,6 +686,11 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > tegra_actmon_configure_device(tegra, dev); > } > > + for (rate = 0; rate <= tegra->max_freq * KHZ; rate++) { > + rate = clk_round_rate(tegra->emc_clock, rate); > + dev_pm_opp_add(&pdev->dev, rate, 0); > + } > + Although I am not going to NACK for the single-time performance of a single device driver for a device that I do not have or fully understand, please note that you may be wasting several billion cycles unless your product is running at MHZ/kHZ level. What is going on with this loop? Do you really have such a virtually-continuous frequency scaling in your product? (Wow.... but in such a case, I don't think OPP is appropriate.) Cheers, MyungJoo > irq = platform_get_irq(pdev, 0); > if (irq <= 0) { > dev_err(&pdev->dev, "Failed to get IRQ\n"); > -- > 2.1.0 > {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I