From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757365AbcILS4e (ORCPT ); Mon, 12 Sep 2016 14:56:34 -0400 Received: from bh-25.webhostbox.net ([208.91.199.152]:52808 "EHLO bh-25.webhostbox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755617AbcILS4c (ORCPT ); Mon, 12 Sep 2016 14:56:32 -0400 Date: Mon, 12 Sep 2016 11:56:29 -0700 From: Guenter Roeck To: Felipe Balbi Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Question about suspend/resume clock handling in dwc3-of-simple.c Message-ID: <20160912185629.GA25929@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-Authenticated_sender: guenter@roeck-us.net X-OutGoing-Spam-Status: No, score=-1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - bh-25.webhostbox.net X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - roeck-us.net X-Get-Message-Sender-Via: bh-25.webhostbox.net: authenticated_id: guenter@roeck-us.net X-Authenticated-Sender: bh-25.webhostbox.net: guenter@roeck-us.net X-Source: X-Source-Args: X-Source-Dir: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi folks, In dwc3-of-simple.c:dwc3_of_simple_remove(), I see the following code. for (i = 0; i < simple->num_clocks; i++) { clk_unprepare(simple->clks[i]); clk_put(simple->clks[i]); } What I don't understand is why clk_unprepare() is called instead of clk_disable_unprepare(). Someone told me that it was due to dwc3_of_simple_runtime_suspend(), which would call clk_disable(). That doesn't really make sense to me, since after all CONFIG_PM can be disabled. Should it be clk_disable_unprepare(), or maybe something like the following if (!pm_runtime_status_suspended(dev)) clk_disable_unprepare(); else clk_unprepare(); or am I missing something ? Thanks, Guenter