From: petr.cvek@tul.cz (Petr Cvek)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 08/26] ARM: pxa: magician: Rename abstract LCD GPIOs
Date: Mon, 28 Sep 2015 23:15:57 +0200 [thread overview]
Message-ID: <5609AE0D.6070701@tul.cz> (raw)
In-Reply-To: <cover.1443472089.git.petr.cvek@tul.cz>
This patch renames GPIOs, which are used to control the power lines to
the LCD screen. New names correspond to a real functionality, which was
measured on the HTC Magician board_id 0x3a.
Signed-off-by: Petr Cvek <petr.cvek@tul.cz>
---
arch/arm/mach-pxa/include/mach/magician.h | 6 +++---
arch/arm/mach-pxa/magician.c | 33 +++++++++++++++++--------------
2 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/arch/arm/mach-pxa/include/mach/magician.h b/arch/arm/mach-pxa/include/mach/magician.h
index 3f8922a..af4cdc2 100644
--- a/arch/arm/mach-pxa/include/mach/magician.h
+++ b/arch/arm/mach-pxa/include/mach/magician.h
@@ -52,9 +52,9 @@
#define GPIO101_MAGICIAN_KEY_VOL_DOWN 101
#define GPIO102_MAGICIAN_KEY_PHONE 102
#define GPIO103_MAGICIAN_LED_KP 103
-#define GPIO104_MAGICIAN_LCD_POWER_1 104
-#define GPIO105_MAGICIAN_LCD_POWER_2 105
-#define GPIO106_MAGICIAN_LCD_POWER_3 106
+#define GPIO104_MAGICIAN_LCD_VOFF_EN 104
+#define GPIO105_MAGICIAN_LCD_VON_EN 105
+#define GPIO106_MAGICIAN_LCD_DCDC_NRESET 106
#define GPIO107_MAGICIAN_DS1WM_IRQ 107
#define GPIO108_MAGICIAN_GSM_READY 108
#define GPIO114_MAGICIAN_UNKNOWN 114
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index 91d302b..d78fc3a 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -337,22 +337,22 @@ static void toppoly_lcd_power(int on, struct fb_var_screeninfo *si)
if (on) {
gpio_set_value(EGPIO_MAGICIAN_TOPPOLY_POWER, 1);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 1);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 1);
udelay(2000);
gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 1);
udelay(2000);
/* FIXME: enable LCDC here */
udelay(2000);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 1);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 1);
udelay(2000);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 1);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 1);
} else {
msleep(15);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 0);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 0);
udelay(500);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 0);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 0);
udelay(1000);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 0);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 0);
gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 0);
}
}
@@ -367,19 +367,19 @@ static void samsung_lcd_power(int on, struct fb_var_screeninfo *si)
else
gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 1);
mdelay(10);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 1);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 1);
mdelay(10);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 1);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 1);
mdelay(30);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 1);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 1);
mdelay(10);
} else {
mdelay(10);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 0);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 0);
mdelay(30);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 0);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 0);
mdelay(10);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 0);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 0);
mdelay(10);
if (system_rev < 3)
gpio_set_value(GPIO75_MAGICIAN_SAMSUNG_POWER, 0);
@@ -796,9 +796,11 @@ static struct platform_device *devices[] __initdata = {
static struct gpio magician_global_gpios[] = {
{ GPIO13_MAGICIAN_CPLD_IRQ, GPIOF_IN, "CPLD_IRQ" },
{ GPIO107_MAGICIAN_DS1WM_IRQ, GPIOF_IN, "DS1WM_IRQ" },
- { GPIO104_MAGICIAN_LCD_POWER_1, GPIOF_OUT_INIT_LOW, "LCD power 1" },
- { GPIO105_MAGICIAN_LCD_POWER_2, GPIOF_OUT_INIT_LOW, "LCD power 2" },
- { GPIO106_MAGICIAN_LCD_POWER_3, GPIOF_OUT_INIT_LOW, "LCD power 3" },
+
+ /* NOTICE valid LCD init sequence */
+ { GPIO106_MAGICIAN_LCD_DCDC_NRESET, GPIOF_OUT_INIT_LOW, "LCD DCDC nreset" },
+ { GPIO104_MAGICIAN_LCD_VOFF_EN, GPIOF_OUT_INIT_LOW, "LCD VOFF enable" },
+ { GPIO105_MAGICIAN_LCD_VON_EN, GPIOF_OUT_INIT_LOW, "LCD VON enable" },
{ GPIO83_MAGICIAN_nIR_EN, GPIOF_OUT_INIT_HIGH, "nIR_EN" },
};
@@ -835,6 +837,7 @@ static void __init magician_init(void)
lcd_select = board_id & 0x8;
pr_info("LCD type: %s\n", lcd_select ? "Samsung" : "Toppoly");
if (lcd_select && (system_rev < 3))
+ /* NOTICE valid LCD init sequence */
gpio_request_one(GPIO75_MAGICIAN_SAMSUNG_POWER,
GPIOF_OUT_INIT_LOW, "Samsung LCD Power");
pxa_set_fb_info(NULL,
--
1.7.12.1
WARNING: multiple messages have this Message-ID (diff)
From: Petr Cvek <petr.cvek@tul.cz>
To: robert.jarzmik@free.fr, philipp.zabel@gmail.com,
daniel@zonque.org, haojian.zhuang@gmail.com,
linux@arm.linux.org.uk
Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 08/26] ARM: pxa: magician: Rename abstract LCD GPIOs
Date: Mon, 28 Sep 2015 23:15:57 +0200 [thread overview]
Message-ID: <5609AE0D.6070701@tul.cz> (raw)
In-Reply-To: <cover.1443472089.git.petr.cvek@tul.cz>
This patch renames GPIOs, which are used to control the power lines to
the LCD screen. New names correspond to a real functionality, which was
measured on the HTC Magician board_id 0x3a.
Signed-off-by: Petr Cvek <petr.cvek@tul.cz>
---
arch/arm/mach-pxa/include/mach/magician.h | 6 +++---
arch/arm/mach-pxa/magician.c | 33 +++++++++++++++++--------------
2 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/arch/arm/mach-pxa/include/mach/magician.h b/arch/arm/mach-pxa/include/mach/magician.h
index 3f8922a..af4cdc2 100644
--- a/arch/arm/mach-pxa/include/mach/magician.h
+++ b/arch/arm/mach-pxa/include/mach/magician.h
@@ -52,9 +52,9 @@
#define GPIO101_MAGICIAN_KEY_VOL_DOWN 101
#define GPIO102_MAGICIAN_KEY_PHONE 102
#define GPIO103_MAGICIAN_LED_KP 103
-#define GPIO104_MAGICIAN_LCD_POWER_1 104
-#define GPIO105_MAGICIAN_LCD_POWER_2 105
-#define GPIO106_MAGICIAN_LCD_POWER_3 106
+#define GPIO104_MAGICIAN_LCD_VOFF_EN 104
+#define GPIO105_MAGICIAN_LCD_VON_EN 105
+#define GPIO106_MAGICIAN_LCD_DCDC_NRESET 106
#define GPIO107_MAGICIAN_DS1WM_IRQ 107
#define GPIO108_MAGICIAN_GSM_READY 108
#define GPIO114_MAGICIAN_UNKNOWN 114
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index 91d302b..d78fc3a 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -337,22 +337,22 @@ static void toppoly_lcd_power(int on, struct fb_var_screeninfo *si)
if (on) {
gpio_set_value(EGPIO_MAGICIAN_TOPPOLY_POWER, 1);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 1);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 1);
udelay(2000);
gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 1);
udelay(2000);
/* FIXME: enable LCDC here */
udelay(2000);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 1);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 1);
udelay(2000);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 1);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 1);
} else {
msleep(15);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 0);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 0);
udelay(500);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 0);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 0);
udelay(1000);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 0);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 0);
gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 0);
}
}
@@ -367,19 +367,19 @@ static void samsung_lcd_power(int on, struct fb_var_screeninfo *si)
else
gpio_set_value(EGPIO_MAGICIAN_LCD_POWER, 1);
mdelay(10);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 1);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 1);
mdelay(10);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 1);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 1);
mdelay(30);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 1);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 1);
mdelay(10);
} else {
mdelay(10);
- gpio_set_value(GPIO105_MAGICIAN_LCD_POWER_2, 0);
+ gpio_set_value(GPIO105_MAGICIAN_LCD_VON_EN, 0);
mdelay(30);
- gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 0);
+ gpio_set_value(GPIO104_MAGICIAN_LCD_VOFF_EN, 0);
mdelay(10);
- gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 0);
+ gpio_set_value(GPIO106_MAGICIAN_LCD_DCDC_NRESET, 0);
mdelay(10);
if (system_rev < 3)
gpio_set_value(GPIO75_MAGICIAN_SAMSUNG_POWER, 0);
@@ -796,9 +796,11 @@ static struct platform_device *devices[] __initdata = {
static struct gpio magician_global_gpios[] = {
{ GPIO13_MAGICIAN_CPLD_IRQ, GPIOF_IN, "CPLD_IRQ" },
{ GPIO107_MAGICIAN_DS1WM_IRQ, GPIOF_IN, "DS1WM_IRQ" },
- { GPIO104_MAGICIAN_LCD_POWER_1, GPIOF_OUT_INIT_LOW, "LCD power 1" },
- { GPIO105_MAGICIAN_LCD_POWER_2, GPIOF_OUT_INIT_LOW, "LCD power 2" },
- { GPIO106_MAGICIAN_LCD_POWER_3, GPIOF_OUT_INIT_LOW, "LCD power 3" },
+
+ /* NOTICE valid LCD init sequence */
+ { GPIO106_MAGICIAN_LCD_DCDC_NRESET, GPIOF_OUT_INIT_LOW, "LCD DCDC nreset" },
+ { GPIO104_MAGICIAN_LCD_VOFF_EN, GPIOF_OUT_INIT_LOW, "LCD VOFF enable" },
+ { GPIO105_MAGICIAN_LCD_VON_EN, GPIOF_OUT_INIT_LOW, "LCD VON enable" },
{ GPIO83_MAGICIAN_nIR_EN, GPIOF_OUT_INIT_HIGH, "nIR_EN" },
};
@@ -835,6 +837,7 @@ static void __init magician_init(void)
lcd_select = board_id & 0x8;
pr_info("LCD type: %s\n", lcd_select ? "Samsung" : "Toppoly");
if (lcd_select && (system_rev < 3))
+ /* NOTICE valid LCD init sequence */
gpio_request_one(GPIO75_MAGICIAN_SAMSUNG_POWER,
GPIOF_OUT_INIT_LOW, "Samsung LCD Power");
pxa_set_fb_info(NULL,
--
1.7.12.1
next prev parent reply other threads:[~2015-09-28 21:15 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1443472089.git.petr.cvek@tul.cz>
2015-09-28 21:09 ` [PATCH v4 01/26] ARM: pxa: magician: Fix indentation in machine files Petr Cvek
2015-09-28 21:09 ` Petr Cvek
2015-10-03 12:14 ` Philipp Zabel
2015-10-03 12:14 ` Philipp Zabel
2015-09-28 21:10 ` [PATCH v4 02/26] ARM: pxa: magician: Change comments to be more informative Petr Cvek
2015-09-28 21:10 ` Petr Cvek
2015-10-03 12:19 ` Philipp Zabel
2015-10-03 12:19 ` Philipp Zabel
2015-10-13 20:08 ` Robert Jarzmik
2015-10-13 20:08 ` Robert Jarzmik
2015-09-28 21:10 ` [PATCH v4 03/26] ARM: pxa: magician: Print more specific error message for global GPIOs Petr Cvek
2015-09-28 21:10 ` Petr Cvek
2015-10-03 12:19 ` Philipp Zabel
2015-10-03 12:19 ` Philipp Zabel
2015-09-28 21:11 ` [PATCH v4 04/26] ARM: pxa: magician: Optimize debug messages for LCD power Petr Cvek
2015-09-28 21:11 ` Petr Cvek
2015-10-03 12:20 ` Philipp Zabel
2015-10-03 12:20 ` Philipp Zabel
2015-09-28 21:11 ` [PATCH v4 05/26] ARM: pxa: magician: Change description of LCD power GPIO Petr Cvek
2015-09-28 21:11 ` Petr Cvek
2015-10-03 12:21 ` Philipp Zabel
2015-10-03 12:21 ` Philipp Zabel
2015-09-28 21:15 ` [PATCH v4 06/26] ARM: pxa: magician: Add new discovered EGPIO pins Petr Cvek
2015-09-28 21:15 ` Petr Cvek
2015-10-03 12:23 ` Philipp Zabel
2015-10-03 12:23 ` Philipp Zabel
2015-09-28 21:15 ` [PATCH v4 07/26] ARM: pxa: magician: Fix HTC Magician pin mux definitions Petr Cvek
2015-09-28 21:15 ` Petr Cvek
2015-10-03 12:30 ` Philipp Zabel
2015-10-03 12:30 ` Philipp Zabel
2015-10-05 2:15 ` Petr Cvek
2015-10-05 2:15 ` Petr Cvek
2015-10-13 20:09 ` Robert Jarzmik
2015-10-13 20:09 ` Robert Jarzmik
2015-09-28 21:15 ` Petr Cvek [this message]
2015-09-28 21:15 ` [PATCH v4 08/26] ARM: pxa: magician: Rename abstract LCD GPIOs Petr Cvek
2015-10-03 12:31 ` Philipp Zabel
2015-10-03 12:31 ` Philipp Zabel
2015-09-28 21:16 ` [PATCH v4 09/26] ARM: pxa: magician: Optimize powerup delays for Samsung LCD Petr Cvek
2015-09-28 21:16 ` Petr Cvek
2015-10-03 12:32 ` Philipp Zabel
2015-10-03 12:32 ` Philipp Zabel
2015-09-28 21:32 ` [PATCH v4 10/26] ARM: pxa: magician: Optimize Samsung LCD refresh to 50Hz Petr Cvek
2015-09-28 21:32 ` Petr Cvek
2015-10-03 12:33 ` Philipp Zabel
2015-10-03 12:33 ` Philipp Zabel
2015-09-28 21:32 ` [PATCH v4 11/26] ARM: pxa: magician: Optimize EGPIO initial values Petr Cvek
2015-09-28 21:32 ` Petr Cvek
2015-10-03 12:35 ` Philipp Zabel
2015-10-03 12:35 ` Philipp Zabel
2015-10-07 19:45 ` Robert Jarzmik
2015-10-07 19:45 ` Robert Jarzmik
2015-09-28 21:32 ` [PATCH v4 12/26] ARM: pxa: magician: Rename charger cable detection EGPIOs Petr Cvek
2015-09-28 21:32 ` Petr Cvek
2015-10-03 12:38 ` Philipp Zabel
2015-10-03 12:38 ` Philipp Zabel
2015-10-09 2:33 ` Petr Cvek
2015-10-09 2:33 ` Petr Cvek
2015-09-28 21:33 ` [PATCH v4 13/26] ARM: pxa: magician: Fix and add charging detection functions Petr Cvek
2015-09-28 21:33 ` Petr Cvek
2015-09-28 21:33 ` [PATCH v4 14/26] ARM: pxa: magician: Fix platform data for both PXA27x I2C controllers Petr Cvek
2015-09-28 21:33 ` Petr Cvek
2015-10-03 12:41 ` Philipp Zabel
2015-10-03 12:41 ` Philipp Zabel
2015-09-28 21:34 ` [PATCH v4 15/26] ARM: pxa: magician: Fix redundant GPIO request for pxaficp_ir Petr Cvek
2015-09-28 21:34 ` Petr Cvek
2015-09-28 21:34 ` [PATCH v4 16/26] ARM: pxa: magician: Fix support for Intel Strata NOR Flash Petr Cvek
2015-09-28 21:34 ` Petr Cvek
2015-09-28 21:38 ` [PATCH v4 17/26] ARM: pxa: magician: Fix wrongly enabled USB host ports Petr Cvek
2015-09-28 21:38 ` Petr Cvek
2015-10-03 12:45 ` Philipp Zabel
2015-10-03 12:45 ` Philipp Zabel
2015-10-05 2:03 ` Petr Cvek
2015-10-05 2:03 ` Petr Cvek
2015-09-28 21:38 ` [PATCH v4 18/26] ARM: pxa: magician: Add support for ADS7846 Petr Cvek
2015-09-28 21:38 ` Petr Cvek
2015-10-03 12:49 ` Philipp Zabel
2015-10-03 12:49 ` Philipp Zabel
2015-10-12 4:39 ` Petr Cvek
2015-10-12 4:39 ` Petr Cvek
2015-09-28 21:38 ` [PATCH v4 19/26] ARM: pxa: magician: Add support for Omnivision OV9640 camera Petr Cvek
2015-09-28 21:38 ` Petr Cvek
2015-10-03 12:50 ` Philipp Zabel
2015-10-03 12:50 ` Philipp Zabel
2015-10-07 19:49 ` Robert Jarzmik
2015-10-07 19:49 ` Robert Jarzmik
2015-10-08 6:05 ` Petr Cvek
2015-10-08 6:05 ` Petr Cvek
2015-09-28 21:39 ` [PATCH v4 20/26] ARM: pxa: magician: Add support for MAX1587A Vcore regulator Petr Cvek
2015-09-28 21:39 ` Petr Cvek
2015-10-03 12:57 ` Philipp Zabel
2015-10-03 12:57 ` Philipp Zabel
2015-10-13 20:16 ` Robert Jarzmik
2015-10-13 20:16 ` Robert Jarzmik
2015-09-28 21:39 ` [PATCH v4 21/26] ARM: pxa: magician: Add support for PXA27x UDC Petr Cvek
2015-09-28 21:39 ` Petr Cvek
2015-10-03 12:58 ` Philipp Zabel
2015-10-03 12:58 ` Philipp Zabel
2015-10-13 20:29 ` Robert Jarzmik
2015-10-13 20:29 ` Robert Jarzmik
2015-09-28 21:39 ` [PATCH v4 22/26] ARM: pxa: magician: Remove pdata for pasic3-leds Petr Cvek
2015-09-28 21:39 ` Petr Cvek
2015-10-03 12:59 ` Philipp Zabel
2015-10-03 12:59 ` Philipp Zabel
2015-10-13 20:32 ` Robert Jarzmik
2015-10-13 20:32 ` Robert Jarzmik
2015-09-28 21:40 ` [PATCH v4 23/26] ARM: pxa: magician: Remove definition of the STUART port Petr Cvek
2015-09-28 21:40 ` Petr Cvek
2015-09-28 21:40 ` [PATCH v4 24/26] ARM: pxa: magician: Add debug message for backlight brightness function Petr Cvek
2015-09-28 21:40 ` Petr Cvek
2015-09-28 21:40 ` [PATCH v4 25/26] ARM: pxa: magician: Add missing regulator for PWM backlight Petr Cvek
2015-09-28 21:40 ` Petr Cvek
2015-10-03 13:02 ` Philipp Zabel
2015-10-03 13:02 ` Philipp Zabel
2015-09-28 21:42 ` [PATCH v4 26/26] ARM: pxa: magician: Move platform_add_devices() to the end of magician_init() Petr Cvek
2015-09-28 21:42 ` Petr Cvek
2015-10-03 13:04 ` Philipp Zabel
2015-10-03 13:04 ` Philipp Zabel
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=5609AE0D.6070701@tul.cz \
--to=petr.cvek@tul.cz \
--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.