From patchwork Wed Oct 29 16:22:30 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomeu Vizoso X-Patchwork-Id: 404699 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 9A0EB140081 for ; Thu, 30 Oct 2014 03:26:00 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933664AbaJ2QZX (ORCPT ); Wed, 29 Oct 2014 12:25:23 -0400 Received: from mail-wi0-f172.google.com ([209.85.212.172]:35726 "EHLO mail-wi0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933691AbaJ2QZV (ORCPT ); Wed, 29 Oct 2014 12:25:21 -0400 Received: by mail-wi0-f172.google.com with SMTP id bs8so2194762wib.5 for ; Wed, 29 Oct 2014 09:25:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=PWmCSL2X6C9xQ60U5nP21TkIgpernphwyqtPyIloGIg=; b=EZInrBPSWy4lgivalj3PTYgAz3LDqzh/uQY58JBq9mwnJTu6b+t0WIwsoYvn9lNAoE wOPAC9bzOtGEmOVF15BJ+uflAS4nR1i0Hz6N1qctPCgURLxJeQKsbnG7JD2goQCC42OT XnFU75FQCTFIPpz2IVQmgr4i86ObWOt1d+379qJc2ohhzx27UojEYGBRntZz83HQf3+s XdDAKOMe9uRpi2yVMzwYaYfp2qSFlp7uPjGa6wnFQxs+vFVhpmdeOgMo0YEurzMVRHDL RRC/dHttWbwjBVaxLIokRHsTMr8ixdPXNSEiww2auRIslb/G7Et6676rVzHzPVZ5UNjn 8dGg== X-Received: by 10.180.99.105 with SMTP id ep9mr13991687wib.82.1414599920207; Wed, 29 Oct 2014 09:25:20 -0700 (PDT) Received: from cizrna.lan (37-48-36-243.tmcz.cz. [37.48.36.243]) by mx.google.com with ESMTPSA id u2sm5699502wjz.11.2014.10.29.09.25.17 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Oct 2014 09:25:19 -0700 (PDT) From: Tomeu Vizoso To: linux-tegra@vger.kernel.org Cc: Javier Martinez Canillas , Mikko Perttunen , Tomeu Vizoso , Stephen Warren , Thierry Reding , Alexandre Courbot , linux-kernel@vger.kernel.org Subject: [PATCH v3 12/13] memory: tegra: Add debugfs entry for getting and setting the EMC rate Date: Wed, 29 Oct 2014 17:22:30 +0100 Message-Id: <1414599796-30597-13-git-send-email-tomeu.vizoso@collabora.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1414599796-30597-1-git-send-email-tomeu.vizoso@collabora.com> References: <1414599796-30597-1-git-send-email-tomeu.vizoso@collabora.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org From: Mikko Perttunen Will be very useful when tuning memory scaling. Signed-off-by: Mikko Perttunen Signed-off-by: Tomeu Vizoso --- drivers/memory/tegra/tegra124-emc.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/memory/tegra/tegra124-emc.c b/drivers/memory/tegra/tegra124-emc.c index 8438de2..abe2525 100644 --- a/drivers/memory/tegra/tegra124-emc.c +++ b/drivers/memory/tegra/tegra124-emc.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -1034,6 +1035,39 @@ void tegra_emc_complete_timing_change(unsigned long rate) emc_complete_timing_change(emc_instance, emc_instance->timings + i); } +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * Debugfs entry * + * * * * * * * * * * * * * * * * * * * * * * * * * */ + +static int emc_debug_rate_get(void *data, u64 *rate) +{ + struct clk *c = data; + + *rate = clk_get_rate(c); + + return 0; +} + +static int emc_debug_rate_set(void *data, u64 rate) +{ + struct clk *c = data; + + return clk_set_rate(c, rate); +} + +DEFINE_SIMPLE_ATTRIBUTE(emc_debug_rate_fops, emc_debug_rate_get, + emc_debug_rate_set, "%lld\n"); + +void emc_debugfs_init(void) +{ + struct dentry *d; + + d = debugfs_create_file("emc_rate", S_IRUGO | S_IWUSR, NULL, clk_get_sys("tegra-clk-debug", "emc"), + &emc_debug_rate_fops); + if (!d) + pr_warn("failed to create debugfs entries\n"); +} + static int tegra_emc_probe(struct platform_device *pdev) { struct tegra_emc *tegra; @@ -1111,6 +1145,8 @@ static int tegra_emc_probe(struct platform_device *pdev) emc_instance = tegra; + emc_debugfs_init(); + return 0; };