From: Jan Kiszka <jan.kiszka@siemens.com>
To: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>,
cip-dev@lists.cip-project.org
Cc: isar-users@googlegroups.com
Subject: Re: [PATCH] iwg20m: add support for this board
Date: Thu, 6 Jun 2019 08:20:19 +0200 [thread overview]
Message-ID: <0b70c8f4-9ca2-1ef6-d1a3-826dc71d5a96@siemens.com> (raw)
In-Reply-To: <20190606020204.25320-2-daniel.sangorrin@toshiba.co.jp>
On 06.06.19 04:02, Daniel Sangorrin wrote:
> This patch adds support for the iwg20m board to isar-cip-core.
>
As you are cross-posting, the subject should probably also contain some tag like
"[isar-cip-core]", to clarify the target project. In fact, that would even help
on cip-dev as we now have quite a few projects there which take patches.
> - Kernel version notes
>
> This board is only supported by the 4.4 kernel.
> The document doc/README_iwg20m.md already explains that.
>
> - U-boot notes
>
> The u-boot version shipped with the board is rather
> old (2013.01) and comes without distro boot support.
> We could try building it with CONFIG_CMD_SOURCE to use
> a boot.scr script. However, the build gave several
> errors probably caused by incompatibilities with
> modern compilers. Additionally, u-boot resides
> on an SPI device and any failures while updating
> it will brick the board. For all these reasons,
> this patch relies on the u-boot shipped with the
> board completely. The user needs to setup some
> additional u-boot environment variables as described
> in doc/README_iwg20m.md
>
> - Kernel configuration notes
>
> The configuration is based on the kernel's
> shmobile_defconfig. Then it adds some
> configuration bits for booting on an SDCard with
> EXT4, booting from a ramdisk, and running Systemd.
>
> - Bmap notes
>
> The document doc/README_iwg20m.md uses bmaptool to
> flash the image onto an SDCard. This functionality
> is not yet available on the ISAR version used by
> isar-cip-core. For now, you can either backport the
> bmap patch [1] or use dd as explained in the README.
>
> [1] https://lists.cip-project.org/pipermail/cip-dev/2019-June/002430.html
>
> Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
> ---
> board-iwg20m.yml | 16 ++
> conf/machine/iwg20m.conf | 20 ++
> doc/README_iwg20m.md | 49 ++++
> recipes-kernel/linux/files/iwg20m_defconfig | 275 ++++++++++++++++++++
> wic/iwg20m.wks | 18 ++
> 5 files changed, 378 insertions(+)
> create mode 100644 board-iwg20m.yml
> create mode 100644 conf/machine/iwg20m.conf
> create mode 100644 doc/README_iwg20m.md
> create mode 100644 recipes-kernel/linux/files/iwg20m_defconfig
> create mode 100644 wic/iwg20m.wks
>
> diff --git a/board-iwg20m.yml b/board-iwg20m.yml
> new file mode 100644
> index 0000000..fbb2a2e
> --- /dev/null
> +++ b/board-iwg20m.yml
> @@ -0,0 +1,16 @@
> +#
> +# CIP Core, generic profile
> +#
> +# Copyright (c) Toshiba corp., 2019
> +#
> +# Authors:
> +# Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +
> +header:
> + version: 8
> +
> +machine: iwg20m
> +target: cip-core-image
> diff --git a/conf/machine/iwg20m.conf b/conf/machine/iwg20m.conf
> new file mode 100644
> index 0000000..4d14c80
> --- /dev/null
> +++ b/conf/machine/iwg20m.conf
> @@ -0,0 +1,20 @@
> +#
> +# CIP Core, generic profile
> +#
> +# Copyright (c) Toshiba corp. 2019
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +DISTRO_ARCH = "armhf"
> +
> +# see wic/iwg20m.wks
> +IMAGE_TYPE = "wic-img"
> +
> +# sets serial login getty
> +MACHINE_SERIAL = "ttySC0"
> +BAUDRATE_TTY = "115200"
> +
> +# Boot partition files
> +DTB_FILE = "r8a7743-iwg20d-q7-dbcm-ca.dtb"
> +KERNEL_IMAGE="zImage"
> +IMAGE_BOOT_FILES = "${KERNEL_IMAGE} ${DTB_FILE}"
If the machine currently only works with cip-4.4, you should also set the
preferred kernel version here.
> diff --git a/doc/README_iwg20m.md b/doc/README_iwg20m.md
> new file mode 100644
> index 0000000..946c4fd
> --- /dev/null
> +++ b/doc/README_iwg20m.md
> @@ -0,0 +1,49 @@
> +# ISAR CIP Core: Instructions for the Renesas IWG20M board
> +
> +Version: 20190606
> +Copyright: Toshiba corp.
> +
> +## Build the CIP Core image
> +
> +Use [kas-docker](https://github.com/siemens/kas/blob/master/kas-docker) to build the image. Currently this board is only supported by the CIP kernel version `4.4.y`. For that reason, add `:opt-4.4.yml` to the build command line.
> +
> +```
> +$ git clone https://gitlab.com/cip-project/cip-core/isar-cip-core.git
> +$ cd isar-cip-core
> +$ wget https://raw.githubusercontent.com/siemens/kas/master/kas-docker
> +$ chmod a+x kas-docker
> +$ ./kas-docker --isar build kas.yml:board-iwg20m.yml:opt-4.4.yml
> +```
> +
> +After the build is finished, insert a micro SDCard and flash the image with `bmaptool` (a better `dd`). Make sure you substitute `/dev/sdX` by the device file corresponding to your SDCard.
> +
> +```
> +$ sudo apt install bmap-tools
> +$ sudo bmaptool copy --bmap build/tmp/deploy/images/iwg20m/cip-core-image-cip-core-iwg20m.wic.img.bmap build/tmp/deploy/images/iwg20m/cip-core-image-cip-core-iwg20m.wic.img /dev/sdX
> +```
> +
> +[Note] the bmap file will only be created on newer versions of ISAR. If the bmap file was not created then use `dd`.
> +
> +## U-boot settings
> +
> +
> +In order to boot from the micro SDCard, we need to set some environment variables on u-boot. Insert the card on the microSD slot (on the upper hardware module), and a USB-serial cable to the USB Debug port (on the lower hardware module). Open a serial terminal (here we use `picocom`), and then switch on the board and enter the u-boot interactive command line to set the environment variables.
> +
> +```
> +$ picocom -b 115200 /dev/ttyUSB0
> +iWave-G20M > setenv bootargs_msd 'setenv bootargs ${bootargs_base} root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait'
> +iWave-G20M > setenv bootcmd_msd 'run bootargs_msd;run fdt_check;mmc dev 1;fatload mmc 1 ${loadaddr} zImage;fatload mmc 1 ${fdt_addr} r8a7743-iwg20d-q7-dbcm-ca.dtb;bootz ${loadaddr} - ${fdt_addr}'
> +iWave-G20M > saveenv
> +```
Does the pre-installed u-boot support ext4? If yes, why not using u-boot-script
and loading /boot/boot.scr instead? That would avoid duplicating information
like partitioning and kernel parameters here.
> +
> +Note that `mmcblk0p2` represents the SDCard when running the CIP kernel 4.4. Once the environment variables are setup, you can boot from the SDCard as follows
> +
> +```
> +iWave-G20M > run bootcmd_msd
> +```
> +
> +Finally, to make that persistent set the `bootcmd` variable.
> +
> +```
> +iWave-G20M > setenv bootcmd 'run bootcmd_msd'
> +```
> diff --git a/recipes-kernel/linux/files/iwg20m_defconfig b/recipes-kernel/linux/files/iwg20m_defconfig
> new file mode 100644
> index 0000000..7fb16de
> --- /dev/null
> +++ b/recipes-kernel/linux/files/iwg20m_defconfig
> @@ -0,0 +1,275 @@
> +
> +# systemd configs
> +CONFIG_DEVTMPFS=y
> +CONFIG_CGROUPS=y
> +CONFIG_INOTIFY_USER=y
> +CONFIG_SIGNALFD=y
> +CONFIG_TIMERFD=y
> +CONFIG_EPOLL=y
> +CONFIG_NET=y
> +CONFIG_SYSFS=y
> +CONFIG_PROC_FS=y
> +CONFIG_FHANDLE=y
> +CONFIG_CRYPTO_USER_API_HASH=y
> +CONFIG_CRYPTO_HMAC=y
> +CONFIG_CRYPTO_SHA256=y
> +CONFIG_SYSFS_DEPRECATED=n
> +CONFIG_UEVENT_HELPER_PATH=""
> +CONFIG_FW_LOADER_USER_HELPER=n
> +CONFIG_DMIID=y
> +CONFIG_BLK_DEV_BSG=y
> +CONFIG_NET_NS=y
> +CONFIG_USER_NS=y
> +CONFIG_IPV6=y
> +CONFIG_AUTOFS_FS=y
> +CONFIG_TMPFS_XATTR=y
> +CONFIG_EXT4_FS_POSIX_ACL=y
> +#CONFIG_REISERFS_FS_POSIX_ACL=y
> +#CONFIG_JFS_POSIX_ACL=y
> +#CONFIG_XFS_POSIX_ACL=y
> +#CONFIG_BTRFS_FS_POSIX_ACL=y
> +#CONFIG_F2FS_FS_POSIX_ACL=y
> +CONFIG_FS_POSIX_ACL=y
> +CONFIG_TMPFS_POSIX_ACL=y
> +#CONFIG_JFFS2_FS_POSIX_ACL=y
> +#CONFIG_CEPH_FS_POSIX_ACL=y
> +#CONFIG_9P_FS_POSIX_ACL=y
> +CONFIG_SECCOMP=Y
> +CONFIG_SECCOMP_FILTER=y
> +CONFIG_CHECKPOINT_RESTORE=y
> +CONFIG_CGROUP_SCHED=y
> +CONFIG_FAIR_GROUP_SCHED=y
> +CONFIG_CFS_BANDWIDTH=y
> +CONFIG_CGROUP_BPF=y
> +CONFIG_RT_GROUP_SCHED=n
> +
> +# to boot from the SD Card
> +CONFIG_EXT4_FS=y
> +CONFIG_EXT4_USE_FOR_EXT2=y
> +
> +# to boot from an initramfs
> +CONFIG_BLK_DEV_RAM=y
> +CONFIG_BLK_DEV_RAM_COUNT=4
> +CONFIG_BLK_DEV_RAM_SIZE=250000
> +
> +# shmobile_defconfig
> +CONFIG_SYSVIPC=y
> +CONFIG_NO_HZ=y
> +CONFIG_IKCONFIG=y
> +CONFIG_IKCONFIG_PROC=y
> +CONFIG_LOG_BUF_SHIFT=16
> +CONFIG_BLK_DEV_INITRD=y
> +CONFIG_CC_OPTIMIZE_FOR_SIZE=y
> +CONFIG_SYSCTL_SYSCALL=y
> +CONFIG_EMBEDDED=y
> +CONFIG_PERF_EVENTS=y
> +CONFIG_SLAB=y
> +CONFIG_ARCH_SHMOBILE_MULTI=y
> +CONFIG_ARCH_EMEV2=y
> +CONFIG_ARCH_R7S72100=y
> +CONFIG_ARCH_R8A73A4=y
> +CONFIG_ARCH_R8A7740=y
> +CONFIG_ARCH_R8A7743=y
> +CONFIG_ARCH_R8A7745=y
> +CONFIG_ARCH_R8A77470=y
> +CONFIG_ARCH_R8A7778=y
> +CONFIG_ARCH_R8A7779=y
> +CONFIG_ARCH_R8A7790=y
> +CONFIG_ARCH_R8A7791=y
> +CONFIG_ARCH_R8A7793=y
> +CONFIG_ARCH_R8A7794=y
> +CONFIG_ARCH_SH73A0=y
> +CONFIG_CPU_BPREDICT_DISABLE=y
> +CONFIG_PL310_ERRATA_588369=y
> +CONFIG_ARM_ERRATA_754322=y
> +CONFIG_PCI=y
> +CONFIG_PCI_RCAR_GEN2=y
> +CONFIG_PCI_RCAR_GEN2_PCIE=y
> +CONFIG_SMP=y
> +CONFIG_SCHED_MC=y
> +CONFIG_HAVE_ARM_ARCH_TIMER=y
> +CONFIG_NR_CPUS=8
> +CONFIG_AEABI=y
> +CONFIG_HIGHMEM=y
> +CONFIG_CMA=y
> +CONFIG_ZBOOT_ROM_TEXT=0x0
> +CONFIG_ZBOOT_ROM_BSS=0x0
> +CONFIG_ARM_APPENDED_DTB=y
> +CONFIG_KEXEC=y
> +CONFIG_CPU_FREQ=y
> +CONFIG_CPU_FREQ_STAT_DETAILS=y
> +CONFIG_CPU_FREQ_GOV_POWERSAVE=y
> +CONFIG_CPU_FREQ_GOV_USERSPACE=y
> +CONFIG_CPU_FREQ_GOV_ONDEMAND=y
> +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
> +CONFIG_CPUFREQ_DT=y
> +CONFIG_VFP=y
> +CONFIG_NEON=y
> +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
> +CONFIG_NET=y
> +CONFIG_PACKET=y
> +CONFIG_UNIX=y
> +CONFIG_INET=y
> +CONFIG_IP_PNP=y
> +CONFIG_IP_PNP_DHCP=y
> +CONFIG_CAN=y
> +CONFIG_CAN_RCAR=y
> +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
> +CONFIG_DEVTMPFS=y
> +CONFIG_DEVTMPFS_MOUNT=y
> +CONFIG_DMA_CMA=y
> +CONFIG_CMA_SIZE_MBYTES=64
> +CONFIG_SIMPLE_PM_BUS=y
> +CONFIG_MTD=y
> +CONFIG_MTD_BLOCK=y
> +CONFIG_MTD_M25P80=y
> +CONFIG_MTD_SPI_NOR=y
> +CONFIG_EEPROM_AT24=y
> +CONFIG_BLK_DEV_SD=y
> +CONFIG_ATA=y
> +CONFIG_SATA_RCAR=y
> +CONFIG_NETDEVICES=y
> +# CONFIG_NET_VENDOR_ARC is not set
> +# CONFIG_NET_CADENCE is not set
> +# CONFIG_NET_VENDOR_BROADCOM is not set
> +# CONFIG_NET_VENDOR_CIRRUS is not set
> +# CONFIG_NET_VENDOR_FARADAY is not set
> +# CONFIG_NET_VENDOR_INTEL is not set
> +# CONFIG_NET_VENDOR_MARVELL is not set
> +# CONFIG_NET_VENDOR_MICREL is not set
> +# CONFIG_NET_VENDOR_NATSEMI is not set
> +CONFIG_SH_ETH=y
> +CONFIG_RAVB=y
> +# CONFIG_NET_VENDOR_SEEQ is not set
> +CONFIG_SMSC911X=y
> +# CONFIG_NET_VENDOR_STMICRO is not set
> +# CONFIG_NET_VENDOR_VIA is not set
> +# CONFIG_NET_VENDOR_WIZNET is not set
> +CONFIG_SMSC_PHY=y
> +CONFIG_MICREL_PHY=y
> +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
> +CONFIG_INPUT_EVDEV=y
> +CONFIG_KEYBOARD_GPIO=y
> +# CONFIG_INPUT_MOUSE is not set
> +CONFIG_INPUT_TOUCHSCREEN=y
> +CONFIG_TOUCHSCREEN_ST1232=y
> +CONFIG_INPUT_MISC=y
> +CONFIG_INPUT_ADXL34X=y
> +# CONFIG_LEGACY_PTYS is not set
> +CONFIG_SERIAL_8250=y
> +CONFIG_SERIAL_8250_CONSOLE=y
> +CONFIG_SERIAL_8250_EM=y
> +CONFIG_SERIAL_SH_SCI=y
> +CONFIG_SERIAL_SH_SCI_NR_UARTS=20
> +CONFIG_SERIAL_SH_SCI_CONSOLE=y
> +CONFIG_I2C_CHARDEV=y
> +CONFIG_I2C_GPIO=y
> +CONFIG_I2C_RIIC=y
> +CONFIG_I2C_SH_MOBILE=y
> +CONFIG_I2C_RCAR=y
> +CONFIG_SPI=y
> +CONFIG_SPI_RSPI=y
> +CONFIG_SPI_SH_MSIOF=y
> +CONFIG_SPI_SH_HSPI=y
> +CONFIG_GPIO_EM=y
> +CONFIG_GPIO_RCAR=y
> +CONFIG_GPIO_PCF857X=y
> +CONFIG_POWER_SUPPLY=y
> +CONFIG_POWER_RESET=y
> +CONFIG_POWER_RESET_RMOBILE=y
> +# CONFIG_HWMON is not set
> +CONFIG_THERMAL=y
> +CONFIG_CPU_THERMAL=y
> +CONFIG_RCAR_THERMAL=y
> +CONFIG_WATCHDOG=y
> +CONFIG_DA9063_WATCHDOG=y
> +CONFIG_RENESAS_WDT=y
> +CONFIG_MFD_AS3711=y
> +CONFIG_MFD_DA9063=y
> +CONFIG_REGULATOR_FIXED_VOLTAGE=y
> +CONFIG_REGULATOR_AS3711=y
> +CONFIG_REGULATOR_DA9210=y
> +CONFIG_REGULATOR_GPIO=y
> +CONFIG_REGULATOR_MAX8973=y
> +CONFIG_MEDIA_SUPPORT=y
> +CONFIG_MEDIA_CAMERA_SUPPORT=y
> +CONFIG_MEDIA_CONTROLLER=y
> +CONFIG_VIDEO_V4L2_SUBDEV_API=y
> +CONFIG_V4L_PLATFORM_DRIVERS=y
> +CONFIG_SOC_CAMERA=y
> +CONFIG_SOC_CAMERA_PLATFORM=y
> +CONFIG_VIDEO_RCAR_VIN=y
> +CONFIG_V4L_MEM2MEM_DRIVERS=y
> +CONFIG_VIDEO_RENESAS_VSP1=y
> +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
> +CONFIG_VIDEO_ADV7180=y
> +CONFIG_VIDEO_ML86V7667=y
> +CONFIG_DRM=y
> +CONFIG_DRM_I2C_ADV7511=y
> +CONFIG_DRM_RCAR_DU=y
> +CONFIG_DRM_RCAR_HDMI=y
> +CONFIG_DRM_RCAR_LVDS=y
> +CONFIG_FB_SH_MOBILE_LCDC=y
> +CONFIG_FB_SH_MOBILE_MERAM=y
> +# CONFIG_LCD_CLASS_DEVICE is not set
> +# CONFIG_BACKLIGHT_GENERIC is not set
> +CONFIG_BACKLIGHT_PWM=y
> +CONFIG_BACKLIGHT_AS3711=y
> +CONFIG_SOUND=y
> +CONFIG_SND=y
> +CONFIG_SND_SOC=y
> +CONFIG_SND_SOC_SH4_FSI=y
> +CONFIG_SND_SOC_RCAR=y
> +CONFIG_SND_SOC_RSRC_CARD=y
> +CONFIG_SND_SOC_AK4642=y
> +CONFIG_SND_SOC_SGTL5000=y
> +CONFIG_SND_SOC_WM8978=y
> +CONFIG_USB=y
> +CONFIG_USB_XHCI_HCD=y
> +CONFIG_USB_XHCI_RCAR=y
> +CONFIG_USB_EHCI_HCD=y
> +CONFIG_USB_OHCI_HCD=y
> +CONFIG_USB_R8A66597_HCD=y
> +CONFIG_USB_RENESAS_USBHS=y
> +CONFIG_USB_RCAR_PHY=y
> +CONFIG_USB_GADGET=y
> +CONFIG_USB_RENESAS_USBHS_UDC=y
> +CONFIG_USB_ETH=y
> +CONFIG_MMC=y
> +CONFIG_MMC_SDHI=y
> +CONFIG_MMC_SH_MMCIF=y
> +CONFIG_NEW_LEDS=y
> +CONFIG_LEDS_CLASS=y
> +CONFIG_LEDS_GPIO=y
> +CONFIG_RTC_CLASS=y
> +CONFIG_RTC_DRV_RS5C372=y
> +CONFIG_RTC_DRV_BQ32K=y
> +CONFIG_RTC_DRV_S35390A=y
> +CONFIG_RTC_DRV_RX8581=y
> +CONFIG_DMADEVICES=y
> +CONFIG_SH_DMAE=y
> +CONFIG_RCAR_DMAC=y
> +CONFIG_RENESAS_USB_DMAC=y
> +# CONFIG_IOMMU_SUPPORT is not set
> +CONFIG_IIO=y
> +CONFIG_AK8975=y
> +CONFIG_PWM=y
> +CONFIG_PWM_RCAR=y
> +CONFIG_PWM_RENESAS_TPU=y
> +CONFIG_GENERIC_PHY=y
> +CONFIG_PHY_RCAR_GEN2=y
> +# CONFIG_DNOTIFY is not set
> +CONFIG_MSDOS_FS=y
> +CONFIG_VFAT_FS=y
> +CONFIG_TMPFS=y
> +# CONFIG_MISC_FILESYSTEMS is not set
> +CONFIG_NFS_FS=y
> +CONFIG_NFS_V3_ACL=y
> +CONFIG_NFS_V4=y
> +CONFIG_NFS_V4_1=y
> +CONFIG_ROOT_NFS=y
> +CONFIG_NLS_CODEPAGE_437=y
> +CONFIG_NLS_ISO8859_1=y
> +# CONFIG_ENABLE_WARN_DEPRECATED is not set
> +# CONFIG_ENABLE_MUST_CHECK is not set
> +# CONFIG_ARM_UNWIND is not set
> diff --git a/wic/iwg20m.wks b/wic/iwg20m.wks
> new file mode 100644
> index 0000000..14bf8b0
> --- /dev/null
> +++ b/wic/iwg20m.wks
> @@ -0,0 +1,18 @@
> +#
> +# CIP Core, generic profile
> +#
> +# Copyright (c) Toshiba corp., 2019
> +#
> +# Authors:
> +# Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +
> +# [Note] u-boot runs from an SPI memory device
> +
> +# SDCard Boot partition (copies files in IMAGE_BOOT_FILES: zImage and device tree)
> +part /boot --source bootimg-partition --ondisk mmcblk0 --fstype vfat --label boot --align 1 --size 32M --extra-space 0
> +
> +# Rootfs partition
> +part / --source rootfs --ondisk mmcblk0 --fstype ext4 --label root --align 1024 --size 2G --active
>
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2019-06-06 6:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Add support for iwg20m to ISAR CIP Core>
2019-06-06 2:02 ` Daniel Sangorrin
2019-06-06 2:02 ` [PATCH] iwg20m: add support for this board Daniel Sangorrin
2019-06-06 6:20 ` Jan Kiszka [this message]
2019-06-06 8:17 ` daniel.sangorrin
2019-06-06 8:26 ` Claudius Heine
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=0b70c8f4-9ca2-1ef6-d1a3-826dc71d5a96@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=cip-dev@lists.cip-project.org \
--cc=daniel.sangorrin@toshiba.co.jp \
--cc=isar-users@googlegroups.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox