meta-ti.lists.yoctoproject.org archive mirror
 help / color / mirror / Atom feed
From: Denys Dmytriyenko <denis@denix.org>
To: meta-ti@lists.yoctoproject.org
Subject: [master][PATCH 11/26] machine: Add am62xx evm configuration
Date: Mon,  2 May 2022 14:51:05 +0000	[thread overview]
Message-ID: <20220502145120.726632-12-denis@denix.org> (raw)
In-Reply-To: <20220502145120.726632-1-denis@denix.org>

From: Nishanth Menon <nm@ti.com>

Lets add the basic AM62xx-evm configuration.
- Add configurations.
- Add firmware overrides.
- Add u-boot overrides.
- Update TI_LINUX_FW_SRCREV and K3_IMAGE_GEN_SRCREV to appropriate SHAs.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Hari Nagalla <hnagalla@ti.com>
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
---
 meta-ti-bsp/conf/machine/am62xx-evm-k3r5.conf | 11 ++++++
 meta-ti-bsp/conf/machine/am62xx-evm.conf      | 11 ++++++
 meta-ti-bsp/conf/machine/include/am62xx.inc   | 17 +++++++++
 .../recipes-bsp/ti-linux-fw/ti-linux-fw.inc   |  4 +-
 .../recipes-bsp/ti-sci-fw/ti-sci-fw_git.bb    | 18 +++++++++
 meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc  |  7 ++++
 .../ti-rtos-bin/ti-rtos-firmware.bb           | 38 ++++++++++++++++---
 7 files changed, 99 insertions(+), 7 deletions(-)
 create mode 100644 meta-ti-bsp/conf/machine/am62xx-evm-k3r5.conf
 create mode 100644 meta-ti-bsp/conf/machine/am62xx-evm.conf
 create mode 100644 meta-ti-bsp/conf/machine/include/am62xx.inc

diff --git a/meta-ti-bsp/conf/machine/am62xx-evm-k3r5.conf b/meta-ti-bsp/conf/machine/am62xx-evm-k3r5.conf
new file mode 100644
index 00000000..724a8d4a
--- /dev/null
+++ b/meta-ti-bsp/conf/machine/am62xx-evm-k3r5.conf
@@ -0,0 +1,11 @@
+#@TYPE: Machine
+#@NAME: AM62XX EVM (R5F)
+#@DESCRIPTION: Machine configuration for the TI AM62xx EVM (R5F core)
+
+require conf/machine/include/k3r5.inc
+
+SYSFW_SOC = "am62x"
+SYSFW_CONFIG = "evm"
+SYSFW_SUFFIX = "gp"
+
+UBOOT_MACHINE = "am62x_evm_r5_defconfig"
diff --git a/meta-ti-bsp/conf/machine/am62xx-evm.conf b/meta-ti-bsp/conf/machine/am62xx-evm.conf
new file mode 100644
index 00000000..0588d34c
--- /dev/null
+++ b/meta-ti-bsp/conf/machine/am62xx-evm.conf
@@ -0,0 +1,11 @@
+#@TYPE: Machine
+#@NAME: AM62XX EVM
+#@DESCRIPTION: Machine configuration for the TI AM62XX EVM
+
+require conf/machine/include/am62xx.inc
+
+KERNEL_DEVICETREE = " \
+    ti/k3-am625-sk.dtb \
+"
+
+UBOOT_MACHINE = "am62x_evm_a53_defconfig"
diff --git a/meta-ti-bsp/conf/machine/include/am62xx.inc b/meta-ti-bsp/conf/machine/include/am62xx.inc
new file mode 100644
index 00000000..f3bde639
--- /dev/null
+++ b/meta-ti-bsp/conf/machine/include/am62xx.inc
@@ -0,0 +1,17 @@
+require conf/machine/include/k3.inc
+SOC_FAMILY:append = ":am62xx"
+
+MACHINE_FEATURES += "screen touchscreen"
+
+SERIAL_CONSOLES = "115200;ttyS2"
+SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
+
+# AM62 supports multi-certificate images, use the same
+IMAGE_BOOT_FILES = "${IMAGE_BOOT_FILES_MULTI_CERT}"
+
+do_image_wic[mcdepends] = "mc::k3r5:ti-sci-fw:do_deploy"
+do_image_tar[mcdepends] = "mc::k3r5:ti-sci-fw:do_deploy"
+
+TFA_BOARD = "lite"
+OPTEEMACHINE = "k3-am65x"
+OPTEEOUTPUTMACHINE = "k3"
diff --git a/meta-ti-bsp/recipes-bsp/ti-linux-fw/ti-linux-fw.inc b/meta-ti-bsp/recipes-bsp/ti-linux-fw/ti-linux-fw.inc
index faf998dd..a00df108 100644
--- a/meta-ti-bsp/recipes-bsp/ti-linux-fw/ti-linux-fw.inc
+++ b/meta-ti-bsp/recipes-bsp/ti-linux-fw/ti-linux-fw.inc
@@ -19,12 +19,12 @@ CADENCE_MHDP_FW_VERSION = "1.2.17"
 IMG_DEC_FW_VERSION = "1.0"
 CNM_WAVE521_FW_VERSION = "1.0.00"
 
