All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC
@ 2018-07-26 15:40 Stefan Agner
  2018-07-26 15:40 ` [PATCH 2/2] ARM: tegra: readd gpio-ranges properties Stefan Agner
  2018-07-29 21:37 ` [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC Linus Walleij
  0 siblings, 2 replies; 8+ messages in thread
From: Stefan Agner @ 2018-07-26 15:40 UTC (permalink / raw)
  To: thierry.reding, jonathanh, linus.walleij
  Cc: pdeschrijver, digetx, keescook, marcel.ziswiler, linux-tegra,
	linux-gpio, linux-kernel, Stefan Agner

Tegra 2 uses a different GPIO controller which uses "tegra20-gpio" as
compatible string.

Make the compatible string the GPIO node is using a SoC specific
property. This prevents the kernel from registering the GPIO range
twice in case the GPIO range is specified in the device tree.

Fixes: 9462510ce31e ("pinctrl: tegra: Only set the gpio range if needed")
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
 drivers/pinctrl/tegra/pinctrl-tegra.c    | 6 +++---
 drivers/pinctrl/tegra/pinctrl-tegra.h    | 1 +
 drivers/pinctrl/tegra/pinctrl-tegra114.c | 1 +
 drivers/pinctrl/tegra/pinctrl-tegra124.c | 1 +
 drivers/pinctrl/tegra/pinctrl-tegra20.c  | 1 +
 drivers/pinctrl/tegra/pinctrl-tegra210.c | 1 +
 drivers/pinctrl/tegra/pinctrl-tegra30.c  | 1 +
 7 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.c b/drivers/pinctrl/tegra/pinctrl-tegra.c
index f974eee29a19..1aba75897d14 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra.c
@@ -629,12 +629,12 @@ static void tegra_pinctrl_clear_parked_bits(struct tegra_pmx *pmx)
 	}
 }
 
