From: b.brezillon@overkiz.com (boris brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/9] ARM: at91/dt: add mmc0 slot0 support to at91rm9200ek board
Date: Fri, 29 Nov 2013 11:30:00 +0100 [thread overview]
Message-ID: <52986CA8.3010601@overkiz.com> (raw)
In-Reply-To: <CACRpkdZoAjuWVpWZfvPgOAd7qB1ZBtC+45nD3SYay3SrMhqwVA@mail.gmail.com>
Hello Linus,
On 29/11/2013 11:03, Linus Walleij wrote:
> P? tisdag, 26 Nov, 2013 vid 6:11 PM, skrev boris brezillon
> <b.brezillon@overkiz.com>:
>> Le 26/11/2013 14:46, Linus Walleij a ?crit :
>>> But in this case it is a mechanical switch rather than a jumper?
>> Not exactly.
>>
>> The functionnaly selection (spi device or mmc slot) is done by the software
>> using to the
>> PB22 pin:
>> - set PB22 pin to 1 if you want to enable the mmc slot
>> - set PB22 pin to 0 if you want to enable the spi device
> OK I got it wrong, I thought it was a mechanical switch. So this is a GPIO
> line somekindof, you control it like this, and it will have effects on the
> electronics.
>
> So to get the device running you need to both:
>
> - Switch the value of this GPIO line.
> - Switch pin control state.
>
> We are certain that the gpio_set_value() shall be used to set that GPIO
> line, because it does not control any pin control logic, it controls
> some electronics outside of the SoC, and that is outside the pin
> controller domain.
>
> I guess one way is to obtain this GPIO in board code and just
> flick it depending on which device you register.
>
> You can have GPIOs tied to the machine/board itself, see this
> fragment from arch/arm/boot/dts/ste-nomadik-s8815.dts:
>
> /* Custom board node with GPIO pins to active etc */
> usb-s8815 {
> /* This will bias the MMC/SD card detect line */
> mmcsd-gpio {
> gpios = <&gpio3 16 0x1>;
> };
> };
>
> This GPIO needs to be driven high to bias the MMC/SD card.
> I solved it like this in the board code in
> arch/arm/mach-nomadik/cpu-8815.c:
>
> /*
> * This GPIO pin turns on a line that is used to detect card insertion
> * on this board.
> */
> static int __init cpu8815_mmcsd_init(void)
> {
> struct device_node *cdbias;
> int gpio, err;
>
> cdbias = of_find_node_by_path("/usb-s8815/mmcsd-gpio");
> if (!cdbias) {
> pr_info("could not find MMC/SD card detect bias node\n");
> return 0;
> }
> gpio = of_get_gpio(cdbias, 0);
> if (gpio < 0) {
> pr_info("could not obtain MMC/SD card detect bias GPIO\n");
> return 0;
> }
> err = gpio_request(gpio, "card detect bias");
> if (err) {
> pr_info("failed to request card detect bias GPIO %d\n", gpio);
> return -ENODEV;
> }
> err = gpio_direction_output(gpio, 0);
> if (err){
> pr_info("failed to set GPIO %d as output, low\n", gpio);
> return err;
> }
> pr_info("enabled USB-S8815 CD bias GPIO %d, low\n", gpio);
> return 0;
> }
> device_initcall(cpu8815_mmcsd_init);
>
> This is maybe not a perfect approach :-/
>
> But you get the idea. You could set this up one way or another
> depending on whether this board is registering a device for
> SPI or MMC.
The whole goal of moving from board files to dt is to drop all board
specific processing or initialization and only keep a common description
with generic drivers capable of handling common use cases.
I'm not sure providing new board specific drivers is a good solution
(even if it is the simplest way to achieve our goal).
Could we have something similar to pinctrl but with gpios :
when the device is probed the device/driver core code request the gpio
configure it appropriately and set it to the requested value (if configured
as output).
Or even better, provide an external switch subsystem (with a gpio-switch
driver)
and automate switch request/config in device/driver core code (as done
for the
pinctrl config).
These are just thoughts, and I guess introducing new code in the
device/driver core
code is not that easy, especially when this code is here to handle
specific case
like ours.
Thanks for sharing your thoughts.
Best Regards,
Boris
>
> Probably Jean-Christophe has opinions on this so let's see what
> he says.
>
>> If I understand correctly, you're suggesting to retrieve the PB22 pin value
>> to decide
>> wether the mmc slot or the spi device is enabled. Is that right ?
> Forget about this, I didn't understand the real problem.
>
>> In the board version this was configured in the init_machine function (or
>> board init
>> function) depending on the MTD_AT91_DATAFLASH_CARD
>> (
>> http://lxr.free-electrons.com/source/arch/arm/mach-at91/board-rm9200ek.c#L173).
>> As a result it was not reconfigurable at runtime.
>>
>> But Jean-Christophe suggested to make it configurable at runtime (using dt
>> fragments).
> It should definately be set up at runtime, just a matter where and
> how.
>
> Yours,
> Linus Walleij
WARNING: multiple messages have this Message-ID (diff)
From: boris brezillon <b.brezillon-ZNYIgs0QAGpBDgjK7y7TUQ@public.gmane.org>
To: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Jean-Christophe PLAGNIOL-VILLARD
<plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>,
Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
Ian Campbell
<ian.campbell-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>,
Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
Nicolas Ferre
<nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>,
Joachim Eastwood
<manabian-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH 5/9] ARM: at91/dt: add mmc0 slot0 support to at91rm9200ek board
Date: Fri, 29 Nov 2013 11:30:00 +0100 [thread overview]
Message-ID: <52986CA8.3010601@overkiz.com> (raw)
In-Reply-To: <CACRpkdZoAjuWVpWZfvPgOAd7qB1ZBtC+45nD3SYay3SrMhqwVA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
Hello Linus,
On 29/11/2013 11:03, Linus Walleij wrote:
> På tisdag, 26 Nov, 2013 vid 6:11 PM, skrev boris brezillon
> <b.brezillon-ZNYIgs0QAGpBDgjK7y7TUQ@public.gmane.org>:
>> Le 26/11/2013 14:46, Linus Walleij a écrit :
>>> But in this case it is a mechanical switch rather than a jumper?
>> Not exactly.
>>
>> The functionnaly selection (spi device or mmc slot) is done by the software
>> using to the
>> PB22 pin:
>> - set PB22 pin to 1 if you want to enable the mmc slot
>> - set PB22 pin to 0 if you want to enable the spi device
> OK I got it wrong, I thought it was a mechanical switch. So this is a GPIO
> line somekindof, you control it like this, and it will have effects on the
> electronics.
>
> So to get the device running you need to both:
>
> - Switch the value of this GPIO line.
> - Switch pin control state.
>
> We are certain that the gpio_set_value() shall be used to set that GPIO
> line, because it does not control any pin control logic, it controls
> some electronics outside of the SoC, and that is outside the pin
> controller domain.
>
> I guess one way is to obtain this GPIO in board code and just
> flick it depending on which device you register.
>
> You can have GPIOs tied to the machine/board itself, see this
> fragment from arch/arm/boot/dts/ste-nomadik-s8815.dts:
>
> /* Custom board node with GPIO pins to active etc */
> usb-s8815 {
> /* This will bias the MMC/SD card detect line */
> mmcsd-gpio {
> gpios = <&gpio3 16 0x1>;
> };
> };
>
> This GPIO needs to be driven high to bias the MMC/SD card.
> I solved it like this in the board code in
> arch/arm/mach-nomadik/cpu-8815.c:
>
> /*
> * This GPIO pin turns on a line that is used to detect card insertion
> * on this board.
> */
> static int __init cpu8815_mmcsd_init(void)
> {
> struct device_node *cdbias;
> int gpio, err;
>
> cdbias = of_find_node_by_path("/usb-s8815/mmcsd-gpio");
> if (!cdbias) {
> pr_info("could not find MMC/SD card detect bias node\n");
> return 0;
> }
> gpio = of_get_gpio(cdbias, 0);
> if (gpio < 0) {
> pr_info("could not obtain MMC/SD card detect bias GPIO\n");
> return 0;
> }
> err = gpio_request(gpio, "card detect bias");
> if (err) {
> pr_info("failed to request card detect bias GPIO %d\n", gpio);
> return -ENODEV;
> }
> err = gpio_direction_output(gpio, 0);
> if (err){
> pr_info("failed to set GPIO %d as output, low\n", gpio);
> return err;
> }
> pr_info("enabled USB-S8815 CD bias GPIO %d, low\n", gpio);
> return 0;
> }
> device_initcall(cpu8815_mmcsd_init);
>
> This is maybe not a perfect approach :-/
>
> But you get the idea. You could set this up one way or another
> depending on whether this board is registering a device for
> SPI or MMC.
The whole goal of moving from board files to dt is to drop all board
specific processing or initialization and only keep a common description
with generic drivers capable of handling common use cases.
I'm not sure providing new board specific drivers is a good solution
(even if it is the simplest way to achieve our goal).
Could we have something similar to pinctrl but with gpios :
when the device is probed the device/driver core code request the gpio
configure it appropriately and set it to the requested value (if configured
as output).
Or even better, provide an external switch subsystem (with a gpio-switch
driver)
and automate switch request/config in device/driver core code (as done
for the
pinctrl config).
These are just thoughts, and I guess introducing new code in the
device/driver core
code is not that easy, especially when this code is here to handle
specific case
like ours.
Thanks for sharing your thoughts.
Best Regards,
Boris
>
> Probably Jean-Christophe has opinions on this so let's see what
> he says.
>
>> If I understand correctly, you're suggesting to retrieve the PB22 pin value
>> to decide
>> wether the mmc slot or the spi device is enabled. Is that right ?
> Forget about this, I didn't understand the real problem.
>
>> In the board version this was configured in the init_machine function (or
>> board init
>> function) depending on the MTD_AT91_DATAFLASH_CARD
>> (
>> http://lxr.free-electrons.com/source/arch/arm/mach-at91/board-rm9200ek.c#L173).
>> As a result it was not reconfigurable at runtime.
>>
>> But Jean-Christophe suggested to make it configurable at runtime (using dt
>> fragments).
> It should definately be set up at runtime, just a matter where and
> how.
>
> Yours,
> Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: boris brezillon <b.brezillon@overkiz.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>,
Rob Herring <rob.herring@calxeda.com>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Ian Campbell <ian.campbell@citrix.com>,
Russell King <linux@arm.linux.org.uk>,
Nicolas Ferre <nicolas.ferre@atmel.com>,
Joachim Eastwood <manabian@gmail.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 5/9] ARM: at91/dt: add mmc0 slot0 support to at91rm9200ek board
Date: Fri, 29 Nov 2013 11:30:00 +0100 [thread overview]
Message-ID: <52986CA8.3010601@overkiz.com> (raw)
In-Reply-To: <CACRpkdZoAjuWVpWZfvPgOAd7qB1ZBtC+45nD3SYay3SrMhqwVA@mail.gmail.com>
Hello Linus,
On 29/11/2013 11:03, Linus Walleij wrote:
> På tisdag, 26 Nov, 2013 vid 6:11 PM, skrev boris brezillon
> <b.brezillon@overkiz.com>:
>> Le 26/11/2013 14:46, Linus Walleij a écrit :
>>> But in this case it is a mechanical switch rather than a jumper?
>> Not exactly.
>>
>> The functionnaly selection (spi device or mmc slot) is done by the software
>> using to the
>> PB22 pin:
>> - set PB22 pin to 1 if you want to enable the mmc slot
>> - set PB22 pin to 0 if you want to enable the spi device
> OK I got it wrong, I thought it was a mechanical switch. So this is a GPIO
> line somekindof, you control it like this, and it will have effects on the
> electronics.
>
> So to get the device running you need to both:
>
> - Switch the value of this GPIO line.
> - Switch pin control state.
>
> We are certain that the gpio_set_value() shall be used to set that GPIO
> line, because it does not control any pin control logic, it controls
> some electronics outside of the SoC, and that is outside the pin
> controller domain.
>
> I guess one way is to obtain this GPIO in board code and just
> flick it depending on which device you register.
>
> You can have GPIOs tied to the machine/board itself, see this
> fragment from arch/arm/boot/dts/ste-nomadik-s8815.dts:
>
> /* Custom board node with GPIO pins to active etc */
> usb-s8815 {
> /* This will bias the MMC/SD card detect line */
> mmcsd-gpio {
> gpios = <&gpio3 16 0x1>;
> };
> };
>
> This GPIO needs to be driven high to bias the MMC/SD card.
> I solved it like this in the board code in
> arch/arm/mach-nomadik/cpu-8815.c:
>
> /*
> * This GPIO pin turns on a line that is used to detect card insertion
> * on this board.
> */
> static int __init cpu8815_mmcsd_init(void)
> {
> struct device_node *cdbias;
> int gpio, err;
>
> cdbias = of_find_node_by_path("/usb-s8815/mmcsd-gpio");
> if (!cdbias) {
> pr_info("could not find MMC/SD card detect bias node\n");
> return 0;
> }
> gpio = of_get_gpio(cdbias, 0);
> if (gpio < 0) {
> pr_info("could not obtain MMC/SD card detect bias GPIO\n");
> return 0;
> }
> err = gpio_request(gpio, "card detect bias");
> if (err) {
> pr_info("failed to request card detect bias GPIO %d\n", gpio);
> return -ENODEV;
> }
> err = gpio_direction_output(gpio, 0);
> if (err){
> pr_info("failed to set GPIO %d as output, low\n", gpio);
> return err;
> }
> pr_info("enabled USB-S8815 CD bias GPIO %d, low\n", gpio);
> return 0;
> }
> device_initcall(cpu8815_mmcsd_init);
>
> This is maybe not a perfect approach :-/
>
> But you get the idea. You could set this up one way or another
> depending on whether this board is registering a device for
> SPI or MMC.
The whole goal of moving from board files to dt is to drop all board
specific processing or initialization and only keep a common description
with generic drivers capable of handling common use cases.
I'm not sure providing new board specific drivers is a good solution
(even if it is the simplest way to achieve our goal).
Could we have something similar to pinctrl but with gpios :
when the device is probed the device/driver core code request the gpio
configure it appropriately and set it to the requested value (if configured
as output).
Or even better, provide an external switch subsystem (with a gpio-switch
driver)
and automate switch request/config in device/driver core code (as done
for the
pinctrl config).
These are just thoughts, and I guess introducing new code in the
device/driver core
code is not that easy, especially when this code is here to handle
specific case
like ours.
Thanks for sharing your thoughts.
Best Regards,
Boris
>
> Probably Jean-Christophe has opinions on this so let's see what
> he says.
>
>> If I understand correctly, you're suggesting to retrieve the PB22 pin value
>> to decide
>> wether the mmc slot or the spi device is enabled. Is that right ?
> Forget about this, I didn't understand the real problem.
>
>> In the board version this was configured in the init_machine function (or
>> board init
>> function) depending on the MTD_AT91_DATAFLASH_CARD
>> (
>> http://lxr.free-electrons.com/source/arch/arm/mach-at91/board-rm9200ek.c#L173).
>> As a result it was not reconfigurable at runtime.
>>
>> But Jean-Christophe suggested to make it configurable at runtime (using dt
>> fragments).
> It should definately be set up at runtime, just a matter where and
> how.
>
> Yours,
> Linus Walleij
next prev parent reply other threads:[~2013-11-29 10:30 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-28 11:00 [PATCH 0/9] ARM: at91/dt: add missing devices to rm9200ek board Boris BREZILLON
2013-08-28 11:00 ` Boris BREZILLON
2013-08-28 11:02 ` [PATCH 1/9] ARM: at91/dt: add rm9200 spi0 chip select pins definitions Boris BREZILLON
2013-08-28 11:02 ` Boris BREZILLON
2013-11-20 14:56 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 14:56 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 14:56 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 15:59 ` boris brezillon
2013-11-20 15:59 ` boris brezillon
2013-11-20 17:05 ` boris brezillon
2013-11-20 17:05 ` boris brezillon
2013-08-28 11:03 ` [PATCH 2/9] ARM: at91/dt: add ethernet phy to at91rm9200ek board Boris BREZILLON
2013-08-28 11:03 ` Boris BREZILLON
2013-11-18 8:39 ` boris brezillon
2013-11-18 8:39 ` boris brezillon
2013-11-18 8:39 ` boris brezillon
2013-08-28 11:04 ` [PATCH 3/9] ARM: at91/dt: add usb1 vbus and pullup pins Boris BREZILLON
2013-08-28 11:04 ` Boris BREZILLON
2013-11-20 14:57 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 14:57 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 14:57 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 15:48 ` boris brezillon
2013-11-20 15:48 ` boris brezillon
2013-11-20 15:48 ` boris brezillon
2013-08-28 11:05 ` [PATCH 4/9] ARM: at91/dt: add atmel, pullup-gpio to at91rm9200ek usb1 definition Boris BREZILLON
2013-08-28 11:05 ` [PATCH 4/9] ARM: at91/dt: add atmel,pullup-gpio " Boris BREZILLON
2013-08-28 11:06 ` [PATCH 5/9] ARM: at91/dt: add mmc0 slot0 support to at91rm9200ek board Boris BREZILLON
2013-08-28 11:06 ` Boris BREZILLON
2013-11-20 14:59 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 14:59 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 14:59 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 16:14 ` boris brezillon
2013-11-20 16:14 ` boris brezillon
2013-11-20 17:20 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 17:20 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 17:20 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-21 9:48 ` Linus Walleij
2013-11-21 9:48 ` Linus Walleij
2013-11-21 10:34 ` boris brezillon
2013-11-21 10:34 ` boris brezillon
2013-11-26 13:46 ` Linus Walleij
2013-11-26 13:46 ` Linus Walleij
2013-11-26 13:46 ` Linus Walleij
2013-11-26 17:55 ` boris brezillon
2013-11-26 17:55 ` boris brezillon
2013-11-26 17:55 ` boris brezillon
[not found] ` <5294D64D.7000100@overkiz.com>
2013-11-29 10:03 ` Linus Walleij
2013-11-29 10:03 ` Linus Walleij
2013-11-29 10:30 ` boris brezillon [this message]
2013-11-29 10:30 ` boris brezillon
2013-11-29 10:30 ` boris brezillon
2013-11-29 13:31 ` Linus Walleij
2013-11-29 13:31 ` Linus Walleij
2013-11-29 15:30 ` boris brezillon
2013-11-29 15:30 ` boris brezillon
2013-12-09 10:34 ` boris brezillon
2013-12-09 10:34 ` boris brezillon
2013-12-09 10:34 ` boris brezillon
2013-12-12 17:52 ` Linus Walleij
2013-12-12 17:52 ` Linus Walleij
2013-08-28 11:07 ` [PATCH 6/9] ARM: at91/dt: add spi0 " Boris BREZILLON
2013-08-28 11:07 ` Boris BREZILLON
2013-11-20 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-08-28 11:08 ` [PATCH 7/9] ARM: at91/dt: add i2c devices connected " Boris BREZILLON
2013-08-28 11:08 ` Boris BREZILLON
2013-11-20 15:01 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 15:01 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 16:17 ` boris brezillon
2013-11-20 16:17 ` boris brezillon
2013-08-28 12:37 ` [PATCH 8/9] ARM: at91/dt: add new at91rm9200ek_mmc board Boris BREZILLON
2013-08-28 12:37 ` Boris BREZILLON
2013-11-20 15:02 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 15:02 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 15:02 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 16:31 ` boris brezillon
2013-11-20 16:31 ` boris brezillon
2013-11-20 16:31 ` boris brezillon
2013-11-20 17:27 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 17:27 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-20 17:27 ` Jean-Christophe PLAGNIOL-VILLARD
2013-11-21 8:44 ` Nicolas Ferre
2013-11-21 8:44 ` Nicolas Ferre
2013-11-21 8:44 ` Nicolas Ferre
2013-08-28 12:38 ` [PATCH 9/9] ARM: at91/dt: add new at91rm9200ek_dataflash board Boris BREZILLON
2013-08-28 12:38 ` Boris BREZILLON
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=52986CA8.3010601@overkiz.com \
--to=b.brezillon@overkiz.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.