Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760767AbbBIK6I (ORCPT ); Mon, 9 Feb 2015 05:58:08 -0500 Received: from mailout1.samsung.com ([203.254.224.24]:31424 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759882AbbBIK6F (ORCPT ); Mon, 9 Feb 2015 05:58:05 -0500 X-AuditID: cbfee68e-f79b46d000002b74-90-54d892bab8dc From: Amit Daniel Kachhap To: linux-pm@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, khilman@linaro.org, rjw@rjwysocki.net, len.brown@intel.com, ulf.hansson@linaro.org, tomasz.figa@gmail.com, kgene.kim@samsung.com, s.nawrocki@samsung.com, thomas.ab@samsung.com, pankaj.dubey@samsung.com, m.szyprowski@samsung.com, geert+renesas@glider.be, Amit Daniel Kachhap Subject: [PATCH RFC v4 0/3] PM / Runtime: Feature to power manage slave devices Date: Mon, 09 Feb 2015 16:32:03 +0530 Message-id: <1423479726-23140-1-git-send-email-amit.daniel@samsung.com> X-Mailer: git-send-email 2.2.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDLMWRmVeSWpSXmKPExsWyRsSkTnfXpBshBqtm6lk0XA2xmDt7EqNF 74KrbBZfD69gtJg1ZS+TxabH11gtLu+aw2bxufcIo8WM8/uYLNYeuctusWjrF3aLM6cvsVoc ftPOatGxjNFi1a4/jBbH14Y7CHhMPKvrsXPWXXaPxXteMnncubaHzWPzknqPLVfbWTz6tqxi 9Pi8SS6AI4rLJiU1J7MstUjfLoEr4/P6CcwF64UrrrVuYWpgvMrfxcjJISFgIrH75gdWCFtM 4sK99WxdjFwcQgJLGSUmrp/JClM0e9oeqMQiRonb264wQjgTmCQOPvvDCFLFJmAs8XPnfnYQ W0RARmLqlf2sIEXMAguYJY5OWswCkhAW8Jf487kZbCyLgKrEiom3wJp5Bdwlrk5vZIJYJyex 5dYjdpBmCYFr7BJPlu9jg2gQkPg2+RDQIA6ghKzEpgPMEPWSEgdX3GCZwCi4gJFhFaNoakFy QXFSepGRXnFibnFpXrpecn7uJkZgpJz+96xvB+PNA9aHGAU4GJV4eC98vh4ixJpYVlyZe4jR FGjDRGYp0eR8YDzmlcQbGpsZWZiamBobmVuaKYnzJkj9DBYSSE8sSc1OTS1ILYovKs1JLT7E yMTBKdXAaD4t5OfG9k1fGJLmfzt7gzV0T/6Gi1O8BY00Iqt+TfFhZJeuSJr9bvPlK8HzPluI HlkpW7+nv0/zzY5X3d5TDrw0DFB9tNbm7ftjfDFtJT+smSd6GSYe/zN9zvytR6bct3b3v3Fb MVOyu2fSCSWhddNP21mkTFiaerEq8US8yeTbMj5PfhQytCmxFGckGmoxFxUnAgCHSON6jwIA AA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGIsWRmVeSWpSXmKPExsVy+t9jAd1dk26EGLT8U7RouBpiMXf2JEaL 3gVX2Sy+Hl7BaDFryl4mi02Pr7FaXN41h83ic+8RRosZ5/cxWaw9cpfdYtHWL+wWZ05fYrU4 /Kad1aJjGaPFql1/GC2Orw13EPCYeFbXY+esu+wei/e8ZPK4c20Pm8fmJfUeW662s3j0bVnF 6PF5k1wAR1QDo01GamJKapFCal5yfkpmXrqtkndwvHO8qZmBoa6hpYW5kkJeYm6qrZKLT4Cu W2YO0PlKCmWJOaVAoYDE4mIlfTtME0JD3HQtYBojdH1DguB6jAzQQMIaxozP6ycwF6wXrrjW uoWpgfEqfxcjJ4eEgInE7Gl72CBsMYkL99YD2VwcQgKLGCVub7vCCOFMYJI4+OwPI0gVm4Cx xM+d+9lBbBEBGYmpV/azghQxCyxgljg6aTELSEJYwF/iz+dmVhCbRUBVYsXEW2DNvALuElen NzJBrJOT2HLrEfsERu4FjAyrGEVTC5ILipPSc430ihNzi0vz0vWS83M3MYLj8Jn0DsZVDRaH GAU4GJV4eC98vh4ixJpYVlyZe4hRgoNZSYR3f8+NECHelMTKqtSi/Pii0pzU4kOMpkDbJzJL iSbnA1NEXkm8obGJuamxqaWJhYmZpZI4r5J9W4iQQHpiSWp2ampBahFMHxMHp1QDY03Sg1eb V+bUXDO6ter59cl9XtYN+9a8eWx+N3GuxvojE+q2pXjpzD1smx4v/Pn4u8TZa2ZN1yn0m5tZ yHy1wMI01m7qsYobHodTHh8of/FV1Jh72r/YJdKLY23ie9NaVZl3RoYZiJW3ywW1vo5YYPh6 4Y1lMyKC5ndPPKe97pLP3L8PmmzPBimxFGckGmoxFxUnAgBD59qU2QIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2667 Lines: 62 This patch is somewhat similar to V3 version but uses pm runtime framework to register/fetch the information about the device which may be slave or master. Since the power domain has the necessary information about devices so it invokes the save/restore runtime callbacks for the slave devices. There was objection raised by Kevin and others that V3 is hacky in nature so this revision fixes it by keeping the slave device information in pm runtime framework. The model works like, DEV1 (Attaches itself with PD but no support of pm_runtime_get and / pm_runtime_put. Registers itself as pm runtime slave device. / Its local runtime_suspend/resume is invoked by PD. / / PD -- DEV2 (Implements complete PM runtime and calls pm_runtime_get and \ pm_runtime_put. This in turn invokes PD On/Off) \ DEV3 (Similar to DEV1) This work is continuation of earlier work, In V3: Used the existing API pm_genpd_dev_need_restore to add a feature to force devices to perform restore/save during every power domain on/off operation. This API is now removed. Link (https://lkml.org/lkml/2014/12/13/74 In V2: Completely removed notfiers and add support for huge clock list to be suspended and restored. There was some issue in this as some clocks are not exposed and are just initialised by bootloaders. This approach required all of them to be exposed which is cumbersome. Also some clock API's set_parent are disabling the original parent clocks which is not required. Link (https://lkml.org/lkml/2014/11/24/290) In V1: Implemented PM Domain notfier such as PD_ON_PRE, PD_ON_POST PD_OFF_PRE and PD_OFF_POST. This was not supported and other options suggested. link (http://www.spinics.net/lists/linux-samsung-soc/msg38442.html) This work may also assist exynos iommu pm runtime posted earlier by Marek http://lists.linaro.org/pipermail/linaro-mm-sig/2014-August/004099.html Amit Daniel Kachhap (3): PM / Runtime: Add an API pm_runtime_set_slave PM / Domains: Save restore slave pm runtime devices clk: samsung: Add PM runtime support for clocks. drivers/base/power/domain.c | 28 +++++++++++++ drivers/base/power/runtime.c | 18 +++++++++ drivers/clk/samsung/clk.c | 93 ++++++++++++++++++++++++++++++++++++++++++++ drivers/clk/samsung/clk.h | 11 ++++++ include/linux/pm.h | 1 + include/linux/pm_runtime.h | 2 + 6 files changed, 153 insertions(+) -- 2.2.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/