Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp7094654imu; Mon, 3 Dec 2018 07:40:30 -0800 (PST) X-Google-Smtp-Source: AFSGD/VEpwog3v7Ixd5YDsaNNd7Slg2bB0VLsQOIEaE/SI4HEdtDrXCbg/j3KUrmBOYlXrz6cLk6 X-Received: by 2002:a17:902:830a:: with SMTP id bd10mr16517468plb.321.1543851630763; Mon, 03 Dec 2018 07:40:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543851630; cv=none; d=google.com; s=arc-20160816; b=KpSBlRH85QPRqbd52/Cp02pbqTlgzXY9v0sTwru0KauUHk0pG4iYnAtYELmG6q6mh1 S9Ws4IyDwQYU0B080sntfN4b/g1lSeYpiBGt4PdOeFWBWUFww+77o02obLgO9CWjHOS+ 3iOAfm9OXbC4J6TGBJcqLpR8o/b09nHRtHZP0MD3bYDuiZGt/p+gpNVLwjucIVMcMiA3 eGyvU9bhC24ZSqrDqlY4N6s0UauWE9HSFpzIsbEznOLr5gwAFsRcyEdya9vtsvNTUyFO tpJNV15sRf8rsU3g/lNcRbDwYpsGbfzDvdEl/7irZjS6SouKyZlELUJ/gQC3UyCwfvHz WGWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=GlJEccbKGyQ8NRuKtsnje+W3UM6IHqRFaDdzZ01C8rA=; b=Akn4mIWEV5ZSaJakKfq/9DCeeRLthxFZ4c3RZqyEjjW8AwgRCrzMyAqaJL2UK7KxYo itfOrbK66tbp8XwPmvat9woLoCL/pFhwX+c+XYiYNQ+z/Ka1+ryRF7OxrIHeABQRBmpO QwqIITsP35MERPUr7eFkjx4UryC/ukYSYYQvK2O3LTjK7JG20/wK39GaZPFY5/+6gHjp Ahbu0Lo/I+ioSq4d9tCwLl/1p3VWxtN15UZef8NWlT1pIZ3M/CxuYI1nU2nKCy95nnLy bL6IZPJGV/Eej0JWDgvA86mN+fckSifDYTCu+mgU4jYFVRo5MhCE7zONiImEM67mSPwn yLqg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p12si13693882plk.77.2018.12.03.07.40.14; Mon, 03 Dec 2018 07:40:30 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726725AbeLCPjW (ORCPT + 99 others); Mon, 3 Dec 2018 10:39:22 -0500 Received: from muru.com ([72.249.23.125]:56134 "EHLO muru.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726560AbeLCPjW (ORCPT ); Mon, 3 Dec 2018 10:39:22 -0500 Received: from atomide.com (localhost [127.0.0.1]) by muru.com (Postfix) with ESMTPS id E041880BF; Mon, 3 Dec 2018 15:39:19 +0000 (UTC) Date: Mon, 3 Dec 2018 07:39:10 -0800 From: Tony Lindgren To: Stephen Boyd Cc: Tero Kristo , Andreas Kemnade , bcousson@baylibre.com, letux-kernel@openphoenux.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, mturquette@baylibre.com, paul@pwsan.com Subject: Re: [PATCH v2 2/3] clk: ti: check clock type before doing autoidle ops Message-ID: <20181203153910.GA6707@atomide.com> References: <20181110203115.13335-1-andreas@kemnade.info> <20181110203115.13335-3-andreas@kemnade.info> <154353750560.88331.11814738542436183126@swboyd.mtv.corp.google.com> <20181130071534.0a6cd455@kemnade.info> <154356242517.88331.8496814814468751012@swboyd.mtv.corp.google.com> <9eb7b090-4803-d389-4112-3bf058385b2e@ti.com> <154356463284.88331.13323307899580657085@swboyd.mtv.corp.google.com> <20181130153729.GG53235@atomide.com> <154362191595.88331.15503578806026771935@swboyd.mtv.corp.google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <154362191595.88331.15503578806026771935@swboyd.mtv.corp.google.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Stephen Boyd [181130 23:52]: > Quoting Tony Lindgren (2018-11-30 07:37:29) > > Hi, > > > > * Tero Kristo [181130 09:21]: > > > On 30/11/2018 09:57, Stephen Boyd wrote: > > > > No that is not preferred. Can the omap2_clk_deny_idle() function be > > > > integrated closer into the clk framework in some way that allows it to > > > > be part of the clk_ops structure? And then have that take a clk_hw > > > > structure instead of a struct clk? I haven't looked at this in any > > > > detail whatsoever so I may be way off right now. > > > > > > It could be added under the main clk_ops struct, however this would > > > introduce two new func pointers to it which are not used by anything else > > > but OMAP. Are you aware of any other platforms requiring similar feature? > > > > From consumer usage point of view, I'm still wondering about > > the relationship of clk_deny_idle() and clkdm_deny_idle(). > > > > It seems that we need to allow reset control drivers call > > clk_deny_idle() for the duration of reset. And it seems the > > clk_deny_idle() should propagate to also up to the related > > clock domain driver to do clkdm_deny_idle(). > > > > So maybe clk_deny_idle() is could just be something like: > > > > dev = clk_get_device(clk); > > ... > > error = pm_runtime_get(dev); > > ... > > pm_runtime_put(dev); > > ... > > > > And that way it would just propagate to the parent clock > > domain driver and the clock framework does not need to know > > about clockdomains. A clockdomain could be just a genpd > > domain. > > > > Or do you guys have better ideas? > > > > Wouldn't the device link in clk framework patches do this for you if we > had the RUNTIME_PM flag passed in. If this is about keeping the clock > controller active when a consumer device is using it then I think it may > work. The consumer device stays active just fine with PM runtime calls. So yes, the problem is keeping a clock controller forced active for the period of consumer device reset. Other than that typically autoidle can be just kept enabled. Below is a clarified suggested example usage if we wanted to use PM runtime on a clock controller device from a consumer device reset driver: error = pm_runtime_get_dev() ... cdev = clk_get_device(clk); ... error = pm_runtime_get(cdev); ... /* Do the consumer device reset here */ ... pm_runtime_put(cdev); pm_runtime_put(dev); Regards, Tony