linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] AM335x: tsc: Fix suspended while touchscreen in use
@ 2016-05-16 11:26 Vignesh R
  2016-05-16 11:26 ` [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable Vignesh R
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Vignesh R @ 2016-05-16 11:26 UTC (permalink / raw)
  To: Dmitry Torokhov, Lee Jones
  Cc: Vignesh R, Grygorii Strashko, Dave Gerlach, linux-input, linux-kernel

On am335x-evm, its observed that touchscreen fails to wake system from
suspend if user had finger on touch screen while entering system.
This series addresses the above issue.


Grygorii Strashko (2):
  Input: ti_am335x_tsc - Prevent system suspend when TSC is in use
  Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend

Vignesh R (1):
  Input: ti_am335x_tsc - Mark IRQ as wakeup capable

 drivers/input/touchscreen/ti_am335x_tsc.c | 14 ++++++++++++++
 include/linux/mfd/ti_am335x_tscadc.h      |  1 +
 2 files changed, 15 insertions(+)

-- 
2.8.2

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable
  2016-05-16 11:26 [PATCH 0/3] AM335x: tsc: Fix suspended while touchscreen in use Vignesh R
@ 2016-05-16 11:26 ` Vignesh R
  2016-05-16 19:46   ` Dmitry Torokhov
  2016-05-16 11:26 ` [PATCH 2/3] Input: ti_am335x_tsc - Prevent system suspend when TSC is in use Vignesh R
  2016-05-16 11:26 ` [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend Vignesh R
  2 siblings, 1 reply; 8+ messages in thread
From: Vignesh R @ 2016-05-16 11:26 UTC (permalink / raw)
  To: Dmitry Torokhov, Lee Jones
  Cc: Vignesh R, Grygorii Strashko, Dave Gerlach, linux-input, linux-kernel

On AM335x, ti_am335x_tsc can wake up the system from suspend, mark the
IRQ as wakeup capable, so that device irq is not disabled during system
suspend.

Signed-off-by: Vignesh R <vigneshr@ti.com>
---
 drivers/input/touchscreen/ti_am335x_tsc.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
index 8b3f15ca7725..f9fefbe337b9 100644
--- a/drivers/input/touchscreen/ti_am335x_tsc.c
+++ b/drivers/input/touchscreen/ti_am335x_tsc.c
@@ -27,6 +27,7 @@
 #include <linux/of.h>
 #include <linux/of_device.h>
 #include <linux/sort.h>
+#include <linux/pm_wakeirq.h>
 
 #include <linux/mfd/ti_am335x_tscadc.h>
 
@@ -432,6 +433,12 @@ static int titsc_probe(struct platform_device *pdev)
 		goto err_free_mem;
 	}
 
+	if (device_may_wakeup(tscadc_dev->dev)) {
+		err = dev_pm_set_wake_irq(tscadc_dev->dev, ts_dev->irq);
+		if (err)
+			dev_err(&pdev->dev, "irq wake enable failed.\n");
+	}
+
 	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_FIFO0THRES);
 	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_EOS);
 	err = titsc_config_wires(ts_dev);
@@ -462,6 +469,7 @@ static int titsc_probe(struct platform_device *pdev)
 	return 0;
 
 err_free_irq:
+	dev_pm_clear_wake_irq(tscadc_dev->dev);
 	free_irq(ts_dev->irq, ts_dev);
 err_free_mem:
 	input_free_device(input_dev);
@@ -474,6 +482,7 @@ static int titsc_remove(struct platform_device *pdev)
 	struct titsc *ts_dev = platform_get_drvdata(pdev);
 	u32 steps;
 
+	dev_pm_clear_wake_irq(ts_dev->mfd_tscadc->dev);
 	free_irq(ts_dev->irq, ts_dev);
 
 	/* total steps followed by the enable mask */
-- 
2.8.2

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] Input: ti_am335x_tsc - Prevent system suspend when TSC is in use
  2016-05-16 11:26 [PATCH 0/3] AM335x: tsc: Fix suspended while touchscreen in use Vignesh R
  2016-05-16 11:26 ` [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable Vignesh R
@ 2016-05-16 11:26 ` Vignesh R
  2016-05-16 11:26 ` [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend Vignesh R
  2 siblings, 0 replies; 8+ messages in thread
From: Vignesh R @ 2016-05-16 11:26 UTC (permalink / raw)
  To: Dmitry Torokhov, Lee Jones
  Cc: Vignesh R, Grygorii Strashko, Dave Gerlach, linux-input, linux-kernel

From: Grygorii Strashko <grygorii.strashko@ti.com>

Prevent system suspend while user has finger on touch screen,
because TSC is wakeup source and suspending device while in use will
result in failure to disable the module.
This patch uses pm_stay_awake() and pm_relax() APIs to prevent and
resume system suspend as required.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
 drivers/input/touchscreen/ti_am335x_tsc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
index f9fefbe337b9..4683ed18b9f8 100644
--- a/drivers/input/touchscreen/ti_am335x_tsc.c
+++ b/drivers/input/touchscreen/ti_am335x_tsc.c
@@ -275,6 +275,7 @@ static irqreturn_t titsc_irq(int irq, void *dev)
 	if (status & IRQENB_HW_PEN) {
 		ts_dev->pen_down = true;
 		irqclr |= IRQENB_HW_PEN;
+		pm_stay_awake(ts_dev->mfd_tscadc->dev);
 	}
 
 	if (status & IRQENB_PENUP) {
@@ -284,6 +285,7 @@ static irqreturn_t titsc_irq(int irq, void *dev)
 			input_report_key(input_dev, BTN_TOUCH, 0);
 			input_report_abs(input_dev, ABS_PRESSURE, 0);
 			input_sync(input_dev);
+			pm_relax(ts_dev->mfd_tscadc->dev);
 		} else {
 			ts_dev->pen_down = true;
 		}
@@ -522,6 +524,7 @@ static int __maybe_unused titsc_resume(struct device *dev)
 		titsc_writel(ts_dev, REG_IRQWAKEUP,
 				0x00);
 		titsc_writel(ts_dev, REG_IRQCLR, IRQENB_HW_PEN);
+		pm_relax(ts_dev->mfd_tscadc->dev);
 	}
 	titsc_step_config(ts_dev);
 	titsc_writel(ts_dev, REG_FIFO0THR,
-- 
2.8.2

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend
  2016-05-16 11:26 [PATCH 0/3] AM335x: tsc: Fix suspended while touchscreen in use Vignesh R
  2016-05-16 11:26 ` [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable Vignesh R
  2016-05-16 11:26 ` [PATCH 2/3] Input: ti_am335x_tsc - Prevent system suspend when TSC is in use Vignesh R
@ 2016-05-16 11:26 ` Vignesh R
  2016-05-16 19:44   ` Dmitry Torokhov
  2016-05-17  5:56   ` Lee Jones
  2 siblings, 2 replies; 8+ messages in thread
From: Vignesh R @ 2016-05-16 11:26 UTC (permalink / raw)
  To: Dmitry Torokhov, Lee Jones
  Cc: Vignesh R, Grygorii Strashko, Dave Gerlach, linux-input, linux-kernel

From: Grygorii Strashko <grygorii.strashko@ti.com>

It is seen that just enabling the TSC module triggers a HW_PEN IRQ
without any interaction with touchscreen by user. This results in first
suspend/resume sequence to fail as system immediately wakes up from
suspend as soon as HW_PEN IRQ is enabled in suspend handler. due to the
pending IRQ. Therefore clear all IRQs at probe and also in suspend
callback for sanity.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
 drivers/input/touchscreen/ti_am335x_tsc.c | 2 ++
 include/linux/mfd/ti_am335x_tscadc.h      | 1 +
 2 files changed, 3 insertions(+)

diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
index 4683ed18b9f8..d2c55b5730e6 100644
--- a/drivers/input/touchscreen/ti_am335x_tsc.c
+++ b/drivers/input/touchscreen/ti_am335x_tsc.c
@@ -441,6 +441,7 @@ static int titsc_probe(struct platform_device *pdev)
 			dev_err(&pdev->dev, "irq wake enable failed.\n");
 	}
 
+	titsc_writel(ts_dev, REG_IRQSTATUS, IRQENB_MASK);
 	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_FIFO0THRES);
 	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_EOS);
 	err = titsc_config_wires(ts_dev);
@@ -506,6 +507,7 @@ static int __maybe_unused titsc_suspend(struct device *dev)
 
 	tscadc_dev = ti_tscadc_dev_get(to_platform_device(dev));
 	if (device_may_wakeup(tscadc_dev->dev)) {
+		titsc_writel(ts_dev, REG_IRQSTATUS, IRQENB_MASK);
 		idle = titsc_readl(ts_dev, REG_IRQENABLE);
 		titsc_writel(ts_dev, REG_IRQENABLE,
 				(idle | IRQENB_HW_PEN));
diff --git a/include/linux/mfd/ti_am335x_tscadc.h b/include/linux/mfd/ti_am335x_tscadc.h
index 1fd50dcfe47c..a7ca0f908ba8 100644
--- a/include/linux/mfd/ti_am335x_tscadc.h
+++ b/include/linux/mfd/ti_am335x_tscadc.h
@@ -60,6 +60,7 @@
 #define IRQENB_FIFO1OVRRUN	BIT(6)
 #define IRQENB_FIFO1UNDRFLW	BIT(7)
 #define IRQENB_PENUP		BIT(9)
+#define IRQENB_MASK		(0x7FF)
 
 /* Step Configuration */
 #define STEPCONFIG_MODE_MASK	(3 << 0)
-- 
2.8.2

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend
  2016-05-16 11:26 ` [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend Vignesh R
@ 2016-05-16 19:44   ` Dmitry Torokhov
  2016-05-17  5:56   ` Lee Jones
  1 sibling, 0 replies; 8+ messages in thread
From: Dmitry Torokhov @ 2016-05-16 19:44 UTC (permalink / raw)
  To: Vignesh R
  Cc: Lee Jones, Grygorii Strashko, Dave Gerlach, linux-input, linux-kernel

On Mon, May 16, 2016 at 04:56:24PM +0530, Vignesh R wrote:
> From: Grygorii Strashko <grygorii.strashko@ti.com>
> 
> It is seen that just enabling the TSC module triggers a HW_PEN IRQ
> without any interaction with touchscreen by user. This results in first
> suspend/resume sequence to fail as system immediately wakes up from
> suspend as soon as HW_PEN IRQ is enabled in suspend handler. due to the
> pending IRQ. Therefore clear all IRQs at probe and also in suspend
> callback for sanity.

What if user touches the screen while device's suspend routine is
executing?

> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>  drivers/input/touchscreen/ti_am335x_tsc.c | 2 ++
>  include/linux/mfd/ti_am335x_tscadc.h      | 1 +
>  2 files changed, 3 insertions(+)
> 
> diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
> index 4683ed18b9f8..d2c55b5730e6 100644
> --- a/drivers/input/touchscreen/ti_am335x_tsc.c
> +++ b/drivers/input/touchscreen/ti_am335x_tsc.c
> @@ -441,6 +441,7 @@ static int titsc_probe(struct platform_device *pdev)
>  			dev_err(&pdev->dev, "irq wake enable failed.\n");
>  	}
>  
> +	titsc_writel(ts_dev, REG_IRQSTATUS, IRQENB_MASK);
>  	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_FIFO0THRES);
>  	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_EOS);
>  	err = titsc_config_wires(ts_dev);
> @@ -506,6 +507,7 @@ static int __maybe_unused titsc_suspend(struct device *dev)
>  
>  	tscadc_dev = ti_tscadc_dev_get(to_platform_device(dev));
>  	if (device_may_wakeup(tscadc_dev->dev)) {
> +		titsc_writel(ts_dev, REG_IRQSTATUS, IRQENB_MASK);
>  		idle = titsc_readl(ts_dev, REG_IRQENABLE);
>  		titsc_writel(ts_dev, REG_IRQENABLE,
>  				(idle | IRQENB_HW_PEN));
> diff --git a/include/linux/mfd/ti_am335x_tscadc.h b/include/linux/mfd/ti_am335x_tscadc.h
> index 1fd50dcfe47c..a7ca0f908ba8 100644
> --- a/include/linux/mfd/ti_am335x_tscadc.h
> +++ b/include/linux/mfd/ti_am335x_tscadc.h
> @@ -60,6 +60,7 @@
>  #define IRQENB_FIFO1OVRRUN	BIT(6)
>  #define IRQENB_FIFO1UNDRFLW	BIT(7)
>  #define IRQENB_PENUP		BIT(9)
> +#define IRQENB_MASK		(0x7FF)
>  
>  /* Step Configuration */
>  #define STEPCONFIG_MODE_MASK	(3 << 0)
> -- 
> 2.8.2
> 

-- 
Dmitry

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable
  2016-05-16 11:26 ` [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable Vignesh R
@ 2016-05-16 19:46   ` Dmitry Torokhov
  2016-05-17 10:14     ` Vignesh R
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Torokhov @ 2016-05-16 19:46 UTC (permalink / raw)
  To: Vignesh R
  Cc: Lee Jones, Grygorii Strashko, Dave Gerlach, linux-input, linux-kernel

On Mon, May 16, 2016 at 04:56:22PM +0530, Vignesh R wrote:
> On AM335x, ti_am335x_tsc can wake up the system from suspend, mark the
> IRQ as wakeup capable, so that device irq is not disabled during system
> suspend.

I would love for platform core to do this for us, like I2C core does.

> 
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>  drivers/input/touchscreen/ti_am335x_tsc.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
> index 8b3f15ca7725..f9fefbe337b9 100644
> --- a/drivers/input/touchscreen/ti_am335x_tsc.c
> +++ b/drivers/input/touchscreen/ti_am335x_tsc.c
> @@ -27,6 +27,7 @@
>  #include <linux/of.h>
>  #include <linux/of_device.h>
>  #include <linux/sort.h>
> +#include <linux/pm_wakeirq.h>
>  
>  #include <linux/mfd/ti_am335x_tscadc.h>
>  
> @@ -432,6 +433,12 @@ static int titsc_probe(struct platform_device *pdev)
>  		goto err_free_mem;
>  	}
>  
> +	if (device_may_wakeup(tscadc_dev->dev)) {
> +		err = dev_pm_set_wake_irq(tscadc_dev->dev, ts_dev->irq);
> +		if (err)
> +			dev_err(&pdev->dev, "irq wake enable failed.\n");
> +	}
> +
>  	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_FIFO0THRES);
>  	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_EOS);
>  	err = titsc_config_wires(ts_dev);
> @@ -462,6 +469,7 @@ static int titsc_probe(struct platform_device *pdev)
>  	return 0;
>  
>  err_free_irq:
> +	dev_pm_clear_wake_irq(tscadc_dev->dev);
>  	free_irq(ts_dev->irq, ts_dev);
>  err_free_mem:
>  	input_free_device(input_dev);
> @@ -474,6 +482,7 @@ static int titsc_remove(struct platform_device *pdev)
>  	struct titsc *ts_dev = platform_get_drvdata(pdev);
>  	u32 steps;
>  
> +	dev_pm_clear_wake_irq(ts_dev->mfd_tscadc->dev);
>  	free_irq(ts_dev->irq, ts_dev);
>  
>  	/* total steps followed by the enable mask */
> -- 
> 2.8.2
> 

-- 
Dmitry

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend
  2016-05-16 11:26 ` [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend Vignesh R
  2016-05-16 19:44   ` Dmitry Torokhov
@ 2016-05-17  5:56   ` Lee Jones
  1 sibling, 0 replies; 8+ messages in thread
From: Lee Jones @ 2016-05-17  5:56 UTC (permalink / raw)
  To: Vignesh R
  Cc: Dmitry Torokhov, Grygorii Strashko, Dave Gerlach, linux-input,
	linux-kernel

On Mon, 16 May 2016, Vignesh R wrote:

> From: Grygorii Strashko <grygorii.strashko@ti.com>
> 
> It is seen that just enabling the TSC module triggers a HW_PEN IRQ
> without any interaction with touchscreen by user. This results in first
> suspend/resume sequence to fail as system immediately wakes up from
> suspend as soon as HW_PEN IRQ is enabled in suspend handler. due to the
> pending IRQ. Therefore clear all IRQs at probe and also in suspend
> callback for sanity.
> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>  drivers/input/touchscreen/ti_am335x_tsc.c | 2 ++
>  include/linux/mfd/ti_am335x_tscadc.h      | 1 +

For the MFD change:
  Acked-by: Lee Jones <lee.jones@linaro.org>

>  2 files changed, 3 insertions(+)
> 
> diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
> index 4683ed18b9f8..d2c55b5730e6 100644
> --- a/drivers/input/touchscreen/ti_am335x_tsc.c
> +++ b/drivers/input/touchscreen/ti_am335x_tsc.c
> @@ -441,6 +441,7 @@ static int titsc_probe(struct platform_device *pdev)
>  			dev_err(&pdev->dev, "irq wake enable failed.\n");
>  	}
>  
> +	titsc_writel(ts_dev, REG_IRQSTATUS, IRQENB_MASK);
>  	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_FIFO0THRES);
>  	titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_EOS);
>  	err = titsc_config_wires(ts_dev);
> @@ -506,6 +507,7 @@ static int __maybe_unused titsc_suspend(struct device *dev)
>  
>  	tscadc_dev = ti_tscadc_dev_get(to_platform_device(dev));
>  	if (device_may_wakeup(tscadc_dev->dev)) {
> +		titsc_writel(ts_dev, REG_IRQSTATUS, IRQENB_MASK);
>  		idle = titsc_readl(ts_dev, REG_IRQENABLE);
>  		titsc_writel(ts_dev, REG_IRQENABLE,
>  				(idle | IRQENB_HW_PEN));
> diff --git a/include/linux/mfd/ti_am335x_tscadc.h b/include/linux/mfd/ti_am335x_tscadc.h
> index 1fd50dcfe47c..a7ca0f908ba8 100644
> --- a/include/linux/mfd/ti_am335x_tscadc.h
> +++ b/include/linux/mfd/ti_am335x_tscadc.h
> @@ -60,6 +60,7 @@
>  #define IRQENB_FIFO1OVRRUN	BIT(6)
>  #define IRQENB_FIFO1UNDRFLW	BIT(7)
>  #define IRQENB_PENUP		BIT(9)
> +#define IRQENB_MASK		(0x7FF)
>  
>  /* Step Configuration */
>  #define STEPCONFIG_MODE_MASK	(3 << 0)

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable
  2016-05-16 19:46   ` Dmitry Torokhov
@ 2016-05-17 10:14     ` Vignesh R
  0 siblings, 0 replies; 8+ messages in thread
From: Vignesh R @ 2016-05-17 10:14 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Lee Jones, Grygorii Strashko, Dave Gerlach, linux-input, linux-kernel



On 05/17/2016 01:16 AM, Dmitry Torokhov wrote:
> On Mon, May 16, 2016 at 04:56:22PM +0530, Vignesh R wrote:
>> On AM335x, ti_am335x_tsc can wake up the system from suspend, mark the
>> IRQ as wakeup capable, so that device irq is not disabled during system
>> suspend.
> 
> I would love for platform core to do this for us, like I2C core does.

Ok, I will replicate the same in input_register_device() for input core.

-- 
Regards
Vignesh

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-17 10:14 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-16 11:26 [PATCH 0/3] AM335x: tsc: Fix suspended while touchscreen in use Vignesh R
2016-05-16 11:26 ` [PATCH 1/3] Input: ti_am335x_tsc - Mark IRQ as wakeup capable Vignesh R
2016-05-16 19:46   ` Dmitry Torokhov
2016-05-17 10:14     ` Vignesh R
2016-05-16 11:26 ` [PATCH 2/3] Input: ti_am335x_tsc - Prevent system suspend when TSC is in use Vignesh R
2016-05-16 11:26 ` [PATCH 3/3] Input: ti_am335x_tsc - Ack pending IRQs at probe and before suspend Vignesh R
2016-05-16 19:44   ` Dmitry Torokhov
2016-05-17  5:56   ` Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).