All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vaibhav Bedia <vaibhav.bedia@ti.com>
To: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	tony@atomide.com, khilman@deeprootsystems.com
Cc: Vaibhav Bedia <vaibhav.bedia@ti.com>,
	Santosh Shilimkar <santosh.shilimkar@ti.com>,
	Benoit Cousson <b-cousson@ti.com>, Paul Walmsley <paul@pwsan.com>,
	Vaibhav Hiremath <hvaibhav@ti.com>
Subject: [RFC v2 14/18] ARM: OMAP2+: AM33XX: control: Add some control module registers and APIs
Date: Mon, 31 Dec 2012 18:37:07 +0530	[thread overview]
Message-ID: <1356959231-17335-15-git-send-email-vaibhav.bedia@ti.com> (raw)
In-Reply-To: <1356959231-17335-1-git-send-email-vaibhav.bedia@ti.com>

Add minimal APIs for writing to the IPC and the M3_TXEV registers
in the Control module. These will be used in a subsequent patch which
adds suspend-resume support for AM33XX.

Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Cc: Tony Lingren <tony@atomide.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Vaibhav Hiremath <hvaibhav@ti.com>
---
v1->v2:
	This a new patch in the series to isolate
	the control module accesses as pointed out
	by Kevin Hilman.

 arch/arm/mach-omap2/control.c |   20 ++++++++++++++++++++
 arch/arm/mach-omap2/control.h |   41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c
index 2adb268..c5d54ae 100644
--- a/arch/arm/mach-omap2/control.c
+++ b/arch/arm/mach-omap2/control.c
@@ -604,3 +604,23 @@ int omap3_ctrl_save_padconf(void)
 }
 
 #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */
+
+#if defined(CONFIG_SOC_AM33XX) && defined(CONFIG_PM)
+void am33xx_txev_eoi(void)
+{
+	omap_ctrl_writel(AM33XX_M3_TXEV_ACK, AM33XX_CONTROL_M3_TXEV_EOI);
+}
+
+void am33xx_txev_enable(void)
+{
+	omap_ctrl_writel(AM33XX_M3_TXEV_ENABLE, AM33XX_CONTROL_M3_TXEV_EOI);
+}
+
+void am33xx_wkup_m3_ipc_cmd(struct am33xx_ipc_data *data)
+{
+	omap_ctrl_writel(data->resume_addr, AM33XX_CONTROL_IPC_MSG_REG0);
+	omap_ctrl_writel(data->sleep_mode, AM33XX_CONTROL_IPC_MSG_REG1);
+	omap_ctrl_writel(data->param1, AM33XX_CONTROL_IPC_MSG_REG2);
+	omap_ctrl_writel(data->param2, AM33XX_CONTROL_IPC_MSG_REG3);
+}
+#endif /* CONFIG_SOC_AM33XX && CONFIG_PM */
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h
index 3d944d3..4b05eb9 100644
--- a/arch/arm/mach-omap2/control.h
+++ b/arch/arm/mach-omap2/control.h
@@ -358,6 +358,37 @@
 #define AM33XX_CONTROL_STATUS_SYSBOOT1_WIDTH		0x2
 #define AM33XX_CONTROL_STATUS_SYSBOOT1_MASK		(0x3 << 22)
 
+#define AM33XX_DDR_IO_CTRL		0x0E04
+#define AM33XX_VTP0_CTRL_REG		0x0E0C
+
+/* AM33XX VTP0_CTRL_REG bits */
+#define AM33XX_VTP_CTRL_START_EN	(1 << 0)
+#define AM33XX_VTP_CTRL_LOCK_EN		(1 << 4)
+#define AM33XX_VTP_CTRL_READY		(1 << 5)
+#define AM33XX_VTP_CTRL_ENABLE		(1 << 6)
+
+/* AM33XX M3_TXEV_EOI register */
+#define AM33XX_CONTROL_M3_TXEV_EOI	0x1324
+
+#define AM33XX_M3_TXEV_ACK		(0x1 << 0)
+#define AM33XX_M3_TXEV_ENABLE		(0x0 << 0)
+
+/* AM33XX IPC message registers */
+#define AM33XX_CONTROL_IPC_MSG_REG0	0x1328
+#define AM33XX_CONTROL_IPC_MSG_REG1	0x132C
+#define AM33XX_CONTROL_IPC_MSG_REG2	0x1330
+#define AM33XX_CONTROL_IPC_MSG_REG3	0x1334
+#define AM33XX_CONTROL_IPC_MSG_REG4	0x1338
+#define AM33XX_CONTROL_IPC_MSG_REG5	0x133C
+#define AM33XX_CONTROL_IPC_MSG_REG6	0x1340
+#define AM33XX_CONTROL_IPC_MSG_REG7	0x1344
+
+#define AM33XX_DDR_CMD0_IOCTRL		0x1404
+#define AM33XX_DDR_CMD1_IOCTRL		0x1408
+#define AM33XX_DDR_CMD2_IOCTRL		0x140C
+#define AM33XX_DDR_DATA0_IOCTRL		0x1440
+#define AM33XX_DDR_DATA1_IOCTRL		0x1444
+
 /* CONTROL OMAP STATUS register to identify OMAP3 features */
 #define OMAP3_CONTROL_OMAP_STATUS	0x044c
 
