All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Shishkin <virtuoso@slind.org>
To: Hari Kanigeri <hari.kanigeri@gmail.com>
Cc: Alexander Shishkin <virtuoso@slind.org>,
	linux-arm-kernel@lists.infradead.org,
	Tony Lindgren <tony@atomide.com>,
	Russell King <linux@arm.linux.org.uk>,
	Paul Walmsley <paul@pwsan.com>,
	Kevin Hilman <khilman@deeprootsystems.com>,
	linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] omap3: make coresight register save across OFF modes a sysfs option
Date: Mon, 26 Jul 2010 00:04:23 +0300	[thread overview]
Message-ID: <1280091863-8891-1-git-send-email-virtuoso@slind.org> (raw)
In-Reply-To: <AANLkTinmSJ6dtgqmyuk9CArniPEvEp7TrXauvGxLxv7x@mail.gmail.com>

This adds a sysfs file at /sys/power/coresight_save which is used to
control if the ETM and debug components' states should be saved and
restored across OFF modes.

Signed-off-by: Alexander Shishkin <virtuoso@slind.org>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: linux-omap@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 arch/arm/mach-omap2/Makefile    |    1 +
 arch/arm/mach-omap2/debug34xx.c |   66 +++++++++++++++++++++++++++++++++++++++
 arch/arm/mach-omap2/pm.h        |    6 +++
 arch/arm/mach-omap2/pm34xx.c    |    3 ++
 4 files changed, 76 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/mach-omap2/debug34xx.c

diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index f5b4ff4..3a64ce4 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -49,6 +49,7 @@ ifeq ($(CONFIG_PM),y)
 obj-$(CONFIG_ARCH_OMAP2)		+= pm24xx.o
 obj-$(CONFIG_ARCH_OMAP2)		+= sleep24xx.o
 obj-$(CONFIG_ARCH_OMAP3)		+= pm34xx.o sleep34xx.o cpuidle34xx.o
+obj-$(CONFIG_ENABLE_OFF_MODE_JTAG_ETM_DEBUG) += debug34xx.o
 obj-$(CONFIG_PM_DEBUG)			+= pm-debug.o
 
 AFLAGS_sleep24xx.o			:=-Wa,-march=armv6
diff --git a/arch/arm/mach-omap2/debug34xx.c b/arch/arm/mach-omap2/debug34xx.c
new file mode 100644
index 0000000..698e83a
--- /dev/null
+++ b/arch/arm/mach-omap2/debug34xx.c
@@ -0,0 +1,66 @@
+/*
+ * Control saving and restoring of coresight components' state during
+ * OFF mode.
+ *
+ * Copyright (C) 2010 Nokia Corporation
+ * Alexander Shishkin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/sysfs.h>
+#include <linux/kobject.h>
+
+#include "pm.h"
+
+/*
+ * Pointer to a place in sram where the ETM/debug state save
+ * flag is. It can be calculated after the omap_sram_idle is
+ * pushed to sram.
+ */
+static unsigned int *_etm_save;
+
+/*
+ * sysfs file /sys/power/coresight_save controls whether the
+ * state of coresight components should be saved and restored
+ * across OFF modes.
+ */
+static ssize_t coresight_save_show(struct kobject *kobj,
+				  struct kobj_attribute *attr,
+				  char *buf)
+{
+	return sprintf(buf, "%u\n", *_etm_save);
+}
+
+static ssize_t coresight_save_store(struct kobject *kobj,
+				   struct kobj_attribute *attr,
+				   const char *buf, size_t n)
+{
+	unsigned int value;
+
+	if (sscanf(buf, "%u", &value) != 1)
+		return -EINVAL;
+
+	*_etm_save = !!value;
+
+	return n;
+}
+
+static struct kobj_attribute coresight_save_attr =
+	__ATTR(coresight_save, 0644, coresight_save_show, coresight_save_store);
+
+int omap3_coresight_pm_init(void *sram_addr)
+{
+	int ret;
+
+	/* the last word from the top of omap_sram_idle */
+	_etm_save = (unsigned *)((u8 *)sram_addr + omap34xx_cpu_suspend_sz - 4);
+
+	ret = sysfs_create_file(power_kobj, &coresight_save_attr.attr);
+
+	return ret;
+}
+
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
index 3de6ece..0321834 100644
--- a/arch/arm/mach-omap2/pm.h
+++ b/arch/arm/mach-omap2/pm.h
@@ -76,6 +76,12 @@ extern void omap34xx_cpu_suspend(u32 *addr, int save_state);
 extern void save_secure_ram_context(u32 *addr);
 extern void omap3_save_scratchpad_contents(void);
 
+#ifdef CONFIG_ENABLE_OFF_MODE_JTAG_ETM_DEBUG
+int omap3_coresight_pm_init(void *sram_addr);
+#else
+#define omap3_coresight_pm_init(x) do {} while (0)
+#endif
+
 extern unsigned int omap24xx_idle_loop_suspend_sz;
 extern unsigned int omap34xx_suspend_sz;
 extern unsigned int save_secure_ram_context_sz;
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index fb4994a..c389e65 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -1096,6 +1096,9 @@ static int __init omap3_pm_init(void)
 	core_clkdm = clkdm_lookup("core_clkdm");
 
 	omap_push_sram_idle();
