All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Lee Jones <lee.jones@linaro.org>
Cc: Guenter Roeck <linux@roeck-us.net>,
	linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
	Samuel Ortiz <sameo@linux.intel.com>,
	Tony Lindgren <tony@atomide.com>
Subject: Re: [PATCH v3 18/47] mfd: twl4030-power: Register with kernel power-off handler
Date: Mon, 3 Nov 2014 11:56:19 -0600	[thread overview]
Message-ID: <20141103175619.GP27425@saruman> (raw)
In-Reply-To: <20141103175427.GK12011@x1>

[-- Attachment #1: Type: text/plain, Size: 5060 bytes --]

Hi,

On Mon, Nov 03, 2014 at 05:54:27PM +0000, Lee Jones wrote:
> On Mon, 27 Oct 2014, Guenter Roeck wrote:
> 
> > Register with kernel power-off handler instead of setting pm_power_off
> > directly. Register with low priority to reflect that the original code
> > only sets pm_power_off if it was not already set.
> > 
> > Make twl4030_power_off static as it is only called from the twl4030-power
> > driver. Drop remove function as it is no longer needed.
> > 
> > Cc: Samuel Ortiz <sameo@linux.intel.com>
> > Cc: Lee Jones <lee.jones@linaro.org>
> > Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> > ---
> > v3:
> > - Replace poweroff in all newly introduced variables and in text
> >   with power_off or power-off as appropriate
> > - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
> > v2:
> > - Use define to specify poweroff handler priority
> > - Use dev_warn instead of dev_err
> > - Use devm_register_power_off_handler
> > - Drop remove function as it is no longer needed.
> > 
> >  drivers/mfd/twl4030-power.c | 29 +++++++++++++++++++----------
> >  include/linux/i2c/twl.h     |  1 -
> >  2 files changed, 19 insertions(+), 11 deletions(-)
> 
> Acked-by: Lee Jones <lee.jones@linaro.org>

this was not sent to lakml or linux-omap. Care to resend ?

> > diff --git a/drivers/mfd/twl4030-power.c b/drivers/mfd/twl4030-power.c
> > index cf92a6d..e36eea9 100644
> > --- a/drivers/mfd/twl4030-power.c
> > +++ b/drivers/mfd/twl4030-power.c
> > @@ -25,9 +25,10 @@
> >   */
> >  
> >  #include <linux/module.h>
> > -#include <linux/pm.h>
> > +#include <linux/notifier.h>
> >  #include <linux/i2c/twl.h>
> >  #include <linux/platform_device.h>
> > +#include <linux/pm.h>
> >  #include <linux/of.h>
> >  #include <linux/of_device.h>
> >  
> > @@ -611,7 +612,8 @@ twl4030_power_configure_resources(const struct twl4030_power_data *pdata)
> >   * After a successful execution, TWL shuts down the power to the SoC
> >   * and all peripherals connected to it.
> >   */
> > -void twl4030_power_off(void)
> > +static int twl4030_power_off(struct notifier_block *this, unsigned long unused1,
> > +			     void *unused2)
> >  {
> >  	int err;
> >  
> > @@ -619,8 +621,15 @@ void twl4030_power_off(void)
> >  			       TWL4030_PM_MASTER_P1_SW_EVENTS);
> >  	if (err)
> >  		pr_err("TWL4030 Unable to power off\n");
> > +
> > +	return NOTIFY_DONE;
> >  }
> >  
> > +static struct notifier_block twl4030_power_off_nb = {
> > +	.notifier_call = twl4030_power_off,
> > +	.priority = POWER_OFF_PRIORITY_LOW,
> > +};
> > +
> >  static bool twl4030_power_use_poweroff(const struct twl4030_power_data *pdata,
> >  					struct device_node *node)
> >  {
> > @@ -839,7 +848,9 @@ static int twl4030_power_probe(struct platform_device *pdev)
> >  	}
> >  
> >  	/* Board has to be wired properly to use this feature */
> > -	if (twl4030_power_use_poweroff(pdata, node) && !pm_power_off) {
> > +	if (twl4030_power_use_poweroff(pdata, node)) {
> > +		int ret;
> > +
> >  		/* Default for SEQ_OFFSYNC is set, lets ensure this */
> >  		err = twl_i2c_read_u8(TWL_MODULE_PM_MASTER, &val,
> >  				      TWL4030_PM_MASTER_CFG_P123_TRANSITION);
> > @@ -856,7 +867,11 @@ static int twl4030_power_probe(struct platform_device *pdev)
> >  			}
> >  		}
> >  
> > -		pm_power_off = twl4030_power_off;
> > +		ret = devm_register_power_off_handler(&pdev->dev,
> > +						      &twl4030_power_off_nb);
> > +		if (ret)
> > +			dev_warn(&pdev->dev,
> > +				 "Failed to register power-off handler\n");
> >  	}
> >  
> >  relock:
> > @@ -870,11 +885,6 @@ relock:
> >  	return err;
> >  }
> >  
> > -static int twl4030_power_remove(struct platform_device *pdev)
> > -{
> > -	return 0;
> > -}
> > -
> >  static struct platform_driver twl4030_power_driver = {
> >  	.driver = {
> >  		.name	= "twl4030_power",
> > @@ -882,7 +892,6 @@ static struct platform_driver twl4030_power_driver = {
> >  		.of_match_table = of_match_ptr(twl4030_power_of_match),
> >  	},
> >  	.probe		= twl4030_power_probe,
> > -	.remove		= twl4030_power_remove,
> >  };
> >  
> >  module_platform_driver(twl4030_power_driver);
> > diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h
> > index 8cfb50f..f8544f1 100644
> > --- a/include/linux/i2c/twl.h
> > +++ b/include/linux/i2c/twl.h
> > @@ -680,7 +680,6 @@ struct twl4030_power_data {
> >  };
> >  
> >  extern int twl4030_remove_script(u8 flags);
> > -extern void twl4030_power_off(void);
> >  
> >  struct twl4030_codec_data {
> >  	unsigned int digimic_delay; /* in ms */
> 
> -- 
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
> --
> 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/

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Felipe Balbi <balbi@ti.com>
To: Lee Jones <lee.jones@linaro.org>
Cc: Guenter Roeck <linux@roeck-us.net>,
	<linux-kernel@vger.kernel.org>, <linux-pm@vger.kernel.org>,
	Samuel Ortiz <sameo@linux.intel.com>,
	Tony Lindgren <tony@atomide.com>
Subject: Re: [PATCH v3 18/47] mfd: twl4030-power: Register with kernel power-off handler
Date: Mon, 3 Nov 2014 11:56:19 -0600	[thread overview]
Message-ID: <20141103175619.GP27425@saruman> (raw)
In-Reply-To: <20141103175427.GK12011@x1>

[-- Attachment #1: Type: text/plain, Size: 5060 bytes --]

Hi,

On Mon, Nov 03, 2014 at 05:54:27PM +0000, Lee Jones wrote:
> On Mon, 27 Oct 2014, Guenter Roeck wrote:
> 
> > Register with kernel power-off handler instead of setting pm_power_off
> > directly. Register with low priority to reflect that the original code
> > only sets pm_power_off if it was not already set.
> > 
> > Make twl4030_power_off static as it is only called from the twl4030-power
> > driver. Drop remove function as it is no longer needed.
> > 
> > Cc: Samuel Ortiz <sameo@linux.intel.com>
> > Cc: Lee Jones <lee.jones@linaro.org>
> > Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> > ---
> > v3:
> > - Replace poweroff in all newly introduced variables and in text
> >   with power_off or power-off as appropriate
> > - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
> > v2:
> > - Use define to specify poweroff handler priority
> > - Use dev_warn instead of dev_err
> > - Use devm_register_power_off_handler
> > - Drop remove function as it is no longer needed.
> > 
> >  drivers/mfd/twl4030-power.c | 29 +++++++++++++++++++----------
> >  include/linux/i2c/twl.h     |  1 -
> >  2 files changed, 19 insertions(+), 11 deletions(-)
> 
> Acked-by: Lee Jones <lee.jones@linaro.org>

this was not sent to lakml or linux-omap. Care to resend ?

> > diff --git a/drivers/mfd/twl4030-power.c b/drivers/mfd/twl4030-power.c
> > index cf92a6d..e36eea9 100644
> > --- a/drivers/mfd/twl4030-power.c
> > +++ b/drivers/mfd/twl4030-power.c
> > @@ -25,9 +25,10 @@
> >   */
> >  
> >  #include <linux/module.h>
> > -#include <linux/pm.h>
> > +#include <linux/notifier.h>
> >  #include <linux/i2c/twl.h>
> >  #include <linux/platform_device.h>
> > +#include <linux/pm.h>
> >  #include <linux/of.h>
> >  #include <linux/of_device.h>
> >  
> > @@ -611,7 +612,8 @@ twl4030_power_configure_resources(const struct twl4030_power_data *pdata)
> >   * After a successful execution, TWL shuts down the power to the SoC
> >   * and all peripherals connected to it.
> >   */
> > -void twl4030_power_off(void)
> > +static int twl4030_power_off(struct notifier_block *this, unsigned long unused1,
> > +			     void *unused2)
> >  {
> >  	int err;
> >  
> > @@ -619,8 +621,15 @@ void twl4030_power_off(void)
> >  			       TWL4030_PM_MASTER_P1_SW_EVENTS);
> >  	if (err)
> >  		pr_err("TWL4030 Unable to power off\n");
> > +
> > +	return NOTIFY_DONE;
> >  }
> >  
> > +static struct notifier_block twl4030_power_off_nb = {
> > +	.notifier_call = twl4030_power_off,
> > +	.priority = POWER_OFF_PRIORITY_LOW,
> > +};
> > +
> >  static bool twl4030_power_use_poweroff(const struct twl4030_power_data *pdata,
> >  					struct device_node *node)
> >  {
> > @@ -839,7 +848,9 @@ static int twl4030_power_probe(struct platform_device *pdev)
> >  	}
> >  
> >  	/* Board has to be wired properly to use this feature */
> > -	if (twl4030_power_use_poweroff(pdata, node) && !pm_power_off) {
> > +	if (twl4030_power_use_poweroff(pdata, node)) {
> > +		int ret;
> > +
> >  		/* Default for SEQ_OFFSYNC is set, lets ensure this */
> >  		err = twl_i2c_read_u8(TWL_MODULE_PM_MASTER, &val,
> >  				      TWL4030_PM_MASTER_CFG_P123_TRANSITION);
> > @@ -856,7 +867,11 @@ static int twl4030_power_probe(struct platform_device *pdev)
> >  			}
> >  		}
> >  
> > -		pm_power_off = twl4030_power_off;
> > +		ret = devm_register_power_off_handler(&pdev->dev,
> > +						      &twl4030_power_off_nb);
> > +		if (ret)
> > +			dev_warn(&pdev->dev,
> > +				 "Failed to register power-off handler\n");
> >  	}
> >  
> >  relock:
> > @@ -870,11 +885,6 @@ relock:
> >  	return err;
> >  }
> >  
> > -static int twl4030_power_remove(struct platform_device *pdev)
> > -{
> > -	return 0;
> > -}
> > -
> >  static struct platform_driver twl4030_power_driver = {
> >  	.driver = {
> >  		.name	= "twl4030_power",
> > @@ -882,7 +892,6 @@ static struct platform_driver twl4030_power_driver = {
> >  		.of_match_table = of_match_ptr(twl4030_power_of_match),
> >  	},
> >  	.probe		= twl4030_power_probe,
> > -	.remove		= twl4030_power_remove,
> >  };
> >  
> >  module_platform_driver(twl4030_power_driver);
> > diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h
> > index 8cfb50f..f8544f1 100644
> > --- a/include/linux/i2c/twl.h
> > +++ b/include/linux/i2c/twl.h
> > @@ -680,7 +680,6 @@ struct twl4030_power_data {
> >  };
> >  
> >  extern int twl4030_remove_script(u8 flags);
> > -extern void twl4030_power_off(void);
> >  
> >  struct twl4030_codec_data {
> >  	unsigned int digimic_delay; /* in ms */
> 
> -- 
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
> --
> 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/

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2014-11-03 17:56 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-27 15:55 [PATCH v3 00/47] kernel: Add support for power-off handler call chain Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 01/47] " Guenter Roeck
2014-10-28 17:49   ` Pavel Machek
2014-10-27 15:55 ` [PATCH v3 02/47] memory: emif: Use API function to determine power-off capability Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 03/47] hibernate: Call have_kernel_power_off instead of checking pm_power_off Guenter Roeck
2014-10-28 17:50   ` Pavel Machek
2014-10-27 15:55 ` [PATCH v3 04/47] m68k: Replace mach_power_off with pm_power_off Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
     [not found] ` <1414425354-10359-1-git-send-email-linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2014-10-27 15:55   ` [PATCH v3 05/47] mfd: as3722: Drop reference to pm_power_off from devicetree bindings Guenter Roeck