-static bool gpio_node_has_range(void)
+static bool gpio_node_has_range(const char *compatible)
 {
 	struct device_node *np;
 	bool has_prop = false;
 
-	np = of_find_compatible_node(NULL, NULL, "nvidia,tegra30-gpio");
+	np = of_find_compatible_node(NULL, NULL, compatible);
 	if (!np)
 		return has_prop;
 
@@ -728,7 +728,7 @@ int tegra_pinctrl_probe(struct platform_device *pdev,
 
 	tegra_pinctrl_clear_parked_bits(pmx);
 
-	if (!gpio_node_has_range())
+	if (!gpio_node_has_range(pmx->soc->gpio_compatible))
 		pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range);
 
 	platform_set_drvdata(pdev, pmx);
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.h b/drivers/pinctrl/tegra/pinctrl-tegra.h
index aa33c20766c4..44c71941b5f8 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra.h
+++ b/drivers/pinctrl/tegra/pinctrl-tegra.h
@@ -189,6 +189,7 @@ struct tegra_pingroup {
  */
 struct tegra_pinctrl_soc_data {
 	unsigned ngpios;
+	const char *gpio_compatible;
 	const struct pinctrl_pin_desc *pins;
 	unsigned npins;
 	struct tegra_function *functions;
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra114.c b/drivers/pinctrl/tegra/pinctrl-tegra114.c
index 56b33fca1bfc..511a8774fd8d 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra114.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra114.c
@@ -1839,6 +1839,7 @@ static const struct tegra_pingroup tegra114_groups[] = {
 
 static const struct tegra_pinctrl_soc_data tegra114_pinctrl = {
 	.ngpios = NUM_GPIOS,
+	.gpio_compatible = "nvidia,tegra30-gpio",
 	.pins = tegra114_pins,
 	.npins = ARRAY_SIZE(tegra114_pins),
 	.functions = tegra114_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra124.c b/drivers/pinctrl/tegra/pinctrl-tegra124.c
index 7bc998ace0d5..57e3cdcf4503 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra124.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra124.c
@@ -2051,6 +2051,7 @@ static const struct tegra_pingroup tegra124_groups[] = {
 
 static const struct tegra_pinctrl_soc_data tegra124_pinctrl = {
 	.ngpios = NUM_GPIOS,
+	.gpio_compatible = "nvidia,tegra30-gpio",
 	.pins = tegra124_pins,
 	.npins = ARRAY_SIZE(tegra124_pins),
 	.functions = tegra124_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra20.c b/drivers/pinctrl/tegra/pinctrl-tegra20.c
index b6dd939d32cc..624889ed3a9d 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra20.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra20.c
@@ -2221,6 +2221,7 @@ static const struct tegra_pingroup tegra20_groups[] = {
 
 static const struct tegra_pinctrl_soc_data tegra20_pinctrl = {
 	.ngpios = NUM_GPIOS,
+	.gpio_compatible = "nvidia,tegra20-gpio",
 	.pins = tegra20_pins,
 	.npins = ARRAY_SIZE(tegra20_pins),
 	.functions = tegra20_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra210.c b/drivers/pinctrl/tegra/pinctrl-tegra210.c
index c244e5b17bd6..0956a1c73391 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra210.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra210.c
@@ -1553,6 +1553,7 @@ static const struct tegra_pingroup tegra210_groups[] = {
 
 static const struct tegra_pinctrl_soc_data tegra210_pinctrl = {
 	.ngpios = NUM_GPIOS,
+	.gpio_compatible = "nvidia,tegra30-gpio",
 	.pins = tegra210_pins,
 	.npins = ARRAY_SIZE(tegra210_pins),
 	.functions = tegra210_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra30.c b/drivers/pinctrl/tegra/pinctrl-tegra30.c
index 1f180a20f2ab..c923ad58af84 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra30.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra30.c
@@ -2474,6 +2474,7 @@ static const struct tegra_pingroup tegra30_groups[] = {
 
 static const struct tegra_pinctrl_soc_data tegra30_pinctrl = {
 	.ngpios = NUM_GPIOS,
+	.gpio_compatible = "nvidia,tegra30-gpio",
 	.pins = tegra30_pins,
 	.npins = ARRAY_SIZE(tegra30_pins),
 	.functions = tegra30_functions,
-- 
2.18.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/2] ARM: tegra: readd gpio-ranges properties
  2018-07-26 15:40 [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC Stefan Agner
@ 2018-07-26 15:40 ` Stefan Agner
  2018-08-01 20:51   ` Dmitry Osipenko
  2018-07-29 21:37 ` [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC Linus Walleij
  1 sibling, 1 reply; 8+ messages in thread
From: Stefan Agner @ 2018-07-26 15:40 UTC (permalink / raw)
  To: thierry.reding, jonathanh, linus.walleij
  Cc: pdeschrijver, digetx, keescook, marcel.ziswiler, linux-tegra,
	linux-gpio, linux-kernel, Stefan Agner

The properties have been commented out to prevent a regression a
while ago. The first regression should be resolved by
commit 44af7927316e ("spi: Map SPI OF client IRQ at probe time").

The second regression is probably addressed by
commit 494fd7b7ad10 ("PM / core: fix deferred probe breaking suspend resume order")
and/or maybe others. Readd the gpio-ranges properties to see whether
regressions still get reported.

This reverts commit 4f1d841475e1f6e9e32496dda11215db56f4ea73
("ARM: tegra: Comment out gpio-ranges properties").

Signed-off-by: Stefan Agner <stefan@agner.ch>
---
 arch/arm/boot/dts/tegra114.dtsi | 2 --
 arch/arm/boot/dts/tegra124.dtsi | 2 --
 arch/arm/boot/dts/tegra20.dtsi  | 2 --
 arch/arm/boot/dts/tegra30.dtsi  | 2 --
 4 files changed, 8 deletions(-)

diff --git a/arch/arm/boot/dts/tegra114.dtsi b/arch/arm/boot/dts/tegra114.dtsi
index 84c4358dacac..39253450a974 100644
--- a/arch/arm/boot/dts/tegra114.dtsi
+++ b/arch/arm/boot/dts/tegra114.dtsi
@@ -240,9 +240,7 @@
 		gpio-controller;
 		#interrupt-cells = <2>;
 		interrupt-controller;
-		/*
 		gpio-ranges = <&pinmux 0 0 246>;
-		*/
 	};
 
 	apbmisc@70000800 {
diff --git a/arch/arm/boot/dts/tegra124.dtsi b/arch/arm/boot/dts/tegra124.dtsi
index 174092bfac90..47b51376ed36 100644
--- a/arch/arm/boot/dts/tegra124.dtsi
+++ b/arch/arm/boot/dts/tegra124.dtsi
@@ -263,9 +263,7 @@
 		gpio-controller;
 		#interrupt-cells = <2>;
 		interrupt-controller;
-		/*
 		gpio-ranges = <&pinmux 0 0 251>;
-		*/
 	};
 
 	apbdma: dma@60020000 {
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
index 983dd5c14794..cdf018a7568c 100644
--- a/arch/arm/boot/dts/tegra20.dtsi
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -258,9 +258,7 @@
 		gpio-controller;
 		#interrupt-cells = <2>;
 		interrupt-controller;
-		/*
 		gpio-ranges = <&pinmux 0 0 224>;
-		*/
 	};
 
 	vde@6001a000 {
diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
index 09087b9c5e26..b80f35411d72 100644
--- a/arch/arm/boot/dts/tegra30.dtsi
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -380,9 +380,7 @@
 		gpio-controller;
 		#interrupt-cells = <2>;
 		interrupt-controller;
-		/*
 		gpio-ranges = <&pinmux 0 0 248>;
-		*/
 	};
 
 	vde@6001a000 {
-- 
2.18.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC
  2018-07-26 15:40 [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC Stefan Agner
  2018-07-26 15:40 ` [PATCH 2/2] ARM: tegra: readd gpio-ranges properties Stefan Agner
@ 2018-07-29 21:37 ` Linus Walleij
  1 sibling, 0 replies; 8+ messages in thread
From: Linus Walleij @ 2018-07-29 21:37 UTC (permalink / raw)
  To: Stefan Agner
  Cc: thierry.reding, Jon Hunter, Peter De Schrijver, Dmitry Osipenko,
	Kees Cook, Marcel Ziswiler, linux-tegra,
	open list:GPIO SUBSYSTEM, linux-kernel

On Thu, Jul 26, 2018 at 5:40 PM Stefan Agner <stefan@agner.ch> wrote:

> Tegra 2 uses a different GPIO controller which uses "tegra20-gpio" as
> compatible string.
>
> Make the compatible string the GPIO node is using a SoC specific
> property. This prevents the kernel from registering the GPIO range
> twice in case the GPIO range is specified in the device tree.
>
> Fixes: 9462510ce31e ("pinctrl: tegra: Only set the gpio range if needed")
> Signed-off-by: Stefan Agner <stefan@agner.ch>

Patch applied.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: tegra: readd gpio-ranges properties
  2018-07-26 15:40 ` [PATCH 2/2] ARM: tegra: readd gpio-ranges properties Stefan Agner
@ 2018-08-01 20:51   ` Dmitry Osipenko
  2018-08-01 22:51     ` Stefan Agner
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Osipenko @ 2018-08-01 20:51 UTC (permalink / raw)
  To: Stefan Agner, thierry.reding, jonathanh, linus.walleij,
	pdeschrijver, marcel.ziswiler
  Cc: keescook, linux-tegra, linux-gpio, linux-kernel

On Thursday, 26 July 2018 18:40:25 MSK Stefan Agner wrote:
> The properties have been commented out to prevent a regression a
> while ago. The first regression should be resolved by
> commit 44af7927316e ("spi: Map SPI OF client IRQ at probe time").
> 
> The second regression is probably addressed by
> commit 494fd7b7ad10 ("PM / core: fix deferred probe breaking suspend resume
> order") and/or maybe others. Readd the gpio-ranges properties to see
> whether regressions still get reported.
> 
> This reverts commit 4f1d841475e1f6e9e32496dda11215db56f4ea73
> ("ARM: tegra: Comment out gpio-ranges properties").
> 
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> ---

Unfortunately the second regression hasn't been addressed yet, this patch 
still breaks wake-up using GPIO key. BTW, better to spell "readd" as "re-add".

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: tegra: readd gpio-ranges properties
  2018-08-01 20:51   ` Dmitry Osipenko
@ 2018-08-01 22:51     ` Stefan Agner
  2018-08-01 23:11       ` Dmitry Osipenko
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Agner @ 2018-08-01 22:51 UTC (permalink / raw)
  To: Dmitry Osipenko
  Cc: thierry.reding, jonathanh, linus.walleij, pdeschrijver,
	marcel.ziswiler, keescook, linux-tegra, linux-gpio, linux-kernel

On 01.08.2018 22:51, Dmitry Osipenko wrote:
> On Thursday, 26 July 2018 18:40:25 MSK Stefan Agner wrote:
>> The properties have been commented out to prevent a regression a
>> while ago. The first regression should be resolved by
>> commit 44af7927316e ("spi: Map SPI OF client IRQ at probe time").
>>
>> The second regression is probably addressed by
>> commit 494fd7b7ad10 ("PM / core: fix deferred probe breaking suspend resume
>> order") and/or maybe others. Readd the gpio-ranges properties to see
>> whether regressions still get reported.
>>
>> This reverts commit 4f1d841475e1f6e9e32496dda11215db56f4ea73
>> ("ARM: tegra: Comment out gpio-ranges properties").
>>
>> Signed-off-by: Stefan Agner <stefan@agner.ch>
>> ---
> 
> Unfortunately the second regression hasn't been addressed yet, this patch 
> still breaks wake-up using GPIO key. BTW, better to spell "readd" as "re-add".

You do have the hardware and could test it?

Hm, that is unfortunate. I think this was the patch which should address
the issue:
https://lkml.org/lkml/2015/9/10/218

--
Stefan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: tegra: readd gpio-ranges properties
  2018-08-01 22:51     ` Stefan Agner
@ 2018-08-01 23:11       ` Dmitry Osipenko
  2018-08-02 10:35         ` Dmitry Osipenko
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Osipenko @ 2018-08-01 23:11 UTC (permalink / raw)
  To: Stefan Agner, thierry.reding
  Cc: jonathanh, linus.walleij, pdeschrijver, marcel.ziswiler,
	keescook, linux-tegra, linux-gpio, linux-kernel

On Thursday, 2 August 2018 01:51:42 MSK Stefan Agner wrote:
> On 01.08.2018 22:51, Dmitry Osipenko wrote:
> > On Thursday, 26 July 2018 18:40:25 MSK Stefan Agner wrote:
> >> The properties have been commented out to prevent a regression a
> >> while ago. The first regression should be resolved by
> >> commit 44af7927316e ("spi: Map SPI OF client IRQ at probe time").
> >> 
> >> The second regression is probably addressed by
> >> commit 494fd7b7ad10 ("PM / core: fix deferred probe breaking suspend
> >> resume
> >> order") and/or maybe others. Readd the gpio-ranges properties to see
> >> whether regressions still get reported.
> >> 
> >> This reverts commit 4f1d841475e1f6e9e32496dda11215db56f4ea73
> >> ("ARM: tegra: Comment out gpio-ranges properties").
> >> 
> >> Signed-off-by: Stefan Agner <stefan@agner.ch>
> >> ---
> > 
> > Unfortunately the second regression hasn't been addressed yet, this patch
> > still breaks wake-up using GPIO key. BTW, better to spell "readd" as
> > "re-add".
> You do have the hardware and could test it?

Yes, I have.

> Hm, that is unfortunate. I think this was the patch which should address
> the issue:
> https://lkml.org/lkml/2015/9/10/218

I've tested the patch and it is still actual, i.e. it fixes the wake-up.
Welcome back to 2015 :-)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: tegra: readd gpio-ranges properties
  2018-08-01 23:11       ` Dmitry Osipenko
@ 2018-08-02 10:35         ` Dmitry Osipenko
  2018-08-16 14:44           ` Dmitry Osipenko
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Osipenko @ 2018-08-02 10:35 UTC (permalink / raw)
  To: Stefan Agner, thierry.reding, jonathanh, linus.walleij,
	pdeschrijver, marcel.ziswiler
  Cc: keescook, linux-tegra, linux-gpio, linux-kernel

On Thursday, 2 August 2018 02:11:23 MSK Dmitry Osipenko wrote:
> On Thursday, 2 August 2018 01:51:42 MSK Stefan Agner wrote:
> > On 01.08.2018 22:51, Dmitry Osipenko wrote:
> > > On Thursday, 26 July 2018 18:40:25 MSK Stefan Agner wrote:
> > >> The properties have been commented out to prevent a regression a
> > >> while ago. The first regression should be resolved by
> > >> commit 44af7927316e ("spi: Map SPI OF client IRQ at probe time").
> > >> 
> > >> The second regression is probably addressed by
> > >> commit 494fd7b7ad10 ("PM / core: fix deferred probe breaking suspend
> > >> resume
> > >> order") and/or maybe others. Readd the gpio-ranges properties to see
> > >> whether regressions still get reported.
> > >> 
> > >> This reverts commit 4f1d841475e1f6e9e32496dda11215db56f4ea73
> > >> ("ARM: tegra: Comment out gpio-ranges properties").
> > >> 
> > >> Signed-off-by: Stefan Agner <stefan@agner.ch>
> > >> ---
> > > 
> > > Unfortunately the second regression hasn't been addressed yet, this
> > > patch
> > > still breaks wake-up using GPIO key. BTW, better to spell "readd" as
> > > "re-add".
> > 
> > You do have the hardware and could test it?
> 
> Yes, I have.
> 
> > Hm, that is unfortunate. I think this was the patch which should address
> > the issue:
> > https://lkml.org/lkml/2015/9/10/218
> 
> I've tested the patch and it is still actual, i.e. it fixes the wake-up.
> Welcome back to 2015 :-)

Actually, the pinctrl-gpio probe order is easily fixable by reshuffling the 
drivers registration order within the kernel. I'll send patches.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: tegra: readd gpio-ranges properties
  2018-08-02 10:35         ` Dmitry Osipenko
@ 2018-08-16 14:44           ` Dmitry Osipenko
  0 siblings, 0 replies; 8+ messages in thread
From: Dmitry Osipenko @ 2018-08-16 14:44 UTC (permalink / raw)
  To: Stefan Agner, thierry.reding
  Cc: jonathanh, linus.walleij, pdeschrijver, marcel.ziswiler,
	keescook, linux-tegra, linux-gpio, linux-kernel

On Thursday, 2 August 2018 13:35:46 MSK Dmitry Osipenko wrote:
> On Thursday, 2 August 2018 02:11:23 MSK Dmitry Osipenko wrote:
> > On Thursday, 2 August 2018 01:51:42 MSK Stefan Agner wrote:
> > > On 01.08.2018 22:51, Dmitry Osipenko wrote:
> > > > On Thursday, 26 July 2018 18:40:25 MSK Stefan Agner wrote:
> > > >> The properties have been commented out to prevent a regression a
> > > >> while ago. The first regression should be resolved by
> > > >> commit 44af7927316e ("spi: Map SPI OF client IRQ at probe time").
> > > >> 
> > > >> The second regression is probably addressed by
> > > >> commit 494fd7b7ad10 ("PM / core: fix deferred probe breaking suspend
> > > >> resume
> > > >> order") and/or maybe others. Readd the gpio-ranges properties to see
> > > >> whether regressions still get reported.
> > > >> 
> > > >> This reverts commit 4f1d841475e1f6e9e32496dda11215db56f4ea73
> > > >> ("ARM: tegra: Comment out gpio-ranges properties").
> > > >> 
> > > >> Signed-off-by: Stefan Agner <stefan@agner.ch>
> > > >> ---
> > > > 
> > > > Unfortunately the second regression hasn't been addressed yet, this
> > > > patch
> > > > still breaks wake-up using GPIO key. BTW, better to spell "readd" as
> > > > "re-add".
> > > 
> > > You do have the hardware and could test it?
> > 
> > Yes, I have.
> > 
> > > Hm, that is unfortunate. I think this was the patch which should address
> > > the issue:
> > > https://lkml.org/lkml/2015/9/10/218
> > 
> > I've tested the patch and it is still actual, i.e. it fixes the wake-up.
> > Welcome back to 2015 :-)
> 
> Actually, the pinctrl-gpio probe order is easily fixable by reshuffling the
> drivers registration order within the kernel. I'll send patches.

Linus applied the GPIO / PINCTRL drivers probe-reorder patches for-next, so 
this DT patch should be good for 4.20.

Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-08-16 14:44 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-26 15:40 [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC Stefan Agner
2018-07-26 15:40 ` [PATCH 2/2] ARM: tegra: readd gpio-ranges properties Stefan Agner
2018-08-01 20:51   ` Dmitry Osipenko
2018-08-01 22:51     ` Stefan Agner
2018-08-01 23:11       ` Dmitry Osipenko
2018-08-02 10:35         ` Dmitry Osipenko
2018-08-16 14:44           ` Dmitry Osipenko
2018-07-29 21:37 ` [PATCH 1/2] pinctrl: tegra: define GPIO compatible node per SoC Linus Walleij

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.