From: Philippe Schenker <dev@pschenker.ch> To: marcel.ziswiler@toradex.com, max.krummenacher@toradex.com, stefan@agner.ch, devicetree@vger.kernel.org, Rob Herring <robh+dt@kernel.org>, Shawn Guo <shawnguo@kernel.org>, Mark Rutland <mark.rutland@arm.com> Cc: Philippe Schenker <philippe.schenker@toradex.com>, Fabio Estevam <festevam@gmail.com>, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Pengutronix Kernel Team <kernel@pengutronix.de>, NXP Linux Team <linux-imx@nxp.com>, Sascha Hauer <s.hauer@pengutronix.de> Subject: [PATCH 12/22] ARM: dts: imx6: Add touchscreens used on Toradex eval boards Date: Tue, 30 Jul 2019 16:46:39 +0200 [thread overview] Message-ID: <20190730144649.19022-13-dev@pschenker.ch> (raw) In-Reply-To: <20190730144649.19022-1-dev@pschenker.ch> From: Philippe Schenker <philippe.schenker@toradex.com> This commit adds the touchscreens from Toradex so one can enable it. Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com> --- arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts | 44 +++++++++++++++++++ arch/arm/boot/dts/imx6q-apalis-eval.dts | 19 ++++++++ arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts | 19 ++++++++ arch/arm/boot/dts/imx6q-apalis-ixora.dts | 19 ++++++++ 4 files changed, 101 insertions(+) diff --git a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts index 9a5d6c94cca4..63d4f9ca9ad8 100644 --- a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts +++ b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts @@ -168,6 +168,34 @@ &i2c3 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pcap_1>; + reg = <0x4a>; + interrupt-parent = <&gpio1>; + interrupts = <9 IRQ_TYPE_EDGE_FALLING>; /* SODIMM 28 */ + reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; /* SODIMM 30 */ + status = "disabled"; + }; + + /* + * the PCAPs use SODIMM 28/30, also used for PWM<B>, PWM<C>, aka pwm1, + * pwm4. So if you enable one of the PCAP controllers disable the pwms. + */ + pcap: pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pcap_1>; + gpios = <&gpio1 9 0 /* SODIMM 28, Pen down interrupt */ + &gpio2 10 0 /* SODIMM 30, Reset */ + >; + status = "disabled"; + }; + /* M41T0M6 real time clock on carrier board */ rtc_i2c: rtc@68 { compatible = "st,m41t0"; @@ -175,6 +203,22 @@ }; }; +&iomuxc { + pinctrl_pcap_1: pcap-1 { + fsl,pins = < + MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x1b0b0 /* SODIMM 28 */ + MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x1b0b0 /* SODIMM 30 */ + >; + }; + + pinctrl_mxt_ts: mxt-ts { + fsl,pins = < + MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x130b0 /* SODIMM 107 */ + MX6QDL_PAD_SD2_DAT1__GPIO1_IO14 0x130b0 /* SODIMM 106 */ + >; + }; +}; + &ipu1_di0_disp0 { remote-endpoint = <&lcd_display_in>; }; diff --git a/arch/arm/boot/dts/imx6q-apalis-eval.dts b/arch/arm/boot/dts/imx6q-apalis-eval.dts index 0edd3043d9c1..60ec5e89d215 100644 --- a/arch/arm/boot/dts/imx6q-apalis-eval.dts +++ b/arch/arm/boot/dts/imx6q-apalis-eval.dts @@ -167,6 +167,25 @@ &i2c1 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + reg = <0x4a>; + interrupt-parent = <&gpio6>; + interrupts = <10 IRQ_TYPE_EDGE_FALLING>; + reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */ + status = "disabled"; + }; + + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio6 10 0 /* MXM3 11, Pen down interrupt */ + &gpio6 9 0 /* MXM3 13, Reset */ + >; + }; + pcie-switch@58 { compatible = "plx,pex8605"; reg = <0x58>; diff --git a/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts b/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts index b94bb687be6b..98a8ae20b1f2 100644 --- a/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts +++ b/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts @@ -172,6 +172,25 @@ &i2c1 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + reg = <0x4a>; + interrupt-parent = <&gpio6>; + interrupts = <10 IRQ_TYPE_EDGE_FALLING>; + reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */ + status = "disabled"; + }; + + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio6 10 GPIO_ACTIVE_HIGH /* MXM3 11, Pen down interrupt */ + &gpio6 9 GPIO_ACTIVE_HIGH /* MXM3 13, Reset */ + >; + }; + /* M41T0M6 real time clock on carrier board */ rtc_i2c: rtc@68 { compatible = "st,m41t0"; diff --git a/arch/arm/boot/dts/imx6q-apalis-ixora.dts b/arch/arm/boot/dts/imx6q-apalis-ixora.dts index 302fd6adc8a7..67f6b36e6f94 100644 --- a/arch/arm/boot/dts/imx6q-apalis-ixora.dts +++ b/arch/arm/boot/dts/imx6q-apalis-ixora.dts @@ -171,6 +171,25 @@ &i2c1 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + reg = <0x4a>; + interrupt-parent = <&gpio6>; + interrupts = <10 IRQ_TYPE_EDGE_FALLING>; + reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */ + status = "disabled"; + }; + + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio6 10 GPIO_ACTIVE_HIGH /* MXM3 11, Pen down interrupt */ + &gpio6 9 GPIO_ACTIVE_HIGH /* MXM3 13, Reset */ + >; + }; + eeprom@50 { compatible = "atmel,24c02"; reg = <0x50>; -- 2.22.0
WARNING: multiple messages have this Message-ID (diff)
From: Philippe Schenker <dev@pschenker.ch> To: marcel.ziswiler@toradex.com, max.krummenacher@toradex.com, stefan@agner.ch, devicetree@vger.kernel.org, Rob Herring <robh+dt@kernel.org>, Shawn Guo <shawnguo@kernel.org>, Mark Rutland <mark.rutland@arm.com> Cc: Sascha Hauer <s.hauer@pengutronix.de>, linux-kernel@vger.kernel.org, Philippe Schenker <philippe.schenker@toradex.com>, NXP Linux Team <linux-imx@nxp.com>, Pengutronix Kernel Team <kernel@pengutronix.de>, Fabio Estevam <festevam@gmail.com>, linux-arm-kernel@lists.infradead.org Subject: [PATCH 12/22] ARM: dts: imx6: Add touchscreens used on Toradex eval boards Date: Tue, 30 Jul 2019 16:46:39 +0200 [thread overview] Message-ID: <20190730144649.19022-13-dev@pschenker.ch> (raw) In-Reply-To: <20190730144649.19022-1-dev@pschenker.ch> From: Philippe Schenker <philippe.schenker@toradex.com> This commit adds the touchscreens from Toradex so one can enable it. Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com> --- arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts | 44 +++++++++++++++++++ arch/arm/boot/dts/imx6q-apalis-eval.dts | 19 ++++++++ arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts | 19 ++++++++ arch/arm/boot/dts/imx6q-apalis-ixora.dts | 19 ++++++++ 4 files changed, 101 insertions(+) diff --git a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts index 9a5d6c94cca4..63d4f9ca9ad8 100644 --- a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts +++ b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts @@ -168,6 +168,34 @@ &i2c3 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pcap_1>; + reg = <0x4a>; + interrupt-parent = <&gpio1>; + interrupts = <9 IRQ_TYPE_EDGE_FALLING>; /* SODIMM 28 */ + reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; /* SODIMM 30 */ + status = "disabled"; + }; + + /* + * the PCAPs use SODIMM 28/30, also used for PWM<B>, PWM<C>, aka pwm1, + * pwm4. So if you enable one of the PCAP controllers disable the pwms. + */ + pcap: pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pcap_1>; + gpios = <&gpio1 9 0 /* SODIMM 28, Pen down interrupt */ + &gpio2 10 0 /* SODIMM 30, Reset */ + >; + status = "disabled"; + }; + /* M41T0M6 real time clock on carrier board */ rtc_i2c: rtc@68 { compatible = "st,m41t0"; @@ -175,6 +203,22 @@ }; }; +&iomuxc { + pinctrl_pcap_1: pcap-1 { + fsl,pins = < + MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x1b0b0 /* SODIMM 28 */ + MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x1b0b0 /* SODIMM 30 */ + >; + }; + + pinctrl_mxt_ts: mxt-ts { + fsl,pins = < + MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x130b0 /* SODIMM 107 */ + MX6QDL_PAD_SD2_DAT1__GPIO1_IO14 0x130b0 /* SODIMM 106 */ + >; + }; +}; + &ipu1_di0_disp0 { remote-endpoint = <&lcd_display_in>; }; diff --git a/arch/arm/boot/dts/imx6q-apalis-eval.dts b/arch/arm/boot/dts/imx6q-apalis-eval.dts index 0edd3043d9c1..60ec5e89d215 100644 --- a/arch/arm/boot/dts/imx6q-apalis-eval.dts +++ b/arch/arm/boot/dts/imx6q-apalis-eval.dts @@ -167,6 +167,25 @@ &i2c1 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + reg = <0x4a>; + interrupt-parent = <&gpio6>; + interrupts = <10 IRQ_TYPE_EDGE_FALLING>; + reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */ + status = "disabled"; + }; + + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio6 10 0 /* MXM3 11, Pen down interrupt */ + &gpio6 9 0 /* MXM3 13, Reset */ + >; + }; + pcie-switch@58 { compatible = "plx,pex8605"; reg = <0x58>; diff --git a/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts b/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts index b94bb687be6b..98a8ae20b1f2 100644 --- a/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts +++ b/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts @@ -172,6 +172,25 @@ &i2c1 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + reg = <0x4a>; + interrupt-parent = <&gpio6>; + interrupts = <10 IRQ_TYPE_EDGE_FALLING>; + reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */ + status = "disabled"; + }; + + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio6 10 GPIO_ACTIVE_HIGH /* MXM3 11, Pen down interrupt */ + &gpio6 9 GPIO_ACTIVE_HIGH /* MXM3 13, Reset */ + >; + }; + /* M41T0M6 real time clock on carrier board */ rtc_i2c: rtc@68 { compatible = "st,m41t0"; diff --git a/arch/arm/boot/dts/imx6q-apalis-ixora.dts b/arch/arm/boot/dts/imx6q-apalis-ixora.dts index 302fd6adc8a7..67f6b36e6f94 100644 --- a/arch/arm/boot/dts/imx6q-apalis-ixora.dts +++ b/arch/arm/boot/dts/imx6q-apalis-ixora.dts @@ -171,6 +171,25 @@ &i2c1 { status = "okay"; + /* Atmel maxtouch controller */ + atmel_mxt_ts: atmel_mxt_ts@4a { + compatible = "atmel,maxtouch"; + reg = <0x4a>; + interrupt-parent = <&gpio6>; + interrupts = <10 IRQ_TYPE_EDGE_FALLING>; + reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */ + status = "disabled"; + }; + + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio6 10 GPIO_ACTIVE_HIGH /* MXM3 11, Pen down interrupt */ + &gpio6 9 GPIO_ACTIVE_HIGH /* MXM3 13, Reset */ + >; + }; + eeprom@50 { compatible = "atmel,24c02"; reg = <0x50>; -- 2.22.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-07-30 14:57 UTC|newest] Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-07-30 14:46 [PATCH 00/22] This patchset holds some common changes that were never upstreamed Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 01/22] ARM: dts: imx7-colibri: make sure module supplies are always on Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 02/22] ARM: dts: imx7-colibri: disable HS400 Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 03/22] ARM: dts: imx7-colibri: prepare module device tree for FlexCAN Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 04/22] ARM: dts: imx7-colibri: Add sleep mode to ethernet Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 05/22] ARM: dts: add recovery for I2C for iMX7 Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 06/22] ARM: dts: imx7-colibri: add GPIO wakeup key Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 07/22] ARM: dts: imx7-colibri: fix 1.8V/UHS support Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 08/22] ARM: dts: imx7-colibri: Add touch controllers Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 09/22] ARM: dts: imx6qdl-colibri: add phy to fec Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 10/22] ARM: dts: imx6qdl-colibri: Add missing pin declaration in iomuxc Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 11/22] ARM: dts: imx6: Add sleep state to can interfaces Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-31 7:14 ` Michal Vokáč 2019-07-31 7:14 ` Michal Vokáč 2019-07-31 11:13 ` Philippe Schenker 2019-07-31 11:13 ` Philippe Schenker 2019-07-31 11:13 ` Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker [this message] 2019-07-30 14:46 ` [PATCH 12/22] ARM: dts: imx6: Add touchscreens used on Toradex eval boards Philippe Schenker 2019-07-30 20:46 ` Fabio Estevam 2019-07-30 20:46 ` Fabio Estevam 2019-07-30 20:46 ` Fabio Estevam 2019-07-31 6:43 ` Philippe Schenker 2019-07-31 6:43 ` Philippe Schenker 2019-07-31 6:43 ` Philippe Schenker 2019-07-31 6:54 ` Michal Vokáč 2019-07-31 6:54 ` Michal Vokáč 2019-07-31 6:54 ` Michal Vokáč 2019-07-30 14:46 ` [PATCH 13/22] ARM: dts: colibri-imx6: Add missing pinmuxing to Toradex eval board Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-31 7:09 ` Michal Vokáč 2019-07-31 7:09 ` Michal Vokáč 2019-07-30 14:46 ` [PATCH 14/22] ARM: dts: apalis-imx6: Add some example I2C devices Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 20:53 ` Fabio Estevam 2019-07-30 20:53 ` Fabio Estevam 2019-07-30 20:53 ` Fabio Estevam 2019-07-31 11:36 ` Philippe Schenker 2019-07-31 11:36 ` Philippe Schenker 2019-07-31 11:36 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 15/22] ARM: dts: apalis-imx6: Add some optional " Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 20:43 ` Fabio Estevam 2019-07-30 20:43 ` Fabio Estevam 2019-07-30 20:43 ` Fabio Estevam 2019-07-31 11:37 ` Philippe Schenker 2019-07-31 11:37 ` Philippe Schenker 2019-07-31 11:37 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 16/22] ARM: dts: imx6ull-colibri: Add sleep mode to fec Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 17/22] ARM: dts: imx6ull-colibri: reduce v_batt current in power off Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 18/22] ARM: dts: imx6ull-colibri: Add watchdog Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 19/22] ARM: dts: imx6ull: improve can templates Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 20/22] ARM: dts: imx6ull-colibri: Add general wakeup key used on Colibri Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 21/22] ARM: dts: imx6/7-colibri: switch dr_mode to otg Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker 2019-07-30 14:46 ` [PATCH 22/22] ARM: dts: imx6ull-colibri: Add touchscreens used with Eval Board Philippe Schenker 2019-07-30 14:46 ` Philippe Schenker
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=20190730144649.19022-13-dev@pschenker.ch \ --to=dev@pschenker.ch \ --cc=devicetree@vger.kernel.org \ --cc=festevam@gmail.com \ --cc=kernel@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=marcel.ziswiler@toradex.com \ --cc=mark.rutland@arm.com \ --cc=max.krummenacher@toradex.com \ --cc=philippe.schenker@toradex.com \ --cc=robh+dt@kernel.org \ --cc=s.hauer@pengutronix.de \ --cc=shawnguo@kernel.org \ --cc=stefan@agner.ch \ /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: linkBe 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.