-TI_LINUX_FW_SRCREV ?= "0f4905088d24e474063f33777559149e11538be5"
+TI_LINUX_FW_SRCREV ?= "e13611ff1da6448d80279cc8c43b81cb2275cb0d"
 SRCREV = "${TI_LINUX_FW_SRCREV}"
 
 BRANCH ?= "ti-linux-firmware"
 
-K3_IMAGE_GEN_SRCREV ?= "f1db75bdc506287a9d04b0afbbb3d853a0948179"
+K3_IMAGE_GEN_SRCREV ?= "b0386fe221fc9124fda0cd2efb03d62710b1d90f"
 SRCREV_imggen = "${K3_IMAGE_GEN_SRCREV}"
 SRCREV_FORMAT = "imggen"
 
diff --git a/meta-ti-bsp/recipes-bsp/ti-sci-fw/ti-sci-fw_git.bb b/meta-ti-bsp/recipes-bsp/ti-sci-fw/ti-sci-fw_git.bb
index 33333e3c..530b25b8 100644
--- a/meta-ti-bsp/recipes-bsp/ti-sci-fw/ti-sci-fw_git.bb
+++ b/meta-ti-bsp/recipes-bsp/ti-sci-fw/ti-sci-fw_git.bb
@@ -6,6 +6,7 @@ DEPENDS:append:j7200-hs-evm-k3r5 = " virtual/bootloader"
 DEPENDS:append:j721s2-evm-k3r5 = " virtual/bootloader"
 DEPENDS:append:am64xx-evm-k3r5 = " virtual/bootloader"
 DEPENDS:append:am64xx-hs-evm-k3r5 = " virtual/bootloader"
+DEPENDS:append:am62xx-evm-k3r5 = " virtual/bootloader"
 
 CLEANBROKEN = "1"
 PR = "${INC_PR}.2"
@@ -29,6 +30,7 @@ SYSFW_PREFIX:j721e-hs-evm-k3r5-sr1-1 = "ti-fs-firmware"
 SYSFW_PREFIX:j7200-evm-k3r5 = "ti-fs-firmware"
 SYSFW_PREFIX:j7200-hs-evm-k3r5 = "ti-fs-firmware"
 SYSFW_PREFIX:j721s2-evm-k3r5 = "ti-fs-firmware"
+SYSFW_PREFIX:am62xx-evm-k3r5 = "ti-fs-firmware"
 
 SYSFW_SUFFIX ?= "unknown"
 
@@ -63,6 +65,7 @@ EXTRA_OEMAKE:append:j7200-hs-evm-k3r5 = " SBL="${STAGING_DIR_HOST}/boot/u-boot-s
 EXTRA_OEMAKE:append:j721s2-evm-k3r5 = " SBL="${STAGING_DIR_HOST}/boot/u-boot-spl.bin""
 EXTRA_OEMAKE:append:am64xx-evm-k3r5 = " SBL="${STAGING_DIR_HOST}/boot/u-boot-spl.bin""
 EXTRA_OEMAKE:append:am64xx-hs-evm-k3r5 = " SBL="${STAGING_DIR_HOST}/boot/u-boot-spl.bin""
+EXTRA_OEMAKE:append:am62xx-evm-k3r5 = " SBL="${STAGING_DIR_HOST}/boot/u-boot-spl.bin""
 
 do_compile() {
 	cd ${WORKDIR}/imggen/
@@ -170,4 +173,19 @@ do_deploy:am64xx-hs-evm-k3r5() {
 	install -m 644 ${SYSFW_TISCI} ${DEPLOYDIR}/
 }
 
+do_install:am62xx-evm-k3r5() {
+	install -d ${D}/boot
+	install -m 644 ${WORKDIR}/imggen/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
+	ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_SYMLINK}
+	ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY}
+}
+
+do_deploy:am62xx-evm-k3r5() {
+	install -d ${DEPLOYDIR}
+	install -m 644 ${WORKDIR}/imggen/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
+	ln -sf ${UBOOT_IMAGE} ${DEPLOYDIR}/${UBOOT_SYMLINK}
+	ln -sf ${UBOOT_IMAGE} ${DEPLOYDIR}/${UBOOT_BINARY}
+	install -m 644 ${SYSFW_TISCI} ${DEPLOYDIR}/
+}
+
 addtask deploy before do_build after do_compile
