linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b
@ 2023-11-13  0:57 Jisheng Zhang
  2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Jisheng Zhang @ 2023-11-13  0:57 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Chao Wei, Chen Wang
  Cc: devicetree, linux-kernel, linux-riscv

This series adds pinctrl support for cv1800b reusing the
pinctrl-single driver.

Jisheng Zhang (2):
  riscv: dts: cv1800b: add pinctrl node for cv1800b
  riscv: dts: sophgo: set pinctrl for uart0

 arch/riscv/boot/dts/sophgo/cv-pinctrl.h       | 19 +++++++++++++++++++
 .../boot/dts/sophgo/cv1800b-milkv-duo.dts     | 11 +++++++++++
 arch/riscv/boot/dts/sophgo/cv1800b.dtsi       | 10 ++++++++++
 3 files changed, 40 insertions(+)
 create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h

-- 
2.42.0


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

* [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13  0:57 [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Jisheng Zhang
@ 2023-11-13  0:57 ` Jisheng Zhang
  2023-11-13  1:51   ` Samuel Holland
                     ` (3 more replies)
  2023-11-13  0:57 ` [PATCH 2/2] riscv: dts: sophgo: set pinctrl for uart0 Jisheng Zhang
  2024-01-17  9:03 ` [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Chen Wang
  2 siblings, 4 replies; 13+ messages in thread
From: Jisheng Zhang @ 2023-11-13  0:57 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Chao Wei, Chen Wang
  Cc: devicetree, linux-kernel, linux-riscv

Add the reset device tree node to cv1800b SoC reusing the
pinctrl-single driver.

Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
 arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
 arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h

diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
new file mode 100644
index 000000000000..ed78b6fb3142
--- /dev/null
+++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
+ *
+ * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
+ */
+#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
+#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
+
+#define MUX_M0		0
+#define MUX_M1		1
+#define MUX_M2		2
+#define MUX_M3		3
+#define MUX_M4		4
+#define MUX_M5		5
+#define MUX_M6		6
+#define MUX_M7		7
+
+#endif
diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
index e04df04a91c0..7a44d8e8672b 100644
--- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
+++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
@@ -6,6 +6,8 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/reset/sophgo,cv1800b-reset.h>
 
+#include "cv-pinctrl.h"
+
 / {
 	compatible = "sophgo,cv1800b";
 	#address-cells = <1>;
@@ -55,6 +57,14 @@ soc {
 		dma-noncoherent;
 		ranges;
 
+		pinctrl0: pinctrl@3001000 {
+			compatible = "pinctrl-single";
+			reg = <0x3001000 0x130>;
+			#pinctrl-cells = <1>;
+			pinctrl-single,register-width = <32>;
+			pinctrl-single,function-mask = <0x00000007>;
+		};
+
 		rst: reset-controller@3003000 {
 			compatible = "sophgo,cv1800b-reset";
 			reg = <0x03003000 0x1000>;
-- 
2.42.0


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

* [PATCH 2/2] riscv: dts: sophgo: set pinctrl for uart0
  2023-11-13  0:57 [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Jisheng Zhang
  2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
@ 2023-11-13  0:57 ` Jisheng Zhang
  2024-01-17  9:03 ` [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Chen Wang
  2 siblings, 0 replies; 13+ messages in thread
From: Jisheng Zhang @ 2023-11-13  0:57 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Chao Wei, Chen Wang
  Cc: devicetree, linux-kernel, linux-riscv

Although the mux function is uart by default, add it for
completeness.

Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
 arch/riscv/boot/dts/sophgo/cv1800b-milkv-duo.dts | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/riscv/boot/dts/sophgo/cv1800b-milkv-duo.dts b/arch/riscv/boot/dts/sophgo/cv1800b-milkv-duo.dts
index 3af9e34b3bc7..cc10688908bc 100644
--- a/arch/riscv/boot/dts/sophgo/cv1800b-milkv-duo.dts
+++ b/arch/riscv/boot/dts/sophgo/cv1800b-milkv-duo.dts
@@ -33,6 +33,17 @@ &osc {
 	clock-frequency = <25000000>;
 };
 
+&pinctrl0 {
+	uart0_pins: uart0-pins {
+		pinctrl-single,pins = <
+			0x24 MUX_M0 /* UART0_TX */
+			0x28 MUX_M0 /* UART0_RX */
+		>;
+	};
+};
+
 &uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pins>;
 	status = "okay";
 };
-- 
2.42.0


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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
@ 2023-11-13  1:51   ` Samuel Holland
  2023-11-13 13:03     ` Jisheng Zhang
  2023-11-14  1:38   ` Chen Wang
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 13+ messages in thread
From: Samuel Holland @ 2023-11-13  1:51 UTC (permalink / raw)
  To: Jisheng Zhang, devicetree, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: linux-kernel, linux-riscv, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Chao Wei, Chen Wang

On 2023-11-12 6:57 PM, Jisheng Zhang wrote:
> Add the reset device tree node to cv1800b SoC reusing the
          ^^^^^
          I assume you mean pinctrl here?

> pinctrl-single driver.
> 
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> ---
>  arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
>  arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
>  2 files changed, 29 insertions(+)
>  create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> 
> diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> new file mode 100644
> index 000000000000..ed78b6fb3142
> --- /dev/null
> +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h

A couple of questions: Should this go in include/dt-bindings? And is it worth
including macros for the actual function mappings, like in the vendor source[1]?

[1]:
https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/linux_5.10/drivers/pinctrl/cvitek/cv180x_pinlist_swconfig.h

> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
> + *
> + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
> + */
> +#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +
> +#define MUX_M0		0
> +#define MUX_M1		1
> +#define MUX_M2		2
> +#define MUX_M3		3
> +#define MUX_M4		4
> +#define MUX_M5		5
> +#define MUX_M6		6
> +#define MUX_M7		7
> +
> +#endif
> diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> index e04df04a91c0..7a44d8e8672b 100644
> --- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> @@ -6,6 +6,8 @@
>  #include <dt-bindings/interrupt-controller/irq.h>
>  #include <dt-bindings/reset/sophgo,cv1800b-reset.h>
>  
> +#include "cv-pinctrl.h"
> +
>  / {
>  	compatible = "sophgo,cv1800b";
>  	#address-cells = <1>;
> @@ -55,6 +57,14 @@ soc {
>  		dma-noncoherent;
>  		ranges;
>  
> +		pinctrl0: pinctrl@3001000 {
> +			compatible = "pinctrl-single";
> +			reg = <0x3001000 0x130>;
> +			#pinctrl-cells = <1>;
> +			pinctrl-single,register-width = <32>;
> +			pinctrl-single,function-mask = <0x00000007>;
> +		};

From the vendor driver[2], it looks like this peripheral block only handles
pinmuxing, so indeed this looks like a good use of pinctrl-single.

[2]:
https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/linux_5.10/drivers/pinctrl/cvitek/pinctrl-cv180x.h

> +
>  		rst: reset-controller@3003000 {
>  			compatible = "sophgo,cv1800b-reset";
>  			reg = <0x03003000 0x1000>;


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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13  1:51   ` Samuel Holland
@ 2023-11-13 13:03     ` Jisheng Zhang
  2023-11-13 13:29       ` Conor Dooley
  0 siblings, 1 reply; 13+ messages in thread
From: Jisheng Zhang @ 2023-11-13 13:03 UTC (permalink / raw)
  To: Samuel Holland, Tony Lindgren
  Cc: devicetree, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-kernel, linux-riscv, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Chao Wei, Chen Wang

On Sun, Nov 12, 2023 at 08:51:20PM -0500, Samuel Holland wrote:
> On 2023-11-12 6:57 PM, Jisheng Zhang wrote:
> > Add the reset device tree node to cv1800b SoC reusing the
>           ^^^^^
>           I assume you mean pinctrl here?

oops copy and paste the commit msg ;) thanks
> 
> > pinctrl-single driver.
> > 
> > Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> > ---
> >  arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
> >  arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
> >  2 files changed, 29 insertions(+)
> >  create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> > 
> > diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> > new file mode 100644
> > index 000000000000..ed78b6fb3142
> > --- /dev/null
> > +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> 
> A couple of questions: Should this go in include/dt-bindings? And is it worth

When I cooked this series two weeks ago, I did put it in dt-binding, but
then I found commit fe49f2d776f799 ("arm64: dts: ti: Use local header for
pinctrl register values"), "These definitions were previously put in the
bindings header to avoid code duplication and to provide some context
meaning (name), but they do not fit the purpose of bindings." which is
suggested and acked by Krzysztof, so I just want to follow the style
here.


> including macros for the actual function mappings, like in the vendor source[1]?

Do you want something as the following?

#define UART0_TX	0
#define CAM_MCLK1	1
...

#define REG_UART0_TX	0x24
...

pinctrl-single,pins = <REG_UART0_TX UART0_TX>;

Other pinctl-single users just uses the register value directly, I have
no preference. But I'd like to get suggestions from DT and pinctl-single
maintainers. Hi Rob, Krzysztof, Conor, Tony, what's your opinion?

> 
> [1]:
> https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/linux_5.10/drivers/pinctrl/cvitek/cv180x_pinlist_swconfig.h
> 
> > @@ -0,0 +1,19 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/*
> > + * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
> > + *
> > + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
> > + */
> > +#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> > +#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> > +
> > +#define MUX_M0		0
> > +#define MUX_M1		1
> > +#define MUX_M2		2
> > +#define MUX_M3		3
> > +#define MUX_M4		4
> > +#define MUX_M5		5
> > +#define MUX_M6		6
> > +#define MUX_M7		7
> > +
> > +#endif
> > diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > index e04df04a91c0..7a44d8e8672b 100644
> > --- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > +++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > @@ -6,6 +6,8 @@
> >  #include <dt-bindings/interrupt-controller/irq.h>
> >  #include <dt-bindings/reset/sophgo,cv1800b-reset.h>
> >  
> > +#include "cv-pinctrl.h"
> > +
> >  / {
> >  	compatible = "sophgo,cv1800b";
> >  	#address-cells = <1>;
> > @@ -55,6 +57,14 @@ soc {
> >  		dma-noncoherent;
> >  		ranges;
> >  
> > +		pinctrl0: pinctrl@3001000 {
> > +			compatible = "pinctrl-single";
> > +			reg = <0x3001000 0x130>;
> > +			#pinctrl-cells = <1>;
> > +			pinctrl-single,register-width = <32>;
> > +			pinctrl-single,function-mask = <0x00000007>;
> > +		};
> 
> From the vendor driver[2], it looks like this peripheral block only handles
> pinmuxing, so indeed this looks like a good use of pinctrl-single.

This is deffinitely pinctrl-single style pinmux controller ;)

> 
> [2]:
> https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/linux_5.10/drivers/pinctrl/cvitek/pinctrl-cv180x.h
> 
> > +
> >  		rst: reset-controller@3003000 {
> >  			compatible = "sophgo,cv1800b-reset";
> >  			reg = <0x03003000 0x1000>;
> 

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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13 13:03     ` Jisheng Zhang
@ 2023-11-13 13:29       ` Conor Dooley
  2023-11-13 13:49         ` Samuel Holland
  0 siblings, 1 reply; 13+ messages in thread
From: Conor Dooley @ 2023-11-13 13:29 UTC (permalink / raw)
  To: Jisheng Zhang
  Cc: Samuel Holland, Tony Lindgren, devicetree, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, linux-kernel, linux-riscv,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Chao Wei, Chen Wang

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

On Mon, Nov 13, 2023 at 09:03:11PM +0800, Jisheng Zhang wrote:
> On Sun, Nov 12, 2023 at 08:51:20PM -0500, Samuel Holland wrote:
> > On 2023-11-12 6:57 PM, Jisheng Zhang wrote:
> > > Add the reset device tree node to cv1800b SoC reusing the
> >           ^^^^^
> >           I assume you mean pinctrl here?
> 
> oops copy and paste the commit msg ;) thanks
> > 
> > > pinctrl-single driver.
> > > 
> > > Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> > > ---
> > >  arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
> > >  arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
> > >  2 files changed, 29 insertions(+)
> > >  create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> > > 
> > > diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> > > new file mode 100644
> > > index 000000000000..ed78b6fb3142
> > > --- /dev/null
> > > +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> > 
> > A couple of questions: Should this go in include/dt-bindings? And is it worth
> 
> When I cooked this series two weeks ago, I did put it in dt-binding, but
> then I found commit fe49f2d776f799 ("arm64: dts: ti: Use local header for
> pinctrl register values"), "These definitions were previously put in the
> bindings header to avoid code duplication and to provide some context
> meaning (name), but they do not fit the purpose of bindings." which is
> suggested and acked by Krzysztof, so I just want to follow the style
> here.
> 
> 
> > including macros for the actual function mappings, like in the vendor source[1]?
> 
> Do you want something as the following?
> 
> #define UART0_TX	0
> #define CAM_MCLK1	1
> ...
> 
> #define REG_UART0_TX	0x24
> ...
> 
> pinctrl-single,pins = <REG_UART0_TX UART0_TX>;
> 
> Other pinctl-single users just uses the register value directly, I have
> no preference. But I'd like to get suggestions from DT and pinctl-single
> maintainers. Hi Rob, Krzysztof, Conor, Tony, what's your opinion?

Basically, if the definitions map directly to registers and are just
used to make writing your devicetree easier then they do not belong
in a binding. This differs from clock or reset indices, where we
essentially make up a set of indices that may or may not correlate to
offsets in the hardware as using the register values without any sort of
abstraction is not defining an ABI.

Cheers,
Conor.
> 
> > 
> > [1]:
> > https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/linux_5.10/drivers/pinctrl/cvitek/cv180x_pinlist_swconfig.h
> > 
> > > @@ -0,0 +1,19 @@
> > > +/* SPDX-License-Identifier: GPL-2.0 */
> > > +/*
> > > + * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
> > > + *
> > > + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
> > > + */
> > > +#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> > > +#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> > > +
> > > +#define MUX_M0		0
> > > +#define MUX_M1		1
> > > +#define MUX_M2		2
> > > +#define MUX_M3		3
> > > +#define MUX_M4		4
> > > +#define MUX_M5		5
> > > +#define MUX_M6		6
> > > +#define MUX_M7		7
> > > +
> > > +#endif
> > > diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > > index e04df04a91c0..7a44d8e8672b 100644
> > > --- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > > +++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > > @@ -6,6 +6,8 @@
> > >  #include <dt-bindings/interrupt-controller/irq.h>
> > >  #include <dt-bindings/reset/sophgo,cv1800b-reset.h>
> > >  
> > > +#include "cv-pinctrl.h"
> > > +
> > >  / {
> > >  	compatible = "sophgo,cv1800b";
> > >  	#address-cells = <1>;
> > > @@ -55,6 +57,14 @@ soc {
> > >  		dma-noncoherent;
> > >  		ranges;
> > >  
> > > +		pinctrl0: pinctrl@3001000 {
> > > +			compatible = "pinctrl-single";
> > > +			reg = <0x3001000 0x130>;
> > > +			#pinctrl-cells = <1>;
> > > +			pinctrl-single,register-width = <32>;
> > > +			pinctrl-single,function-mask = <0x00000007>;
> > > +		};
> > 
> > From the vendor driver[2], it looks like this peripheral block only handles
> > pinmuxing, so indeed this looks like a good use of pinctrl-single.
> 
> This is deffinitely pinctrl-single style pinmux controller ;)
> 
> > 
> > [2]:
> > https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/linux_5.10/drivers/pinctrl/cvitek/pinctrl-cv180x.h
> > 
> > > +
> > >  		rst: reset-controller@3003000 {
> > >  			compatible = "sophgo,cv1800b-reset";
> > >  			reg = <0x03003000 0x1000>;
> > 

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

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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13 13:29       ` Conor Dooley
@ 2023-11-13 13:49         ` Samuel Holland
  0 siblings, 0 replies; 13+ messages in thread
From: Samuel Holland @ 2023-11-13 13:49 UTC (permalink / raw)
  To: Conor Dooley, Jisheng Zhang
  Cc: Tony Lindgren, devicetree, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, linux-kernel, linux-riscv, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Chao Wei, Chen Wang

Hi Conor,

On 2023-11-13 7:29 AM, Conor Dooley wrote:
> On Mon, Nov 13, 2023 at 09:03:11PM +0800, Jisheng Zhang wrote:
>> On Sun, Nov 12, 2023 at 08:51:20PM -0500, Samuel Holland wrote:
>>> On 2023-11-12 6:57 PM, Jisheng Zhang wrote:
>>>> Add the reset device tree node to cv1800b SoC reusing the
>>>           ^^^^^
>>>           I assume you mean pinctrl here?
>>
>> oops copy and paste the commit msg ;) thanks
>>>
>>>> pinctrl-single driver.
>>>>
>>>> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
>>>> ---
>>>>  arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
>>>>  arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
>>>>  2 files changed, 29 insertions(+)
>>>>  create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
>>>>
>>>> diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
>>>> new file mode 100644
>>>> index 000000000000..ed78b6fb3142
>>>> --- /dev/null
>>>> +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
>>>
>>> A couple of questions: Should this go in include/dt-bindings? And is it worth
>>
>> When I cooked this series two weeks ago, I did put it in dt-binding, but
>> then I found commit fe49f2d776f799 ("arm64: dts: ti: Use local header for
>> pinctrl register values"), "These definitions were previously put in the
>> bindings header to avoid code duplication and to provide some context
>> meaning (name), but they do not fit the purpose of bindings." which is
>> suggested and acked by Krzysztof, so I just want to follow the style
>> here.
>>
>>
>>> including macros for the actual function mappings, like in the vendor source[1]?
>>
>> Do you want something as the following?
>>
>> #define UART0_TX	0
>> #define CAM_MCLK1	1
>> ...
>>
>> #define REG_UART0_TX	0x24
>> ...
>>
>> pinctrl-single,pins = <REG_UART0_TX UART0_TX>;
>>
>> Other pinctl-single users just uses the register value directly, I have
>> no preference. But I'd like to get suggestions from DT and pinctl-single
>> maintainers. Hi Rob, Krzysztof, Conor, Tony, what's your opinion?
> 
> Basically, if the definitions map directly to registers and are just
> used to make writing your devicetree easier then they do not belong
> in a binding. This differs from clock or reset indices, where we
> essentially make up a set of indices that may or may not correlate to
> offsets in the hardware as using the register values without any sort of
> abstraction is not defining an ABI.

Right. I should have remembered this policy :)

Regards,
Samuel


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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
  2023-11-13  1:51   ` Samuel Holland
@ 2023-11-14  1:38   ` Chen Wang
  2023-11-14 14:46     ` Jisheng Zhang
  2023-11-14  2:07   ` Chen Wang
  2023-11-16 16:36   ` Rob Herring
  3 siblings, 1 reply; 13+ messages in thread
From: Chen Wang @ 2023-11-14  1:38 UTC (permalink / raw)
  To: Jisheng Zhang, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Chao Wei
  Cc: devicetree, linux-kernel, linux-riscv


On 2023/11/13 8:57, Jisheng Zhang wrote:
> Add the reset device tree node to cv1800b SoC reusing the
> pinctrl-single driver.
>
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> ---
>   arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
>   arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
>   2 files changed, 29 insertions(+)
>   create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h


I'm afraid there will not be more cv* chip in coming days. So I would 
suggest you use "cv1800b-pinctrl.h" first here. If we see more cv* 
coming, and if they will reuse the definition here, we can consider 
optimize the filename, what do you think?

BTW, how about defining the file name as "cv1800b.h" and I'm not sure if 
you will have more macro const definition for other modules?

> diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> new file mode 100644
> index 000000000000..ed78b6fb3142
> --- /dev/null
> +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
> + *
> + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
> + */
> +#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +
> +#define MUX_M0		0
> +#define MUX_M1		1
> +#define MUX_M2		2
> +#define MUX_M3		3
> +#define MUX_M4		4
> +#define MUX_M5		5
> +#define MUX_M6		6
> +#define MUX_M7		7
> +
> +#endif
> diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> index e04df04a91c0..7a44d8e8672b 100644
> --- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> @@ -6,6 +6,8 @@
>   #include <dt-bindings/interrupt-controller/irq.h>
>   #include <dt-bindings/reset/sophgo,cv1800b-reset.h>
>   
> +#include "cv-pinctrl.h"
> +
>   / {
>   	compatible = "sophgo,cv1800b";
>   	#address-cells = <1>;
> @@ -55,6 +57,14 @@ soc {
>   		dma-noncoherent;
>   		ranges;
>   
> +		pinctrl0: pinctrl@3001000 {
> +			compatible = "pinctrl-single";
> +			reg = <0x3001000 0x130>;
> +			#pinctrl-cells = <1>;
> +			pinctrl-single,register-width = <32>;
> +			pinctrl-single,function-mask = <0x00000007>;
> +		};
> +
>   		rst: reset-controller@3003000 {
>   			compatible = "sophgo,cv1800b-reset";
>   			reg = <0x03003000 0x1000>;

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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
  2023-11-13  1:51   ` Samuel Holland
  2023-11-14  1:38   ` Chen Wang
@ 2023-11-14  2:07   ` Chen Wang
  2023-11-16 16:36   ` Rob Herring
  3 siblings, 0 replies; 13+ messages in thread
From: Chen Wang @ 2023-11-14  2:07 UTC (permalink / raw)
  To: Jisheng Zhang, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Chao Wei
  Cc: devicetree, linux-kernel, linux-riscv


On 2023/11/13 8:57, Jisheng Zhang wrote:
> Add the reset device tree node to cv1800b SoC reusing the
> pinctrl-single driver.
>
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> ---
>   arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
>   arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
>   2 files changed, 29 insertions(+)
>   create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
>
> diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> new file mode 100644
> index 000000000000..ed78b6fb3142
> --- /dev/null
> +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
> + *
> + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
> + */
> +#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +
> +#define MUX_M0		0
> +#define MUX_M1		1
> +#define MUX_M2		2
> +#define MUX_M3		3
> +#define MUX_M4		4
> +#define MUX_M5		5
> +#define MUX_M6		6
> +#define MUX_M7		7
> +
> +#endif
> diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> index e04df04a91c0..7a44d8e8672b 100644
> --- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> @@ -6,6 +6,8 @@
>   #include <dt-bindings/interrupt-controller/irq.h>
>   #include <dt-bindings/reset/sophgo,cv1800b-reset.h>

Another question:

Does this patch depend on anther patchset "riscv: sophgo: add reset 
support for cv1800b"?

If so, you may need to add comments in the cover-letter to clarify this. 
But I'm afraid it does not.


>   
> +#include "cv-pinctrl.h"
> +
>   / {
>   	compatible = "sophgo,cv1800b";
>   	#address-cells = <1>;
> @@ -55,6 +57,14 @@ soc {
>   		dma-noncoherent;
>   		ranges;
>   
> +		pinctrl0: pinctrl@3001000 {
> +			compatible = "pinctrl-single";
> +			reg = <0x3001000 0x130>;
> +			#pinctrl-cells = <1>;
> +			pinctrl-single,register-width = <32>;
> +			pinctrl-single,function-mask = <0x00000007>;
> +		};
> +
>   		rst: reset-controller@3003000 {
>   			compatible = "sophgo,cv1800b-reset";
>   			reg = <0x03003000 0x1000>;

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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-14  1:38   ` Chen Wang
@ 2023-11-14 14:46     ` Jisheng Zhang
  0 siblings, 0 replies; 13+ messages in thread
From: Jisheng Zhang @ 2023-11-14 14:46 UTC (permalink / raw)
  To: Chen Wang
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Chao Wei, devicetree, linux-kernel,
	linux-riscv

On Tue, Nov 14, 2023 at 09:38:47AM +0800, Chen Wang wrote:
> 
> On 2023/11/13 8:57, Jisheng Zhang wrote:
> > Add the reset device tree node to cv1800b SoC reusing the
> > pinctrl-single driver.
> > 
> > Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> > ---
> >   arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
> >   arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
> >   2 files changed, 29 insertions(+)
> >   create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> 
> 
> I'm afraid there will not be more cv* chip in coming days. So I would
> suggest you use "cv1800b-pinctrl.h" first here. If we see more cv* coming,
> and if they will reuse the definition here, we can consider optimize the
> filename, what do you think?
> 
> BTW, how about defining the file name as "cv1800b.h" and I'm not sure if you

hmm, cv1800b-pinctrl.h is fine. Only pinctrl related stuff will be put
there.

> will have more macro const definition for other modules?
> 
> > diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> > new file mode 100644
> > index 000000000000..ed78b6fb3142
> > --- /dev/null
> > +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> > @@ -0,0 +1,19 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/*
> > + * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
> > + *
> > + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
> > + */
> > +#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> > +#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> > +
> > +#define MUX_M0		0
> > +#define MUX_M1		1
> > +#define MUX_M2		2
> > +#define MUX_M3		3
> > +#define MUX_M4		4
> > +#define MUX_M5		5
> > +#define MUX_M6		6
> > +#define MUX_M7		7
> > +
> > +#endif
> > diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > index e04df04a91c0..7a44d8e8672b 100644
> > --- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > +++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> > @@ -6,6 +6,8 @@
> >   #include <dt-bindings/interrupt-controller/irq.h>
> >   #include <dt-bindings/reset/sophgo,cv1800b-reset.h>
> > +#include "cv-pinctrl.h"
> > +
> >   / {
> >   	compatible = "sophgo,cv1800b";
> >   	#address-cells = <1>;
> > @@ -55,6 +57,14 @@ soc {
> >   		dma-noncoherent;
> >   		ranges;
> > +		pinctrl0: pinctrl@3001000 {
> > +			compatible = "pinctrl-single";
> > +			reg = <0x3001000 0x130>;
> > +			#pinctrl-cells = <1>;
> > +			pinctrl-single,register-width = <32>;
> > +			pinctrl-single,function-mask = <0x00000007>;
> > +		};
> > +
> >   		rst: reset-controller@3003000 {
> >   			compatible = "sophgo,cv1800b-reset";
> >   			reg = <0x03003000 0x1000>;

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

* Re: [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node for cv1800b
  2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
                     ` (2 preceding siblings ...)
  2023-11-14  2:07   ` Chen Wang
@ 2023-11-16 16:36   ` Rob Herring
  3 siblings, 0 replies; 13+ messages in thread
From: Rob Herring @ 2023-11-16 16:36 UTC (permalink / raw)
  To: Jisheng Zhang
  Cc: Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Chao Wei, Chen Wang, devicetree, linux-kernel,
	linux-riscv

On Mon, Nov 13, 2023 at 08:57:01AM +0800, Jisheng Zhang wrote:
> Add the reset device tree node to cv1800b SoC reusing the
> pinctrl-single driver.
> 
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> ---
>  arch/riscv/boot/dts/sophgo/cv-pinctrl.h | 19 +++++++++++++++++++
>  arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 10 ++++++++++
>  2 files changed, 29 insertions(+)
>  create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> 
> diff --git a/arch/riscv/boot/dts/sophgo/cv-pinctrl.h b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> new file mode 100644
> index 000000000000..ed78b6fb3142
> --- /dev/null
> +++ b/arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

Please match the licensing of the file(s) that include this. Not that 
there really anything 

> +/*
> + * This header provides constants for pinctrl bindings for Sophgo CV* SoC.
> + *
> + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
> + */
> +#ifndef _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +#define _DTS_RISCV_SOPHGO_CV_PINCTRL_H
> +
> +#define MUX_M0		0
> +#define MUX_M1		1
> +#define MUX_M2		2
> +#define MUX_M3		3
> +#define MUX_M4		4
> +#define MUX_M5		5
> +#define MUX_M6		6
> +#define MUX_M7		7

I find defines with the number in the name to be somewhat pointless.

> +
> +#endif
> diff --git a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> index e04df04a91c0..7a44d8e8672b 100644
> --- a/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/cv1800b.dtsi
> @@ -6,6 +6,8 @@
>  #include <dt-bindings/interrupt-controller/irq.h>
>  #include <dt-bindings/reset/sophgo,cv1800b-reset.h>
>  
> +#include "cv-pinctrl.h"
> +
>  / {
>  	compatible = "sophgo,cv1800b";
>  	#address-cells = <1>;
> @@ -55,6 +57,14 @@ soc {
>  		dma-noncoherent;
>  		ranges;
>  
> +		pinctrl0: pinctrl@3001000 {
> +			compatible = "pinctrl-single";
> +			reg = <0x3001000 0x130>;
> +			#pinctrl-cells = <1>;
> +			pinctrl-single,register-width = <32>;
> +			pinctrl-single,function-mask = <0x00000007>;
> +		};

Even more pointless is the defines are not even used.

> +
>  		rst: reset-controller@3003000 {
>  			compatible = "sophgo,cv1800b-reset";
>  			reg = <0x03003000 0x1000>;
> -- 
> 2.42.0
> 

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

* Re: [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b
  2023-11-13  0:57 [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Jisheng Zhang
  2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
  2023-11-13  0:57 ` [PATCH 2/2] riscv: dts: sophgo: set pinctrl for uart0 Jisheng Zhang
@ 2024-01-17  9:03 ` Chen Wang
  2024-01-18  1:23   ` Jisheng Zhang
  2 siblings, 1 reply; 13+ messages in thread
From: Chen Wang @ 2024-01-17  9:03 UTC (permalink / raw)
  To: Jisheng Zhang, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Paul Walmsley, Palmer Dabbelt, Albert Ou, Chao Wei
  Cc: devicetree, linux-kernel, linux-riscv


On 2023/11/13 8:57, Jisheng Zhang wrote:
> This series adds pinctrl support for cv1800b reusing the
> pinctrl-single driver.
>
> Jisheng Zhang (2):
>    riscv: dts: cv1800b: add pinctrl node for cv1800b
>    riscv: dts: sophgo: set pinctrl for uart0
>
>   arch/riscv/boot/dts/sophgo/cv-pinctrl.h       | 19 +++++++++++++++++++
>   .../boot/dts/sophgo/cv1800b-milkv-duo.dts     | 11 +++++++++++
>   arch/riscv/boot/dts/sophgo/cv1800b.dtsi       | 10 ++++++++++
>   3 files changed, 40 insertions(+)
>   create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h

One question, when we use "pinctrl-single" driver, should we enable 
CONFIG_PINCTRL_SINGLE? Or just leave it to package vendor to configure 
by themselves?


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

* Re: [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b
  2024-01-17  9:03 ` [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Chen Wang
@ 2024-01-18  1:23   ` Jisheng Zhang
  0 siblings, 0 replies; 13+ messages in thread
From: Jisheng Zhang @ 2024-01-18  1:23 UTC (permalink / raw)
  To: Chen Wang
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Chao Wei, devicetree, linux-kernel,
	linux-riscv

On Wed, Jan 17, 2024 at 05:03:20PM +0800, Chen Wang wrote:
> 
> On 2023/11/13 8:57, Jisheng Zhang wrote:
> > This series adds pinctrl support for cv1800b reusing the
> > pinctrl-single driver.
> > 
> > Jisheng Zhang (2):
> >    riscv: dts: cv1800b: add pinctrl node for cv1800b
> >    riscv: dts: sophgo: set pinctrl for uart0
> > 
> >   arch/riscv/boot/dts/sophgo/cv-pinctrl.h       | 19 +++++++++++++++++++
> >   .../boot/dts/sophgo/cv1800b-milkv-duo.dts     | 11 +++++++++++
> >   arch/riscv/boot/dts/sophgo/cv1800b.dtsi       | 10 ++++++++++
> >   3 files changed, 40 insertions(+)
> >   create mode 100644 arch/riscv/boot/dts/sophgo/cv-pinctrl.h
> 
> One question, when we use "pinctrl-single" driver, should we enable
> CONFIG_PINCTRL_SINGLE? Or just leave it to package vendor to configure by

It's better to enable PINCTRL_SINGLE in defconfig. However, per recently
pin related xls from milkv github repo, pinctrl-single isn't suitable.

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

end of thread, other threads:[~2024-01-18  1:36 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-13  0:57 [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Jisheng Zhang
2023-11-13  0:57 ` [PATCH 1/2] riscv: dts: cv1800b: add pinctrl node " Jisheng Zhang
2023-11-13  1:51   ` Samuel Holland
2023-11-13 13:03     ` Jisheng Zhang
2023-11-13 13:29       ` Conor Dooley
2023-11-13 13:49         ` Samuel Holland
2023-11-14  1:38   ` Chen Wang
2023-11-14 14:46     ` Jisheng Zhang
2023-11-14  2:07   ` Chen Wang
2023-11-16 16:36   ` Rob Herring
2023-11-13  0:57 ` [PATCH 2/2] riscv: dts: sophgo: set pinctrl for uart0 Jisheng Zhang
2024-01-17  9:03 ` [PATCH 0/2] riscv: sophgo: add pinctrl support for cv1800b Chen Wang
2024-01-18  1:23   ` Jisheng Zhang

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