linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] iio: adc: ad799x: reference voltage capability
@ 2025-08-06  9:01 Stefano Manni
  2025-08-06  9:01 ` [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info Stefano Manni
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Stefano Manni @ 2025-08-06  9:01 UTC (permalink / raw)
  To: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy
  Cc: linux-iio, linux-kernel, Stefano Manni

This patch series refactors 6b104e7895ab16b9b7f466c5f2ca282b87f661e8
in order to add the capability of the chip to have an
external reference voltage into the chip_info struct.
And so avoid ugly conditional checks on the chip id.

In addition the AD7994 is marked to have the external
reference voltage as well.

Stefano Manni (2):
  iio: adc: ad799x: add reference voltage capability to chip_info
  iio: adc: ad799x: add reference voltage to ad7994

 drivers/iio/adc/ad799x.c | 45 +++++++++++++++++++++++-----------------
 1 file changed, 26 insertions(+), 19 deletions(-)

-- 
2.48.1


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

* [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info
  2025-08-06  9:01 [PATCH 0/2] iio: adc: ad799x: reference voltage capability Stefano Manni
@ 2025-08-06  9:01 ` Stefano Manni
  2025-08-06 14:58   ` Jonathan Cameron
  2025-08-06 20:15   ` Andy Shevchenko
  2025-08-06  9:01 ` [PATCH 2/2] iio: adc: ad799x: add reference voltage to ad7994 Stefano Manni
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 9+ messages in thread
From: Stefano Manni @ 2025-08-06  9:01 UTC (permalink / raw)
  To: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy
  Cc: linux-iio, linux-kernel, Stefano Manni

If the chip supports an external reference voltage
on REFIN pin then the "vref-supply" regulator may be used.

This commit partially refactors 6b104e7895ab16b9b7f466c5f2ca282b87f661e8
to add the capability of the chip to have an external
voltage reference and then remove the ugly conditional check
on chip id.

Signed-off-by: Stefano Manni <stefano.manni@gmail.com>
---
 drivers/iio/adc/ad799x.c | 45 +++++++++++++++++++++++-----------------
 1 file changed, 26 insertions(+), 19 deletions(-)

diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c
index 9c02f9199139..955d845407b9 100644
--- a/drivers/iio/adc/ad799x.c
+++ b/drivers/iio/adc/ad799x.c
@@ -114,11 +114,13 @@ struct ad799x_chip_config {
  * @num_channels:	number of channels
  * @noirq_config:	device configuration w/o IRQ
  * @irq_config:		device configuration w/IRQ
+ * @has_vref:		device supports external reference voltage
  */
 struct ad799x_chip_info {
 	int				num_channels;
 	const struct ad799x_chip_config	noirq_config;
 	const struct ad799x_chip_config	irq_config;
+	bool has_vref;
 };
 
 struct ad799x_state {
@@ -604,6 +606,7 @@ static const struct iio_event_spec ad799x_events[] = {
 static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	[ad7991] = {
 		.num_channels = 5,
+		.has_vref = true,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 12),
@@ -617,6 +620,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7995] = {
 		.num_channels = 5,
+		.has_vref = true,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 10),
@@ -630,6 +634,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7999] = {
 		.num_channels = 5,
+		.has_vref = true,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 8),
@@ -643,6 +648,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7992] = {
 		.num_channels = 3,
+		.has_vref = false,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 12),
@@ -663,6 +669,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7993] = {
 		.num_channels = 5,
+		.has_vref = false,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 10),
@@ -687,6 +694,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7994] = {
 		.num_channels = 5,
+		.has_vref = false,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 12),
@@ -711,6 +719,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7997] = {
 		.num_channels = 9,
+		.has_vref = false,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 10),
@@ -743,6 +752,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7998] = {
 		.num_channels = 9,
+		.has_vref = false,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 12),
@@ -809,34 +819,31 @@ static int ad799x_probe(struct i2c_client *client)
 		return ret;
 
 	/* check if an external reference is supplied */
-	st->vref = devm_regulator_get_optional(&client->dev, "vref");
-
-	if (IS_ERR(st->vref)) {
-		if (PTR_ERR(st->vref) == -ENODEV) {
-			st->vref = NULL;
-			dev_info(&client->dev, "Using VCC reference voltage\n");
-		} else {
-			ret = PTR_ERR(st->vref);
-			goto error_disable_reg;
+	if (chip_info->has_vref) {
+		st->vref = devm_regulator_get_optional(&client->dev, "vref");
+
+		if (IS_ERR(st->vref)) {
+			if (PTR_ERR(st->vref) == -ENODEV) {
+				st->vref = NULL;
+				dev_info(&client->dev, "Using VCC reference voltage\n");
+			} else {
+				ret = PTR_ERR(st->vref);
+				goto error_disable_reg;
+			}
 		}
-	}
 
-	if (st->vref) {
-		/*
-		 * Use external reference voltage if supported by hardware.
-		 * This is optional if voltage / regulator present, use VCC otherwise.
-		 */
-		if ((st->id == ad7991) || (st->id == ad7995) || (st->id == ad7999)) {
+		if (st->vref) {
 			dev_info(&client->dev, "Using external reference voltage\n");
 			extra_config |= AD7991_REF_SEL;
 			ret = regulator_enable(st->vref);
 			if (ret)
 				goto error_disable_reg;
-		} else {
-			st->vref = NULL;
-			dev_warn(&client->dev, "Supplied reference not supported\n");
 		}
 	}
+	else {
+		st->vref = NULL;
+		dev_dbg(&client->dev, "Supplied reference not supported\n");
+	}
 
 	st->client = client;
 
-- 
2.48.1


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

* [PATCH 2/2] iio: adc: ad799x: add reference voltage to ad7994
  2025-08-06  9:01 [PATCH 0/2] iio: adc: ad799x: reference voltage capability Stefano Manni
  2025-08-06  9:01 ` [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info Stefano Manni
@ 2025-08-06  9:01 ` Stefano Manni
  2025-08-06 20:16   ` Andy Shevchenko
  2025-08-06 15:40 ` [PATCH 0/2] iio: adc: ad799x: reference voltage capability David Lechner
  2025-08-06 20:06 ` Andy Shevchenko
  3 siblings, 1 reply; 9+ messages in thread
From: Stefano Manni @ 2025-08-06  9:01 UTC (permalink / raw)
  To: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy
  Cc: linux-iio, linux-kernel, Stefano Manni

Signed-off-by: Stefano Manni <stefano.manni@gmail.com>
---
 drivers/iio/adc/ad799x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c
index 955d845407b9..21e03f0df889 100644
--- a/drivers/iio/adc/ad799x.c
+++ b/drivers/iio/adc/ad799x.c
@@ -694,7 +694,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
 	},
 	[ad7994] = {
 		.num_channels = 5,
-		.has_vref = false,
+		.has_vref = true,
 		.noirq_config = {
 			.channel = {
 				AD799X_CHANNEL(0, 12),
-- 
2.48.1


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

* Re: [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info
  2025-08-06  9:01 ` [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info Stefano Manni
@ 2025-08-06 14:58   ` Jonathan Cameron
  2025-08-06 15:36     ` David Lechner
  2025-08-06 20:15   ` Andy Shevchenko
  1 sibling, 1 reply; 9+ messages in thread
From: Jonathan Cameron @ 2025-08-06 14:58 UTC (permalink / raw)
  To: Stefano Manni
  Cc: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy,
	linux-iio, linux-kernel

On Wed,  6 Aug 2025 11:01:57 +0200
Stefano Manni <stefano.manni@gmail.com> wrote:

> If the chip supports an external reference voltage
> on REFIN pin then the "vref-supply" regulator may be used.
> 
> This commit partially refactors 6b104e7895ab16b9b7f466c5f2ca282b87f661e8
> to add the capability of the chip to have an external
> voltage reference and then remove the ugly conditional check
> on chip id.
> 
> Signed-off-by: Stefano Manni <stefano.manni@gmail.com>

Hi Stefano,
`
A few minor things inline.

Mostly looks good to me. 

Jonathan

> ---
>  drivers/iio/adc/ad799x.c | 45 +++++++++++++++++++++++-----------------
>  1 file changed, 26 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c
> index 9c02f9199139..955d845407b9 100644
> --- a/drivers/iio/adc/ad799x.c
> +++ b/drivers/iio/adc/ad799x.c
> @@ -114,11 +114,13 @@ struct ad799x_chip_config {
>   * @num_channels:	number of channels
>   * @noirq_config:	device configuration w/o IRQ
>   * @irq_config:		device configuration w/IRQ
> + * @has_vref:		device supports external reference voltage
>   */
>  struct ad799x_chip_info {
>  	int				num_channels;
>  	const struct ad799x_chip_config	noirq_config;
>  	const struct ad799x_chip_config	irq_config;
> +	bool has_vref;
>  };
>  
>  struct ad799x_state {
> @@ -604,6 +606,7 @@ static const struct iio_event_spec ad799x_events[] = {
>  static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	[ad7991] = {
>  		.num_channels = 5,
> +		.has_vref = true,
>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 12),
> @@ -617,6 +620,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7995] = {
>  		.num_channels = 5,
> +		.has_vref = true,
>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 10),
> @@ -630,6 +634,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7999] = {
>  		.num_channels = 5,
> +		.has_vref = true,
>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 8),
> @@ -643,6 +648,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7992] = {
>  		.num_channels = 3,
> +		.has_vref = false,
>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 12),
> @@ -663,6 +669,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7993] = {
>  		.num_channels = 5,
> +		.has_vref = false,
>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 10),
> @@ -687,6 +694,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7994] = {
>  		.num_channels = 5,
> +		.has_vref = false,
>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 12),
> @@ -711,6 +719,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7997] = {
>  		.num_channels = 9,
> +		.has_vref = false,

Seems like 'not' having a vref is a reasonable default, so you could just not
set it at all in those cases and rely on the default being false.

>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 10),
> @@ -743,6 +752,7 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7998] = {
>  		.num_channels = 9,
> +		.has_vref = false,
>  		.noirq_config = {
>  			.channel = {
>  				AD799X_CHANNEL(0, 12),
> @@ -809,34 +819,31 @@ static int ad799x_probe(struct i2c_client *client)
>  		return ret;
>  
>  	/* check if an external reference is supplied */
> -	st->vref = devm_regulator_get_optional(&client->dev, "vref");
> -
> -	if (IS_ERR(st->vref)) {
> -		if (PTR_ERR(st->vref) == -ENODEV) {
> -			st->vref = NULL;
> -			dev_info(&client->dev, "Using VCC reference voltage\n");
> -		} else {
> -			ret = PTR_ERR(st->vref);
> -			goto error_disable_reg;
> +	if (chip_info->has_vref) {
> +		st->vref = devm_regulator_get_optional(&client->dev, "vref");
> +
> +		if (IS_ERR(st->vref)) {
> +			if (PTR_ERR(st->vref) == -ENODEV) {
> +				st->vref = NULL;
> +				dev_info(&client->dev, "Using VCC reference voltage\n");
> +			} else {
> +				ret = PTR_ERR(st->vref);
> +				goto error_disable_reg;
> +			}
>  		}
> -	}
>  
> -	if (st->vref) {
> -		/*
> -		 * Use external reference voltage if supported by hardware.
> -		 * This is optional if voltage / regulator present, use VCC otherwise.
> -		 */
> -		if ((st->id == ad7991) || (st->id == ad7995) || (st->id == ad7999)) {
> +		if (st->vref) {
>  			dev_info(&client->dev, "Using external reference voltage\n");
>  			extra_config |= AD7991_REF_SEL;
>  			ret = regulator_enable(st->vref);
>  			if (ret)
>  				goto error_disable_reg;
> -		} else {
> -			st->vref = NULL;
> -			dev_warn(&client->dev, "Supplied reference not supported\n");
>  		}
>  	}
> +	else {

	} else {

> +		st->vref = NULL;
> +		dev_dbg(&client->dev, "Supplied reference not supported\n");
> +	}
>  
>  	st->client = client;
>  


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

* Re: [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info
  2025-08-06 14:58   ` Jonathan Cameron
@ 2025-08-06 15:36     ` David Lechner
  0 siblings, 0 replies; 9+ messages in thread
From: David Lechner @ 2025-08-06 15:36 UTC (permalink / raw)
  To: Jonathan Cameron, Stefano Manni
  Cc: lars, Michael.Hennerich, jic23, nuno.sa, andy, linux-iio,
	linux-kernel

On 8/6/25 9:58 AM, Jonathan Cameron wrote:
> On Wed,  6 Aug 2025 11:01:57 +0200
> Stefano Manni <stefano.manni@gmail.com> wrote:
> 

...

>> +	else {
> 
> 	} else {
> 
>> +		st->vref = NULL;
>> +		dev_dbg(&client->dev, "Supplied reference not supported\n");
>> +	}
>>  
>>  	st->client = client;
>>  
> 

I would just completely drop the else. st->vref is already
NULL since st is zeroed at allocation and the message is no
longer useful. Previously, it warned that the devicetree
contained a vref-supply when the chip didn't support it.
But now no message is printed in that case and this message
would be printed on all chips that don't have vref-supply
in the devicetree when that case didn't print anything before.

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

* Re: [PATCH 0/2] iio: adc: ad799x: reference voltage capability
  2025-08-06  9:01 [PATCH 0/2] iio: adc: ad799x: reference voltage capability Stefano Manni
  2025-08-06  9:01 ` [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info Stefano Manni
  2025-08-06  9:01 ` [PATCH 2/2] iio: adc: ad799x: add reference voltage to ad7994 Stefano Manni
@ 2025-08-06 15:40 ` David Lechner
  2025-08-06 20:06 ` Andy Shevchenko
  3 siblings, 0 replies; 9+ messages in thread
From: David Lechner @ 2025-08-06 15:40 UTC (permalink / raw)
  To: Stefano Manni, lars, Michael.Hennerich, jic23, nuno.sa, andy
  Cc: linux-iio, linux-kernel

On 8/6/25 4:01 AM, Stefano Manni wrote:
> This patch series refactors 6b104e7895ab16b9b7f466c5f2ca282b87f661e8
> in order to add the capability of the chip to have an
> external reference voltage into the chip_info struct.
> And so avoid ugly conditional checks on the chip id.
> 
> In addition the AD7994 is marked to have the external
> reference voltage as well.
> 
> Stefano Manni (2):
>   iio: adc: ad799x: add reference voltage capability to chip_info
>   iio: adc: ad799x: add reference voltage to ad7994
> 
>  drivers/iio/adc/ad799x.c | 45 +++++++++++++++++++++++-----------------
>  1 file changed, 26 insertions(+), 19 deletions(-)
> 

Something to keep in mind if you send more patches: this
should have been [PATCH v2] with a link to (implicit) v1 [1].

[1]: https://lore.kernel.org/linux-iio/20250805142423.17710-1-stefano.manni@gmail.com/

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

* Re: [PATCH 0/2] iio: adc: ad799x: reference voltage capability
  2025-08-06  9:01 [PATCH 0/2] iio: adc: ad799x: reference voltage capability Stefano Manni
                   ` (2 preceding siblings ...)
  2025-08-06 15:40 ` [PATCH 0/2] iio: adc: ad799x: reference voltage capability David Lechner
@ 2025-08-06 20:06 ` Andy Shevchenko
  3 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2025-08-06 20:06 UTC (permalink / raw)
  To: Stefano Manni
  Cc: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy,
	linux-iio, linux-kernel

On Wed, Aug 06, 2025 at 11:01:56AM +0200, Stefano Manni wrote:
> This patch series refactors 6b104e7895ab16b9b7f466c5f2ca282b87f661e8
> in order to add the capability of the chip to have an
> external reference voltage into the chip_info struct.
> And so avoid ugly conditional checks on the chip id.
> 
> In addition the AD7994 is marked to have the external
> reference voltage as well.

On top what David said, missed changelog.

-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info
  2025-08-06  9:01 ` [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info Stefano Manni
  2025-08-06 14:58   ` Jonathan Cameron
@ 2025-08-06 20:15   ` Andy Shevchenko
  1 sibling, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2025-08-06 20:15 UTC (permalink / raw)
  To: Stefano Manni
  Cc: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy,
	linux-iio, linux-kernel

On Wed, Aug 06, 2025 at 11:01:57AM +0200, Stefano Manni wrote:
> If the chip supports an external reference voltage
> on REFIN pin then the "vref-supply" regulator may be used.
> 
> This commit partially refactors 6b104e7895ab16b9b7f466c5f2ca282b87f661e8
> to add the capability of the chip to have an external
> voltage reference and then remove the ugly conditional check
> on chip id.

Suggested-by?

...

> +	if (chip_info->has_vref) {
> +		st->vref = devm_regulator_get_optional(&client->dev, "vref");

> +

Redundant blank line.

> +		if (IS_ERR(st->vref)) {
> +			if (PTR_ERR(st->vref) == -ENODEV) {
> +				st->vref = NULL;
> +				dev_info(&client->dev, "Using VCC reference voltage\n");
> +			} else {
> +				ret = PTR_ERR(st->vref);
> +				goto error_disable_reg;
> +			}
>  		}

Can be written as

		ret = PTR_ERR_OR_ZERO(st->vref);
		if (ret) {
			if (ret != -ENODEV)
				goto error_disable_reg;
			st->vref = NULL;
			dev_info(&client->dev, "Using VCC reference voltage\n");
		}

> -	}


-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH 2/2] iio: adc: ad799x: add reference voltage to ad7994
  2025-08-06  9:01 ` [PATCH 2/2] iio: adc: ad799x: add reference voltage to ad7994 Stefano Manni
@ 2025-08-06 20:16   ` Andy Shevchenko
  0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2025-08-06 20:16 UTC (permalink / raw)
  To: Stefano Manni
  Cc: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy,
	linux-iio, linux-kernel

On Wed, Aug 06, 2025 at 11:01:58AM +0200, Stefano Manni wrote:

Missing commit message.

> Signed-off-by: Stefano Manni <stefano.manni@gmail.com>

...

>  	[ad7994] = {
>  		.num_channels = 5,
> -		.has_vref = false,
> +		.has_vref = true,

As Jonathan said and I implied the false is default. This patch should be just
a oneliner with +1 line.

-- 
With Best Regards,
Andy Shevchenko



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

end of thread, other threads:[~2025-08-06 20:16 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-06  9:01 [PATCH 0/2] iio: adc: ad799x: reference voltage capability Stefano Manni
2025-08-06  9:01 ` [PATCH 1/2] iio: adc: ad799x: add reference voltage capability to chip_info Stefano Manni
2025-08-06 14:58   ` Jonathan Cameron
2025-08-06 15:36     ` David Lechner
2025-08-06 20:15   ` Andy Shevchenko
2025-08-06  9:01 ` [PATCH 2/2] iio: adc: ad799x: add reference voltage to ad7994 Stefano Manni
2025-08-06 20:16   ` Andy Shevchenko
2025-08-06 15:40 ` [PATCH 0/2] iio: adc: ad799x: reference voltage capability David Lechner
2025-08-06 20:06 ` Andy Shevchenko

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