Devicetree
 help / color / mirror / Atom feed
* [PATCH 1/4] spi: atmel-quadspi: add controller init callback
@ 2026-07-08 16:51 Robert Marko
  2026-07-08 16:51 ` [PATCH 2/4] spi: atmel-quadspi: use init callback for gclk variants Robert Marko
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Robert Marko @ 2026-07-08 16:51 UTC (permalink / raw)
  To: conor, nicolas.ferre, claudiu.beznea, robh, krzk+dt, broonie,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon
  Cc: luka.perkov, Robert Marko

Allow controller variants to provide a custom initialization callback
through their capability data.

This prepares the driver for variants which require a different hardware
initialization sequence without adding SoC checks to the common path.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
 drivers/spi/atmel-quadspi.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
index aaf7f4c46b22..62ea84d234d0 100644
--- a/drivers/spi/atmel-quadspi.c
+++ b/drivers/spi/atmel-quadspi.c
@@ -256,8 +256,11 @@ static const struct atmel_qspi_pcal pcal[ATMEL_QSPI_PCAL_ARRAY_SIZE] = {
 	{200000000, 7},
 };
 
+struct atmel_qspi;
+
 struct atmel_qspi_caps {
 	u32 max_speed_hz;
+	int (*init)(struct atmel_qspi *aq);
 	bool has_qspick;
 	bool has_gclk;
 	bool has_ricr;
@@ -1156,6 +1159,9 @@ static int atmel_qspi_sama7g5_setup(struct spi_device *spi)
 	/* The controller can communicate with a single peripheral device (target). */
 	aq->target_max_speed_hz = spi->max_speed_hz;
 
+	if (aq->caps->init)
+		return aq->caps->init(aq);
+
 	return atmel_qspi_sama7g5_init(aq);
 }
 
@@ -1570,6 +1576,9 @@ static int __maybe_unused atmel_qspi_resume(struct device *dev)
 		return ret;
 	}
 
+	if (aq->caps->init)
+		return aq->caps->init(aq);
+
 	if (aq->caps->has_gclk)
 		return atmel_qspi_sama7g5_init(aq);
 
-- 
2.55.0


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

* [PATCH 2/4] spi: atmel-quadspi: use init callback for gclk variants
  2026-07-08 16:51 [PATCH 1/4] spi: atmel-quadspi: add controller init callback Robert Marko
@ 2026-07-08 16:51 ` Robert Marko
  2026-07-08 16:51 ` [PATCH 3/4] spi: atmel-quadspi: add LAN969x QSPI support Robert Marko
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Robert Marko @ 2026-07-08 16:51 UTC (permalink / raw)
  To: conor, nicolas.ferre, claudiu.beznea, robh, krzk+dt, broonie,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon
  Cc: luka.perkov, Robert Marko

Assign the existing SAMA7G5 initialization routine to every generic
clock variant and dispatch initialization exclusively through the
capability callback.

This keeps hardware capabilities separate from initialization selection
and lets variants override the sequence explicitly.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
 drivers/spi/atmel-quadspi.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
index 62ea84d234d0..d1aec14e3978 100644
--- a/drivers/spi/atmel-quadspi.c
+++ b/drivers/spi/atmel-quadspi.c
@@ -1159,10 +1159,7 @@ static int atmel_qspi_sama7g5_setup(struct spi_device *spi)
 	/* The controller can communicate with a single peripheral device (target). */
 	aq->target_max_speed_hz = spi->max_speed_hz;
 
-	if (aq->caps->init)
-		return aq->caps->init(aq);
-
-	return atmel_qspi_sama7g5_init(aq);
+	return aq->caps->init(aq);
 }
 
 static int atmel_qspi_setup(struct spi_device *spi)
@@ -1576,11 +1573,8 @@ static int __maybe_unused atmel_qspi_resume(struct device *dev)
 		return ret;
 	}
 
-	if (aq->caps->init)
-		return aq->caps->init(aq);
-
 	if (aq->caps->has_gclk)
-		return atmel_qspi_sama7g5_init(aq);
+		return aq->caps->init(aq);
 
 	ret = pm_runtime_force_resume(dev);
 	if (ret < 0)
@@ -1638,6 +1632,7 @@ static const struct atmel_qspi_caps atmel_sam9x60_qspi_caps = {
 
 static const struct atmel_qspi_caps atmel_sam9x7_ospi_caps = {
 	.max_speed_hz = SAM9X7_QSPI_MAX_SPEED_HZ,
+	.init = atmel_qspi_sama7g5_init,
 	.has_gclk = true,
 	.octal = true,
 	.has_dma = true,
@@ -1648,6 +1643,7 @@ static const struct atmel_qspi_caps atmel_sam9x7_ospi_caps = {
 
 static const struct atmel_qspi_caps atmel_sama7d65_ospi_caps = {
 	.max_speed_hz = SAMA7G5_QSPI0_MAX_SPEED_HZ,
+	.init = atmel_qspi_sama7g5_init,
 	.has_gclk = true,
 	.octal = true,
 	.has_dma = true,
@@ -1658,6 +1654,7 @@ static const struct atmel_qspi_caps atmel_sama7d65_ospi_caps = {
 
 static const struct atmel_qspi_caps atmel_sama7d65_qspi_caps = {
 	.max_speed_hz = SAMA7G5_QSPI1_SDR_MAX_SPEED_HZ,
+	.init = atmel_qspi_sama7g5_init,
 	.has_gclk = true,
 	.has_dma = true,
 	.has_2xgclk = true,
@@ -1666,6 +1663,7 @@ static const struct atmel_qspi_caps atmel_sama7d65_qspi_caps = {
 
 static const struct atmel_qspi_caps atmel_sama7g5_ospi_caps = {
 	.max_speed_hz = SAMA7G5_QSPI0_MAX_SPEED_HZ,
+	.init = atmel_qspi_sama7g5_init,
 	.has_gclk = true,
 	.octal = true,
 	.has_dma = true,
@@ -1675,6 +1673,7 @@ static const struct atmel_qspi_caps atmel_sama7g5_ospi_caps = {
 
 static const struct atmel_qspi_caps atmel_sama7g5_qspi_caps = {
 	.max_speed_hz = SAMA7G5_QSPI1_SDR_MAX_SPEED_HZ,
+	.init = atmel_qspi_sama7g5_init,
 	.has_gclk = true,
 	.has_dma = true,
 	.has_dllon = true,
-- 
2.55.0


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

* [PATCH 3/4] spi: atmel-quadspi: add LAN969x QSPI support
  2026-07-08 16:51 [PATCH 1/4] spi: atmel-quadspi: add controller init callback Robert Marko
  2026-07-08 16:51 ` [PATCH 2/4] spi: atmel-quadspi: use init callback for gclk variants Robert Marko