2014-10-27 15:55     ` Guenter Roeck
2014-10-27 15:55   ` [PATCH v3 07/47] qnap-poweroff: " Guenter Roeck
2014-10-27 15:55     ` Guenter Roeck
2014-10-27 15:55   ` [PATCH v3 46/47] efi: Register power-off handler with kernel power-off handler Guenter Roeck
2014-10-27 15:55     ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 06/47] gpio-poweroff: Drop reference to pm_power_off from devicetree bindings Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 08/47] kernel: Move pm_power_off to common code Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 09/47] mfd: palmas: Register with kernel power-off handler Guenter Roeck
2014-11-03 17:56   ` Lee Jones
2014-11-03 17:59     ` Felipe Balbi
2014-11-03 17:59       ` Felipe Balbi
2014-11-03 17:59       ` Felipe Balbi
2014-11-03 18:36       ` Guenter Roeck
2014-11-03 18:36         ` Guenter Roeck
2014-11-03 18:43         ` Felipe Balbi
2014-11-03 18:43           ` Felipe Balbi
2014-11-03 18:43           ` Felipe Balbi
2014-11-03 18:58           ` Guenter Roeck
2014-11-03 18:58             ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 10/47] mfd: axp20x: " Guenter Roeck
2014-11-03 17:56   ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 11/47] mfd: retu: " Guenter Roeck
2014-11-03 17:56   ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 12/47] mfd: ab8500-sysctrl: " Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-11-03 17:55   ` Lee Jones
2014-11-03 17:55     ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 13/47] mfd: max8907: " Guenter Roeck
2014-11-03 17:56   ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 14/47] mfd: tps80031: " Guenter Roeck
2014-11-03 17:55   ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 15/47] mfd: dm355evm_msp: " Guenter Roeck
2014-11-03 17:55   ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 16/47] mfd: tps6586x: " Guenter Roeck
2014-11-03 17:54   ` Lee Jones
2014-11-03 17:57   ` Felipe Balbi
2014-11-03 17:57     ` Felipe Balbi
2014-11-03 17:57     ` Felipe Balbi
2014-10-27 15:55 ` [PATCH v3 17/47] mfd: tps65910: " Guenter Roeck
2014-11-03 17:54   ` Lee Jones
2014-11-03 17:57   ` Felipe Balbi
2014-11-03 17:57     ` Felipe Balbi
2014-11-03 17:57     ` Felipe Balbi
2014-10-27 15:55 ` [PATCH v3 18/47] mfd: twl4030-power: " Guenter Roeck
2014-11-03 17:54   ` Lee Jones
2014-11-03 17:56     ` Felipe Balbi [this message]
2014-11-03 17:56       ` Felipe Balbi
2014-10-27 15:55 ` [PATCH v3 19/47] mfd: rk808: Register power-off handler " Guenter Roeck
2014-11-03 17:53   ` Lee Jones
2014-11-03 19:06     ` Guenter Roeck
2014-11-03 22:42       ` Lee Jones
2014-11-03 22:52         ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 20/47] mfd: rn5t618: " Guenter Roeck
2014-11-03 17:54   ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 21/47] ipmi: Register " Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 22/47] power/reset: restart-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 23/47] power/reset: gpio-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 24/47] power/reset: as3722-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 25/47] power/reset: qnap-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 26/47] power/reset: msm-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 27/47] power/reset: vexpress-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 28/47] power/reset: at91-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 29/47] power/reset: ltc2952-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 30/47] x86: iris: " Guenter Roeck
2014-11-01 19:41   ` Thomas Gleixner
2014-11-01 21:15     ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 31/47] x86: apm: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 32/47] x86: olpc: Register xo1 power-off handler " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 33/47] staging: nvec: Register " Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 34/47] acpi: Register power-off handler " Guenter Roeck
2014-10-28  0:26   ` Rafael J. Wysocki
2014-10-28  2:10     ` Guenter Roeck
2014-10-28 23:10       ` Rafael J. Wysocki
2014-10-29  2:05         ` Guenter Roeck
2014-10-29 15:13           ` Rafael J. Wysocki
2014-10-27 15:55 ` [PATCH v3 35/47] arm: Register " Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 36/47] arm64: psci: " Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 37/47] avr32: atngw100: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 38/47] ia64: " Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 39/47] m68k: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 40/47] mips: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 41/47] sh: " Guenter Roeck
2014-10-27 15:55   ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 42/47] x86: lguest: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 43/47] x86: ce4100: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 44/47] x86: intel-mid: Drop registration of dummy power-off handlers Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 45/47] x86: pmc_atom: Register power-off handler with kernel power-off handler Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 47/47] kernel: Remove pm_power_off Guenter Roeck
2014-10-28 17:50   ` Pavel Machek
2014-10-27 16:03 ` [PATCH v3 00/47] kernel: Add support for power-off handler call chain Felipe Balbi
2014-10-27 16:03   ` Felipe Balbi
2014-10-27 17:16   ` Guenter Roeck
2014-10-27 17:33     ` Felipe Balbi
2014-10-27 17:33       ` Felipe Balbi
2014-10-27 17:43       ` Johan Hovold
2014-11-03 17:59 ` Felipe Balbi
2014-11-03 17:59   ` Felipe Balbi
2014-11-03 17:59   ` Felipe Balbi
2014-11-03 18:22   ` Guenter Roeck
2014-11-03 18:22     ` Guenter Roeck
2014-11-03 18:28     ` Felipe Balbi
2014-11-03 18:28       ` Felipe Balbi
2014-11-03 18:28       ` Felipe Balbi
2014-11-03 18:49       ` Guenter Roeck
2014-11-03 18:49         ` Guenter Roeck

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=20141103175619.GP27425@saruman \
    --to=balbi@ti.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=sameo@linux.intel.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.