@@ -417,6 +448,16 @@ extern void omap3630_ctrl_disable_rta(void);
 extern int omap3_ctrl_save_padconf(void);
 extern void omap2_set_globals_control(void __iomem *ctrl,
 				      void __iomem *ctrl_pad);
+struct am33xx_ipc_data {
+	u32 resume_addr;
+	u32 param1;
+	u32 param2;
+	u32 sleep_mode;
+};
+extern void am33xx_wkup_m3_ipc_cmd(struct am33xx_ipc_data *data);
+extern void am33xx_txev_eoi(void);
+extern void am33xx_txev_enable(void);
+
 #else
 #define omap_ctrl_base_get()		0
 #define omap_ctrl_readb(x)		0
-- 
1.7.0.4


WARNING: multiple messages have this Message-ID (diff)
From: vaibhav.bedia@ti.com (Vaibhav Bedia)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC v2 14/18] ARM: OMAP2+: AM33XX: control: Add some control module registers and APIs
Date: Mon, 31 Dec 2012 18:37:07 +0530	[thread overview]
Message-ID: <1356959231-17335-15-git-send-email-vaibhav.bedia@ti.com> (raw)
In-Reply-To: <1356959231-17335-1-git-send-email-vaibhav.bedia@ti.com>

Add minimal APIs for writing to the IPC and the M3_TXEV registers
in the Control module. These will be used in a subsequent patch which
adds suspend-resume support for AM33XX.

Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Cc: Tony Lingren <tony@atomide.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Vaibhav Hiremath <hvaibhav@ti.com>
---
v1->v2:
	This a new patch in the series to isolate
	the control module accesses as pointed out
	by Kevin Hilman.

 arch/arm/mach-omap2/control.c |   20 ++++++++++++++++++++
 arch/arm/mach-omap2/control.h |   41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c
index 2adb268..c5d54ae 100644
--- a/arch/arm/mach-omap2/control.c
+++ b/arch/arm/mach-omap2/control.c
@@ -604,3 +604,23 @@ int omap3_ctrl_save_padconf(void)
 }
 
 #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */
+
+#if defined(CONFIG_SOC_AM33XX) && defined(CONFIG_PM)
+void am33xx_txev_eoi(void)
+{
+	omap_ctrl_writel(AM33XX_M3_TXEV_ACK, AM33XX_CONTROL_M3_TXEV_EOI);
+}
+
+void am33xx_txev_enable(void)
+{
+	omap_ctrl_writel(AM33XX_M3_TXEV_ENABLE, AM33XX_CONTROL_M3_TXEV_EOI);
+}
+
+void am33xx_wkup_m3_ipc_cmd(struct am33xx_ipc_data *data)
+{
+	omap_ctrl_writel(data->resume_addr, AM33XX_CONTROL_IPC_MSG_REG0);
+	omap_ctrl_writel(data->sleep_mode, AM33XX_CONTROL_IPC_MSG_REG1);
+	omap_ctrl_writel(data->param1, AM33XX_CONTROL_IPC_MSG_REG2);
+	omap_ctrl_writel(data->param2, AM33XX_CONTROL_IPC_MSG_REG3);
+}
+#endif /* CONFIG_SOC_AM33XX && CONFIG_PM */
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h
index 3d944d3..4b05eb9 100644
--- a/arch/arm/mach-omap2/control.h
+++ b/arch/arm/mach-omap2/control.h
@@ -358,6 +358,37 @@
 #define AM33XX_CONTROL_STATUS_SYSBOOT1_WIDTH		0x2
 #define AM33XX_CONTROL_STATUS_SYSBOOT1_MASK		(0x3 << 22)
 