+
+	omap3_coresight_pm_init(_omap_sram_idle);
+
 #ifdef CONFIG_SUSPEND
 	suspend_set_ops(&omap_pm_ops);
 #endif /* CONFIG_SUSPEND */
-- 
1.7.1


  parent reply	other threads:[~2010-07-25 21:10 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-01 17:38 [RFC] ETM/JTAG components states across OFF modes virtuoso
2010-05-01 17:38 ` [PATCH 1/6] coresight: add ETM management registers virtuoso
2010-05-01 17:38 ` [PATCH 2/6] coresight: cosmetic fixes virtuoso
2010-05-01 17:38 ` [PATCH 3/6] etm: do a dummy read from OSSRR during initialization virtuoso
2010-05-01 17:38 ` [PATCH 4/6] omap3: move EMU peripheral addresses to a platform header virtuoso
2010-05-01 17:38 ` [PATCH 5/6] save and restore etm state across core OFF modes virtuoso
2010-10-06  8:35   ` Eduardo Valentin
2010-10-06 11:22     ` Eduardo Valentin
2010-10-06 13:18       ` ext-madhusudhan.1.gowda
2010-05-01 17:38 ` [PATCH 6/6] omap3: make coresight register save across OFF modes a sysfs option virtuoso
2010-05-03 11:54 ` [RFC] ETM/JTAG components states across OFF modes Woodruff, Richard
2010-05-03 17:03   ` Alexander Shishkin
2010-07-25 17:05   ` [PATCH 1/7] coresight: move struct tracectx inside etm driver Alexander Shishkin
2010-07-25 17:05   ` [PATCH 2/7] coresight: add ETM management registers Alexander Shishkin
2010-07-25 17:05   ` [PATCH 3/7] coresight: cosmetic fixes Alexander Shishkin
2010-07-25 17:05   ` [PATCH 4/7] etm: do a dummy read from OSSRR during initialization Alexander Shishkin
2010-07-25 17:05   ` [PATCH 5/7] omap3: move EMU peripheral addresses to a platform header Alexander Shishkin
2010-07-26  7:03     ` Shilimkar, Santosh
2010-07-26  7:03       ` Shilimkar, Santosh
2010-07-26  7:03       ` Shilimkar, Santosh
2010-07-25 17:05   ` [PATCH 6/7] save and restore etm state across core OFF modes Alexander Shishkin
2010-07-25 18:34     ` Hari Kanigeri
2010-07-25 18:34       ` Hari Kanigeri
2010-07-25 18:34       ` Hari Kanigeri
2010-07-25 19:38       ` Alexander Shishkin
2010-07-25 21:04       ` Alexander Shishkin [this message]
2010-07-25 21:14         ` [PATCH] omap3: make coresight register save across OFF modes a sysfs option Alexander Shishkin
2010-07-26  6:58         ` Shilimkar, Santosh
2010-07-26  6:58           ` Shilimkar, Santosh
2010-07-26  6:58           ` Shilimkar, Santosh
2010-07-26  7:32           ` Alexander Shishkin
2010-07-26  7:32             ` Alexander Shishkin
2010-07-26  8:31             ` Shilimkar, Santosh
2010-07-26  8:31               ` Shilimkar, Santosh
2010-07-26  8:31               ` Shilimkar, Santosh
2010-07-26  9:04               ` Alexander Shishkin
2010-07-26  9:04                 ` Alexander Shishkin
2010-07-25 21:15       ` [PATCH] save and restore etm state across core OFF modes Alexander Shishkin
2010-07-30 12:16     ` [PATCH 6/7] " Alexander Shishkin
2010-07-25 17:05   ` [PATCH 7/7] omap3: make coresight register save across OFF modes a sysfs option Alexander Shishkin
2010-08-06 12:37     ` Alexander Shishkin
2010-08-06 12:47       ` Tony Lindgren
2010-08-06 12:47         ` Tony Lindgren
2010-08-06 12:47         ` Tony Lindgren
2010-09-04  8:57         ` Cousson, Benoit
2010-09-04  8:57           ` Cousson, Benoit
2010-09-04  8:57           ` Cousson, Benoit
2010-09-23 17:52           ` Tony Lindgren
2010-09-23 17:52             ` Tony Lindgren
2010-09-23 17:52             ` Tony Lindgren
2010-08-26  9:14   ` Try 3, ETM/JTAG components states across OFF modes Alexander Shishkin
2010-08-26  9:14   ` [PATCH 1/3] omap3: move EMU peripheral addresses to a platform header Alexander Shishkin
2010-08-26  9:14     ` Alexander Shishkin
2010-08-26  9:14   ` [PATCH 2/3] save and restore etm state across core OFF modes Alexander Shishkin
2010-08-26  9:14     ` Alexander Shishkin
2010-08-26  9:14   ` [PATCH 3/3] omap3: make coresight register save across OFF modes a sysfs option Alexander Shishkin
2010-08-26  9:14     ` Alexander Shishkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1280091863-8891-1-git-send-email-virtuoso@slind.org \
    --to=virtuoso@slind.org \
    --cc=hari.kanigeri@gmail.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=paul@pwsan.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.