@ 2026-07-08 16:51 ` Robert Marko
  2026-07-08 17:02   ` Conor Dooley
  2026-07-08 16:51 ` [PATCH 4/4] arm64: dts: microchip: lan969x: add QSPI nodes Robert Marko
  2026-07-08 17:23 ` [PATCH 1/4] spi: atmel-quadspi: add controller init callback Mark Brown
  3 siblings, 1 reply; 8+ messages in thread
From: Robert Marko @ 2026-07-08 16:51 UTC (permalink / raw)
  To: conor, nicolas.ferre, claudiu.beznea, robh, krzk+dt, broonie,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon
  Cc: luka.perkov, Robert Marko

Microchip LAN969x has two QSPI controllers based on SAMA7G5 QSPI.

It requires pad calibration, supports DMA, and supports 100 MHz operation.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
 drivers/spi/Kconfig         |  2 +-
 drivers/spi/atmel-quadspi.c | 66 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 8782514bb89b..bb3773f99ad9 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -189,7 +189,7 @@ config SPI_AT91_USART
 
 config SPI_ATMEL_QUADSPI
 	tristate "Atmel Quad SPI Controller"
-	depends on ARCH_AT91 || COMPILE_TEST
+	depends on ARCH_MICROCHIP || COMPILE_TEST
 	depends on OF && HAS_IOMEM
 	help
 	  This enables support for the Quad SPI controller in master mode.
diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
index d1aec14e3978..f05e2617fa89 100644
--- a/drivers/spi/atmel-quadspi.c
+++ b/drivers/spi/atmel-quadspi.c
@@ -1152,6 +1152,58 @@ static int atmel_qspi_sama7g5_init(struct atmel_qspi *aq)
 	return ret;
 }
 