+#define AM33XX_DDR_IO_CTRL		0x0E04
+#define AM33XX_VTP0_CTRL_REG		0x0E0C
+
+/* AM33XX VTP0_CTRL_REG bits */
+#define AM33XX_VTP_CTRL_START_EN	(1 << 0)
+#define AM33XX_VTP_CTRL_LOCK_EN		(1 << 4)
+#define AM33XX_VTP_CTRL_READY		(1 << 5)
+#define AM33XX_VTP_CTRL_ENABLE		(1 << 6)
+
+/* AM33XX M3_TXEV_EOI register */
+#define AM33XX_CONTROL_M3_TXEV_EOI	0x1324
+
+#define AM33XX_M3_TXEV_ACK		(0x1 << 0)
+#define AM33XX_M3_TXEV_ENABLE		(0x0 << 0)
+
+/* AM33XX IPC message registers */
+#define AM33XX_CONTROL_IPC_MSG_REG0	0x1328
+#define AM33XX_CONTROL_IPC_MSG_REG1	0x132C
+#define AM33XX_CONTROL_IPC_MSG_REG2	0x1330
+#define AM33XX_CONTROL_IPC_MSG_REG3	0x1334
+#define AM33XX_CONTROL_IPC_MSG_REG4	0x1338
+#define AM33XX_CONTROL_IPC_MSG_REG5	0x133C
+#define AM33XX_CONTROL_IPC_MSG_REG6	0x1340
+#define AM33XX_CONTROL_IPC_MSG_REG7	0x1344
+
+#define AM33XX_DDR_CMD0_IOCTRL		0x1404
+#define AM33XX_DDR_CMD1_IOCTRL		0x1408
+#define AM33XX_DDR_CMD2_IOCTRL		0x140C
+#define AM33XX_DDR_DATA0_IOCTRL		0x1440
+#define AM33XX_DDR_DATA1_IOCTRL		0x1444
+
 /* CONTROL OMAP STATUS register to identify OMAP3 features */
 #define OMAP3_CONTROL_OMAP_STATUS	0x044c
 
@@ -417,6 +448,16 @@ extern void omap3630_ctrl_disable_rta(void);
 extern int omap3_ctrl_save_padconf(void);
 extern void omap2_set_globals_control(void __iomem *ctrl,
 				      void __iomem *ctrl_pad);
+struct am33xx_ipc_data {
+	u32 resume_addr;
+	u32 param1;
+	u32 param2;
+	u32 sleep_mode;
+};
+extern void am33xx_wkup_m3_ipc_cmd(struct am33xx_ipc_data *data);
+extern void am33xx_txev_eoi(void);
+extern void am33xx_txev_enable(void);
+
 #else
 #define omap_ctrl_base_get()		0
 #define omap_ctrl_readb(x)		0
-- 
1.7.0.4

  parent reply	other threads:[~2012-12-31 13:08 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-31 13:06 [RFC v2 00/18] ARM: OMAP2+: AM33XX: Add suspend-resume support Vaibhav Bedia
2012-12-31 13:06 ` Vaibhav Bedia
2012-12-31 13:06 ` [RFC v2 01/18] mailbox: OMAP2+: Add support for AM33XX Vaibhav Bedia
2012-12-31 13:06   ` Vaibhav Bedia
2013-01-01 18:25   ` Tony Lindgren
2013-01-01 18:25     ` Tony Lindgren
2013-01-02 11:09     ` Bedia, Vaibhav
2013-01-02 11:09       ` Bedia, Vaibhav
2013-01-08 13:53   ` Santosh Shilimkar
2013-01-08 13:53     ` Santosh Shilimkar
2013-01-09  5:16     ` Bedia, Vaibhav
2013-01-09  5:16       ` Bedia, Vaibhav
2012-12-31 13:06 ` [RFC v2 02/18] mailbox: Add an API for flushing the FIFO Vaibhav Bedia
2012-12-31 13:06   ` Vaibhav Bedia
2013-01-08 13:56   ` Santosh Shilimkar
2013-01-08 13:56     ` Santosh Shilimkar
2013-01-09  5:16     ` Bedia, Vaibhav
2013-01-09  5:16       ` Bedia, Vaibhav
2012-12-31 13:06 ` [RFC v2 03/18] memory: emif: Move EMIF related header file to include/linux/ Vaibhav Bedia
2012-12-31 13:06   ` Vaibhav Bedia
2013-01-08 14:04   ` Santosh Shilimkar
2013-01-08 14:04     ` Santosh Shilimkar
2013-01-09  5:31     ` Bedia, Vaibhav
2013-01-09  5:31       ` Bedia, Vaibhav
2012-12-31 13:06 ` [RFC v2 04/18] ARM: OMAP2+: AM33XX: CM: Get rid of unncessary header inclusions Vaibhav Bedia
2012-12-31 13:06   ` Vaibhav Bedia
2013-01-08 15:00   ` Santosh Shilimkar
2013-01-08 15:00     ` Santosh Shilimkar
2012-12-31 13:06 ` [RFC v2 05/18] ARM: OMAP2+: AM33XX: CM/PRM: Use __ASSEMBLER__ macros in header files Vaibhav Bedia
2012-12-31 13:06   ` Vaibhav Bedia
2013-01-08 15:01   ` Santosh Shilimkar
2013-01-08 15:01     ` Santosh Shilimkar
2013-01-09  5:31     ` Bedia, Vaibhav
2013-01-09  5:31       ` Bedia, Vaibhav
2012-12-31 13:06 ` [RFC v2 06/18] ARM: OMAP2+: AM33XX: hwmod: Register OCMC RAM hwmod Vaibhav Bedia
2012-12-31 13:06   ` Vaibhav Bedia
2013-01-08 15:04   ` Santosh Shilimkar
2013-01-08 15:04     ` Santosh Shilimkar
2012-12-31 13:07 ` [RFC v2 07/18] ARM: OMAP2+: AM33XX: hwmod: Update TPTC0 hwmod with the right flags Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:05   ` Santosh Shilimkar
2013-01-08 15:05     ` Santosh Shilimkar
2013-01-09  6:02     ` Bedia, Vaibhav
2013-01-09  6:02       ` Bedia, Vaibhav
2013-02-11 23:33   ` Kevin Hilman
2013-02-11 23:33     ` Kevin Hilman
2013-02-13 10:56     ` Bedia, Vaibhav
2013-02-13 10:56       ` Bedia, Vaibhav
2012-12-31 13:07 ` [RFC v2 08/18] ARM: OMAP2+: AM33XX: hwmod: Fixup cpgmac0 hwmod entry Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:08   ` Santosh Shilimkar
2013-01-08 15:08     ` Santosh Shilimkar
2012-12-31 13:07 ` [RFC v2 09/18] ARM: OMAP2+: AM33XX: hwmod: Update the WKUP-M3 hwmod with reset status bit Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:09   ` Santosh Shilimkar
2013-01-08 15:09     ` Santosh Shilimkar
2012-12-31 13:07 ` [RFC v2 10/18] ARM: OMAP2+: AM33XX: Update the hardreset API Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:10   ` Santosh Shilimkar
2013-01-08 15:10     ` Santosh Shilimkar
2012-12-31 13:07 ` [RFC v2 11/18] ARM: DTS: AM33XX: Add nodes for OCMC RAM and WKUP-M3 Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:12   ` Santosh Shilimkar
2013-01-08 15:12     ` Santosh Shilimkar
2012-12-31 13:07 ` [RFC v2 12/18] ARM: OMAP2+: timer: Add suspend-resume callbacks for clockevent device Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:15   ` Santosh Shilimkar
2013-01-08 15:15     ` Santosh Shilimkar
2013-01-11  4:37     ` Bedia, Vaibhav
2013-01-11  4:37       ` Bedia, Vaibhav
2013-01-17 18:45       ` Jon Hunter
2013-01-17 18:45         ` Jon Hunter
2013-01-18  5:25         ` Santosh Shilimkar
2013-01-18  5:25           ` Santosh Shilimkar
2013-01-21  7:22           ` Bedia, Vaibhav
2013-01-21  7:22             ` Bedia, Vaibhav
2013-01-30 17:46             ` Jon Hunter
2013-01-30 17:46               ` Jon Hunter
2013-01-31 11:17               ` Bedia, Vaibhav
2013-01-31 11:17                 ` Bedia, Vaibhav
2013-01-17 18:40   ` Jon Hunter
2013-01-17 18:40     ` Jon Hunter
2013-01-21  7:22     ` Bedia, Vaibhav
2013-01-21  7:22       ` Bedia, Vaibhav
2012-12-31 13:07 ` [RFC v2 13/18] ARM: OMAP2+: AM33XX: timer: Interchance clkevt and clksrc timers Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:17   ` Santosh Shilimkar
2013-01-08 15:17     ` Santosh Shilimkar
2013-01-09  5:31     ` Bedia, Vaibhav
2013-01-09  5:31       ` Bedia, Vaibhav
2013-01-17 19:09   ` Jon Hunter
2013-01-17 19:09     ` Jon Hunter
2013-01-24 22:30   ` Jon Hunter
2013-01-24 22:30     ` Jon Hunter
2013-01-30 17:48     ` Jon Hunter
2013-01-30 17:48       ` Jon Hunter
2013-01-30 17:49       ` Jon Hunter
2013-01-30 17:49         ` Jon Hunter
2013-01-31 11:29         ` Bedia, Vaibhav
2013-01-31 11:29           ` Bedia, Vaibhav
2012-12-31 13:07 ` Vaibhav Bedia [this message]
2012-12-31 13:07   ` [RFC v2 14/18] ARM: OMAP2+: AM33XX: control: Add some control module registers and APIs Vaibhav Bedia
2013-01-08 15:21   ` Santosh Shilimkar
2013-01-08 15:21     ` Santosh Shilimkar
2013-01-09  5:38     ` Bedia, Vaibhav
2013-01-09  5:38       ` Bedia, Vaibhav
2013-01-09  7:31       ` Santosh Shilimkar
2013-01-09  7:31         ` Santosh Shilimkar
2013-01-09  9:37         ` Bedia, Vaibhav
2013-01-09  9:37           ` Bedia, Vaibhav
2013-01-09  9:53           ` Santosh Shilimkar
2013-01-09  9:53             ` Santosh Shilimkar
2012-12-31 13:07 ` [RFC v2 15/18] ARM: OMAP2+: AM33XX: Add assembly code for PM operations Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2012-12-31 13:07 ` [RFC v2 16/18] ARM: OMAP2+: AM33XX: Basic suspend resume support Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-17 14:27   ` Peter Korsgaard
2013-01-17 14:27     ` Peter Korsgaard
2013-01-21 10:37     ` Bedia, Vaibhav
2013-01-21 10:37       ` Bedia, Vaibhav
2013-01-22 12:50       ` Peter Korsgaard
2013-01-22 12:50         ` Peter Korsgaard
2013-02-12  1:27   ` Kevin Hilman
2013-02-12  1:27     ` Kevin Hilman
2013-02-13 13:43     ` Bedia, Vaibhav
2013-02-13 13:43       ` Bedia, Vaibhav
2013-02-18 16:11       ` Kevin Hilman
2013-02-18 16:11         ` Kevin Hilman
2013-02-20  9:21         ` Bedia, Vaibhav
2013-02-20  9:21           ` Bedia, Vaibhav
2013-02-20 14:30           ` Kevin Hilman
2013-02-20 14:30             ` Kevin Hilman
2013-04-03 11:52   ` Daniel Mack
2013-04-03 11:52     ` Daniel Mack
2013-04-04  8:47     ` Bedia, Vaibhav
2013-04-04  8:47       ` Bedia, Vaibhav
2012-12-31 13:07 ` [RFC v2 17/18] ARM: OMAP2+: AM33XX: Select Mailbox when PM is enabled Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:22   ` Santosh Shilimkar
2013-01-08 15:22     ` Santosh Shilimkar
2013-01-09  5:38     ` Bedia, Vaibhav
2013-01-09  5:38       ` Bedia, Vaibhav
2012-12-31 13:07 ` [RFC v2 18/18] ARM: OMAP2+: AM33XX: Hookup AM33XX PM code into OMAP builds Vaibhav Bedia
2012-12-31 13:07   ` Vaibhav Bedia
2013-01-08 15:31 ` [RFC v2 00/18] ARM: OMAP2+: AM33XX: Add suspend-resume support Santosh Shilimkar
2013-01-08 15:31   ` Santosh Shilimkar
2013-01-09  5:38   ` Bedia, Vaibhav
2013-01-09  5:38     ` Bedia, Vaibhav

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=1356959231-17335-15-git-send-email-vaibhav.bedia@ti.com \
    --to=vaibhav.bedia@ti.com \
    --cc=b-cousson@ti.com \
    --cc=hvaibhav@ti.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=paul@pwsan.com \
    --cc=santosh.shilimkar@ti.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.