From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] pwm-imx: Fix config / enable / disable
Date: Thu, 23 Aug 2012 20:58:35 +0000 [thread overview]
Message-ID: <1305545087.2775440.1345755837651.JavaMail.root@advansee.com> (raw)
In-Reply-To: <20120823191108.GB8127@avionic-0098.mockup.avionic-design.de>
imx_pwm_config() did not enable the PWM IP clock while accessing the registers.
Hence, a call to pwm_config() had no effect before pwm_enable() had been called,
which does not comply to the PWM API.
Moreover, calling pwm_disable() then pwm_enable() must be a transparent
operation.
This fixes the first setting of brightness through sysfs that had no effect with
leds-pwm.
Cc: Thierry Reding <thierry.reding@avionic-design.de>
Cc: <linux-kernel@vger.kernel.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
---
.../drivers/pwm/pwm-imx.c | 55 +++++++++++++++-----
1 file changed, 43 insertions(+), 12 deletions(-)
diff --git linux-next-c94456b.orig/drivers/pwm/pwm-imx.c linux-next-c94456b/drivers/pwm/pwm-imx.c
index 2a0b353..0519bf2 100644
--- linux-next-c94456b.orig/drivers/pwm/pwm-imx.c
+++ linux-next-c94456b/drivers/pwm/pwm-imx.c
@@ -55,6 +55,16 @@ static int imx_pwm_config(struct pwm_chip *chip,
{
struct imx_chip *imx = to_imx_chip(chip);
+ /*
+ * If the PWM is disabled, make sure to turn on the clock before
+ * accessing the registers.
+ */
+ if (!imx->clk_enabled) {
+ int rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+ }
+
if (!(cpu_is_mx1() || cpu_is_mx21())) {
unsigned long long c;
unsigned long period_cycles, duty_cycles, prescale;
@@ -85,8 +95,11 @@ static int imx_pwm_config(struct pwm_chip *chip,
writel(period_cycles, imx->mmio_base + MX3_PWMPR);
cr = MX3_PWMCR_PRESCALER(prescale) |
- MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN |
- MX3_PWMCR_DBGEN | MX3_PWMCR_EN;
+ MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN | MX3_PWMCR_DBGEN;
+
+ /* If the PWM is enabled, keep it so. */
+ if (imx->clk_enabled)
+ cr |= MX3_PWMCR_EN;
if (cpu_is_mx25())
cr |= MX3_PWMCR_CLKSRC_IPG;
@@ -118,32 +131,50 @@ static int imx_pwm_config(struct pwm_chip *chip,
BUG();
}
+ /* If the PWM is disabled, turn the clock off again to save power. */
+ if (!imx->clk_enabled)
+ clk_disable_unprepare(imx->clk);
+
return 0;
}
static int imx_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- int rc = 0;
+ int rc;
- if (!imx->clk_enabled) {
- rc = clk_prepare_enable(imx->clk);
- if (!rc)
- imx->clk_enabled = 1;
+ if (imx->clk_enabled)
+ return 0;
+
+ rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr |= MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
- return rc;
+
+ imx->clk_enabled = 1;
+ return 0;
}
static void imx_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- writel(0, imx->mmio_base + MX3_PWMCR);
+ if (!imx->clk_enabled)
+ return;
- if (imx->clk_enabled) {
- clk_disable_unprepare(imx->clk);
- imx->clk_enabled = 0;
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr &= ~MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
+
+ clk_disable_unprepare(imx->clk);
+ imx->clk_enabled = 0;
}
static struct pwm_ops imx_pwm_ops = {
WARNING: multiple messages have this Message-ID (diff)
From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: Thierry Reding <thierry.reding@avionic-design.de>,
linux-kernel@vger.kernel.org,
Sascha Hauer <kernel@pengutronix.de>,
linux-arm-kernel@lists.infradead.org
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
linux-input@vger.kernel.org, Bryan Wu <bryan.wu@canonical.com>,
Richard Purdie <rpurdie@rpsys.net>,
linux-leds@vger.kernel.org,
Florian Tobias Schandinat <FlorianSchandinat@gmx.de>,
linux-fbdev@vger.kernel.org, Lars-Peter Clausen <lars@metafoo.de>
Subject: [PATCH] pwm-imx: Fix config / enable / disable
Date: Thu, 23 Aug 2012 23:03:57 +0200 (CEST) [thread overview]
Message-ID: <1305545087.2775440.1345755837651.JavaMail.root@advansee.com> (raw)
In-Reply-To: <20120823191108.GB8127@avionic-0098.mockup.avionic-design.de>
imx_pwm_config() did not enable the PWM IP clock while accessing the registers.
Hence, a call to pwm_config() had no effect before pwm_enable() had been called,
which does not comply to the PWM API.
Moreover, calling pwm_disable() then pwm_enable() must be a transparent
operation.
This fixes the first setting of brightness through sysfs that had no effect with
leds-pwm.
Cc: Thierry Reding <thierry.reding@avionic-design.de>
Cc: <linux-kernel@vger.kernel.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
---
.../drivers/pwm/pwm-imx.c | 55 +++++++++++++++-----
1 file changed, 43 insertions(+), 12 deletions(-)
diff --git linux-next-c94456b.orig/drivers/pwm/pwm-imx.c linux-next-c94456b/drivers/pwm/pwm-imx.c
index 2a0b353..0519bf2 100644
--- linux-next-c94456b.orig/drivers/pwm/pwm-imx.c
+++ linux-next-c94456b/drivers/pwm/pwm-imx.c
@@ -55,6 +55,16 @@ static int imx_pwm_config(struct pwm_chip *chip,
{
struct imx_chip *imx = to_imx_chip(chip);
+ /*
+ * If the PWM is disabled, make sure to turn on the clock before
+ * accessing the registers.
+ */
+ if (!imx->clk_enabled) {
+ int rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+ }
+
if (!(cpu_is_mx1() || cpu_is_mx21())) {
unsigned long long c;
unsigned long period_cycles, duty_cycles, prescale;
@@ -85,8 +95,11 @@ static int imx_pwm_config(struct pwm_chip *chip,
writel(period_cycles, imx->mmio_base + MX3_PWMPR);
cr = MX3_PWMCR_PRESCALER(prescale) |
- MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN |
- MX3_PWMCR_DBGEN | MX3_PWMCR_EN;
+ MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN | MX3_PWMCR_DBGEN;
+
+ /* If the PWM is enabled, keep it so. */
+ if (imx->clk_enabled)
+ cr |= MX3_PWMCR_EN;
if (cpu_is_mx25())
cr |= MX3_PWMCR_CLKSRC_IPG;
@@ -118,32 +131,50 @@ static int imx_pwm_config(struct pwm_chip *chip,
BUG();
}
+ /* If the PWM is disabled, turn the clock off again to save power. */
+ if (!imx->clk_enabled)
+ clk_disable_unprepare(imx->clk);
+
return 0;
}
static int imx_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- int rc = 0;
+ int rc;
- if (!imx->clk_enabled) {
- rc = clk_prepare_enable(imx->clk);
- if (!rc)
- imx->clk_enabled = 1;
+ if (imx->clk_enabled)
+ return 0;
+
+ rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr |= MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
- return rc;
+
+ imx->clk_enabled = 1;
+ return 0;
}
static void imx_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- writel(0, imx->mmio_base + MX3_PWMCR);
+ if (!imx->clk_enabled)
+ return;
- if (imx->clk_enabled) {
- clk_disable_unprepare(imx->clk);
- imx->clk_enabled = 0;
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr &= ~MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
+
+ clk_disable_unprepare(imx->clk);
+ imx->clk_enabled = 0;
}
static struct pwm_ops imx_pwm_ops = {
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: benoit.thebaudeau@advansee.com (Benoît Thébaudeau)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] pwm-imx: Fix config / enable / disable
Date: Thu, 23 Aug 2012 23:03:57 +0200 (CEST) [thread overview]
Message-ID: <1305545087.2775440.1345755837651.JavaMail.root@advansee.com> (raw)
In-Reply-To: <20120823191108.GB8127@avionic-0098.mockup.avionic-design.de>
imx_pwm_config() did not enable the PWM IP clock while accessing the registers.
Hence, a call to pwm_config() had no effect before pwm_enable() had been called,
which does not comply to the PWM API.
Moreover, calling pwm_disable() then pwm_enable() must be a transparent
operation.
This fixes the first setting of brightness through sysfs that had no effect with
leds-pwm.
Cc: Thierry Reding <thierry.reding@avionic-design.de>
Cc: <linux-kernel@vger.kernel.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
---
.../drivers/pwm/pwm-imx.c | 55 +++++++++++++++-----
1 file changed, 43 insertions(+), 12 deletions(-)
diff --git linux-next-c94456b.orig/drivers/pwm/pwm-imx.c linux-next-c94456b/drivers/pwm/pwm-imx.c
index 2a0b353..0519bf2 100644
--- linux-next-c94456b.orig/drivers/pwm/pwm-imx.c
+++ linux-next-c94456b/drivers/pwm/pwm-imx.c
@@ -55,6 +55,16 @@ static int imx_pwm_config(struct pwm_chip *chip,
{
struct imx_chip *imx = to_imx_chip(chip);
+ /*
+ * If the PWM is disabled, make sure to turn on the clock before
+ * accessing the registers.
+ */
+ if (!imx->clk_enabled) {
+ int rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+ }
+
if (!(cpu_is_mx1() || cpu_is_mx21())) {
unsigned long long c;
unsigned long period_cycles, duty_cycles, prescale;
@@ -85,8 +95,11 @@ static int imx_pwm_config(struct pwm_chip *chip,
writel(period_cycles, imx->mmio_base + MX3_PWMPR);
cr = MX3_PWMCR_PRESCALER(prescale) |
- MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN |
- MX3_PWMCR_DBGEN | MX3_PWMCR_EN;
+ MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN | MX3_PWMCR_DBGEN;
+
+ /* If the PWM is enabled, keep it so. */
+ if (imx->clk_enabled)
+ cr |= MX3_PWMCR_EN;
if (cpu_is_mx25())
cr |= MX3_PWMCR_CLKSRC_IPG;
@@ -118,32 +131,50 @@ static int imx_pwm_config(struct pwm_chip *chip,
BUG();
}
+ /* If the PWM is disabled, turn the clock off again to save power. */
+ if (!imx->clk_enabled)
+ clk_disable_unprepare(imx->clk);
+
return 0;
}
static int imx_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- int rc = 0;
+ int rc;
- if (!imx->clk_enabled) {
- rc = clk_prepare_enable(imx->clk);
- if (!rc)
- imx->clk_enabled = 1;
+ if (imx->clk_enabled)
+ return 0;
+
+ rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr |= MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
- return rc;
+
+ imx->clk_enabled = 1;
+ return 0;
}
static void imx_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- writel(0, imx->mmio_base + MX3_PWMCR);
+ if (!imx->clk_enabled)
+ return;
- if (imx->clk_enabled) {
- clk_disable_unprepare(imx->clk);
- imx->clk_enabled = 0;
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr &= ~MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
+
+ clk_disable_unprepare(imx->clk);
+ imx->clk_enabled = 0;
}
static struct pwm_ops imx_pwm_ops = {
WARNING: multiple messages have this Message-ID (diff)
From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: Thierry Reding <thierry.reding@avionic-design.de>,
linux-kernel@vger.kernel.org,
Sascha Hauer <kernel@pengutronix.de>,
linux-arm-kernel@lists.infradead.org
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
linux-input@vger.kernel.org, Bryan Wu <bryan.wu@canonical.com>,
Richard Purdie <rpurdie@rpsys.net>,
linux-leds@vger.kernel.org,
Florian Tobias Schandinat <FlorianSchandinat@gmx.de>,
linux-fbdev@vger.kernel.org, Lars-Peter Clausen <lars@metafoo.de>
Subject: [PATCH] pwm-imx: Fix config / enable / disable
Date: Thu, 23 Aug 2012 23:03:57 +0200 (CEST) [thread overview]
Message-ID: <1305545087.2775440.1345755837651.JavaMail.root@advansee.com> (raw)
In-Reply-To: <20120823191108.GB8127@avionic-0098.mockup.avionic-design.de>
imx_pwm_config() did not enable the PWM IP clock while accessing the registers.
Hence, a call to pwm_config() had no effect before pwm_enable() had been called,
which does not comply to the PWM API.
Moreover, calling pwm_disable() then pwm_enable() must be a transparent
operation.
This fixes the first setting of brightness through sysfs that had no effect with
leds-pwm.
Cc: Thierry Reding <thierry.reding@avionic-design.de>
Cc: <linux-kernel@vger.kernel.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
---
.../drivers/pwm/pwm-imx.c | 55 +++++++++++++++-----
1 file changed, 43 insertions(+), 12 deletions(-)
diff --git linux-next-c94456b.orig/drivers/pwm/pwm-imx.c linux-next-c94456b/drivers/pwm/pwm-imx.c
index 2a0b353..0519bf2 100644
--- linux-next-c94456b.orig/drivers/pwm/pwm-imx.c
+++ linux-next-c94456b/drivers/pwm/pwm-imx.c
@@ -55,6 +55,16 @@ static int imx_pwm_config(struct pwm_chip *chip,
{
struct imx_chip *imx = to_imx_chip(chip);
+ /*
+ * If the PWM is disabled, make sure to turn on the clock before
+ * accessing the registers.
+ */
+ if (!imx->clk_enabled) {
+ int rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+ }
+
if (!(cpu_is_mx1() || cpu_is_mx21())) {
unsigned long long c;
unsigned long period_cycles, duty_cycles, prescale;
@@ -85,8 +95,11 @@ static int imx_pwm_config(struct pwm_chip *chip,
writel(period_cycles, imx->mmio_base + MX3_PWMPR);
cr = MX3_PWMCR_PRESCALER(prescale) |
- MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN |
- MX3_PWMCR_DBGEN | MX3_PWMCR_EN;
+ MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN | MX3_PWMCR_DBGEN;
+
+ /* If the PWM is enabled, keep it so. */
+ if (imx->clk_enabled)
+ cr |= MX3_PWMCR_EN;
if (cpu_is_mx25())
cr |= MX3_PWMCR_CLKSRC_IPG;
@@ -118,32 +131,50 @@ static int imx_pwm_config(struct pwm_chip *chip,
BUG();
}
+ /* If the PWM is disabled, turn the clock off again to save power. */
+ if (!imx->clk_enabled)
+ clk_disable_unprepare(imx->clk);
+
return 0;
}
static int imx_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- int rc = 0;
+ int rc;
- if (!imx->clk_enabled) {
- rc = clk_prepare_enable(imx->clk);
- if (!rc)
- imx->clk_enabled = 1;
+ if (imx->clk_enabled)
+ return 0;
+
+ rc = clk_prepare_enable(imx->clk);
+ if (rc)
+ return rc;
+
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr |= MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
- return rc;
+
+ imx->clk_enabled = 1;
+ return 0;
}
static void imx_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
{
struct imx_chip *imx = to_imx_chip(chip);
- writel(0, imx->mmio_base + MX3_PWMCR);
+ if (!imx->clk_enabled)
+ return;
- if (imx->clk_enabled) {
- clk_disable_unprepare(imx->clk);
- imx->clk_enabled = 0;
+ if (!(cpu_is_mx1() || cpu_is_mx21())) {
+ u32 cr = readl(imx->mmio_base + MX3_PWMCR);
+ cr &= ~MX3_PWMCR_EN;
+ writel(cr, imx->mmio_base + MX3_PWMCR);
}
+
+ clk_disable_unprepare(imx->clk);
+ imx->clk_enabled = 0;
}
static struct pwm_ops imx_pwm_ops = {
next prev parent reply other threads:[~2012-08-23 20:58 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <322770447.2755463.1345727876098.JavaMail.root@advansee.com>
2012-08-23 13:36 ` [BUG] leds-pwm: First setting of brightness does nothing Benoît Thébaudeau
2012-08-23 13:36 ` Benoît Thébaudeau
2012-08-23 14:19 ` [PATCH] pwm: Call pwm_enable() before pwm_config() Benoît Thébaudeau
2012-08-23 14:19 ` Benoît Thébaudeau
2012-08-23 14:19 ` Benoît Thébaudeau
2012-08-23 14:19 ` Benoît Thébaudeau
2012-08-23 15:43 ` Lars-Peter Clausen
2012-08-23 15:43 ` Lars-Peter Clausen
2012-08-23 15:43 ` Lars-Peter Clausen
2012-08-30 7:10 ` Jingoo Han
2012-08-30 7:10 ` Jingoo Han
2012-08-30 7:10 ` Jingoo Han
2012-08-23 16:57 ` Benoît Thébaudeau
2012-08-23 16:57 ` Benoît Thébaudeau
2012-08-23 16:57 ` Benoît Thébaudeau
2012-08-23 16:57 ` Benoît Thébaudeau
2012-08-23 17:12 ` Lars-Peter Clausen
2012-08-23 17:12 ` Lars-Peter Clausen
2012-08-23 17:12 ` Lars-Peter Clausen
2012-08-23 17:19 ` Lars-Peter Clausen
2012-08-23 17:19 ` Lars-Peter Clausen
2012-08-23 17:19 ` Lars-Peter Clausen
2012-08-23 19:04 ` Thierry Reding
2012-08-23 19:04 ` Thierry Reding
2012-08-23 19:04 ` Thierry Reding
2012-09-20 19:05 ` Mark Brown
2012-09-20 19:05 ` Mark Brown
2012-09-20 19:05 ` Mark Brown
2012-08-23 19:11 ` Thierry Reding
2012-08-23 19:11 ` Thierry Reding
2012-08-23 19:11 ` Thierry Reding
2012-08-23 20:58 ` Benoît Thébaudeau [this message]
2012-08-23 21:03 ` [PATCH] pwm-imx: Fix config / enable / disable Benoît Thébaudeau
2012-08-23 21:03 ` Benoît Thébaudeau
2012-08-23 21:03 ` Benoît Thébaudeau
2012-08-28 7:37 ` Sascha Hauer
2012-08-28 7:37 ` Sascha Hauer
2012-08-28 7:37 ` Sascha Hauer
2012-08-28 7:37 ` Sascha Hauer
2012-09-20 19:03 ` [PATCH] pwm: Call pwm_enable() before pwm_config() Mark Brown
2012-09-20 19:03 ` Mark Brown
2012-09-20 19:03 ` Mark Brown
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=1305545087.2775440.1345755837651.JavaMail.root@advansee.com \
--to=benoit.thebaudeau@advansee.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.