+static int atmel_qspi_lan969x_init(struct atmel_qspi *aq)
+{
+	u32 val;
+	int ret;
+
+	atmel_qspi_write(QSPI_CR_DLLOFF, aq, QSPI_CR);
+	ret = readl_poll_timeout(aq->regs + QSPI_SR2, val,
+				 !(val & QSPI_SR2_DLOCK), 40,
+				 ATMEL_QSPI_TIMEOUT);
+	if (ret)
+		return ret;
+
+	ret = atmel_qspi_set_gclk(aq);
+	if (ret)
+		return ret;
+
+	/* Start the DLL before resetting the controller. */
+	atmel_qspi_write(QSPI_CR_DLLON | QSPI_CR_STPCAL, aq, QSPI_CR);
+	ret = readl_poll_timeout(aq->regs + QSPI_SR2, val,
+				 (val & QSPI_SR2_DLOCK) &&
+				 !(val & QSPI_SR2_CALBSY), 40,
+				 ATMEL_QSPI_TIMEOUT);
+	if (ret)
+		return ret;
+
+	atmel_qspi_write(QSPI_CR_QSPIDIS, aq, QSPI_CR);
+	ret = atmel_qspi_reg_sync(aq);
+	if (ret)
+		return ret;
+
+	atmel_qspi_write(QSPI_CR_SWRST, aq, QSPI_CR);
+	ret = atmel_qspi_reg_sync(aq);
+	if (ret)
+		return ret;
+
+	ret = atmel_qspi_set_pad_calibration(aq);
+	if (ret)
+		return ret;
+
+	aq->mr = 0;
+	aq->scr = 0;
+
+	ret = atmel_qspi_set_serial_memory_mode(aq);
+	if (ret)
+		return ret;
+
+	atmel_qspi_write(QSPI_CR_QSPIEN, aq, QSPI_CR);
+	return readl_poll_timeout(aq->regs + QSPI_SR2, val,
+				  (val & QSPI_SR2_QSPIENS), 40,
+				  ATMEL_QSPI_TIMEOUT);
+}
+
 static int atmel_qspi_sama7g5_setup(struct spi_device *spi)
 {
 	struct atmel_qspi *aq = spi_controller_get_devdata(spi->controller);
@@ -1679,6 +1731,15 @@ static const struct atmel_qspi_caps atmel_sama7g5_qspi_caps = {
 	.has_dllon = true,
 };
 
+static const struct atmel_qspi_caps atmel_lan969x_qspi_caps = {
+	.max_speed_hz = SAM9X7_QSPI_MAX_SPEED_HZ,
+	.init = atmel_qspi_lan969x_init,
+	.has_gclk = true,
+	.has_dma = true,
+	.has_padcalib = true,
+	.has_dllon = true,
+};
+
 static const struct of_device_id atmel_qspi_dt_ids[] = {
 	{
 		.compatible = "atmel,sama5d2-qspi",
@@ -1708,7 +1769,10 @@ static const struct of_device_id atmel_qspi_dt_ids[] = {
 		.compatible = "microchip,sama7d65-qspi",
 		.data = &atmel_sama7d65_qspi_caps,
 	},
-
+	{
+		.compatible = "microchip,lan9691-qspi",
+		.data = &atmel_lan969x_qspi_caps,
+	},
 
 	{ /* sentinel */ }
 };
-- 
2.55.0


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

* [PATCH 4/4] arm64: dts: microchip: lan969x: add QSPI nodes
  2026-07-08 16:51 [PATCH 1/4] spi: atmel-quadspi: add controller init callback Robert Marko
  2026-07-08 16:51 ` [PATCH 2/4] spi: atmel-quadspi: use init callback for gclk variants Robert Marko
  2026-07-08 16:51 ` [PATCH 3/4] spi: atmel-quadspi: add LAN969x QSPI support Robert Marko
@ 2026-07-08 16:51 ` Robert Marko
  2026-07-08 17:23 ` [PATCH 1/4] spi: atmel-quadspi: add controller init callback Mark Brown
  3 siblings, 0 replies; 8+ messages in thread
From: Robert Marko @ 2026-07-08 16:51 UTC (permalink / raw)
  To: conor, nicolas.ferre, claudiu.beznea, robh, krzk+dt, broonie,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon
  Cc: luka.perkov, Robert Marko

Add the required DT nodes for both QSPI controllers.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
 arch/arm64/boot/dts/microchip/lan9691.dtsi | 33 ++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/arch/arm64/boot/dts/microchip/lan9691.dtsi b/arch/arm64/boot/dts/microchip/lan9691.dtsi
index a8679ee6da13..7db9378c60a3 100644
--- a/arch/arm64/boot/dts/microchip/lan9691.dtsi
+++ b/arch/arm64/boot/dts/microchip/lan9691.dtsi
@@ -396,6 +396,24 @@ clks: clock-controller@e00c00b4 {
 			clock-names = "cpu", "ddr", "sys";
 		};
 
+		qspi0: spi@e0804000 {
+			compatible = "microchip,lan9691-qspi";
+			reg = <0xe0804000 0x00000100>,
+			      <0x20000000 0x08000000>;
+			reg-names = "qspi_base", "qspi_mmap";
+			interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&fabric_clk>, <&clks GCK_ID_QSPI0>;
+			clock-names = "pclk", "gclk";
+			assigned-clocks = <&clks GCK_ID_QSPI0>;
+			assigned-clock-rates = <100000000>;
+			dmas = <&dma AT91_XDMAC_DT_PERID(1)>,
+			       <&dma AT91_XDMAC_DT_PERID(0)>;
+			dma-names = "tx", "rx";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
 		sdmmc0: mmc@e0830000 {
 			compatible = "microchip,lan9691-sdhci";
 			reg = <0xe0830000 0x00000300>;
@@ -418,6 +436,21 @@ sdmmc1: mmc@e0838000 {
 			status = "disabled";
 		};
 
+		qspi2: spi@e0834000 {
+			compatible = "microchip,lan9691-qspi";
+			reg = <0xe0834000 0x00000100>,
+			      <0x30000000 0x04000000>;
+			reg-names = "qspi_base", "qspi_mmap";
+			interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&fabric_clk>, <&clks GCK_ID_QSPI2>;
+			clock-names = "pclk", "gclk";
+			assigned-clocks = <&clks GCK_ID_QSPI2>;
+			assigned-clock-rates = <100000000>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
 		reset: reset-controller@e201000c {
 			compatible = "microchip,lan9691-switch-reset",
 				     "microchip,lan966x-switch-reset";
-- 
2.55.0


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

* Re: [PATCH 3/4] spi: atmel-quadspi: add LAN969x QSPI support
  2026-07-08 16:51 ` [PATCH 3/4] spi: atmel-quadspi: add LAN969x QSPI support Robert Marko
@ 2026-07-08 17:02   ` Conor Dooley
  2026-07-08 17:05     ` Robert Marko
  0 siblings, 1 reply; 8+ messages in thread
From: Conor Dooley @ 2026-07-08 17:02 UTC (permalink / raw)
  To: Robert Marko
  Cc: nicolas.ferre, claudiu.beznea, robh, krzk+dt, broonie,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon, luka.perkov

[-- Attachment #1: Type: text/plain, Size: 668 bytes --]

On Wed, Jul 08, 2026 at 06:51:10PM +0200, Robert Marko wrote:
> Microchip LAN969x has two QSPI controllers based on SAMA7G5 QSPI.
> 
> It requires pad calibration, supports DMA, and supports 100 MHz operation.
> 
> Signed-off-by: Robert Marko <robert.marko@sartura.hr>

> @@ -1708,7 +1769,10 @@ static const struct of_device_id atmel_qspi_dt_ids[] = {
>  		.compatible = "microchip,sama7d65-qspi",
>  		.data = &atmel_sama7d65_qspi_caps,
>  	},
> -
> +	{
> +		.compatible = "microchip,lan9691-qspi",

Where is this compatible string documented?

> +		.data = &atmel_lan969x_qspi_caps,
> +	},
>  
>  	{ /* sentinel */ }
>  };
> -- 
> 2.55.0
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH 3/4] spi: atmel-quadspi: add LAN969x QSPI support
  2026-07-08 17:02   ` Conor Dooley
@ 2026-07-08 17:05     ` Robert Marko
  0 siblings, 0 replies; 8+ messages in thread
From: Robert Marko @ 2026-07-08 17:05 UTC (permalink / raw)
  To: Conor Dooley
  Cc: nicolas.ferre, claudiu.beznea, robh, krzk+dt, broonie,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon, luka.perkov

On Wed, Jul 8, 2026 at 7:02 PM Conor Dooley <conor@kernel.org> wrote:
>
> On Wed, Jul 08, 2026 at 06:51:10PM +0200, Robert Marko wrote:
> > Microchip LAN969x has two QSPI controllers based on SAMA7G5 QSPI.
> >
> > It requires pad calibration, supports DMA, and supports 100 MHz operation.
> >
> > Signed-off-by: Robert Marko <robert.marko@sartura.hr>
>
> > @@ -1708,7 +1769,10 @@ static const struct of_device_id atmel_qspi_dt_ids[] = {
> >               .compatible = "microchip,sama7d65-qspi",
> >               .data = &atmel_sama7d65_qspi_caps,
> >       },
> > -
> > +     {
> > +             .compatible = "microchip,lan9691-qspi",
>
> Where is this compatible string documented?

Ugh,
I managed to somehow forget to export and send the dt-bindings patch as well.

Sorry for that, will respin for v2 tomorrow.

Regards,
Robert

>
> > +             .data = &atmel_lan969x_qspi_caps,
> > +     },
> >
> >       { /* sentinel */ }
> >  };
> > --
> > 2.55.0
> >



-- 
Robert Marko
Staff Embedded Linux Engineer
Sartura d.d.
Lendavska ulica 16a
10000 Zagreb, Croatia
Email: robert.marko@sartura.hr
Web: www.sartura.hr

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

* Re: [PATCH 1/4] spi: atmel-quadspi: add controller init callback
  2026-07-08 16:51 [PATCH 1/4] spi: atmel-quadspi: add controller init callback Robert Marko
                   ` (2 preceding siblings ...)
  2026-07-08 16:51 ` [PATCH 4/4] arm64: dts: microchip: lan969x: add QSPI nodes Robert Marko
@ 2026-07-08 17:23 ` Mark Brown
  2026-07-08 17:46   ` Robert Marko
  3 siblings, 1 reply; 8+ messages in thread
From: Mark Brown @ 2026-07-08 17:23 UTC (permalink / raw)
  To: Robert Marko
  Cc: conor, nicolas.ferre, claudiu.beznea, robh, krzk+dt,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon, luka.perkov

[-- Attachment #1: Type: text/plain, Size: 498 bytes --]

On Wed, Jul 08, 2026 at 06:51:08PM +0200, Robert Marko wrote:
> Allow controller variants to provide a custom initialization callback
> through their capability data.

This doesn't apply against current code (specifically the DT patch).

As mentioned in submitting-patches.rst when submitting a patch series
you should supply a cover letter for that patch series which describes
the overall content of the series.  This helps people understand what
they are looking at and how things fit together.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH 1/4] spi: atmel-quadspi: add controller init callback
  2026-07-08 17:23 ` [PATCH 1/4] spi: atmel-quadspi: add controller init callback Mark Brown
@ 2026-07-08 17:46   ` Robert Marko
  0 siblings, 0 replies; 8+ messages in thread
From: Robert Marko @ 2026-07-08 17:46 UTC (permalink / raw)
  To: Mark Brown
  Cc: conor, nicolas.ferre, claudiu.beznea, robh, krzk+dt,
	alexandre.belloni, linux-arm-kernel, devicetree, linux-kernel,
	daniel.machon, luka.perkov

On Wed, Jul 8, 2026 at 7:23 PM Mark Brown <broonie@kernel.org> wrote:
>
> On Wed, Jul 08, 2026 at 06:51:08PM +0200, Robert Marko wrote:
> > Allow controller variants to provide a custom initialization callback
> > through their capability data.
>
> This doesn't apply against current code (specifically the DT patch).
>
> As mentioned in submitting-patches.rst when submitting a patch series
> you should supply a cover letter for that patch series which describes
> the overall content of the series.  This helps people understand what
> they are looking at and how things fit together.

Hi Mark,

Thanks for pointing that out. I missed that the SDMCC is not yet
upstream, which is why this one didn't apply cleanly.

I'll make sure to include a cover letter when I respin the whole series.

Regards,
Robert



-- 
Robert Marko
Staff Embedded Linux Engineer
Sartura d.d.
Lendavska ulica 16a
10000 Zagreb, Croatia
Email: robert.marko@sartura.hr
Web: www.sartura.hr

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

end of thread, other threads:[~2026-07-08 17:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-08 16:51 [PATCH 1/4] spi: atmel-quadspi: add controller init callback Robert Marko
2026-07-08 16:51 ` [PATCH 2/4] spi: atmel-quadspi: use init callback for gclk variants Robert Marko
2026-07-08 16:51 ` [PATCH 3/4] spi: atmel-quadspi: add LAN969x QSPI support Robert Marko
2026-07-08 17:02   ` Conor Dooley
2026-07-08 17:05     ` Robert Marko
2026-07-08 16:51 ` [PATCH 4/4] arm64: dts: microchip: lan969x: add QSPI nodes Robert Marko
2026-07-08 17:23 ` [PATCH 1/4] spi: atmel-quadspi: add controller init callback Mark Brown
2026-07-08 17:46   ` Robert Marko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox