linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi
@ 2024-02-07 11:15 Tudor Ambarus
  2024-02-07 11:15 ` [PATCH v2 1/4] spi: dt-bindings: samsung: add google,gs101-spi compatible Tudor Ambarus
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Tudor Ambarus @ 2024-02-07 11:15 UTC (permalink / raw)
  To: broonie, andi.shyti, semen.protsenko
  Cc: krzysztof.kozlowski, alim.akhtar, linux-spi, linux-samsung-soc,
	linux-arm-kernel, linux-kernel, andre.draszik, peter.griffin,
	kernel-team, willmcvicker, robh+dt, conor+dt, devicetree,
	Tudor Ambarus

This applies on Mark's for-next branch. It can be queued before the
simple cleanup patches.

v2:
- drop the include linux/types.h patch
- patch 2 is a preparation step as per Sam's suggestion
- contrary to Sam's suggestion, I kept the style for the
  s3c64xx_iowrite{8,16}_32_rep() methods, to be consistent with the
  generic implementations from asm-generic/io.h.
- s/just/only
- collect R-b tags.

v1:
https://lore.kernel.org/linux-spi/20240206085238.1208256-1-tudor.ambarus@linaro.org/

v1 was derived from:
https://lore.kernel.org/linux-spi/20240125145007.748295-1-tudor.ambarus@linaro.org/

Tudor Ambarus (4):
  spi: dt-bindings: samsung: add google,gs101-spi compatible
  spi: s3c64xx: prepare for a different flavor of iowrite rep
  spi: s3c64xx: add s3c64xx_iowrite{8,16}_32_rep accessors
  spi: s3c64xx: add support for google,gs101-spi

 .../devicetree/bindings/spi/samsung,spi.yaml  |  1 +
 drivers/spi/spi-s3c64xx.c                     | 85 +++++++++++++++----
 2 files changed, 71 insertions(+), 15 deletions(-)

-- 
2.43.0.687.g38aa6559b0-goog


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

* [PATCH v2 1/4] spi: dt-bindings: samsung: add google,gs101-spi compatible
  2024-02-07 11:15 [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
@ 2024-02-07 11:15 ` Tudor Ambarus
  2024-02-07 11:15 ` [PATCH v2 2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep Tudor Ambarus
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Tudor Ambarus @ 2024-02-07 11:15 UTC (permalink / raw)
  To: broonie, andi.shyti, semen.protsenko
  Cc: krzysztof.kozlowski, alim.akhtar, linux-spi, linux-samsung-soc,
	linux-arm-kernel, linux-kernel, andre.draszik, peter.griffin,
	kernel-team, willmcvicker, robh+dt, conor+dt, devicetree,
	Tudor Ambarus

Add "google,gs101-spi" dedicated compatible for representing SPI of
Google GS101 SoC.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
Acked-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
 Documentation/devicetree/bindings/spi/samsung,spi.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/spi/samsung,spi.yaml b/Documentation/devicetree/bindings/spi/samsung,spi.yaml
index f71099852653..2f0a0835ecfb 100644
--- a/Documentation/devicetree/bindings/spi/samsung,spi.yaml
+++ b/Documentation/devicetree/bindings/spi/samsung,spi.yaml
@@ -17,6 +17,7 @@ properties:
   compatible:
     oneOf:
       - enum:
+          - google,gs101-spi
           - samsung,s3c2443-spi # for S3C2443, S3C2416 and S3C2450
           - samsung,s3c6410-spi
           - samsung,s5pv210-spi # for S5PV210 and S5PC110
-- 
2.43.0.687.g38aa6559b0-goog


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

* [PATCH v2 2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep
  2024-02-07 11:15 [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
  2024-02-07 11:15 ` [PATCH v2 1/4] spi: dt-bindings: samsung: add google,gs101-spi compatible Tudor Ambarus
@ 2024-02-07 11:15 ` Tudor Ambarus
  2024-02-07 15:44   ` Sam Protsenko
  2024-02-07 11:15 ` [PATCH v2 3/4] spi: s3c64xx: add s3c64xx_iowrite{8,16}_32_rep accessors Tudor Ambarus
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: Tudor Ambarus @ 2024-02-07 11:15 UTC (permalink / raw)
  To: broonie, andi.shyti, semen.protsenko
  Cc: krzysztof.kozlowski, alim.akhtar, linux-spi, linux-samsung-soc,
	linux-arm-kernel, linux-kernel, andre.draszik, peter.griffin,
	kernel-team, willmcvicker, robh+dt, conor+dt, devicetree,
	Tudor Ambarus

There are SoCs (gs101) that allow only 32 bit register accesses. As the
requirement is rare enough, for those SoCs we'll open code in the driver
some s3c64xx_iowrite{8,16}_32_rep() accessors. Prepare for such addition.

Suggested-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
 drivers/spi/spi-s3c64xx.c | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 7f7eb8f742e4..eb79c6e4f509 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -414,6 +414,26 @@ static bool s3c64xx_spi_can_dma(struct spi_controller *host,
 
 }
 
+static void s3c64xx_iowrite_rep(const struct s3c64xx_spi_driver_data *sdd,
+				struct spi_transfer *xfer)
+{
+	void __iomem *addr = sdd->regs + S3C64XX_SPI_TX_DATA;
+	const void *buf = xfer->tx_buf;
+	unsigned int len = xfer->len;
+
+	switch (sdd->cur_bpw) {
+	case 32:
+		iowrite32_rep(addr, buf, len / 4);
+		break;
+	case 16:
+		iowrite16_rep(addr, buf, len / 2);
+		break;
+	default:
+		iowrite8_rep(addr, buf, len);
+		break;
+	}
+}
+
 static int s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd,
 				    struct spi_transfer *xfer, int dma_mode)
 {
@@ -447,20 +467,7 @@ static int s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd,
 			modecfg |= S3C64XX_SPI_MODE_TXDMA_ON;
 			ret = prepare_dma(&sdd->tx_dma, &xfer->tx_sg);
 		} else {
-			switch (sdd->cur_bpw) {
-			case 32:
-				iowrite32_rep(regs + S3C64XX_SPI_TX_DATA,
-					xfer->tx_buf, xfer->len / 4);
-				break;
-			case 16:
-				iowrite16_rep(regs + S3C64XX_SPI_TX_DATA,
-					xfer->tx_buf, xfer->len / 2);
-				break;
-			default:
-				iowrite8_rep(regs + S3C64XX_SPI_TX_DATA,
-					xfer->tx_buf, xfer->len);
-				break;
-			}
+			s3c64xx_iowrite_rep(sdd, xfer);
 		}
 	}
 
-- 
2.43.0.687.g38aa6559b0-goog


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

* [PATCH v2 3/4] spi: s3c64xx: add s3c64xx_iowrite{8,16}_32_rep accessors
  2024-02-07 11:15 [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
  2024-02-07 11:15 ` [PATCH v2 1/4] spi: dt-bindings: samsung: add google,gs101-spi compatible Tudor Ambarus
  2024-02-07 11:15 ` [PATCH v2 2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep Tudor Ambarus
@ 2024-02-07 11:15 ` Tudor Ambarus
  2024-02-07 11:15 ` [PATCH v2 4/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
  2024-02-08 21:21 ` [PATCH v2 0/4] " Mark Brown
  4 siblings, 0 replies; 7+ messages in thread
From: Tudor Ambarus @ 2024-02-07 11:15 UTC (permalink / raw)
  To: broonie, andi.shyti, semen.protsenko
  Cc: krzysztof.kozlowski, alim.akhtar, linux-spi, linux-samsung-soc,
	linux-arm-kernel, linux-kernel, andre.draszik, peter.griffin,
	kernel-team, willmcvicker, robh+dt, conor+dt, devicetree,
	Tudor Ambarus

Allow SoCs that require 32 bits register accesses to write data in
chunks of 8 or 16 bits. One SoC that requires 32 bit register accesses
is the google gs101. The operation is rare, thus open code it in the
driver rather than making it generic (through asm-generic/io.h).

Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
 drivers/spi/spi-s3c64xx.c | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index eb79c6e4f509..014fcc933c90 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -142,6 +142,7 @@ struct s3c64xx_spi_dma_data {
  *	prescaler unit.
  * @clk_ioclk: True if clock is present on this device
  * @has_loopback: True if loopback mode can be supported
+ * @use_32bit_io: True if the SoC allows only 32-bit register accesses.
  *
  * The Samsung s3c64xx SPI controller are used on various Samsung SoC's but
  * differ in some aspects such as the size of the fifo and spi bus clock
@@ -158,6 +159,7 @@ struct s3c64xx_spi_port_config {
 	bool	clk_from_cmu;
 	bool	clk_ioclk;
 	bool	has_loopback;
+	bool	use_32bit_io;
 };
 
 /**
@@ -414,6 +416,30 @@ static bool s3c64xx_spi_can_dma(struct spi_controller *host,
 
 }
 
+static void s3c64xx_iowrite8_32_rep(volatile void __iomem *addr,
+				    const void *buffer, unsigned int count)
+{
+	if (count) {
+		const u8 *buf = buffer;
+
+		do {
+			__raw_writel(*buf++, addr);
+		} while (--count);
+	}
+}
+
+static void s3c64xx_iowrite16_32_rep(volatile void __iomem *addr,
+				     const void *buffer, unsigned int count)
+{
+	if (count) {
+		const u16 *buf = buffer;
+
+		do {
+			__raw_writel(*buf++, addr);
+		} while (--count);
+	}
+}
+
 static void s3c64xx_iowrite_rep(const struct s3c64xx_spi_driver_data *sdd,
 				struct spi_transfer *xfer)
 {
@@ -426,10 +452,16 @@ static void s3c64xx_iowrite_rep(const struct s3c64xx_spi_driver_data *sdd,
 		iowrite32_rep(addr, buf, len / 4);
 		break;
 	case 16:
-		iowrite16_rep(addr, buf, len / 2);
+		if (sdd->port_conf->use_32bit_io)
+			s3c64xx_iowrite16_32_rep(addr, buf, len / 2);
+		else
+			iowrite16_rep(addr, buf, len / 2);
 		break;
 	default:
-		iowrite8_rep(addr, buf, len);
+		if (sdd->port_conf->use_32bit_io)
+			s3c64xx_iowrite8_32_rep(addr, buf, len);
+		else
+			iowrite8_rep(addr, buf, len);
 		break;
 	}
 }
-- 
2.43.0.687.g38aa6559b0-goog


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

* [PATCH v2 4/4] spi: s3c64xx: add support for google,gs101-spi
  2024-02-07 11:15 [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
                   ` (2 preceding siblings ...)
  2024-02-07 11:15 ` [PATCH v2 3/4] spi: s3c64xx: add s3c64xx_iowrite{8,16}_32_rep accessors Tudor Ambarus
@ 2024-02-07 11:15 ` Tudor Ambarus
  2024-02-08 21:21 ` [PATCH v2 0/4] " Mark Brown
  4 siblings, 0 replies; 7+ messages in thread
From: Tudor Ambarus @ 2024-02-07 11:15 UTC (permalink / raw)
  To: broonie, andi.shyti, semen.protsenko
  Cc: krzysztof.kozlowski, alim.akhtar, linux-spi, linux-samsung-soc,
	linux-arm-kernel, linux-kernel, andre.draszik, peter.griffin,
	kernel-team, willmcvicker, robh+dt, conor+dt, devicetree,
	Tudor Ambarus

Add support for GS101 SPI. GS101 integrates 16 SPI nodes, all with 64
bytes FIFOs. GS101 allows just 32 bit register accesses, otherwise a
Serror Interrupt is raised. Do the write reg accesses in 32 bits.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
 drivers/spi/spi-s3c64xx.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 014fcc933c90..7ab3f3c2e9aa 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -17,7 +17,7 @@
 
 #include <linux/platform_data/spi-s3c64xx.h>
 
-#define MAX_SPI_PORTS		12
+#define MAX_SPI_PORTS		16
 #define S3C64XX_SPI_QUIRK_CS_AUTO	(1 << 1)
 #define AUTOSUSPEND_TIMEOUT	2000
 
@@ -1534,6 +1534,19 @@ static const struct s3c64xx_spi_port_config fsd_spi_port_config = {
 	.quirks		= S3C64XX_SPI_QUIRK_CS_AUTO,
 };
 
+static const struct s3c64xx_spi_port_config gs101_spi_port_config = {
+	.fifo_lvl_mask	= { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
+			    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f},
+	.rx_lvl_offset	= 15,
+	.tx_st_done	= 25,
+	.clk_div	= 4,
+	.high_speed	= true,
+	.clk_from_cmu	= true,
+	.has_loopback	= true,
+	.use_32bit_io	= true,
+	.quirks		= S3C64XX_SPI_QUIRK_CS_AUTO,
+};
+
 static const struct platform_device_id s3c64xx_spi_driver_ids[] = {
 	{
 		.name		= "s3c2443-spi",
@@ -1546,6 +1559,9 @@ static const struct platform_device_id s3c64xx_spi_driver_ids[] = {
 };
 
 static const struct of_device_id s3c64xx_spi_dt_match[] = {
+	{ .compatible = "google,gs101-spi",
+			.data = &gs101_spi_port_config,
+	},
 	{ .compatible = "samsung,s3c2443-spi",
 			.data = (void *)&s3c2443_spi_port_config,
 	},
-- 
2.43.0.687.g38aa6559b0-goog


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

* Re: [PATCH v2 2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep
  2024-02-07 11:15 ` [PATCH v2 2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep Tudor Ambarus
@ 2024-02-07 15:44   ` Sam Protsenko
  0 siblings, 0 replies; 7+ messages in thread
From: Sam Protsenko @ 2024-02-07 15:44 UTC (permalink / raw)
  To: Tudor Ambarus
  Cc: broonie, andi.shyti, krzysztof.kozlowski, alim.akhtar, linux-spi,
	linux-samsung-soc, linux-arm-kernel, linux-kernel, andre.draszik,
	peter.griffin, kernel-team, willmcvicker, robh+dt, conor+dt,
	devicetree

On Wed, Feb 7, 2024 at 5:15 AM Tudor Ambarus <tudor.ambarus@linaro.org> wrote:
>
> There are SoCs (gs101) that allow only 32 bit register accesses. As the
> requirement is rare enough, for those SoCs we'll open code in the driver
> some s3c64xx_iowrite{8,16}_32_rep() accessors. Prepare for such addition.
>
> Suggested-by: Sam Protsenko <semen.protsenko@linaro.org>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> ---

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>

>  drivers/spi/spi-s3c64xx.c | 35 +++++++++++++++++++++--------------
>  1 file changed, 21 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> index 7f7eb8f742e4..eb79c6e4f509 100644
> --- a/drivers/spi/spi-s3c64xx.c
> +++ b/drivers/spi/spi-s3c64xx.c
> @@ -414,6 +414,26 @@ static bool s3c64xx_spi_can_dma(struct spi_controller *host,
>
>  }
>
> +static void s3c64xx_iowrite_rep(const struct s3c64xx_spi_driver_data *sdd,
> +                               struct spi_transfer *xfer)
> +{
> +       void __iomem *addr = sdd->regs + S3C64XX_SPI_TX_DATA;
> +       const void *buf = xfer->tx_buf;
> +       unsigned int len = xfer->len;
> +
> +       switch (sdd->cur_bpw) {
> +       case 32:
> +               iowrite32_rep(addr, buf, len / 4);
> +               break;
> +       case 16:
> +               iowrite16_rep(addr, buf, len / 2);
> +               break;
> +       default:
> +               iowrite8_rep(addr, buf, len);
> +               break;
> +       }
> +}
> +
>  static int s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd,
>                                     struct spi_transfer *xfer, int dma_mode)
>  {
> @@ -447,20 +467,7 @@ static int s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd,
>                         modecfg |= S3C64XX_SPI_MODE_TXDMA_ON;
>                         ret = prepare_dma(&sdd->tx_dma, &xfer->tx_sg);
>                 } else {
> -                       switch (sdd->cur_bpw) {
> -                       case 32:
> -                               iowrite32_rep(regs + S3C64XX_SPI_TX_DATA,
> -                                       xfer->tx_buf, xfer->len / 4);
> -                               break;
> -                       case 16:
> -                               iowrite16_rep(regs + S3C64XX_SPI_TX_DATA,
> -                                       xfer->tx_buf, xfer->len / 2);
> -                               break;
> -                       default:
> -                               iowrite8_rep(regs + S3C64XX_SPI_TX_DATA,
> -                                       xfer->tx_buf, xfer->len);
> -                               break;
> -                       }
> +                       s3c64xx_iowrite_rep(sdd, xfer);
>                 }
>         }
>
> --
> 2.43.0.687.g38aa6559b0-goog
>

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

* Re: [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi
  2024-02-07 11:15 [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
                   ` (3 preceding siblings ...)
  2024-02-07 11:15 ` [PATCH v2 4/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
@ 2024-02-08 21:21 ` Mark Brown
  4 siblings, 0 replies; 7+ messages in thread
From: Mark Brown @ 2024-02-08 21:21 UTC (permalink / raw)
  To: andi.shyti, semen.protsenko, Tudor Ambarus
  Cc: krzysztof.kozlowski, alim.akhtar, linux-spi, linux-samsung-soc,
	linux-arm-kernel, linux-kernel, andre.draszik, peter.griffin,
	kernel-team, willmcvicker, robh+dt, conor+dt, devicetree

On Wed, 07 Feb 2024 11:15:12 +0000, Tudor Ambarus wrote:
> This applies on Mark's for-next branch. It can be queued before the
> simple cleanup patches.
> 
> v2:
> - drop the include linux/types.h patch
> - patch 2 is a preparation step as per Sam's suggestion
> - contrary to Sam's suggestion, I kept the style for the
>   s3c64xx_iowrite{8,16}_32_rep() methods, to be consistent with the
>   generic implementations from asm-generic/io.h.
> - s/just/only
> - collect R-b tags.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next

Thanks!

[1/4] spi: dt-bindings: samsung: add google,gs101-spi compatible
      commit: ff690e75d64b0ca119adbfc3bd0b444bc1d0a1c5
[2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep
      commit: 80d3204a3b1dbef570ed29d4d375e4d6922da82d
[3/4] spi: s3c64xx: add s3c64xx_iowrite{8,16}_32_rep accessors
      commit: b7bafb9f54fc4609ff84ecd633f918f6f973f471
[4/4] spi: s3c64xx: add support for google,gs101-spi
      commit: 0f0212558bc9e33fad4148d3f44745a367076b20

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


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

end of thread, other threads:[~2024-02-08 21:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-07 11:15 [PATCH v2 0/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
2024-02-07 11:15 ` [PATCH v2 1/4] spi: dt-bindings: samsung: add google,gs101-spi compatible Tudor Ambarus
2024-02-07 11:15 ` [PATCH v2 2/4] spi: s3c64xx: prepare for a different flavor of iowrite rep Tudor Ambarus
2024-02-07 15:44   ` Sam Protsenko
2024-02-07 11:15 ` [PATCH v2 3/4] spi: s3c64xx: add s3c64xx_iowrite{8,16}_32_rep accessors Tudor Ambarus
2024-02-07 11:15 ` [PATCH v2 4/4] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus
2024-02-08 21:21 ` [PATCH v2 0/4] " Mark Brown

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).