From patchwork Fri Oct 12 01:06:10 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Omar Ramirez Luna X-Patchwork-Id: 1584711 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id B019340135 for ; Fri, 12 Oct 2012 01:09:43 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TMTjD-0000ix-Ei; Fri, 12 Oct 2012 01:07:51 +0000 Received: from mail-oa0-f49.google.com ([209.85.219.49]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TMTi2-0000PH-K7 for linux-arm-kernel@lists.infradead.org; Fri, 12 Oct 2012 01:06:40 +0000 Received: by mail-oa0-f49.google.com with SMTP id l10so2513490oag.36 for ; Thu, 11 Oct 2012 18:06:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=BPVqxoAaazfyWrHgDwymWZL4ebFV7aFDIvqv+dzoFRI=; b=KyGqXPbpgrwbf8a30/Oi5n8CMDMgEyj7mvfsHBMowKDs7FStL+FRhobWwM4rHqgBrG lUIzsDC5XYQr3e14qJoNGpRljCmR/Csxcy+cOJZnFmnYPcm4FwgkY/6kH6sqJz5u2h0G K6Wi6D5VwzQCFvJ+n1DS2YPOf/kmj//vGUQMoRWey4x/lYIjV8XmgjCONuO+0UtgM3lm 1fa/YoQT6LEed1pftCqaO+ZqmuuqcE2DlGN5hwL2EeLOtE5zd/1ZTNDNiy3ZeS53LCAu O4Zqt2jljOdiLj/8sH4WAs5s/bk1VtQ6O2sBqGdgeRmuWwlbfvgRd+94bY/eKu6U8CE6 R86A== Received: by 10.60.23.195 with SMTP id o3mr2248524oef.14.1350003997925; Thu, 11 Oct 2012 18:06:37 -0700 (PDT) Received: from uda0273944.am.dhcp.ti.com (dragon.ti.com. [192.94.94.33]) by mx.google.com with ESMTPS id b7sm4291259oef.12.2012.10.11.18.06.36 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 11 Oct 2012 18:06:37 -0700 (PDT) From: Omar Ramirez Luna To: Tony Lindgren , Joerg Roedel Subject: [PATCH v3 3/6] ARM: OMAP: iommu: pm runtime save and restore context Date: Thu, 11 Oct 2012 20:06:10 -0500 Message-Id: <1350003977-32744-6-git-send-email-omar.luna@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1350003977-32744-1-git-send-email-omar.luna@linaro.org> References: <1350003977-32744-1-git-send-email-omar.luna@linaro.org> X-Gm-Message-State: ALoCoQkRlWzwghJocVDY5qyANkcjCVG9Lx3LF0CplNrtsjUB6wVTFPwTWXUAnKJeCroKFdyoTkzh X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [209.85.219.49 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: Ohad Ben-Cohen , Paul Walmsley , Russell King , Benoit Cousson , linux-doc@vger.kernel.org, devicetree-discuss@lists.ozlabs.org, iommu@lists.linux-foundation.org, Laurent Pinchart , Omar Ramirez Luna , linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Save and restore context during pm runtime transitions. For now, the previous API for this purpose will trigger pm runtime functions, and will be left as exported symbol for compatibility with it's only user. Signed-off-by: Omar Ramirez Luna --- drivers/iommu/omap-iommu.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c index 37644c4..875e894 100644 --- a/drivers/iommu/omap-iommu.c +++ b/drivers/iommu/omap-iommu.c @@ -97,7 +97,7 @@ void omap_iommu_save_ctx(struct device *dev) { struct omap_iommu *obj = dev_to_omap_iommu(dev); - arch_iommu->save_ctx(obj); + pm_runtime_put_sync(obj->dev); } EXPORT_SYMBOL_GPL(omap_iommu_save_ctx); @@ -109,7 +109,7 @@ void omap_iommu_restore_ctx(struct device *dev) { struct omap_iommu *obj = dev_to_omap_iommu(dev); - arch_iommu->restore_ctx(obj); + pm_runtime_get_sync(obj->dev); } EXPORT_SYMBOL_GPL(omap_iommu_restore_ctx); @@ -1008,11 +1008,36 @@ static int __devexit omap_iommu_remove(struct platform_device *pdev) return 0; } +static int omap_iommu_runtime_suspend(struct device *dev) +{ + struct omap_iommu *obj = to_iommu(dev); + + arch_iommu->save_ctx(obj); + + return 0; +} + +static int omap_iommu_runtime_resume(struct device *dev) +{ + struct omap_iommu *obj = to_iommu(dev); + + arch_iommu->restore_ctx(obj); + + return 0; +} + +static const struct dev_pm_ops iommu_pm_ops = { + SET_RUNTIME_PM_OPS(omap_iommu_runtime_suspend, + omap_iommu_runtime_resume, + NULL) +}; + static struct platform_driver omap_iommu_driver = { .probe = omap_iommu_probe, .remove = __devexit_p(omap_iommu_remove), .driver = { .name = "omap-iommu", + .pm = &iommu_pm_ops, }, };