diff --git a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
index a5b24f49..c3c32f9c 100644
--- a/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
+++ b/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
@@ -41,6 +41,7 @@ PACKAGECONFIG[dm] = "DM=${STAGING_DIR_HOST}${nonarch_base_libdir}/firmware/pdk-i
 
 PACKAGECONFIG:append:aarch64 = " atf optee"
 PACKAGECONFIG:append:j7 = " dm"
+PACKAGECONFIG:append:am62xx = " dm"
 
 COMPATIBLE_MACHINE = "(ti-soc)"
 
@@ -68,6 +69,7 @@ SPL_UART_BINARY:j7200-hs-evm-k3r5 = "u-boot-spl.bin"
 SPL_UART_BINARY:j721s2-evm-k3r5 = "u-boot-spl.bin"
 SPL_UART_BINARY:am64xx-evm-k3r5 = "u-boot-spl.bin"
 SPL_UART_BINARY:am64xx-hs-evm-k3r5 = "u-boot-spl.bin"
+SPL_UART_BINARY:am62xx-evm-k3r5 = "u-boot-spl.bin"
 
 SPL_UART_IMAGE ?= "${SPL_UART_BINARY}-${MACHINE}-${PV}-${PR}"
 SPL_UART_SYMLINK ?= "${SPL_UART_BINARY}-${MACHINE}"
@@ -293,4 +295,9 @@ do_deploy:append:am64xx-hs-evm-k3r5 () {
 	mv ${DEPLOYDIR}/u-boot-spl.bin ${DEPLOYDIR}/u-boot-spl-r5spl.bin || true
 }
 
+do_deploy:append:am62xx-evm-k3r5 () {
+	mv ${DEPLOYDIR}/tiboot3.bin ${DEPLOYDIR}/tiboot3-r5spl.bin || true
+	mv ${DEPLOYDIR}/u-boot-spl.bin ${DEPLOYDIR}/u-boot-spl-r5spl.bin || true
+}
+
 TOOLCHAIN = "gcc"
diff --git a/meta-ti-bsp/recipes-ti/ti-rtos-bin/ti-rtos-firmware.bb b/meta-ti-bsp/recipes-ti/ti-rtos-bin/ti-rtos-firmware.bb
index 03408528..f3912784 100644
--- a/meta-ti-bsp/recipes-ti/ti-rtos-bin/ti-rtos-firmware.bb
+++ b/meta-ti-bsp/recipes-ti/ti-rtos-bin/ti-rtos-firmware.bb
@@ -19,6 +19,7 @@ PLAT_SFX:j7200-hs-evm = "j7200"
 PLAT_SFX:j721s2-evm = "j721s2"
 PLAT_SFX:am65xx = "am65xx"
 PLAT_SFX:am64xx = "am64xx"
+PLAT_SFX:am62xx = "am62xx"
 
 FILESEXTRAPATHS:prepend := "${METATIBASE}/recipes-bsp/ti-sci-fw/files/:"
 require recipes-bsp/ti-linux-fw/ti-linux-fw.inc
@@ -50,11 +51,11 @@ DM_FIRMWARE = "ipc_echo_testb_mcu1_0_release_strip.xer5f"
 
 # J7 HS support
 do_install:prepend:j721e-hs-evm() {
-	export TI_SECURE_DEV_PKG=${TI_SECURE_DEV_PKG}
-	( cd ${RTOS_DM_FW_DIR}; \
-		mv ${DM_FIRMWARE} ${DM_FIRMWARE}.unsigned; \
-		${TI_SECURE_DEV_PKG}/scripts/secure-binary-image.sh ${DM_FIRMWARE}.unsigned ${DM_FIRMWARE}; \
-	)
+        export TI_SECURE_DEV_PKG=${TI_SECURE_DEV_PKG}
+        ( cd ${RTOS_DM_FW_DIR}; \
+                mv ${DM_FIRMWARE} ${DM_FIRMWARE}.unsigned; \
+                ${TI_SECURE_DEV_PKG}/scripts/secure-binary-image.sh ${DM_FIRMWARE}.unsigned ${DM_FIRMWARE}; \
+        )
 }
 
 # J7 HS support
@@ -77,6 +78,13 @@ do_install:prepend:am64xx() {
         )
 }
 
+# Update the am62xx ipc binaries to be consistent with other platforms
+do_install:prepend:am62xx() {
+        ( cd ${RTOS_IPC_FW_DIR}; \
+                mv am62-mcu-m4f0_0-fw ipc_echo_baremetal_test_mcu2_0_release_strip.xer5f; \
+        )
+}
+
 #Install all R5 & DSP ipc echo test binaries in lib/firmware/pdk-ipc, with softlinks up a level
 do_install() {
 	:
@@ -154,6 +162,13 @@ do_install:am64xx() {
     install -m 0644 ${RTOS_IPC_FW_DIR}/ipc_echo_baremetal_test_mcu3_0_release_strip.xer5f ${LEGACY_IPC_FW_DIR}
 }
 
+do_install:am62xx() {
+    install -d ${LEGACY_IPC_FW_DIR}
+    install -m 0644 ${RTOS_IPC_FW_DIR}/ipc_echo_baremetal_test_mcu2_0_release_strip.xer5f ${LEGACY_IPC_FW_DIR}
+    # DM Firmware
+    install -m 0644 ${RTOS_DM_FW_DIR}/ipc_echo_testb_mcu1_0_release_strip.xer5f ${LEGACY_DM_FW_DIR}
+}
+
 # Set up names for the firmwares
 ALTERNATIVE:${PN}:am65xx = "\
                     am65x-mcu-r5f0_0-fw \
@@ -167,6 +182,10 @@ ALTERNATIVE:${PN}:am64xx = "\
                     am64-main-r5f1_1-fw \
                     am64-mcu-m4f0_0-fw \
                     "
+ALTERNATIVE:${PN}:am62xx = "\
+                    am62-mcu-m4f0_0-fw \
+                    am62-main-r5f0_0-fw \
+                    "
 
 ALTERNATIVE:${PN}:j7 = "\
                     j7-mcu-r5f0_0-fw \
@@ -216,6 +235,9 @@ TARGET_MAIN_R5FSS1_0:am64xx = "am64-main-r5f1_0-fw"
 TARGET_MAIN_R5FSS1_1:am64xx = "am64-main-r5f1_1-fw"
 TARGET_MCU_M4FSS0_0:am64xx = "am64-mcu-m4f0_0-fw"
 
+TARGET_MAIN_R5FSS0_0:am62xx = "am62-main-r5f0_0-fw"
+TARGET_MCU_M4FSS0_0:am62xx = "am62-mcu-m4f0_0-fw"
+
 TARGET_MCU_R5FSS0_0:j7 = "j7-mcu-r5f0_0-fw"
 TARGET_MCU_R5FSS0_1:j7 = "j7-mcu-r5f0_1-fw"
 TARGET_MAIN_R5FSS0_0:j7 = "j7-main-r5f0_0-fw"
@@ -254,6 +276,9 @@ ALTERNATIVE_LINK_NAME[am64-main-r5f1_0-fw] = "${nonarch_base_libdir}/firmware/${
 ALTERNATIVE_LINK_NAME[am64-main-r5f1_1-fw] = "${nonarch_base_libdir}/firmware/${TARGET_MAIN_R5FSS1_1}"
 ALTERNATIVE_LINK_NAME[am64-mcu-m4f0_0-fw] = "${nonarch_base_libdir}/firmware/${TARGET_MCU_M4FSS0_0}"
 
+ALTERNATIVE_LINK_NAME[am62-main-r5f0_0-fw] = "${nonarch_base_libdir}/firmware/${TARGET_MAIN_R5FSS0_0}"
+ALTERNATIVE_LINK_NAME[am62-mcu-m4f0_0-fw] = "${nonarch_base_libdir}/firmware/${TARGET_MCU_M4FSS0_0}"
+
 ALTERNATIVE_LINK_NAME[j7-mcu-r5f0_0-fw] = "${nonarch_base_libdir}/firmware/${TARGET_MCU_R5FSS0_0}"
 ALTERNATIVE_LINK_NAME[j7-mcu-r5f0_1-fw] = "${nonarch_base_libdir}/firmware/${TARGET_MCU_R5FSS0_1}"
 ALTERNATIVE_LINK_NAME[j7-main-r5f0_0-fw] = "${nonarch_base_libdir}/firmware/${TARGET_MAIN_R5FSS0_0}"
@@ -289,6 +314,9 @@ ALTERNATIVE_TARGET[am64-main-r5f1_0-fw] = "${nonarch_base_libdir}/firmware/pdk-i
 ALTERNATIVE_TARGET[am64-main-r5f1_1-fw] = "${nonarch_base_libdir}/firmware/pdk-ipc/ipc_echo_baremetal_test_mcu2_1_release_strip.xer5f"
 ALTERNATIVE_TARGET[am64-mcu-m4f0_0-fw] = "${nonarch_base_libdir}/firmware/pdk-ipc/ipc_echo_baremetal_test_mcu3_0_release_strip.xer5f"
 
+ALTERNATIVE_TARGET[am62-main-r5f0_0-fw] = "${nonarch_base_libdir}/firmware/pdk-ipc/ipc_echo_testb_mcu1_0_release_strip.xer5f"
+ALTERNATIVE_TARGET[am62-mcu-m4f0_0-fw] = "${nonarch_base_libdir}/firmware/pdk-ipc/ipc_echo_baremetal_test_mcu2_0_release_strip.xer5f"
+
 ALTERNATIVE_TARGET[j7-mcu-r5f0_0-fw] = "${nonarch_base_libdir}/firmware/pdk-ipc/ipc_echo_testb_mcu1_0_release_strip.xer5f"
 ALTERNATIVE_TARGET[j7-mcu-r5f0_1-fw] = "${nonarch_base_libdir}/firmware/pdk-ipc/ipc_echo_test_mcu1_1_release_strip.xer5f"
 ALTERNATIVE_TARGET[j7-main-r5f0_0-fw] = "${nonarch_base_libdir}/firmware/ethfw/app_remoteswitchcfg_server_strip.xer5f"
-- 
2.25.1



  parent reply	other threads:[~2022-05-02 14:51 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-02 14:50 [master][PATCH 00/26] sync up with dunfell Denys Dmytriyenko
2022-05-02 14:50 ` [master][PATCH 01/26] conf: Enable bmap file for wic images on legacy platforms Denys Dmytriyenko
2022-05-02 14:50 ` [master][PATCH 02/26] ti-sgx-ddk-um: avoid unnecessary dependency on -dev package Denys Dmytriyenko
2022-05-02 14:50 ` [master][PATCH 03/26] linux-ti-staging: Bump to 08.02.00.004 release Denys Dmytriyenko
2022-05-02 14:50 ` [master][PATCH 04/26] linux-ti-staging-rt: " Denys Dmytriyenko
2022-05-02 14:50 ` [master][PATCH 05/26] u-boot-ti-staging: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 06/26] linux-ti-staging: Bump to 08.02.00.005 release Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 07/26] linux-ti-staging-rt: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 08/26] u-boot-ti-staging: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 09/26] ti-linux-fw: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 10/26] u-boot-ti-staging: Bump to 08.02.00.006 release Denys Dmytriyenko
2022-05-02 14:51 ` Denys Dmytriyenko [this message]
2022-05-02 14:51 ` [master][PATCH 12/26] ti-graphics: gpu enable and move all platforms to ddk 1.15 Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 13/26] pru-icss_git.bb: update to PSSP v6.1.0 Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 14/26] pru-icss_git.bb: add AM62x Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 15/26] u-boot-ti: Use SRCREV to get short commit ID Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 16/26] linux-ti-staging/mainline: depend on libmpc-native and gmp-native Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 17/26] u-boot-ti-staging: Bump to 08.03.00.001 release Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 18/26] linux-ti-staging: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 19/26] linux-ti-staging-rt: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 20/26] ipc: ti-rpmsg-char: Update library to 0.4.1 Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 21/26] conf: machine: am62xx Add missing dtbo file Denys Dmytriyenko
2022-05-13 14:19   ` [EXTERNAL] [meta-ti] " Devarsh Thakkar
2022-05-02 14:51 ` [master][PATCH 22/26] k3conf: Update SRCREV to pick AM62x support Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 23/26] u-boot-ti-staging: Bump to 08.03.00.002 release Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 24/26] linux-ti-staging: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 25/26] linux-ti-staging-rt: " Denys Dmytriyenko
2022-05-02 14:51 ` [master][PATCH 26/26] ti-linux-fw: " Denys Dmytriyenko
2022-05-02 17:18 ` [meta-ti] [master][PATCH 00/26] sync up with dunfell Ryan Eatmon

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=20220502145120.726632-12-denis@denix.org \
    --to=denis@denix.org \
    --cc=meta-ti@lists.yoctoproject.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 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).