All of lore.kernel.org
 help / color / mirror / Atom feed
* [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the
@ 2011-09-27 21:16 Uwe Kleine-König
  2011-09-29 16:38 ` Guenter Roeck
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: Uwe Kleine-König @ 2011-09-27 21:16 UTC (permalink / raw)
  To: lm-sensors

Based on a patch by David Jander that mostly did s/mc13783/mc13xxx/

Cc: David Jander <david.jander@protonic.nl>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
changes since (implicit) v1:
 - update documentation
 - undo driver renaming
 - fix show_name callback (not 100% sure it is correct to give a different name
   on mc13892. I think name contains the prefix documented in
   Documentation/hwmon/mc13783-adc?!)
 - implement some differences between mc13783 and mc13892 that I noticed when
   updating the docs
   - different scaling for bp channel
   - no general purpose channels 8-15 on mc13892
 - take over authorship as the patch got much more complicated now compared to
   David's original.

 Documentation/hwmon/mc13783-adc |   48 ++++++++++++----
 drivers/hwmon/Kconfig           |    6 +-
 drivers/hwmon/mc13783-adc.c     |  113 +++++++++++++++++++++++++++++----------
 3 files changed, 123 insertions(+), 44 deletions(-)

diff --git a/Documentation/hwmon/mc13783-adc b/Documentation/hwmon/mc13783-adc
index 044531a..8b717f5 100644
--- a/Documentation/hwmon/mc13783-adc
+++ b/Documentation/hwmon/mc13783-adc
@@ -5,6 +5,9 @@ Supported chips:
   * Freescale Atlas MC13783
     Prefix: 'mc13783_adc'
     Datasheet: http://www.freescale.com/files/rf_if/doc/data_sheet/MC13783.pdf?fsrch=1
+  * Freescale Atlas MC13892
+    Prefix: 'mc13892_adc'
+    Datasheet: http://cache.freescale.com/files/analog/doc/data_sheet/MC13892.pdf?fsrch=1&sr=1
 
 Authors:
     Sascha Hauer <s.hauer@pengutronix.de>
@@ -13,20 +16,21 @@ Authors:
 Description
 -----------
 
-The Freescale MC13783 is a Power Management and Audio Circuit. Among
-other things it contains a 10-bit A/D converter. The converter has 16
-channels which can be used in different modes.
-The A/D converter has a resolution of 2.25mV. Channels 0-4 have
-a dedicated meaning with chip internal scaling applied. Channels 5-7
-can be used as general purpose inputs or alternatively in a dedicated
-mode. Channels 12-15 are occupied by the touchscreen if it's active.
+The Freescale MC13783 and MC13892 are Power Management and Audio Circuits.
+Among other things they contain a 10-bit A/D converter. The converter has 16
+(MC13783) resp. 12 (MC13892) channels which can be used in different modes. The
+A/D converter has a resolution of 2.25mV.
 
-Currently the driver only supports channels 2 and 5-15 with no alternative
-modes for channels 5-7.
+Some channels can be used as General Purpose inputs or in a dedicated mode with
+a chip internal scaling applied .
 
-See this table for the meaning of the different channels and their chip
-internal scaling:
+Currently the driver only supports BP, the General Purpose inputs and
+touchscreen.
 
+See the following tables for the meaning of the different channels and their
+chip internal scaling:
+
+MC13783:
 Channel	Signal						Input Range	Scaling
 -------------------------------------------------------------------------------
 0	Battery Voltage (BATT)				2.50 - 4.65V	-2.40V
@@ -34,7 +38,7 @@ Channel	Signal						Input Range	Scaling
 2	Application Supply (BP)				2.50 - 4.65V	-2.40V
 3	Charger Voltage (CHRGRAW)			0 - 10V /	/5
 							0 - 20V		/10
-4	Charger Current (CHRGISNSP-CHRGISNSN)		-0.25V - 0.25V	x4
+4	Charger Current (CHRGISNSP-CHRGISNSN)		-0.25 - 0.25V	x4
 5	General Purpose ADIN5 / Battery Pack Thermistor	0 - 2.30V	No
 6	General Purpose ADIN6 / Backup Voltage (LICELL)	0 - 2.30V /	No /
 							1.50 - 3.50V	-1.20V
@@ -48,3 +52,23 @@ Channel	Signal						Input Range	Scaling
 13	General Purpose TSX2 / Touchscreen X-plate 2	0 - 2.30V	No
 14	General Purpose TSY1 / Touchscreen Y-plate 1	0 - 2.30V	No
 15	General Purpose TSY2 / Touchscreen Y-plate 2	0 - 2.30V	No
+
+MC13892:
+Channel	Signal						Input Range	Scaling
+-------------------------------------------------------------------------------
+0	Battery Voltage (BATT)				0 - 4.8V	/2
+1	Battery Current (BATT - BATTISNSCC)		-60 - 60 mV	x20
+2	Application Supply (BPSNS)			0 - 4.8V	/2
+3	Charger Voltage (CHRGRAW)			0 - 12V /	/5
+							0 - 20V		/10
+4	Charger Current (CHRGISNS-BPSNS) /		-0.3 - 0.3V /	x4 /
+	Touchscreen X-plate 1				0 - 2.4V	No
+5	General Purpose ADIN5 /	Battery Pack Thermistor	0 - 2.4V	No
+6	General Purpose ADIN6 / Backup Voltage (LICELL)	0 - 2.4V /	No
+	Backup Voltage (LICELL)                        	0 - 3.6V	x2/3
+7	General Purpose ADIN7 / UID / Die Temperature	0 - 2.4V /	No /
+							0 - 4.8V	/2
+12	Touchscreen X-plate 1				0 - 2.4V	No
+13	Touchscreen X-plate 2				0 - 2.4V	No
+14	Touchscreen Y-plate 1				0 - 2.4V	No
+15	Touchscreen Y-plate 2				0 - 2.4V	No
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 0b62c3c..e3e3bc0 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1322,10 +1322,10 @@ config SENSORS_APPLESMC
 	  the awesome power of applesmc.
 
 config SENSORS_MC13783_ADC
-        tristate "Freescale MC13783 ADC"
-        depends on MFD_MC13783
+        tristate "Freescale MC13783/MC13892 ADC"
+        depends on MFD_MC13XXX
         help
-          Support for the A/D converter on MC13783 PMIC.
+          Support for the A/D converter on MC13783 and MC13892 PMIC.
 
 if ACPI
 
diff --git a/drivers/hwmon/mc13783-adc.c b/drivers/hwmon/mc13783-adc.c
index ef65ab5..0d796f7 100644
--- a/drivers/hwmon/mc13783-adc.c
+++ b/drivers/hwmon/mc13783-adc.c
@@ -1,5 +1,5 @@
 /*
- * Driver for the Freescale Semiconductor MC13783 adc.
+ * Driver for the adc on Freescale Semiconductor MC13783 and MC13892 PMICs.
  *
  * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
  * Copyright (C) 2009 Sascha Hauer, Pengutronix
@@ -18,7 +18,7 @@
  * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <linux/mfd/mc13783.h>
+#include <linux/mfd/mc13xxx.h>
 #include <linux/platform_device.h>
 #include <linux/hwmon-sysfs.h>
 #include <linux/kernel.h>
@@ -28,7 +28,11 @@
 #include <linux/init.h>
 #include <linux/err.h>
 
-#define MC13783_ADC_NAME	"mc13783-adc"
+#define DRIVER_NAME	"mc13783-adc"
+
+/* platform device id driver data */
+#define MC13783_ADC_16CHANS	1
+#define MC13783_ADC_BPDIV2	2
 
 struct mc13783_adc_priv {
 	struct mc13xxx *mc13xxx;
@@ -38,7 +42,13 @@ struct mc13783_adc_priv {
 static ssize_t mc13783_adc_show_name(struct device *dev, struct device_attribute
 			      *devattr, char *buf)
 {
-	return sprintf(buf, "mc13783_adc\n");
+	struct platform_device *pdev = to_platform_device(dev);
+	ssize_t ret = sprintf(buf, "%s\n", pdev->name);
+
+	if (ret > 7 && buf[7] = '-')
+		buf[7] = '_';
+
+	return ret;
 }
 
 static int mc13783_adc_read(struct device *dev,
@@ -68,16 +78,21 @@ static ssize_t mc13783_adc_read_bp(struct device *dev,
 		struct device_attribute *devattr, char *buf)
 {
 	unsigned val;
+	struct platform_device *pdev = to_platform_device(dev);
+	kernel_ulong_t driver_data = platform_get_device_id(pdev)->driver_data;
 	int ret = mc13783_adc_read(dev, devattr, &val);
 
 	if (ret)
 		return ret;
 
-	/*
-	 * BP (channel 2) reports with offset 2.4V to the actual value to fit
-	 * the input range of the ADC.  unit = 2.25mV = 9/4 mV.
-	 */
-	val = DIV_ROUND_CLOSEST(val * 9, 4) + 2400;
+	if (driver_data & MC13783_ADC_BPDIV2)
+		val = DIV_ROUND_CLOSEST(val * 9, 2);
+	else
+		/*
+		 * BP (channel 2) reports with offset 2.4V to the actual value
+		 * to fit the input range of the ADC.  unit = 2.25mV = 9/4 mV.
+		 */
+		val = DIV_ROUND_CLOSEST(val * 9, 4) + 2400;
 
 	return sprintf(buf, "%u\n", val);
 }
@@ -114,12 +129,21 @@ static SENSOR_DEVICE_ATTR(in13_input, S_IRUGO, mc13783_adc_read_gp, NULL, 13);
 static SENSOR_DEVICE_ATTR(in14_input, S_IRUGO, mc13783_adc_read_gp, NULL, 14);
 static SENSOR_DEVICE_ATTR(in15_input, S_IRUGO, mc13783_adc_read_gp, NULL, 15);
 
-static struct attribute *mc13783_attr[] = {
+static struct attribute *mc13783_attr_base[] = {
 	&dev_attr_name.attr,
 	&sensor_dev_attr_in2_input.dev_attr.attr,
 	&sensor_dev_attr_in5_input.dev_attr.attr,
 	&sensor_dev_attr_in6_input.dev_attr.attr,
 	&sensor_dev_attr_in7_input.dev_attr.attr,
+	NULL
+};
+
+static const struct attribute_group mc13783_group_base = {
+	.attrs = mc13783_attr_base,
+};
+
+/* these are only used if MC13783_ADC_16CHANS is provided in driver data */
+static struct attribute *mc13783_attr_16chan[] = {
 	&sensor_dev_attr_in8_input.dev_attr.attr,
 	&sensor_dev_attr_in9_input.dev_attr.attr,
 	&sensor_dev_attr_in10_input.dev_attr.attr,
@@ -127,8 +151,8 @@ static struct attribute *mc13783_attr[] = {
 	NULL
 };
 
-static const struct attribute_group mc13783_group = {
-	.attrs = mc13783_attr,
+static const struct attribute_group mc13783_group_16chan = {
+	.attrs = mc13783_attr_16chan,
 };
 
 /* last four channels may be occupied by the touchscreen */
@@ -156,6 +180,7 @@ static int __init mc13783_adc_probe(struct platform_device *pdev)
 {
 	struct mc13783_adc_priv *priv;
 	int ret;
+	kernel_ulong_t driver_data = platform_get_device_id(pdev)->driver_data;
 
 	priv = kzalloc(sizeof(*priv), GFP_KERNEL);
 	if (!priv)
@@ -166,14 +191,22 @@ static int __init mc13783_adc_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, priv);
 
 	/* Register sysfs hooks */
-	ret = sysfs_create_group(&pdev->dev.kobj, &mc13783_group);
+	ret = sysfs_create_group(&pdev->dev.kobj, &mc13783_group_base);
 	if (ret)
-		goto out_err_create1;
+		goto out_err_create_base;
 
-	if (!mc13783_adc_use_touchscreen(pdev)) {
-		ret = sysfs_create_group(&pdev->dev.kobj, &mc13783_group_ts);
+	if (driver_data & MC13783_ADC_16CHANS) {
+		ret = sysfs_create_group(&pdev->dev.kobj,
+				&mc13783_group_16chan);
 		if (ret)
-			goto out_err_create2;
+			goto out_err_create_16chan;
+
+		if (!mc13783_adc_use_touchscreen(pdev)) {
+			ret = sysfs_create_group(&pdev->dev.kobj,
+					&mc13783_group_ts);
+			if (ret)
+				goto out_err_create_ts;
+		}
 	}
 
 	priv->hwmon_dev = hwmon_device_register(&pdev->dev);
@@ -184,17 +217,21 @@ static int __init mc13783_adc_probe(struct platform_device *pdev)
 		goto out_err_register;
 	}
 
-
 	return 0;
 
 out_err_register:
 
-	if (!mc13783_adc_use_touchscreen(pdev))
-		sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
-out_err_create2:
+	if (driver_data & MC13783_ADC_16CHANS) {
+		if (!mc13783_adc_use_touchscreen(pdev))
+			sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
+out_err_create_ts:
+
+		sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_16chan);
+	}
+out_err_create_16chan:
 
-	sysfs_remove_group(&pdev->dev.kobj, &mc13783_group);
-out_err_create1:
+	sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_base);
+out_err_create_base:
 
 	platform_set_drvdata(pdev, NULL);
 	kfree(priv);
@@ -205,13 +242,18 @@ out_err_create1:
 static int __devexit mc13783_adc_remove(struct platform_device *pdev)
 {
 	struct mc13783_adc_priv *priv = platform_get_drvdata(pdev);
+	kernel_ulong_t driver_data = platform_get_device_id(pdev)->driver_data;
 
 	hwmon_device_unregister(priv->hwmon_dev);
 
-	if (!mc13783_adc_use_touchscreen(pdev))
-		sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
+	if (driver_data & MC13783_ADC_16CHANS) {
+		if (!mc13783_adc_use_touchscreen(pdev))
+			sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
 
-	sysfs_remove_group(&pdev->dev.kobj, &mc13783_group);
+		sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_16chan);
+	}
+
+	sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_base);
 
 	platform_set_drvdata(pdev, NULL);
 	kfree(priv);
@@ -219,12 +261,26 @@ static int __devexit mc13783_adc_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static const struct platform_device_id mc13783_adc_idtable[] = {
+	{
+		.name = "mc13783-adc",
+		.driver_data = MC13783_ADC_16CHANS,
+	}, {
+		.name = "mc13892-adc",
+		.driver_data = MC13783_ADC_BPDIV2,
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(platform, mc13783_adc_idtable);
+
 static struct platform_driver mc13783_adc_driver = {
-	.remove 	= __devexit_p(mc13783_adc_remove),
+	.remove		= __devexit_p(mc13783_adc_remove),
 	.driver		= {
 		.owner	= THIS_MODULE,
-		.name	= MC13783_ADC_NAME,
+		.name	= DRIVER_NAME,
 	},
+	.id_table	= mc13783_adc_idtable,
 };
 
 static int __init mc13783_adc_init(void)
@@ -243,4 +299,3 @@ module_exit(mc13783_adc_exit);
 MODULE_DESCRIPTION("MC13783 ADC driver");
 MODULE_AUTHOR("Luotao Fu <l.fu@pengutronix.de>");
 MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:" MC13783_ADC_NAME);
-- 
1.7.6.3


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
@ 2011-09-29 16:38 ` Guenter Roeck
  2011-09-29 18:59 ` Uwe Kleine-König
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Guenter Roeck @ 2011-09-29 16:38 UTC (permalink / raw)
  To: lm-sensors

Hi Uwe,

On Tue, 2011-09-27 at 17:16 -0400, Uwe Kleine-König wrote:
> Based on a patch by David Jander that mostly did s/mc13783/mc13xxx/
> 
> Cc: David Jander <david.jander@protonic.nl>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> changes since (implicit) v1:
>  - update documentation
>  - undo driver renaming
>  - fix show_name callback (not 100% sure it is correct to give a different name
>    on mc13892. I think name contains the prefix documented in
>    Documentation/hwmon/mc13783-adc?!)
>  - implement some differences between mc13783 and mc13892 that I noticed when
>    updating the docs
>    - different scaling for bp channel
>    - no general purpose channels 8-15 on mc13892
>  - take over authorship as the patch got much more complicated now compared to
>    David's original.
> 
>  Documentation/hwmon/mc13783-adc |   48 ++++++++++++----
>  drivers/hwmon/Kconfig           |    6 +-
>  drivers/hwmon/mc13783-adc.c     |  113 +++++++++++++++++++++++++++++----------
>  3 files changed, 123 insertions(+), 44 deletions(-)
> 
> diff --git a/Documentation/hwmon/mc13783-adc b/Documentation/hwmon/mc13783-adc
> index 044531a..8b717f5 100644
> --- a/Documentation/hwmon/mc13783-adc
> +++ b/Documentation/hwmon/mc13783-adc
> @@ -5,6 +5,9 @@ Supported chips:
>    * Freescale Atlas MC13783
>      Prefix: 'mc13783_adc'
>      Datasheet: http://www.freescale.com/files/rf_if/doc/data_sheet/MC13783.pdf?fsrch=1
> +  * Freescale Atlas MC13892
> +    Prefix: 'mc13892_adc'
> +    Datasheet: http://cache.freescale.com/files/analog/doc/data_sheet/MC13892.pdf?fsrch=1&sr=1
> 
>  Authors:
>      Sascha Hauer <s.hauer@pengutronix.de>
> @@ -13,20 +16,21 @@ Authors:
>  Description
>  -----------
> 
> -The Freescale MC13783 is a Power Management and Audio Circuit. Among
> -other things it contains a 10-bit A/D converter. The converter has 16
> -channels which can be used in different modes.
> -The A/D converter has a resolution of 2.25mV. Channels 0-4 have
> -a dedicated meaning with chip internal scaling applied. Channels 5-7
> -can be used as general purpose inputs or alternatively in a dedicated
> -mode. Channels 12-15 are occupied by the touchscreen if it's active.
> +The Freescale MC13783 and MC13892 are Power Management and Audio Circuits.
> +Among other things they contain a 10-bit A/D converter. The converter has 16
> +(MC13783) resp. 12 (MC13892) channels which can be used in different modes. The
> +A/D converter has a resolution of 2.25mV.
> 
> -Currently the driver only supports channels 2 and 5-15 with no alternative
> -modes for channels 5-7.
> +Some channels can be used as General Purpose inputs or in a dedicated mode with
> +a chip internal scaling applied .
> 
> -See this table for the meaning of the different channels and their chip
> -internal scaling:
> +Currently the driver only supports BP, the General Purpose inputs and
> +touchscreen.
> 
> +See the following tables for the meaning of the different channels and their
> +chip internal scaling:
> +
> +MC13783:
>  Channel        Signal                                          Input Range     Scaling
>  -------------------------------------------------------------------------------
>  0      Battery Voltage (BATT)                          2.50 - 4.65V    -2.40V
> @@ -34,7 +38,7 @@ Channel       Signal                                          Input Range     Scaling
>  2      Application Supply (BP)                         2.50 - 4.65V    -2.40V
>  3      Charger Voltage (CHRGRAW)                       0 - 10V /       /5
>                                                         0 - 20V         /10
> -4      Charger Current (CHRGISNSP-CHRGISNSN)           -0.25V - 0.25V  x4
> +4      Charger Current (CHRGISNSP-CHRGISNSN)           -0.25 - 0.25V   x4
>  5      General Purpose ADIN5 / Battery Pack Thermistor 0 - 2.30V       No
>  6      General Purpose ADIN6 / Backup Voltage (LICELL) 0 - 2.30V /     No /
>                                                         1.50 - 3.50V    -1.20V
> @@ -48,3 +52,23 @@ Channel      Signal                                          Input Range     Scaling
>  13     General Purpose TSX2 / Touchscreen X-plate 2    0 - 2.30V       No
>  14     General Purpose TSY1 / Touchscreen Y-plate 1    0 - 2.30V       No
>  15     General Purpose TSY2 / Touchscreen Y-plate 2    0 - 2.30V       No
> +
> +MC13892:
> +Channel        Signal                                          Input Range     Scaling
> +-------------------------------------------------------------------------------
> +0      Battery Voltage (BATT)                          0 - 4.8V        /2
> +1      Battery Current (BATT - BATTISNSCC)             -60 - 60 mV     x20
> +2      Application Supply (BPSNS)                      0 - 4.8V        /2
> +3      Charger Voltage (CHRGRAW)                       0 - 12V /       /5
> +                                                       0 - 20V         /10
> +4      Charger Current (CHRGISNS-BPSNS) /              -0.3 - 0.3V /   x4 /
> +       Touchscreen X-plate 1                           0 - 2.4V        No
> +5      General Purpose ADIN5 / Battery Pack Thermistor 0 - 2.4V        No
> +6      General Purpose ADIN6 / Backup Voltage (LICELL) 0 - 2.4V /      No
> +       Backup Voltage (LICELL)                         0 - 3.6V        x2/3
> +7      General Purpose ADIN7 / UID / Die Temperature   0 - 2.4V /      No /
> +                                                       0 - 4.8V        /2
> +12     Touchscreen X-plate 1                           0 - 2.4V        No
> +13     Touchscreen X-plate 2                           0 - 2.4V        No
> +14     Touchscreen Y-plate 1                           0 - 2.4V        No
> +15     Touchscreen Y-plate 2                           0 - 2.4V        No
> diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> index 0b62c3c..e3e3bc0 100644
> --- a/drivers/hwmon/Kconfig
> +++ b/drivers/hwmon/Kconfig
> @@ -1322,10 +1322,10 @@ config SENSORS_APPLESMC
>           the awesome power of applesmc.
> 
>  config SENSORS_MC13783_ADC
> -        tristate "Freescale MC13783 ADC"
> -        depends on MFD_MC13783
> +        tristate "Freescale MC13783/MC13892 ADC"
> +        depends on MFD_MC13XXX
>          help
> -          Support for the A/D converter on MC13783 PMIC.
> +          Support for the A/D converter on MC13783 and MC13892 PMIC.
> 
>  if ACPI
> 
> diff --git a/drivers/hwmon/mc13783-adc.c b/drivers/hwmon/mc13783-adc.c
> index ef65ab5..0d796f7 100644
> --- a/drivers/hwmon/mc13783-adc.c
> +++ b/drivers/hwmon/mc13783-adc.c
> @@ -1,5 +1,5 @@
>  /*
> - * Driver for the Freescale Semiconductor MC13783 adc.
> + * Driver for the adc on Freescale Semiconductor MC13783 and MC13892 PMICs.
>   *
>   * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
>   * Copyright (C) 2009 Sascha Hauer, Pengutronix
> @@ -18,7 +18,7 @@
>   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
>   */
> 
> -#include <linux/mfd/mc13783.h>
> +#include <linux/mfd/mc13xxx.h>
>  #include <linux/platform_device.h>
>  #include <linux/hwmon-sysfs.h>
>  #include <linux/kernel.h>
> @@ -28,7 +28,11 @@
>  #include <linux/init.h>
>  #include <linux/err.h>
> 
> -#define MC13783_ADC_NAME       "mc13783-adc"
> +#define DRIVER_NAME    "mc13783-adc"
> +
> +/* platform device id driver data */
> +#define MC13783_ADC_16CHANS    1
> +#define MC13783_ADC_BPDIV2     2
> 
I am all for using functional bitmaps if it serves a purpose. However,
that is not the case here, and there is no indication that or if there
will ever be a chip supporting more than one of the features in the bit
map. With a bitmap like this, we get all the pain and none of the
benefits of having a bitmap.

So please use an enum instead to distinguish chips, similar to other
hwmon drivers. Something like

	enum chips { mc13783, mc13892 };

>  struct mc13783_adc_priv {
>         struct mc13xxx *mc13xxx;

It might actually make sense to store the chip id in mc13783_adc_priv to
simplify access to it.

> @@ -38,7 +42,13 @@ struct mc13783_adc_priv {
>  static ssize_t mc13783_adc_show_name(struct device *dev, struct device_attribute
>                               *devattr, char *buf)
>  {
> -       return sprintf(buf, "mc13783_adc\n");
> +       struct platform_device *pdev = to_platform_device(dev);
> +       ssize_t ret = sprintf(buf, "%s\n", pdev->name);
> +
> +       if (ret > 7 && buf[7] = '-')
> +               buf[7] = '_';
> +
This is clumsy, and would get really ugly if there is ever a chip
supported by this driver which doesn't have the '-' at the same
position.

You could store the name with '_' in platform_device_id, or have a const
char *name in mc13783_adc_priv and point it to the correct/expected
string. No need to do a runtime string correction.

> +       return ret;
>  }
> 
>  static int mc13783_adc_read(struct device *dev,
> @@ -68,16 +78,21 @@ static ssize_t mc13783_adc_read_bp(struct device *dev,
>                 struct device_attribute *devattr, char *buf)
>  {
>         unsigned val;
> +       struct platform_device *pdev = to_platform_device(dev);
> +       kernel_ulong_t driver_data = platform_get_device_id(pdev)->driver_data;
>         int ret = mc13783_adc_read(dev, devattr, &val);
> 
>         if (ret)
>                 return ret;
> 
> -       /*
> -        * BP (channel 2) reports with offset 2.4V to the actual value to fit
> -        * the input range of the ADC.  unit = 2.25mV = 9/4 mV.
> -        */
> -       val = DIV_ROUND_CLOSEST(val * 9, 4) + 2400;
> +       if (driver_data & MC13783_ADC_BPDIV2)
> +               val = DIV_ROUND_CLOSEST(val * 9, 2);
> +       else
> +               /*
> +                * BP (channel 2) reports with offset 2.4V to the actual value
> +                * to fit the input range of the ADC.  unit = 2.25mV = 9/4 mV.
> +                */
> +               val = DIV_ROUND_CLOSEST(val * 9, 4) + 2400;
> 
>         return sprintf(buf, "%u\n", val);
>  }
> @@ -114,12 +129,21 @@ static SENSOR_DEVICE_ATTR(in13_input, S_IRUGO, mc13783_adc_read_gp, NULL, 13);
>  static SENSOR_DEVICE_ATTR(in14_input, S_IRUGO, mc13783_adc_read_gp, NULL, 14);
>  static SENSOR_DEVICE_ATTR(in15_input, S_IRUGO, mc13783_adc_read_gp, NULL, 15);
> 
> -static struct attribute *mc13783_attr[] = {
> +static struct attribute *mc13783_attr_base[] = {
>         &dev_attr_name.attr,
>         &sensor_dev_attr_in2_input.dev_attr.attr,
>         &sensor_dev_attr_in5_input.dev_attr.attr,
>         &sensor_dev_attr_in6_input.dev_attr.attr,
>         &sensor_dev_attr_in7_input.dev_attr.attr,
> +       NULL
> +};
> +
> +static const struct attribute_group mc13783_group_base = {
> +       .attrs = mc13783_attr_base,
> +};
> +
> +/* these are only used if MC13783_ADC_16CHANS is provided in driver data */
> +static struct attribute *mc13783_attr_16chan[] = {
>         &sensor_dev_attr_in8_input.dev_attr.attr,
>         &sensor_dev_attr_in9_input.dev_attr.attr,
>         &sensor_dev_attr_in10_input.dev_attr.attr,
> @@ -127,8 +151,8 @@ static struct attribute *mc13783_attr[] = {
>         NULL
>  };
> 
> -static const struct attribute_group mc13783_group = {
> -       .attrs = mc13783_attr,
> +static const struct attribute_group mc13783_group_16chan = {
> +       .attrs = mc13783_attr_16chan,
>  };
> 
>  /* last four channels may be occupied by the touchscreen */
> @@ -156,6 +180,7 @@ static int __init mc13783_adc_probe(struct platform_device *pdev)
>  {
>         struct mc13783_adc_priv *priv;
>         int ret;
> +       kernel_ulong_t driver_data = platform_get_device_id(pdev)->driver_data;
> 
>         priv = kzalloc(sizeof(*priv), GFP_KERNEL);
>         if (!priv)
> @@ -166,14 +191,22 @@ static int __init mc13783_adc_probe(struct platform_device *pdev)
>         platform_set_drvdata(pdev, priv);
> 
>         /* Register sysfs hooks */
> -       ret = sysfs_create_group(&pdev->dev.kobj, &mc13783_group);
> +       ret = sysfs_create_group(&pdev->dev.kobj, &mc13783_group_base);
>         if (ret)
> -               goto out_err_create1;
> +               goto out_err_create_base;
> 
> -       if (!mc13783_adc_use_touchscreen(pdev)) {
> -               ret = sysfs_create_group(&pdev->dev.kobj, &mc13783_group_ts);
> +       if (driver_data & MC13783_ADC_16CHANS) {
> +               ret = sysfs_create_group(&pdev->dev.kobj,
> +                               &mc13783_group_16chan);
>                 if (ret)
> -                       goto out_err_create2;
> +                       goto out_err_create_16chan;
> +
> +               if (!mc13783_adc_use_touchscreen(pdev)) {
> +                       ret = sysfs_create_group(&pdev->dev.kobj,
> +                                       &mc13783_group_ts);
> +                       if (ret)
> +                               goto out_err_create_ts;
> +               }
>         }
> 
>         priv->hwmon_dev = hwmon_device_register(&pdev->dev);
> @@ -184,17 +217,21 @@ static int __init mc13783_adc_probe(struct platform_device *pdev)
>                 goto out_err_register;
>         }
> 
> -
>         return 0;
> 
>  out_err_register:
> 
> -       if (!mc13783_adc_use_touchscreen(pdev))
> -               sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
> -out_err_create2:
> +       if (driver_data & MC13783_ADC_16CHANS) {
> +               if (!mc13783_adc_use_touchscreen(pdev))
> +                       sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
> +out_err_create_ts:
> +
> +               sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_16chan);
> +       }
> +out_err_create_16chan:
> 
> -       sysfs_remove_group(&pdev->dev.kobj, &mc13783_group);
> -out_err_create1:
> +       sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_base);
> +out_err_create_base:
> 
>         platform_set_drvdata(pdev, NULL);
>         kfree(priv);
> @@ -205,13 +242,18 @@ out_err_create1:
>  static int __devexit mc13783_adc_remove(struct platform_device *pdev)
>  {
>         struct mc13783_adc_priv *priv = platform_get_drvdata(pdev);
> +       kernel_ulong_t driver_data = platform_get_device_id(pdev)->driver_data;
> 
>         hwmon_device_unregister(priv->hwmon_dev);
> 
> -       if (!mc13783_adc_use_touchscreen(pdev))
> -               sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
> +       if (driver_data & MC13783_ADC_16CHANS) {
> +               if (!mc13783_adc_use_touchscreen(pdev))
> +                       sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_ts);
> 
> -       sysfs_remove_group(&pdev->dev.kobj, &mc13783_group);
> +               sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_16chan);
> +       }
> +
> +       sysfs_remove_group(&pdev->dev.kobj, &mc13783_group_base);
> 
>         platform_set_drvdata(pdev, NULL);
>         kfree(priv);
> @@ -219,12 +261,26 @@ static int __devexit mc13783_adc_remove(struct platform_device *pdev)
>         return 0;
>  }
> 
> +static const struct platform_device_id mc13783_adc_idtable[] = {
> +       {
> +               .name = "mc13783-adc",
> +               .driver_data = MC13783_ADC_16CHANS,
> +       }, {
> +               .name = "mc13892-adc",
> +               .driver_data = MC13783_ADC_BPDIV2,
> +       }, {
> +               /* sentinel */
> +       }
> +};
> +MODULE_DEVICE_TABLE(platform, mc13783_adc_idtable);
> +
>  static struct platform_driver mc13783_adc_driver = {
> -       .remove         = __devexit_p(mc13783_adc_remove),
> +       .remove         = __devexit_p(mc13783_adc_remove),
>         .driver         = {
>                 .owner  = THIS_MODULE,
> -               .name   = MC13783_ADC_NAME,
> +               .name   = DRIVER_NAME,
>         },
> +       .id_table       = mc13783_adc_idtable,
>  };
> 
>  static int __init mc13783_adc_init(void)
> @@ -243,4 +299,3 @@ module_exit(mc13783_adc_exit);
>  MODULE_DESCRIPTION("MC13783 ADC driver");
>  MODULE_AUTHOR("Luotao Fu <l.fu@pengutronix.de>");
>  MODULE_LICENSE("GPL");
> -MODULE_ALIAS("platform:" MC13783_ADC_NAME);

Just for clarification - is the alias no longer needed because the name
matches the one in mc13783_adc_driver ?

Thanks,
Guenter



_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
  2011-09-29 16:38 ` Guenter Roeck
@ 2011-09-29 18:59 ` Uwe Kleine-König
  2012-01-05 13:44 ` Jean Delvare
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Uwe Kleine-König @ 2011-09-29 18:59 UTC (permalink / raw)
  To: lm-sensors

Hi Guenter,

On Thu, Sep 29, 2011 at 09:38:23AM -0700, Guenter Roeck wrote:
> On Tue, 2011-09-27 at 17:16 -0400, Uwe Kleine-König wrote:
> > [...]
> > diff --git a/drivers/hwmon/mc13783-adc.c b/drivers/hwmon/mc13783-adc.c
> > index ef65ab5..0d796f7 100644
> > --- a/drivers/hwmon/mc13783-adc.c
> > +++ b/drivers/hwmon/mc13783-adc.c
> > @@ -1,5 +1,5 @@
> >  /*
> > - * Driver for the Freescale Semiconductor MC13783 adc.
> > + * Driver for the adc on Freescale Semiconductor MC13783 and MC13892 PMICs.
> >   *
> >   * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
> >   * Copyright (C) 2009 Sascha Hauer, Pengutronix
> > @@ -18,7 +18,7 @@
> >   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> >   */
> > 
> > -#include <linux/mfd/mc13783.h>
> > +#include <linux/mfd/mc13xxx.h>
> >  #include <linux/platform_device.h>
> >  #include <linux/hwmon-sysfs.h>
> >  #include <linux/kernel.h>
> > @@ -28,7 +28,11 @@
> >  #include <linux/init.h>
> >  #include <linux/err.h>
> > 
> > -#define MC13783_ADC_NAME       "mc13783-adc"
> > +#define DRIVER_NAME    "mc13783-adc"
> > +
> > +/* platform device id driver data */
> > +#define MC13783_ADC_16CHANS    1
> > +#define MC13783_ADC_BPDIV2     2
> > 
> I am all for using functional bitmaps if it serves a purpose. However,
> that is not the case here, and there is no indication that or if there
> will ever be a chip supporting more than one of the features in the bit
> map. With a bitmap like this, we get all the pain and none of the
> benefits of having a bitmap.
What exactly do you consider a pain here? I really like it that way and
want to keep it.
 
> So please use an enum instead to distinguish chips, similar to other
> hwmon drivers. Something like
> 
> 	enum chips { mc13783, mc13892 };
> 
In my eyes this would be a step back. I've seen quite some places where
an if() used to decide based on a name (mostly cpu_is_mxyz()) and adding
support for a new cpu has to touch all these if()s.

> >  struct mc13783_adc_priv {
> >         struct mc13xxx *mc13xxx;
> 
> It might actually make sense to store the chip id in mc13783_adc_priv to
> simplify access to it.
> 
> > @@ -38,7 +42,13 @@ struct mc13783_adc_priv {
> >  static ssize_t mc13783_adc_show_name(struct device *dev, struct device_attribute
> >                               *devattr, char *buf)
> >  {
> > -       return sprintf(buf, "mc13783_adc\n");
> > +       struct platform_device *pdev = to_platform_device(dev);
> > +       ssize_t ret = sprintf(buf, "%s\n", pdev->name);
> > +
> > +       if (ret > 7 && buf[7] = '-')
> > +               buf[7] = '_';
> > +
> This is clumsy, and would get really ugly if there is ever a chip
> supported by this driver which doesn't have the '-' at the same
> position.
Right. But this can still be done when that new chip comes down the
road. And today this is IMHO good enough...
 
> You could store the name with '_' in platform_device_id, or have a const
> char *name in mc13783_adc_priv and point it to the correct/expected
> string. No need to do a runtime string correction.
... and doesn't spend memory to save several nearly identical strings.
 
> > [...]
> > +static const struct platform_device_id mc13783_adc_idtable[] = {
> > +       {
> > +               .name = "mc13783-adc",
> > +               .driver_data = MC13783_ADC_16CHANS,
> > +       }, {
> > +               .name = "mc13892-adc",
> > +               .driver_data = MC13783_ADC_BPDIV2,
> > +       }, {
> > +               /* sentinel */
> > +       }
> > +};
> > +MODULE_DEVICE_TABLE(platform, mc13783_adc_idtable);
> > +
> >  static struct platform_driver mc13783_adc_driver = {
> > -       .remove         = __devexit_p(mc13783_adc_remove),
> > +       .remove         = __devexit_p(mc13783_adc_remove),
> >         .driver         = {
> >                 .owner  = THIS_MODULE,
> > -               .name   = MC13783_ADC_NAME,
> > +               .name   = DRIVER_NAME,
> >         },
> > +       .id_table       = mc13783_adc_idtable,
> >  };
> > 
> >  static int __init mc13783_adc_init(void)
> > @@ -243,4 +299,3 @@ module_exit(mc13783_adc_exit);
> >  MODULE_DESCRIPTION("MC13783 ADC driver");
> >  MODULE_AUTHOR("Luotao Fu <l.fu@pengutronix.de>");
> >  MODULE_LICENSE("GPL");
> > -MODULE_ALIAS("platform:" MC13783_ADC_NAME);
> 
> Just for clarification - is the alias no longer needed because the name
> matches the one in mc13783_adc_driver ?
It is superseeded by the MODULE_DEVICE_TABLE above.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
  2011-09-29 16:38 ` Guenter Roeck
  2011-09-29 18:59 ` Uwe Kleine-König
@ 2012-01-05 13:44 ` Jean Delvare
  2012-01-23  9:01 ` [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC Uwe Kleine-König
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Jean Delvare @ 2012-01-05 13:44 UTC (permalink / raw)
  To: lm-sensors

Uwe,

On Tue, 27 Sep 2011 23:16:09 +0200, Uwe Kleine-König wrote:
> Based on a patch by David Jander that mostly did s/mc13783/mc13xxx/
> 
> Cc: David Jander <david.jander@protonic.nl>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> changes since (implicit) v1:
>  - update documentation
>  - undo driver renaming
>  - fix show_name callback (not 100% sure it is correct to give a different name
>    on mc13892. I think name contains the prefix documented in
>    Documentation/hwmon/mc13783-adc?!)
>  - implement some differences between mc13783 and mc13892 that I noticed when
>    updating the docs
>    - different scaling for bp channel
>    - no general purpose channels 8-15 on mc13892
>  - take over authorship as the patch got much more complicated now compared to
>    David's original.
> 
>  Documentation/hwmon/mc13783-adc |   48 ++++++++++++----
>  drivers/hwmon/Kconfig           |    6 +-
>  drivers/hwmon/mc13783-adc.c     |  113 +++++++++++++++++++++++++++++----------
>  3 files changed, 123 insertions(+), 44 deletions(-)

What's the current state of this patch? Do you have a more recent
version that you would like to share? I would like to get this upstream
now so that your work doesn't get lost.

Thanks,
-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (2 preceding siblings ...)
  2012-01-05 13:44 ` Jean Delvare
@ 2012-01-23  9:01 ` Uwe Kleine-König
  2012-01-27 16:53 ` Jean Delvare
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Uwe Kleine-König @ 2012-01-23  9:01 UTC (permalink / raw)
  To: lm-sensors

Hello Jean,

On Thu, Jan 05, 2012 at 02:44:37PM +0100, Jean Delvare wrote:
> Uwe,
> 
> On Tue, 27 Sep 2011 23:16:09 +0200, Uwe Kleine-König wrote:
> > Based on a patch by David Jander that mostly did s/mc13783/mc13xxx/
> > 
> > Cc: David Jander <david.jander@protonic.nl>
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > ---
> > changes since (implicit) v1:
> >  - update documentation
> >  - undo driver renaming
> >  - fix show_name callback (not 100% sure it is correct to give a different name
> >    on mc13892. I think name contains the prefix documented in
> >    Documentation/hwmon/mc13783-adc?!)
> >  - implement some differences between mc13783 and mc13892 that I noticed when
> >    updating the docs
> >    - different scaling for bp channel
> >    - no general purpose channels 8-15 on mc13892
> >  - take over authorship as the patch got much more complicated now compared to
> >    David's original.
> > 
> >  Documentation/hwmon/mc13783-adc |   48 ++++++++++++----
> >  drivers/hwmon/Kconfig           |    6 +-
> >  drivers/hwmon/mc13783-adc.c     |  113 +++++++++++++++++++++++++++++----------
> >  3 files changed, 123 insertions(+), 44 deletions(-)
> 
> What's the current state of this patch? Do you have a more recent
> version that you would like to share? I would like to get this upstream
> now so that your work doesn't get lost.
no, there is no more recent version. If you're happy with the show_name
callback it can go in from my side. I didn't try if it still applies,
but I'd expect that only Kconfig could conflict and that should be easy
to resolve in case it does.

Thanks for your heads up,
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (3 preceding siblings ...)
  2012-01-23  9:01 ` [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC Uwe Kleine-König
@ 2012-01-27 16:53 ` Jean Delvare
  2012-01-27 19:48 ` Uwe Kleine-König
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Jean Delvare @ 2012-01-27 16:53 UTC (permalink / raw)
  To: lm-sensors

SGkgVXdlLAoKT24gVHVlLCAyNyBTZXAgMjAxMSAyMzoxNjowOSArMDIwMCwgVXdlIEtsZWluZS1L
w7ZuaWcgd3JvdGU6Cj4gQmFzZWQgb24gYSBwYXRjaCBieSBEYXZpZCBKYW5kZXIgdGhhdCBtb3N0
bHkgZGlkIHMvbWMxMzc4My9tYzEzeHh4Lwo+IAo+IENjOiBEYXZpZCBKYW5kZXIgPGRhdmlkLmph
bmRlckBwcm90b25pYy5ubD4KPiBTaWduZWQtb2ZmLWJ5OiBVd2UgS2xlaW5lLUvDtm5pZyA8dS5r
bGVpbmUta29lbmlnQHBlbmd1dHJvbml4LmRlPgo+IC0tLQo+IGNoYW5nZXMgc2luY2UgKGltcGxp
Y2l0KSB2MToKPiAgLSB1cGRhdGUgZG9jdW1lbnRhdGlvbgo+ICAtIHVuZG8gZHJpdmVyIHJlbmFt
aW5nCj4gIC0gZml4IHNob3dfbmFtZSBjYWxsYmFjayAobm90IDEwMCUgc3VyZSBpdCBpcyBjb3Jy
ZWN0IHRvIGdpdmUgYSBkaWZmZXJlbnQgbmFtZQo+ICAgIG9uIG1jMTM4OTIuIEkgdGhpbmsgbmFt
ZSBjb250YWlucyB0aGUgcHJlZml4IGRvY3VtZW50ZWQgaW4KPiAgICBEb2N1bWVudGF0aW9uL2h3
bW9uL21jMTM3ODMtYWRjPyEpCj4gIC0gaW1wbGVtZW50IHNvbWUgZGlmZmVyZW5jZXMgYmV0d2Vl
biBtYzEzNzgzIGFuZCBtYzEzODkyIHRoYXQgSSBub3RpY2VkIHdoZW4KPiAgICB1cGRhdGluZyB0
aGUgZG9jcwo+ICAgIC0gZGlmZmVyZW50IHNjYWxpbmcgZm9yIGJwIGNoYW5uZWwKPiAgICAtIG5v
IGdlbmVyYWwgcHVycG9zZSBjaGFubmVscyA4LTE1IG9uIG1jMTM4OTIKPiAgLSB0YWtlIG92ZXIg
YXV0aG9yc2hpcCBhcyB0aGUgcGF0Y2ggZ290IG11Y2ggbW9yZSBjb21wbGljYXRlZCBub3cgY29t
cGFyZWQgdG8KPiAgICBEYXZpZCdzIG9yaWdpbmFsLgo+IAo+ICBEb2N1bWVudGF0aW9uL2h3bW9u
L21jMTM3ODMtYWRjIHwgICA0OCArKysrKysrKysrKystLS0tCj4gIGRyaXZlcnMvaHdtb24vS2Nv
bmZpZyAgICAgICAgICAgfCAgICA2ICstCj4gIGRyaXZlcnMvaHdtb24vbWMxMzc4My1hZGMuYyAg
ICAgfCAgMTEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICAzIGZp
bGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKCkFzIG1lcmdp
bmcgdGhpcyBnb3Qgc3R1Y2sgYWZ0ZXIgR3VlbnRlcidzIGxhc3QgcmV2aWV3ICh0aGFua3MgR3Vl
bnRlciwKQlRXKSBJIGFtIHBpY2tpbmcgdXAgZnJvbSB0aGVyZSBhbmQgaG9wZWZ1bGx5IHdlIGNh
biBnZXQgdGhpcyB1cHN0cmVhbS4KSGVyZSBJIGdvIHdpdGggbXkgcmV2aWV3LCBtb3N0bHkgbWlu
b3IgdGhpbmdzOgoKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tYzEzNzgz
LWFkYyBiL0RvY3VtZW50YXRpb24vaHdtb24vbWMxMzc4My1hZGMKPiBpbmRleCAwNDQ1MzFhLi44
YjcxN2Y1IDEwMDY0NAo+IC0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vbWMxMzc4My1hZGMKPiAr
KysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21jMTM3ODMtYWRjCj4gQEAgLTUsNiArNSw5IEBAIFN1
cHBvcnRlZCBjaGlwczoKPiAgICAqIEZyZWVzY2FsZSBBdGxhcyBNQzEzNzgzCj4gICAgICBQcmVm
aXg6ICdtYzEzNzgzX2FkYycKPiAgICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5mcmVlc2NhbGUu
Y29tL2ZpbGVzL3JmX2lmL2RvYy9kYXRhX3NoZWV0L01DMTM3ODMucGRmP2ZzcmNoPTEKPiArICAq
IEZyZWVzY2FsZSBBdGxhcyBNQzEzODkyCj4gKyAgICBQcmVmaXg6ICdtYzEzODkyX2FkYycKPiAr
ICAgIERhdGFzaGVldDogaHR0cDovL2NhY2hlLmZyZWVzY2FsZS5jb20vZmlsZXMvYW5hbG9nL2Rv
Yy9kYXRhX3NoZWV0L01DMTM4OTIucGRmP2ZzcmNoPTEmc3I9MQo+ICAKPiAgQXV0aG9yczoKPiAg
ICAgIFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KPiBAQCAtMTMsMjAgKzE2
LDIxIEBAIEF1dGhvcnM6Cj4gIERlc2NyaXB0aW9uCj4gIC0tLS0tLS0tLS0tCj4gIAo+IC1UaGUg
RnJlZXNjYWxlIE1DMTM3ODMgaXMgYSBQb3dlciBNYW5hZ2VtZW50IGFuZCBBdWRpbyBDaXJjdWl0
LiBBbW9uZwo+IC1vdGhlciB0aGluZ3MgaXQgY29udGFpbnMgYSAxMC1iaXQgQS9EIGNvbnZlcnRl
ci4gVGhlIGNvbnZlcnRlciBoYXMgMTYKPiAtY2hhbm5lbHMgd2hpY2ggY2FuIGJlIHVzZWQgaW4g
ZGlmZmVyZW50IG1vZGVzLgo+IC1UaGUgQS9EIGNvbnZlcnRlciBoYXMgYSByZXNvbHV0aW9uIG9m
IDIuMjVtVi4gQ2hhbm5lbHMgMC00IGhhdmUKPiAtYSBkZWRpY2F0ZWQgbWVhbmluZyB3aXRoIGNo
aXAgaW50ZXJuYWwgc2NhbGluZyBhcHBsaWVkLiBDaGFubmVscyA1LTcKPiAtY2FuIGJlIHVzZWQg
YXMgZ2VuZXJhbCBwdXJwb3NlIGlucHV0cyBvciBhbHRlcm5hdGl2ZWx5IGluIGEgZGVkaWNhdGVk
Cj4gLW1vZGUuIENoYW5uZWxzIDEyLTE1IGFyZSBvY2N1cGllZCBieSB0aGUgdG91Y2hzY3JlZW4g
aWYgaXQncyBhY3RpdmUuCj4gK1RoZSBGcmVlc2NhbGUgTUMxMzc4MyBhbmQgTUMxMzg5MiBhcmUg
UG93ZXIgTWFuYWdlbWVudCBhbmQgQXVkaW8gQ2lyY3VpdHMuCj4gK0Ftb25nIG90aGVyIHRoaW5n
cyB0aGV5IGNvbnRhaW4gYSAxMC1iaXQgQS9EIGNvbnZlcnRlci4gVGhlIGNvbnZlcnRlciBoYXMg
MTYKPiArKE1DMTM3ODMpIHJlc3AuIDEyIChNQzEzODkyKSBjaGFubmVscyB3aGljaCBjYW4gYmUg
dXNlZCBpbiBkaWZmZXJlbnQgbW9kZXMuIFRoZQo+ICtBL0QgY29udmVydGVyIGhhcyBhIHJlc29s
dXRpb24gb2YgMi4yNW1WLgo+ICAKPiAtQ3VycmVudGx5IHRoZSBkcml2ZXIgb25seSBzdXBwb3J0
cyBjaGFubmVscyAyIGFuZCA1LTE1IHdpdGggbm8gYWx0ZXJuYXRpdmUKPiAtbW9kZXMgZm9yIGNo
YW5uZWxzIDUtNy4KPiArU29tZSBjaGFubmVscyBjYW4gYmUgdXNlZCBhcyBHZW5lcmFsIFB1cnBv
c2UgaW5wdXRzIG9yIGluIGEgZGVkaWNhdGVkIG1vZGUgd2l0aAo+ICthIGNoaXAgaW50ZXJuYWwg
c2NhbGluZyBhcHBsaWVkIC4KPiAgCj4gLVNlZSB0aGlzIHRhYmxlIGZvciB0aGUgbWVhbmluZyBv
ZiB0aGUgZGlmZmVyZW50IGNoYW5uZWxzIGFuZCB0aGVpciBjaGlwCj4gLWludGVybmFsIHNjYWxp
bmc6Cj4gK0N1cnJlbnRseSB0aGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgQlAsIHRoZSBHZW5lcmFs
IFB1cnBvc2UgaW5wdXRzIGFuZAo+ICt0b3VjaHNjcmVlbi4KCkl0IG1pZ2h0IGJlIGEgZ29vZCBp
ZGVhIHRvIGV4cGxhaW4gd2hhdCBCUCBpcy4uLiBNZSwgSSBoYXZlIG5vIGlkZWEuCgo+ICAKPiAr
U2VlIHRoZSBmb2xsb3dpbmcgdGFibGVzIGZvciB0aGUgbWVhbmluZyBvZiB0aGUgZGlmZmVyZW50
IGNoYW5uZWxzIGFuZCB0aGVpcgo+ICtjaGlwIGludGVybmFsIHNjYWxpbmc6Cj4gKwo+ICtNQzEz
NzgzOgo+ICBDaGFubmVsCVNpZ25hbAkJCQkJCUlucHV0IFJhbmdlCVNjYWxpbmcKPiAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQo+ICAwCUJhdHRlcnkgVm9sdGFnZSAoQkFUVCkJCQkJMi41MCAtIDQu
NjVWCS0yLjQwVgo+IEBAIC0zNCw3ICszOCw3IEBAIENoYW5uZWwJU2lnbmFsCQkJCQkJSW5wdXQg
UmFuZ2UJU2NhbGluZwo+ICAyCUFwcGxpY2F0aW9uIFN1cHBseSAoQlApCQkJCTIuNTAgLSA0LjY1
VgktMi40MFYKPiAgMwlDaGFyZ2VyIFZvbHRhZ2UgKENIUkdSQVcpCQkJMCAtIDEwViAvCS81Cj4g
IAkJCQkJCQkwIC0gMjBWCQkvMTAKPiAtNAlDaGFyZ2VyIEN1cnJlbnQgKENIUkdJU05TUC1DSFJH
SVNOU04pCQktMC4yNVYgLSAwLjI1Vgl4NAo+ICs0CUNoYXJnZXIgQ3VycmVudCAoQ0hSR0lTTlNQ
LUNIUkdJU05TTikJCS0wLjI1IC0gMC4yNVYJeDQKPiAgNQlHZW5lcmFsIFB1cnBvc2UgQURJTjUg
LyBCYXR0ZXJ5IFBhY2sgVGhlcm1pc3RvcgkwIC0gMi4zMFYJTm8KPiAgNglHZW5lcmFsIFB1cnBv
c2UgQURJTjYgLyBCYWNrdXAgVm9sdGFnZSAoTElDRUxMKQkwIC0gMi4zMFYgLwlObyAvCj4gIAkJ
CQkJCQkxLjUwIC0gMy41MFYJLTEuMjBWCj4gQEAgLTQ4LDMgKzUyLDIzIEBAIENoYW5uZWwJU2ln
bmFsCQkJCQkJSW5wdXQgUmFuZ2UJU2NhbGluZwo+ICAxMwlHZW5lcmFsIFB1cnBvc2UgVFNYMiAv
IFRvdWNoc2NyZWVuIFgtcGxhdGUgMgkwIC0gMi4zMFYJTm8KPiAgMTQJR2VuZXJhbCBQdXJwb3Nl
IFRTWTEgLyBUb3VjaHNjcmVlbiBZLXBsYXRlIDEJMCAtIDIuMzBWCU5vCj4gIDE1CUdlbmVyYWwg
UHVycG9zZSBUU1kyIC8gVG91Y2hzY3JlZW4gWS1wbGF0ZSAyCTAgLSAyLjMwVglObwo+ICsKPiAr
TUMxMzg5MjoKPiArQ2hhbm5lbAlTaWduYWwJCQkJCQlJbnB1dCBSYW5nZQlTY2FsaW5nCj4gKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArMAlCYXR0ZXJ5IFZvbHRhZ2UgKEJBVFQpCQkJCTAgLSA0
LjhWCS8yCj4gKzEJQmF0dGVyeSBDdXJyZW50IChCQVRUIC0gQkFUVElTTlNDQykJCS02MCAtIDYw
IG1WCXgyMAo+ICsyCUFwcGxpY2F0aW9uIFN1cHBseSAoQlBTTlMpCQkJMCAtIDQuOFYJLzIKPiAr
MwlDaGFyZ2VyIFZvbHRhZ2UgKENIUkdSQVcpCQkJMCAtIDEyViAvCS81Cj4gKwkJCQkJCQkwIC0g
MjBWCQkvMTAKPiArNAlDaGFyZ2VyIEN1cnJlbnQgKENIUkdJU05TLUJQU05TKSAvCQktMC4zIC0g
MC4zViAvCXg0IC8KPiArCVRvdWNoc2NyZWVuIFgtcGxhdGUgMQkJCQkwIC0gMi40VglObwo+ICs1
CUdlbmVyYWwgUHVycG9zZSBBRElONSAvCUJhdHRlcnkgUGFjayBUaGVybWlzdG9yCTAgLSAyLjRW
CU5vCj4gKzYJR2VuZXJhbCBQdXJwb3NlIEFESU42IC8gQmFja3VwIFZvbHRhZ2UgKExJQ0VMTCkJ
MCAtIDIuNFYgLwlObwo+ICsJQmFja3VwIFZvbHRhZ2UgKExJQ0VMTCkgICAgICAgICAgICAgICAg
ICAgICAgICAJMCAtIDMuNlYJeDIvMwo+ICs3CUdlbmVyYWwgUHVycG9zZSBBRElONyAvIFVJRCAv
IERpZSBUZW1wZXJhdHVyZQkwIC0gMi40ViAvCU5vIC8KPiArCQkJCQkJCTAgLSA0LjhWCS8yCj4g
KzEyCVRvdWNoc2NyZWVuIFgtcGxhdGUgMQkJCQkwIC0gMi40VglObwo+ICsxMwlUb3VjaHNjcmVl
biBYLXBsYXRlIDIJCQkJMCAtIDIuNFYJTm8KPiArMTQJVG91Y2hzY3JlZW4gWS1wbGF0ZSAxCQkJ
CTAgLSAyLjRWCU5vCj4gKzE1CVRvdWNoc2NyZWVuIFktcGxhdGUgMgkJCQkwIC0gMi40VglObwo+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL0tjb25maWcgYi9kcml2ZXJzL2h3bW9uL0tjb25m
aWcKPiBpbmRleCAwYjYyYzNjLi5lM2UzYmMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaHdtb24v
S2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vS2NvbmZpZwo+IEBAIC0xMzIyLDEwICsxMzIy
LDEwIEBAIGNvbmZpZyBTRU5TT1JTX0FQUExFU01DCj4gIAkgIHRoZSBhd2Vzb21lIHBvd2VyIG9m
IGFwcGxlc21jLgo+ICAKPiAgY29uZmlnIFNFTlNPUlNfTUMxMzc4M19BREMKPiAtICAgICAgICB0
cmlzdGF0ZSAiRnJlZXNjYWxlIE1DMTM3ODMgQURDIgo+IC0gICAgICAgIGRlcGVuZHMgb24gTUZE
X01DMTM3ODMKCkJUVywgaXNuJ3QgQ09ORklHX01GRF9NQzEzNzgzIHN1cHBvc2VkIHRvIGdvIGF3
YXkgbm93PyBJdCBzZWVtcyB0byBiZQphbiBhbGlhcyBmb3IgTUZEX01DMTNYWFggdG9kYXkuIDQg
ZHJpdmVycyBhcmUgc3RpbGwgdXNpbmcgaXQuLi4KCj4gKyAgICAgICAgdHJpc3RhdGUgIkZyZWVz
Y2FsZSBNQzEzNzgzL01DMTM4OTIgQURDIgo+ICsgICAgICAgIGRlcGVuZHMgb24gTUZEX01DMTNY
WFgKPiAgICAgICAgICBoZWxwCj4gLSAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgQS9EIGNvbnZl
cnRlciBvbiBNQzEzNzgzIFBNSUMuCj4gKyAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgQS9EIGNv
bnZlcnRlciBvbiBNQzEzNzgzIGFuZCBNQzEzODkyIFBNSUMuCj4gIAo+ICBpZiBBQ1BJCj4gIAo+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL21jMTM3ODMtYWRjLmMgYi9kcml2ZXJzL2h3bW9u
L21jMTM3ODMtYWRjLmMKPiBpbmRleCBlZjY1YWI1Li4wZDc5NmY3IDEwMDY0NAo+IC0tLSBhL2Ry
aXZlcnMvaHdtb24vbWMxMzc4My1hZGMuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vbWMxMzc4My1h
ZGMuYwo+IEBAIC0xLDUgKzEsNSBAQAo+ICAvKgo+IC0gKiBEcml2ZXIgZm9yIHRoZSBGcmVlc2Nh
bGUgU2VtaWNvbmR1Y3RvciBNQzEzNzgzIGFkYy4KPiArICogRHJpdmVyIGZvciB0aGUgYWRjIG9u
IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIE1DMTM3ODMgYW5kIE1DMTM4OTIgUE1JQ3MuCgpXb3Vs
ZCBiZSBiZXR0ZXIgc3BlbGxlZCBBREMsIG1ldGhpbmtzLgoKPiAgICoKPiAgICogQ29weXJpZ2h0
IDIwMDQtMjAwNyBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgU2FzY2hhIEhhdWVyLCBQZW5ndXRyb25peAo+
IEBAIC0xOCw3ICsxOCw3IEBACj4gICAqIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAwMjExMC0xMzAxIFVTQQo+ICAgKi8KPiAgCj4gLSNpbmNsdWRlIDxsaW51eC9tZmQvbWMx
Mzc4My5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL21jMTN4eHguaD4KPiAgI2luY2x1ZGUgPGxp
bnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvaHdtb24tc3lzZnMuaD4K
PiAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+IEBAIC0yOCw3ICsyOCwxMSBAQAo+ICAjaW5j
bHVkZSA8bGludXgvaW5pdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvZXJyLmg+Cj4gIAo+IC0jZGVm
aW5lIE1DMTM3ODNfQURDX05BTUUJIm1jMTM3ODMtYWRjIgo+ICsjZGVmaW5lIERSSVZFUl9OQU1F
CSJtYzEzNzgzLWFkYyIKPiArCj4gKy8qIHBsYXRmb3JtIGRldmljZSBpZCBkcml2ZXIgZGF0YSAq
Lwo+ICsjZGVmaW5lIE1DMTM3ODNfQURDXzE2Q0hBTlMJMQo+ICsjZGVmaW5lIE1DMTM3ODNfQURD
X0JQRElWMgkyCj4gIAo+ICBzdHJ1Y3QgbWMxMzc4M19hZGNfcHJpdiB7Cj4gIAlzdHJ1Y3QgbWMx
M3h4eCAqbWMxM3h4eDsKPiBAQCAtMzgsNyArNDIsMTMgQEAgc3RydWN0IG1jMTM3ODNfYWRjX3By
aXYgewo+ICBzdGF0aWMgc3NpemVfdCBtYzEzNzgzX2FkY19zaG93X25hbWUoc3RydWN0IGRldmlj
ZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQo+ICAJCQkgICAgICAqZGV2YXR0ciwgY2hh
ciAqYnVmKQo+ICB7Cj4gLQlyZXR1cm4gc3ByaW50ZihidWYsICJtYzEzNzgzX2FkY1xuIik7Cj4g
KwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7
Cj4gKwlzc2l6ZV90IHJldCA9IHNwcmludGYoYnVmLCAiJXNcbiIsIHBkZXYtPm5hbWUpOwo+ICsK
PiArCWlmIChyZXQgPiA3ICYmIGJ1Zls3XSA9PSAnLScpCj4gKwkJYnVmWzddID0gJ18nOwo+ICsK
PiArCXJldHVybiByZXQ7Cj4gIH0KCkkgc2hhcmUgR3VlbnRlcidzIGNvbmNlcm5zIGFib3V0IHRo
aXMgY29kZS4gVGhpcyBpcyBzaW1wbHkgdG9vIGZyYWdpbGUuClN0b3JpbmcgdGhlIHJpZ2h0IHN0
cmluZywgb3IgYSBwb2ludGVyIHRoZXJldG8sIGluIHN0cnVjdAptYzEzNzgzX2FkY19wcml2IHdv
dWxkIGJlIGJldHRlci4gWW91ciBhcmd1bWVudCBhYm91dCB0aGUgd2FzdGVkIG1lbW9yeQpzaXpl
IGRvZXNuJ3QgcmVhbGx5IGhvbGQsIHdlJ3JlIHRhbGtpbmcgYWJvdXQgMzAgYnl0ZXMgaGVyZSwg
dG9wcy4KCk9yIGlmIHlvdSByZWFsbHkgd2FudCB0byBkeW5hbWljYWxseSB0dXJuICItIiBpbnRv
ICJfIiB0aGVuIHlvdSBzaG91bGQKZG8gdGhhdCBpbiBhIHJvYnVzdCB3YXksIGZvciBleGFtcGxl
OgoKCWNoYXIgKmRhc2g7CgoJZGFzaCA9IHN0cmNocihidWYsICctJyk7CglpZiAoZGFzaCkKCQkq
ZGFzaCA9ICdfJzsKClRoYXQgd2F5IHlvdSBubyBsb25nZXIgZGVwZW5kIG9uIHRoZSBsZW5ndGgg
b2YgdGhlIHN0cmluZyBub3IgdGhlCnBvc2l0aW9uIG9mIHRoZSBkYXNoLgoKQXMgYSBzaWRlIG5v
dGUsIEknbSBub3QgcXVpdGUgc3VyZSB3aHkgdGhlIF9hZGMgc3VmZml4IHdhcyBwcmVzZXJ2ZWQg
aW4KdGhlIG5hbWUgYXR0cmlidXRlIGluIHRoZSBmaXJzdCBwbGFjZS4gR2l2ZW4gdGhhdCB0aGlz
IGlzIGEgaHdtb24KZGV2aWNlIGF0dHJpYnV0ZSwgaXQgc2VlbXMgcmVkdW5kYW50LgoKQXMgYW5v
dGhlciBzaWRlIG5vdGUsIGlmIHlvdSByZWFsbHkgY2FyZSBhYm91dCBtZW1vcnkgY29uc3VtcHRp
b24sIHRoZW4KeW91IGNvdWxkIGNhbGwgc3lzZnNfcmVtb3ZlX2dyb3VwKCkgdW5jb25kaXRpb25h
bGx5IGV2ZXJ5d2hlcmUsIGFzIGl0J3MKT0sgdG8gcmVtb3ZlIGZpbGVzIHdoaWNoIGRvIG5vdCBl
eGlzdC4gVGhpcyB3b3VsZCBsZXQgeW91IG1hcmsKbWMxMzc4M19hZGNfdXNlX3RvdWNoc2NyZWVu
KCkgYXMgX19pbml0LiBJdCBtYXkgYWxzbyBtYWtlIHNlbnNlIHRvIG1vdmUKZmlsZSByZW1vdmFs
IHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gYXZvaWQgY29kZSByZWR1bmRhbmN5IGJldHdlZW4K
bWMxMzc4M19hZGNfcHJvYmUoKSBhbmQgbWMxMzc4M19hZGNfcmVtb3ZlKCkgKG9yIGV2ZW4gYWRq
dXN0Cm1jMTM3ODNfYWRjX3JlbW92ZSgpIHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBzdHJhaWdo
dCBmcm9tCm1jMTM3ODNfYWRjX3Byb2JlKCkncyBlcnJvciBwYXRoLgoKPiAgCj4gIHN0YXRpYyBp
bnQgbWMxMzc4M19hZGNfcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gQEAgLTY4LDE2ICs3OCwy
MSBAQCBzdGF0aWMgc3NpemVfdCBtYzEzNzgzX2FkY19yZWFkX2JwKHN0cnVjdCBkZXZpY2UgKmRl
diwKPiAgCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQo+ICB7
Cj4gIAl1bnNpZ25lZCB2YWw7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9f
cGxhdGZvcm1fZGV2aWNlKGRldik7Cj4gKwlrZXJuZWxfdWxvbmdfdCBkcml2ZXJfZGF0YSA9IHBs
YXRmb3JtX2dldF9kZXZpY2VfaWQocGRldiktPmRyaXZlcl9kYXRhOwo+ICAJaW50IHJldCA9IG1j
MTM3ODNfYWRjX3JlYWQoZGV2LCBkZXZhdHRyLCAmdmFsKTsKPiAgCj4gIAlpZiAocmV0KQo+ICAJ
CXJldHVybiByZXQ7Cj4gIAo+IC0JLyoKPiAtCSAqIEJQIChjaGFubmVsIDIpIHJlcG9ydHMgd2l0
aCBvZmZzZXQgMi40ViB0byB0aGUgYWN0dWFsIHZhbHVlIHRvIGZpdAo+IC0JICogdGhlIGlucHV0
IHJhbmdlIG9mIHRoZSBBREMuICB1bml0ID0gMi4yNW1WID0gOS80IG1WLgo+IC0JICovCj4gLQl2
YWwgPSBESVZfUk9VTkRfQ0xPU0VTVCh2YWwgKiA5LCA0KSArIDI0MDA7Cj4gKwlpZiAoZHJpdmVy
X2RhdGEgJiBNQzEzNzgzX0FEQ19CUERJVjIpCj4gKwkJdmFsID0gRElWX1JPVU5EX0NMT1NFU1Qo
dmFsICogOSwgMik7Cj4gKwllbHNlCj4gKwkJLyoKPiArCQkgKiBCUCAoY2hhbm5lbCAyKSByZXBv
cnRzIHdpdGggb2Zmc2V0IDIuNFYgdG8gdGhlIGFjdHVhbCB2YWx1ZQo+ICsJCSAqIHRvIGZpdCB0
aGUgaW5wdXQgcmFuZ2Ugb2YgdGhlIEFEQy4gIHVuaXQgPSAyLjI1bVYgPSA5LzQgbVYuCj4gKwkJ
ICovCj4gKwkJdmFsID0gRElWX1JPVU5EX0NMT1NFU1QodmFsICogOSwgNCkgKyAyNDAwOwo+ICAK
PiAgCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCB2YWwpOwo+ICB9Cj4gQEAgLTExNCwxMiAr
MTI5LDIxIEBAIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoaW4xM19pbnB1dCwgU19JUlVHTywg
bWMxMzc4M19hZGNfcmVhZF9ncCwgTlVMTCwgMTMpOwo+ICBzdGF0aWMgU0VOU09SX0RFVklDRV9B
VFRSKGluMTRfaW5wdXQsIFNfSVJVR08sIG1jMTM3ODNfYWRjX3JlYWRfZ3AsIE5VTEwsIDE0KTsK
PiAgc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihpbjE1X2lucHV0LCBTX0lSVUdPLCBtYzEzNzgz
X2FkY19yZWFkX2dwLCBOVUxMLCAxNSk7Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAq
bWMxMzc4M19hdHRyW10gPSB7Cj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptYzEzNzgzX2F0
dHJfYmFzZVtdID0gewo+ICAJJmRldl9hdHRyX25hbWUuYXR0ciwKPiAgCSZzZW5zb3JfZGV2X2F0
dHJfaW4yX2lucHV0LmRldl9hdHRyLmF0dHIsCj4gIAkmc2Vuc29yX2Rldl9hdHRyX2luNV9pbnB1
dC5kZXZfYXR0ci5hdHRyLAo+ICAJJnNlbnNvcl9kZXZfYXR0cl9pbjZfaW5wdXQuZGV2X2F0dHIu
YXR0ciwKPiAgCSZzZW5zb3JfZGV2X2F0dHJfaW43X2lucHV0LmRldl9hdHRyLmF0dHIsCj4gKwlO
VUxMCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtYzEz
NzgzX2dyb3VwX2Jhc2UgPSB7Cj4gKwkuYXR0cnMgPSBtYzEzNzgzX2F0dHJfYmFzZSwKPiArfTsK
PiArCj4gKy8qIHRoZXNlIGFyZSBvbmx5IHVzZWQgaWYgTUMxMzc4M19BRENfMTZDSEFOUyBpcyBw
cm92aWRlZCBpbiBkcml2ZXIgZGF0YSAqLwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWMx
Mzc4M19hdHRyXzE2Y2hhbltdID0gewoKMTZDSEFOUyB2cy4gMTZjaGFuLiBXb3VsZCBiZSBnb29k
IHRvIGRlY2lkZSBmb3IgYSBzcGVsbGluZyBhbmQgc3RpY2sgdG8KaXQuCgo+ICAJJnNlbnNvcl9k
ZXZfYXR0cl9pbjhfaW5wdXQuZGV2X2F0dHIuYXR0ciwKPiAgCSZzZW5zb3JfZGV2X2F0dHJfaW45
X2lucHV0LmRldl9hdHRyLmF0dHIsCj4gIAkmc2Vuc29yX2Rldl9hdHRyX2luMTBfaW5wdXQuZGV2
X2F0dHIuYXR0ciwKPiBAQCAtMTI3LDggKzE1MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl
ICptYzEzNzgzX2F0dHJbXSA9IHsKPiAgCU5VTEwKPiAgfTsKPiAgCj4gLXN0YXRpYyBjb25zdCBz
dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG1jMTM3ODNfZ3JvdXAgPSB7Cj4gLQkuYXR0cnMgPSBtYzEz
NzgzX2F0dHIsCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG1jMTM3ODNf
Z3JvdXBfMTZjaGFuID0gewo+ICsJLmF0dHJzID0gbWMxMzc4M19hdHRyXzE2Y2hhbiwKPiAgfTsK
PiAgCj4gIC8qIGxhc3QgZm91ciBjaGFubmVscyBtYXkgYmUgb2NjdXBpZWQgYnkgdGhlIHRvdWNo
c2NyZWVuICovCj4gQEAgLTE1Niw2ICsxODAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBtYzEzNzgz
X2FkY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICB7Cj4gIAlzdHJ1Y3Qg
bWMxMzc4M19hZGNfcHJpdiAqcHJpdjsKPiAgCWludCByZXQ7Cj4gKwlrZXJuZWxfdWxvbmdfdCBk
cml2ZXJfZGF0YSA9IHBsYXRmb3JtX2dldF9kZXZpY2VfaWQocGRldiktPmRyaXZlcl9kYXRhOwo+
ICAKPiAgCXByaXYgPSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwo+ICAJaWYg
KCFwcml2KQo+IEBAIC0xNjYsMTQgKzE5MSwyMiBAQCBzdGF0aWMgaW50IF9faW5pdCBtYzEzNzgz
X2FkY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJcGxhdGZvcm1fc2V0
X2RydmRhdGEocGRldiwgcHJpdik7Cj4gIAo+ICAJLyogUmVnaXN0ZXIgc3lzZnMgaG9va3MgKi8K
PiAtCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmcGRldi0+ZGV2LmtvYmosICZtYzEzNzgzX2dy
b3VwKTsKPiArCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmcGRldi0+ZGV2LmtvYmosICZtYzEz
NzgzX2dyb3VwX2Jhc2UpOwo+ICAJaWYgKHJldCkKPiAtCQlnb3RvIG91dF9lcnJfY3JlYXRlMTsK
PiArCQlnb3RvIG91dF9lcnJfY3JlYXRlX2Jhc2U7Cj4gIAo+IC0JaWYgKCFtYzEzNzgzX2FkY191
c2VfdG91Y2hzY3JlZW4ocGRldikpIHsKPiAtCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJnBk
ZXYtPmRldi5rb2JqLCAmbWMxMzc4M19ncm91cF90cyk7Cj4gKwlpZiAoZHJpdmVyX2RhdGEgJiBN
QzEzNzgzX0FEQ18xNkNIQU5TKSB7Cj4gKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKCZwZGV2
LT5kZXYua29iaiwKPiArCQkJCSZtYzEzNzgzX2dyb3VwXzE2Y2hhbik7Cj4gIAkJaWYgKHJldCkK
PiAtCQkJZ290byBvdXRfZXJyX2NyZWF0ZTI7Cj4gKwkJCWdvdG8gb3V0X2Vycl9jcmVhdGVfMTZj
aGFuOwo+ICsKPiArCQlpZiAoIW1jMTM3ODNfYWRjX3VzZV90b3VjaHNjcmVlbihwZGV2KSkgewo+
ICsJCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLAo+ICsJCQkJCSZt
YzEzNzgzX2dyb3VwX3RzKTsKPiArCQkJaWYgKHJldCkKPiArCQkJCWdvdG8gb3V0X2Vycl9jcmVh
dGVfdHM7Cj4gKwkJfQo+ICAJfQo+ICAKPiAgCXByaXYtPmh3bW9uX2RldiA9IGh3bW9uX2Rldmlj
ZV9yZWdpc3RlcigmcGRldi0+ZGV2KTsKPiBAQCAtMTg0LDE3ICsyMTcsMjEgQEAgc3RhdGljIGlu
dCBfX2luaXQgbWMxMzc4M19hZGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK
PiAgCQlnb3RvIG91dF9lcnJfcmVnaXN0ZXI7Cj4gIAl9Cj4gIAo+IC0KPiAgCXJldHVybiAwOwo+
ICAKPiAgb3V0X2Vycl9yZWdpc3RlcjoKPiAgCj4gLQlpZiAoIW1jMTM3ODNfYWRjX3VzZV90b3Vj
aHNjcmVlbihwZGV2KSkKPiAtCQlzeXNmc19yZW1vdmVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLCAm
bWMxMzc4M19ncm91cF90cyk7Cj4gLW91dF9lcnJfY3JlYXRlMjoKPiArCWlmIChkcml2ZXJfZGF0
YSAmIE1DMTM3ODNfQURDXzE2Q0hBTlMpIHsKPiArCQlpZiAoIW1jMTM3ODNfYWRjX3VzZV90b3Vj
aHNjcmVlbihwZGV2KSkKPiArCQkJc3lzZnNfcmVtb3ZlX2dyb3VwKCZwZGV2LT5kZXYua29iaiwg
Jm1jMTM3ODNfZ3JvdXBfdHMpOwo+ICtvdXRfZXJyX2NyZWF0ZV90czoKPiArCj4gKwkJc3lzZnNf
cmVtb3ZlX2dyb3VwKCZwZGV2LT5kZXYua29iaiwgJm1jMTM3ODNfZ3JvdXBfMTZjaGFuKTsKPiAr
CX0KPiArb3V0X2Vycl9jcmVhdGVfMTZjaGFuOgo+ICAKPiAtCXN5c2ZzX3JlbW92ZV9ncm91cCgm
cGRldi0+ZGV2LmtvYmosICZtYzEzNzgzX2dyb3VwKTsKPiAtb3V0X2Vycl9jcmVhdGUxOgo+ICsJ
c3lzZnNfcmVtb3ZlX2dyb3VwKCZwZGV2LT5kZXYua29iaiwgJm1jMTM3ODNfZ3JvdXBfYmFzZSk7
Cj4gK291dF9lcnJfY3JlYXRlX2Jhc2U6Cj4gIAo+ICAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRl
diwgTlVMTCk7Cj4gIAlrZnJlZShwcml2KTsKPiBAQCAtMjA1LDEzICsyNDIsMTggQEAgb3V0X2Vy
cl9jcmVhdGUxOgo+ICBzdGF0aWMgaW50IF9fZGV2ZXhpdCBtYzEzNzgzX2FkY19yZW1vdmUoc3Ry
dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAJc3RydWN0IG1jMTM3ODNfYWRjX3By
aXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCWtlcm5lbF91bG9uZ190
IGRyaXZlcl9kYXRhID0gcGxhdGZvcm1fZ2V0X2RldmljZV9pZChwZGV2KS0+ZHJpdmVyX2RhdGE7
Cj4gIAo+ICAJaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIocHJpdi0+aHdtb25fZGV2KTsKPiAgCj4g
LQlpZiAoIW1jMTM3ODNfYWRjX3VzZV90b3VjaHNjcmVlbihwZGV2KSkKPiAtCQlzeXNmc19yZW1v
dmVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLCAmbWMxMzc4M19ncm91cF90cyk7Cj4gKwlpZiAoZHJp
dmVyX2RhdGEgJiBNQzEzNzgzX0FEQ18xNkNIQU5TKSB7Cj4gKwkJaWYgKCFtYzEzNzgzX2FkY191
c2VfdG91Y2hzY3JlZW4ocGRldikpCj4gKwkJCXN5c2ZzX3JlbW92ZV9ncm91cCgmcGRldi0+ZGV2
LmtvYmosICZtYzEzNzgzX2dyb3VwX3RzKTsKPiAgCj4gLQlzeXNmc19yZW1vdmVfZ3JvdXAoJnBk
ZXYtPmRldi5rb2JqLCAmbWMxMzc4M19ncm91cCk7Cj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKCZw
ZGV2LT5kZXYua29iaiwgJm1jMTM3ODNfZ3JvdXBfMTZjaGFuKTsKPiArCX0KPiArCj4gKwlzeXNm
c19yZW1vdmVfZ3JvdXAoJnBkZXYtPmRldi5rb2JqLCAmbWMxMzc4M19ncm91cF9iYXNlKTsKPiAg
Cj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKPiAgCWtmcmVlKHByaXYpOwo+
IEBAIC0yMTksMTIgKzI2MSwyNiBAQCBzdGF0aWMgaW50IF9fZGV2ZXhpdCBtYzEzNzgzX2FkY19y
ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4g
IAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCBtYzEzNzgzX2FkY19p
ZHRhYmxlW10gPSB7Cj4gKwl7Cj4gKwkJLm5hbWUgPSAibWMxMzc4My1hZGMiLAo+ICsJCS5kcml2
ZXJfZGF0YSA9IE1DMTM3ODNfQURDXzE2Q0hBTlMsCj4gKwl9LCB7Cj4gKwkJLm5hbWUgPSAibWMx
Mzg5Mi1hZGMiLAo+ICsJCS5kcml2ZXJfZGF0YSA9IE1DMTM3ODNfQURDX0JQRElWMiwKPiArCX0s
IHsKPiArCQkvKiBzZW50aW5lbCAqLwo+ICsJfQo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxF
KHBsYXRmb3JtLCBtYzEzNzgzX2FkY19pZHRhYmxlKTsKPiArCj4gIHN0YXRpYyBzdHJ1Y3QgcGxh
dGZvcm1fZHJpdmVyIG1jMTM3ODNfYWRjX2RyaXZlciA9IHsKPiAtCS5yZW1vdmUgCT0gX19kZXZl
eGl0X3AobWMxMzc4M19hZGNfcmVtb3ZlKSwKPiArCS5yZW1vdmUJCT0gX19kZXZleGl0X3AobWMx
Mzc4M19hZGNfcmVtb3ZlKSwKPiAgCS5kcml2ZXIJCT0gewo+ICAJCS5vd25lcgk9IFRISVNfTU9E
VUxFLAo+IC0JCS5uYW1lCT0gTUMxMzc4M19BRENfTkFNRSwKPiArCQkubmFtZQk9IERSSVZFUl9O
QU1FLAo+ICAJfSwKPiArCS5pZF90YWJsZQk9IG1jMTM3ODNfYWRjX2lkdGFibGUsCj4gIH07Cj4g
IAo+ICBzdGF0aWMgaW50IF9faW5pdCBtYzEzNzgzX2FkY19pbml0KHZvaWQpCj4gQEAgLTI0Myw0
ICsyOTksMyBAQCBtb2R1bGVfZXhpdChtYzEzNzgzX2FkY19leGl0KTsKPiAgTU9EVUxFX0RFU0NS
SVBUSU9OKCJNQzEzNzgzIEFEQyBkcml2ZXIiKTsKPiAgTU9EVUxFX0FVVEhPUigiTHVvdGFvIEZ1
IDxsLmZ1QHBlbmd1dHJvbml4LmRlPiIpOwo+ICBNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gLU1P
RFVMRV9BTElBUygicGxhdGZvcm06IiBNQzEzNzgzX0FEQ19OQU1FKTsKCldpbGwgeW91IHJlc2Vu
ZCBhbiB1cGRhdGVkIHBhdGNoLCBvciBzaG91bGQgSSB1cGRhdGUgaXQgbXlzZWxmIHdpdGggdGhl
CmNoYW5nZXMgYWJvdmU/CgotLSAKSmVhbiBEZWx2YXJlCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5z
b3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xp
c3RpbmZvL2xtLXNlbnNvcnM

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (4 preceding siblings ...)
  2012-01-27 16:53 ` Jean Delvare
@ 2012-01-27 19:48 ` Uwe Kleine-König
  2012-01-27 21:22 ` Guenter Roeck
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Uwe Kleine-König @ 2012-01-27 19:48 UTC (permalink / raw)
  To: lm-sensors

Hello Jean,

first of all thanks for your thoughts.

On Fri, Jan 27, 2012 at 05:53:29PM +0100, Jean Delvare wrote:
> > diff --git a/Documentation/hwmon/mc13783-adc b/Documentation/hwmon/mc13783-adc
> > index 044531a..8b717f5 100644
> > --- a/Documentation/hwmon/mc13783-adc
> > +++ b/Documentation/hwmon/mc13783-adc
> > @@ -5,6 +5,9 @@ Supported chips:
> >    * Freescale Atlas MC13783
> >      Prefix: 'mc13783_adc'
> >      Datasheet: http://www.freescale.com/files/rf_if/doc/data_sheet/MC13783.pdf?fsrch=1
> > +  * Freescale Atlas MC13892
> > +    Prefix: 'mc13892_adc'
> > +    Datasheet: http://cache.freescale.com/files/analog/doc/data_sheet/MC13892.pdf?fsrch=1&sr=1
> >  
> >  Authors:
> >      Sascha Hauer <s.hauer@pengutronix.de>
> > @@ -13,20 +16,21 @@ Authors:
> >  Description
> >  -----------
> >  
> > -The Freescale MC13783 is a Power Management and Audio Circuit. Among
> > -other things it contains a 10-bit A/D converter. The converter has 16
> > -channels which can be used in different modes.
> > -The A/D converter has a resolution of 2.25mV. Channels 0-4 have
> > -a dedicated meaning with chip internal scaling applied. Channels 5-7
> > -can be used as general purpose inputs or alternatively in a dedicated
> > -mode. Channels 12-15 are occupied by the touchscreen if it's active.
> > +The Freescale MC13783 and MC13892 are Power Management and Audio Circuits.
> > +Among other things they contain a 10-bit A/D converter. The converter has 16
> > +(MC13783) resp. 12 (MC13892) channels which can be used in different modes. The
> > +A/D converter has a resolution of 2.25mV.
> >  
> > -Currently the driver only supports channels 2 and 5-15 with no alternative
> > -modes for channels 5-7.
> > +Some channels can be used as General Purpose inputs or in a dedicated mode with
> > +a chip internal scaling applied .
> >  
> > -See this table for the meaning of the different channels and their chip
> > -internal scaling:
> > +Currently the driver only supports BP, the General Purpose inputs and
> > +touchscreen.
> 
> It might be a good idea to explain what BP is... Me, I have no idea.
It's in the table below and means the "Application Supply" channel. No
idea what the Freescale guys thought it should stand for.

> > +See the following tables for the meaning of the different channels and their
> > +chip internal scaling:
> > +
> > +MC13783:
> >  Channel	Signal						Input Range	Scaling
> >  -------------------------------------------------------------------------------
> >  0	Battery Voltage (BATT)				2.50 - 4.65V	-2.40V
> > @@ -34,7 +38,7 @@ Channel	Signal						Input Range	Scaling
> >  2	Application Supply (BP)				2.50 - 4.65V	-2.40V
> >  3	Charger Voltage (CHRGRAW)			0 - 10V /	/5
> >  							0 - 20V		/10
> > -4	Charger Current (CHRGISNSP-CHRGISNSN)		-0.25V - 0.25V	x4
> > +4	Charger Current (CHRGISNSP-CHRGISNSN)		-0.25 - 0.25V	x4
> >  5	General Purpose ADIN5 / Battery Pack Thermistor	0 - 2.30V	No
> >  6	General Purpose ADIN6 / Backup Voltage (LICELL)	0 - 2.30V /	No /
> >  							1.50 - 3.50V	-1.20V
> > @@ -48,3 +52,23 @@ Channel	Signal						Input Range	Scaling
> >  13	General Purpose TSX2 / Touchscreen X-plate 2	0 - 2.30V	No
> >  14	General Purpose TSY1 / Touchscreen Y-plate 1	0 - 2.30V	No
> >  15	General Purpose TSY2 / Touchscreen Y-plate 2	0 - 2.30V	No
> > +
> > +MC13892:
> > +Channel	Signal						Input Range	Scaling
> > +-------------------------------------------------------------------------------
> > +0	Battery Voltage (BATT)				0 - 4.8V	/2
> > +1	Battery Current (BATT - BATTISNSCC)		-60 - 60 mV	x20
> > +2	Application Supply (BPSNS)			0 - 4.8V	/2
> > +3	Charger Voltage (CHRGRAW)			0 - 12V /	/5
> > +							0 - 20V		/10
> > +4	Charger Current (CHRGISNS-BPSNS) /		-0.3 - 0.3V /	x4 /
> > +	Touchscreen X-plate 1				0 - 2.4V	No
> > +5	General Purpose ADIN5 /	Battery Pack Thermistor	0 - 2.4V	No
> > +6	General Purpose ADIN6 / Backup Voltage (LICELL)	0 - 2.4V /	No
> > +	Backup Voltage (LICELL)                        	0 - 3.6V	x2/3
> > +7	General Purpose ADIN7 / UID / Die Temperature	0 - 2.4V /	No /
> > +							0 - 4.8V	/2
> > +12	Touchscreen X-plate 1				0 - 2.4V	No
> > +13	Touchscreen X-plate 2				0 - 2.4V	No
> > +14	Touchscreen Y-plate 1				0 - 2.4V	No
> > +15	Touchscreen Y-plate 2				0 - 2.4V	No
> > diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> > index 0b62c3c..e3e3bc0 100644
> > --- a/drivers/hwmon/Kconfig
> > +++ b/drivers/hwmon/Kconfig
> > @@ -1322,10 +1322,10 @@ config SENSORS_APPLESMC
> >  	  the awesome power of applesmc.
> >  
> >  config SENSORS_MC13783_ADC
> > -        tristate "Freescale MC13783 ADC"
> > -        depends on MFD_MC13783
> 
> BTW, isn't CONFIG_MFD_MC13783 supposed to go away now? It seems to be
> an alias for MFD_MC13XXX today. 4 drivers are still using it...
> 
> > +        tristate "Freescale MC13783/MC13892 ADC"
> > +        depends on MFD_MC13XXX
Yeah, that's why I drop MFD_MC13783 in favour of MFD_MC13XXX :-)

> >          help
> > -          Support for the A/D converter on MC13783 PMIC.
> > +          Support for the A/D converter on MC13783 and MC13892 PMIC.
> >  
> >  if ACPI
> >  
> > diff --git a/drivers/hwmon/mc13783-adc.c b/drivers/hwmon/mc13783-adc.c
> > index ef65ab5..0d796f7 100644
> > --- a/drivers/hwmon/mc13783-adc.c
> > +++ b/drivers/hwmon/mc13783-adc.c
> > @@ -1,5 +1,5 @@
> >  /*
> > - * Driver for the Freescale Semiconductor MC13783 adc.
> > + * Driver for the adc on Freescale Semiconductor MC13783 and MC13892 PMICs.
> 
> Would be better spelled ADC, methinks.
OK.

> >   *
> >   * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
> >   * Copyright (C) 2009 Sascha Hauer, Pengutronix
> > @@ -18,7 +18,7 @@
> >   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> >   */
> >  
> > -#include <linux/mfd/mc13783.h>
> > +#include <linux/mfd/mc13xxx.h>
> >  #include <linux/platform_device.h>
> >  #include <linux/hwmon-sysfs.h>
> >  #include <linux/kernel.h>
> > @@ -28,7 +28,11 @@
> >  #include <linux/init.h>
> >  #include <linux/err.h>
> >  
> > -#define MC13783_ADC_NAME	"mc13783-adc"
> > +#define DRIVER_NAME	"mc13783-adc"
> > +
> > +/* platform device id driver data */
> > +#define MC13783_ADC_16CHANS	1
> > +#define MC13783_ADC_BPDIV2	2
> >  
> >  struct mc13783_adc_priv {
> >  	struct mc13xxx *mc13xxx;
> > @@ -38,7 +42,13 @@ struct mc13783_adc_priv {
> >  static ssize_t mc13783_adc_show_name(struct device *dev, struct device_attribute
> >  			      *devattr, char *buf)
> >  {
> > -	return sprintf(buf, "mc13783_adc\n");
> > +	struct platform_device *pdev = to_platform_device(dev);
> > +	ssize_t ret = sprintf(buf, "%s\n", pdev->name);
> > +
> > +	if (ret > 7 && buf[7] == '-')
> > +		buf[7] = '_';
> > +
> > +	return ret;
> >  }
> 
> I share Guenter's concerns about this code. This is simply too fragile.
> Storing the right string, or a pointer thereto, in struct
> mc13783_adc_priv would be better. Your argument about the wasted memory
> size doesn't really hold, we're talking about 30 bytes here, tops.
OK.

> Or if you really want to dynamically turn "-" into "_" then you should
> do that in a robust way, for example:
> 
> 	char *dash;
> 
> 	dash = strchr(buf, '-');
> 	if (dash)
> 		*dash = '_';
> 
> That way you no longer depend on the length of the string nor the
> position of the dash.
> 
> As a side note, I'm not quite sure why the _adc suffix was preserved in
> the name attribute in the first place. Given that this is a hwmon
> device attribute, it seems redundant.
I'll drop it.
 
> As another side note, if you really care about memory consumption, then
> you could call sysfs_remove_group() unconditionally everywhere, as it's
> OK to remove files which do not exist. This would let you mark
> mc13783_adc_use_touchscreen() as __init. It may also make sense to move
> file removal to a separate function to avoid code redundancy between
> mc13783_adc_probe() and mc13783_adc_remove() (or even adjust
> mc13783_adc_remove() so that it can be called straight from
> mc13783_adc_probe()'s error path.
> 
> [...]
> > +/* these are only used if MC13783_ADC_16CHANS is provided in driver data */
> > +static struct attribute *mc13783_attr_16chan[] = {
> 
> 16CHANS vs. 16chan. Would be good to decide for a spelling and stick to
> it.
I guess you only mean the 's' and not capitalisation?

> [...]
> Will you resend an updated patch, or should I update it myself with the
> changes above?
I will send you an update later today with your comments addressed.

Thanks
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (5 preceding siblings ...)
  2012-01-27 19:48 ` Uwe Kleine-König
@ 2012-01-27 21:22 ` Guenter Roeck
  2012-01-27 21:28 ` Jean Delvare
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Guenter Roeck @ 2012-01-27 21:22 UTC (permalink / raw)
  To: lm-sensors

T24gRnJpLCAyMDEyLTAxLTI3IGF0IDExOjUzIC0wNTAwLCBKZWFuIERlbHZhcmUgd3JvdGU6Cj4g
SGkgVXdlLAo+IAo+IE9uIFR1ZSwgMjcgU2VwIDIwMTEgMjM6MTY6MDkgKzAyMDAsIFV3ZSBLbGVp
bmUtS8O2bmlnIHdyb3RlOgo+ID4gQmFzZWQgb24gYSBwYXRjaCBieSBEYXZpZCBKYW5kZXIgdGhh
dCBtb3N0bHkgZGlkIHMvbWMxMzc4My9tYzEzeHh4Lwo+ID4KPiA+IENjOiBEYXZpZCBKYW5kZXIg
PGRhdmlkLmphbmRlckBwcm90b25pYy5ubD4KPiA+IFNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVpbmUt
S8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+Cj4gPiAtLS0KPiA+IGNoYW5n
ZXMgc2luY2UgKGltcGxpY2l0KSB2MToKPiA+ICAtIHVwZGF0ZSBkb2N1bWVudGF0aW9uCj4gPiAg
LSB1bmRvIGRyaXZlciByZW5hbWluZwo+ID4gIC0gZml4IHNob3dfbmFtZSBjYWxsYmFjayAobm90
IDEwMCUgc3VyZSBpdCBpcyBjb3JyZWN0IHRvIGdpdmUgYSBkaWZmZXJlbnQgbmFtZQo+ID4gICAg
b24gbWMxMzg5Mi4gSSB0aGluayBuYW1lIGNvbnRhaW5zIHRoZSBwcmVmaXggZG9jdW1lbnRlZCBp
bgo+ID4gICAgRG9jdW1lbnRhdGlvbi9od21vbi9tYzEzNzgzLWFkYz8hKQo+ID4gIC0gaW1wbGVt
ZW50IHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiBtYzEzNzgzIGFuZCBtYzEzODkyIHRoYXQgSSBu
b3RpY2VkIHdoZW4KPiA+ICAgIHVwZGF0aW5nIHRoZSBkb2NzCj4gPiAgICAtIGRpZmZlcmVudCBz
Y2FsaW5nIGZvciBicCBjaGFubmVsCj4gPiAgICAtIG5vIGdlbmVyYWwgcHVycG9zZSBjaGFubmVs
cyA4LTE1IG9uIG1jMTM4OTIKPiA+ICAtIHRha2Ugb3ZlciBhdXRob3JzaGlwIGFzIHRoZSBwYXRj
aCBnb3QgbXVjaCBtb3JlIGNvbXBsaWNhdGVkIG5vdyBjb21wYXJlZCB0bwo+ID4gICAgRGF2aWQn
cyBvcmlnaW5hbC4KPiA+Cj4gPiAgRG9jdW1lbnRhdGlvbi9od21vbi9tYzEzNzgzLWFkYyB8ICAg
NDggKysrKysrKysrKysrLS0tLQo+ID4gIGRyaXZlcnMvaHdtb24vS2NvbmZpZyAgICAgICAgICAg
fCAgICA2ICstCj4gPiAgZHJpdmVycy9od21vbi9tYzEzNzgzLWFkYy5jICAgICB8ICAxMTMgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gPiAgMyBmaWxlcyBjaGFuZ2Vk
LCAxMjMgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCj4gCj4gQXMgbWVyZ2luZyB0aGlz
IGdvdCBzdHVjayBhZnRlciBHdWVudGVyJ3MgbGFzdCByZXZpZXcgKHRoYW5rcyBHdWVudGVyLAo+
IEJUVykgSSBhbSBwaWNraW5nIHVwIGZyb20gdGhlcmUgYW5kIGhvcGVmdWxseSB3ZSBjYW4gZ2V0
IHRoaXMgdXBzdHJlYW0uCj4gSGVyZSBJIGdvIHdpdGggbXkgcmV2aWV3LCBtb3N0bHkgbWlub3Ig
dGhpbmdzOgo+IApJIGhhdmUgYmVlbiBhc2tlZCBhYm91dCBhZGRpbmcgc3VwcG9ydCBmb3IgQURD
IGNoYW5uZWxzIDAsIDEsIDMsIDQsIGFzCndlbGwgYXMgdGhlIG5vbi1HUCB1c2FnZSBvZiBjaGFu
bmVscyA1IHRvIDcuCgpEb2VzIGFueW9uZSBoYXBwZW4gdG8ga25vdy9yZWNhbGwgd2h5IHRob3Nl
IGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZQpjdXJyZW50IGRyaXZlciA/CgpUaGFua3MsCkd1ZW50
ZXIKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbG0t
c2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlz
dHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1zZW5zb3Jz

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (6 preceding siblings ...)
  2012-01-27 21:22 ` Guenter Roeck
@ 2012-01-27 21:28 ` Jean Delvare
  2012-01-27 21:35 ` Jean Delvare
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Jean Delvare @ 2012-01-27 21:28 UTC (permalink / raw)
  To: lm-sensors

T24gRnJpLCAyNyBKYW4gMjAxMiAyMDo0ODo1OCArMDEwMCwgVXdlIEtsZWluZS1Lw7ZuaWcgd3Jv
dGU6Cj4gPiBJdCBtaWdodCBiZSBhIGdvb2QgaWRlYSB0byBleHBsYWluIHdoYXQgQlAgaXMuLi4g
TWUsIEkgaGF2ZSBubyBpZGVhLgo+IEl0J3MgaW4gdGhlIHRhYmxlIGJlbG93IGFuZCBtZWFucyB0
aGUgIkFwcGxpY2F0aW9uIFN1cHBseSIgY2hhbm5lbC4gTm8KPiBpZGVhIHdoYXQgdGhlIEZyZWVz
Y2FsZSBndXlzIHRob3VnaHQgaXQgc2hvdWxkIHN0YW5kIGZvci4KCk1heWJlICJib2FyZCBwb3dl
ciI/Cgo+ID4gKC4uLikKPiA+IDE2Q0hBTlMgdnMuIDE2Y2hhbi4gV291bGQgYmUgZ29vZCB0byBk
ZWNpZGUgZm9yIGEgc3BlbGxpbmcgYW5kIHN0aWNrIHRvCj4gPiBpdC4KPiBJIGd1ZXNzIHlvdSBv
bmx5IG1lYW4gdGhlICdzJyBhbmQgbm90IGNhcGl0YWxpc2F0aW9uPwoKWWVzLgoKPiA+IFsuLi5d
Cj4gPiBXaWxsIHlvdSByZXNlbmQgYW4gdXBkYXRlZCBwYXRjaCwgb3Igc2hvdWxkIEkgdXBkYXRl
IGl0IG15c2VsZiB3aXRoIHRoZQo+ID4gY2hhbmdlcyBhYm92ZT8KPiBJIHdpbGwgc2VuZCB5b3Ug
YW4gdXBkYXRlIGxhdGVyIHRvZGF5IHdpdGggeW91ciBjb21tZW50cyBhZGRyZXNzZWQuCgpHcmVh
dCwgdGhhbmtzLgoKLS0gCkplYW4gRGVsdmFyZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0Bs
bS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5m
by9sbS1zZW5zb3Jz

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (7 preceding siblings ...)
  2012-01-27 21:28 ` Jean Delvare
@ 2012-01-27 21:35 ` Jean Delvare
  2012-01-28 17:34 ` Guenter Roeck
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Jean Delvare @ 2012-01-27 21:35 UTC (permalink / raw)
  To: lm-sensors

On Fri, 27 Jan 2012 13:22:08 -0800, Guenter Roeck wrote:
> I have been asked about adding support for ADC channels 0, 1, 3, 4, as
> well as the non-GP usage of channels 5 to 7.

I'm interested in temperature sensors too, i.e. channels 5 and 7 if I'm
not mistaken.

> Does anyone happen to know/recall why those are not supported in the
> current driver ?

No idea, maybe just starting simple, or lack of interest.

-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (8 preceding siblings ...)
  2012-01-27 21:35 ` Jean Delvare
@ 2012-01-28 17:34 ` Guenter Roeck
  2012-01-28 18:15 ` Jean Delvare
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Guenter Roeck @ 2012-01-28 17:34 UTC (permalink / raw)
  To: lm-sensors

On Fri, Jan 27, 2012 at 04:35:29PM -0500, Jean Delvare wrote:
> On Fri, 27 Jan 2012 13:22:08 -0800, Guenter Roeck wrote:
> > I have been asked about adding support for ADC channels 0, 1, 3, 4, as
> > well as the non-GP usage of channels 5 to 7.
> 
> I'm interested in temperature sensors too, i.e. channels 5 and 7 if I'm
> not mistaken.
> 
> > Does anyone happen to know/recall why those are not supported in the
> > current driver ?
> 
> No idea, maybe just starting simple, or lack of interest.
> 
Maybe the perceived problem is that gain and offset are different and all over the place
for the various ADCs, so one either needs a whole bunch of functions, or a large
case statement, or a table with <gain, offset> per adc. I'd choose the latter,
to simplify runtime code. Also, the description of adc->temperature conversion
is really quite confusing.

Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (9 preceding siblings ...)
  2012-01-28 17:34 ` Guenter Roeck
@ 2012-01-28 18:15 ` Jean Delvare
  2012-01-28 18:42 ` Guenter Roeck
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Jean Delvare @ 2012-01-28 18:15 UTC (permalink / raw)
  To: lm-sensors

T24gU2F0LCAyOCBKYW4gMjAxMiAwOTozNDozNCAtMDgwMCwgR3VlbnRlciBSb2VjayB3cm90ZToK
PiBNYXliZSB0aGUgcGVyY2VpdmVkIHByb2JsZW0gaXMgdGhhdCBnYWluIGFuZCBvZmZzZXQgYXJl
IGRpZmZlcmVudCBhbmQgYWxsIG92ZXIgdGhlIHBsYWNlCj4gZm9yIHRoZSB2YXJpb3VzIEFEQ3Ms
IHNvIG9uZSBlaXRoZXIgbmVlZHMgYSB3aG9sZSBidW5jaCBvZiBmdW5jdGlvbnMsIG9yIGEgbGFy
Z2UKPiBjYXNlIHN0YXRlbWVudCwgb3IgYSB0YWJsZSB3aXRoIDxnYWluLCBvZmZzZXQ+IHBlciBh
ZGMuIEknZCBjaG9vc2UgdGhlIGxhdHRlciwKPiB0byBzaW1wbGlmeSBydW50aW1lIGNvZGUuIEFs
c28sIHRoZSBkZXNjcmlwdGlvbiBvZiBhZGMtPnRlbXBlcmF0dXJlIGNvbnZlcnNpb24KPiBpcyBy
ZWFsbHkgcXVpdGUgY29uZnVzaW5nLgoKVGhlIGRpZSB0ZW1wZXJhdHVyZSBzZWVtcyB0byBiZSBh
IHNpbXBsZSBsaW5lYXIgZXh0cmFwb2xhdGlvbiwgdGhpcwpzaG91bGQgYWN0dWFsbHkgYmUgZmFp
cmx5IGVhc3kgdG8gaW1wbGVtZW50LgoKVGhlIGJhdHRlcnkgdGVtcGVyYXR1cmUgaXMgYSB0eXBp
Y2FsIHRoZXJtaXN0b3IgY29tcHV0YXRpb24uIEl0IGlzIGJlc3QKZG9uZSBpbiB1c2VyLXNwYWNl
IGJ5IGEgbGlic2Vuc29ycyBjb25maWd1cmF0aW9uIHN0YXRlbWVudCAoaS5lLiB0aGUKZHJpdmVy
IGV4cG9ydHMgYSB2YWx1ZSBpbiBtViBpbnN0ZWFkIG9mIG3CsEMgYW5kIHNlbnNvcnMuY29uZiB0
YWtlcyBjYXJlCm9mIHRoZSBjb252ZXJzaW9uLikKClNvIEkgZG9uJ3Qgc2VlIGFueXRoaW5nIHBh
cnRpY3VsYXJseSBmcmlnaHRlbmluZyBoZXJlLiBEbyB5b3U/CgotLSAKSmVhbiBEZWx2YXJlCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3Jz
IG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1z
ZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (10 preceding siblings ...)
  2012-01-28 18:15 ` Jean Delvare
@ 2012-01-28 18:42 ` Guenter Roeck
  2012-01-28 20:47 ` Jean Delvare
  2012-01-30  7:27 ` David Jander
  13 siblings, 0 replies; 15+ messages in thread
From: Guenter Roeck @ 2012-01-28 18:42 UTC (permalink / raw)
  To: lm-sensors

On Sat, Jan 28, 2012 at 01:15:36PM -0500, Jean Delvare wrote:
> On Sat, 28 Jan 2012 09:34:34 -0800, Guenter Roeck wrote:
> > Maybe the perceived problem is that gain and offset are different and all over the place
> > for the various ADCs, so one either needs a whole bunch of functions, or a large
> > case statement, or a table with <gain, offset> per adc. I'd choose the latter,
> > to simplify runtime code. Also, the description of adc->temperature conversion
> > is really quite confusing.
> 
> The die temperature seems to be a simple linear extrapolation, this
> should actually be fairly easy to implement.
> 
> The battery temperature is a typical thermistor computation. It is best
> done in user-space by a libsensors configuration statement (i.e. the
> driver exports a value in mV instead of m°C and sensors.conf takes care
> of the conversion.)
> 
> So I don't see anything particularly frightening here. Do you?
> 
Not really; I didn't expect the implementation to be difficult, just understanding
the documentation.

For the battery temperature, I would prefer to report a temperature if the chip
is configured for it (assuming that can be detected).

At least so far we can not convert voltages to temperatures via sensors.conf,
or can we ?

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (11 preceding siblings ...)
  2012-01-28 18:42 ` Guenter Roeck
@ 2012-01-28 20:47 ` Jean Delvare
  2012-01-30  7:27 ` David Jander
  13 siblings, 0 replies; 15+ messages in thread
From: Jean Delvare @ 2012-01-28 20:47 UTC (permalink / raw)
  To: lm-sensors

T24gU2F0LCAyOCBKYW4gMjAxMiAxMDo0MjoxOSAtMDgwMCwgR3VlbnRlciBSb2VjayB3cm90ZToK
PiBPbiBTYXQsIEphbiAyOCwgMjAxMiBhdCAwMToxNTozNlBNIC0wNTAwLCBKZWFuIERlbHZhcmUg
d3JvdGU6Cj4gPiBUaGUgZGllIHRlbXBlcmF0dXJlIHNlZW1zIHRvIGJlIGEgc2ltcGxlIGxpbmVh
ciBleHRyYXBvbGF0aW9uLCB0aGlzCj4gPiBzaG91bGQgYWN0dWFsbHkgYmUgZmFpcmx5IGVhc3kg
dG8gaW1wbGVtZW50Lgo+ID4gCj4gPiBUaGUgYmF0dGVyeSB0ZW1wZXJhdHVyZSBpcyBhIHR5cGlj
YWwgdGhlcm1pc3RvciBjb21wdXRhdGlvbi4gSXQgaXMgYmVzdAo+ID4gZG9uZSBpbiB1c2VyLXNw
YWNlIGJ5IGEgbGlic2Vuc29ycyBjb25maWd1cmF0aW9uIHN0YXRlbWVudCAoaS5lLiB0aGUKPiA+
IGRyaXZlciBleHBvcnRzIGEgdmFsdWUgaW4gbVYgaW5zdGVhZCBvZiBtwrBDIGFuZCBzZW5zb3Jz
LmNvbmYgdGFrZXMgY2FyZQo+ID4gb2YgdGhlIGNvbnZlcnNpb24uKQo+ID4gCj4gPiBTbyBJIGRv
bid0IHNlZSBhbnl0aGluZyBwYXJ0aWN1bGFybHkgZnJpZ2h0ZW5pbmcgaGVyZS4gRG8geW91Pwo+
Cj4gTm90IHJlYWxseTsgSSBkaWRuJ3QgZXhwZWN0IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBiZSBk
aWZmaWN1bHQsIGp1c3QgdW5kZXJzdGFuZGluZwo+IHRoZSBkb2N1bWVudGF0aW9uLgo+IAo+IEZv
ciB0aGUgYmF0dGVyeSB0ZW1wZXJhdHVyZSwgSSB3b3VsZCBwcmVmZXIgdG8gcmVwb3J0IGEgdGVt
cGVyYXR1cmUgaWYgdGhlIGNoaXAKPiBpcyBjb25maWd1cmVkIGZvciBpdCAoYXNzdW1pbmcgdGhh
dCBjYW4gYmUgZGV0ZWN0ZWQpLgoKQWdyZWVkLgoKPiBBdCBsZWFzdCBzbyBmYXIgd2UgY2FuIG5v
dCBjb252ZXJ0IHZvbHRhZ2VzIHRvIHRlbXBlcmF0dXJlcyB2aWEgc2Vuc29ycy5jb25mLAo+IG9y
IGNhbiB3ZSA/CgpXZSBjYW4ndCBjaGFuZ2UgdGhlIGNoYW5uZWwgdHlwZSwgbm8uIFRoZXJlIGlz
IGEgbG9uZyBzdGFuZGluZyB0aWNrZXQKb3BlbmVkIGZvciB0aGlzOgogIGh0dHA6Ly93d3cubG0t
c2Vuc29ycy5vcmcvdGlja2V0LzIyNTgKYnV0IEknbSBzdGlsbCBub3Qgc3VyZSB3aGF0IHRvIGRv
IHdpdGggaXQuCgpXaGF0IGNhbiBiZSBkb25lIGlzIHRoYXQgZHJpdmVycyBleHBvcnQgdGVtcGVy
YXR1cmVzIGluIG1WIGJ1dCB0aGV5CmRvbid0IHNheSBzbywgYW5kIHdlIGRvIHRoZSBjb252ZXJz
aW9uIGluIHNlbnNvcnMuY29uZi4gVGhpcyBpcwplc3NlbnRpYWxseSBhbiB1bmRvY3VtZW50ZWQg
dmlvbGF0aW9uIG9mIG91ciBzeXNmcyBpbnRlcmZhY2UgYnV0CnNldmVyYWwgZHJpdmVycyBhcmUg
ZG9pbmcgaXQgYWxyZWFkeTogdnQxMjExLCB2dDgyMzEsIHBjODczNjAuIFNlZQpldGMvc2Vuc29y
cy5jb25mLmVnIGZvciBleGFtcGxlcyBvZiBjb252ZXJzaW9uIGZvcm11bGEuCgpJJ20gbm9yIHBh
cnRpY3VsYXJseSBoYXBweSB3aXRoIHRoZSBzaXR1YXRpb24sIGJ1dCBJIGhhdmUgbm8gaW1tZWRp
YXRlCnNvbHV0aW9uIHRvIHByb3Bvc2UgYW5kIHRoZSBwcm9ibGVtIGlzIHJhcmUgZW5vdWdoIHRo
YXQgaXQgZG9lc24ndApwcmV2ZW50IG1lIGZyb20gc2xlZXBpbmcgc28gZmFyLiBJZiB5b3Ugb3Ig
YW55b25lIGVsc2Ugd2FudCB0byBwcm9wb3NlCnNvbWV0aGluZyBvciBldmVuIGltcGxlbWVudCBp
dCwgZmVlbCBmcmVlLgoKLS0gCkplYW4gRGVsdmFyZQoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29y
c0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0
aW5mby9sbS1zZW5zb3Jz

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

* Re: [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC
  2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
                   ` (12 preceding siblings ...)
  2012-01-28 20:47 ` Jean Delvare
@ 2012-01-30  7:27 ` David Jander
  13 siblings, 0 replies; 15+ messages in thread
From: David Jander @ 2012-01-30  7:27 UTC (permalink / raw)
  To: lm-sensors

T24gRnJpLCAyNyBKYW4gMjAxMiAyMDo0ODo1OCArMDEwMApVd2UgS2xlaW5lLUvDtm5pZyA8dS5r
bGVpbmUta29lbmlnQHBlbmd1dHJvbml4LmRlPiB3cm90ZToKCj4gSGVsbG8gSmVhbiwKPiAKPiBm
aXJzdCBvZiBhbGwgdGhhbmtzIGZvciB5b3VyIHRob3VnaHRzLgo+IAo+IE9uIEZyaSwgSmFuIDI3
LCAyMDEyIGF0IDA1OjUzOjI5UE0gKzAxMDAsIEplYW4gRGVsdmFyZSB3cm90ZToKPiA+ID4gZGlm
ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbWMxMzc4My1hZGMKPiA+ID4gYi9Eb2N1bWVu
dGF0aW9uL2h3bW9uL21jMTM3ODMtYWRjIGluZGV4IDA0NDUzMWEuLjhiNzE3ZjUgMTAwNjQ0Cj4g
PiA+IC0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vbWMxMzc4My1hZGMKPiA+ID4gKysrIGIvRG9j
dW1lbnRhdGlvbi9od21vbi9tYzEzNzgzLWFkYwo+ID4gPiBAQCAtNSw2ICs1LDkgQEAgU3VwcG9y
dGVkIGNoaXBzOgo+ID4gPiAgICAqIEZyZWVzY2FsZSBBdGxhcyBNQzEzNzgzCj4gPiA+ICAgICAg
UHJlZml4OiAnbWMxMzc4M19hZGMnCj4gPiA+ICAgICAgRGF0YXNoZWV0Ogo+ID4gPiBodHRwOi8v
d3d3LmZyZWVzY2FsZS5jb20vZmlsZXMvcmZfaWYvZG9jL2RhdGFfc2hlZXQvTUMxMzc4My5wZGY/
ZnNyY2g9MQo+ID4gPiArICAqIEZyZWVzY2FsZSBBdGxhcyBNQzEzODkyCj4gPiA+ICsgICAgUHJl
Zml4OiAnbWMxMzg5Ml9hZGMnCj4gPiA+ICsgICAgRGF0YXNoZWV0Ogo+ID4gPiBodHRwOi8vY2Fj
aGUuZnJlZXNjYWxlLmNvbS9maWxlcy9hbmFsb2cvZG9jL2RhdGFfc2hlZXQvTUMxMzg5Mi5wZGY/
ZnNyY2g9MSZzcj0xIAo+ID4gPiAgQXV0aG9yczoKPiA+ID4gICAgICBTYXNjaGEgSGF1ZXIgPHMu
aGF1ZXJAcGVuZ3V0cm9uaXguZGU+Cj4gPiA+IEBAIC0xMywyMCArMTYsMjEgQEAgQXV0aG9yczoK
PiA+ID4gIERlc2NyaXB0aW9uCj4gPiA+ICAtLS0tLS0tLS0tLQo+ID4gPiAgCj4gPiA+IC1UaGUg
RnJlZXNjYWxlIE1DMTM3ODMgaXMgYSBQb3dlciBNYW5hZ2VtZW50IGFuZCBBdWRpbyBDaXJjdWl0
LiBBbW9uZwo+ID4gPiAtb3RoZXIgdGhpbmdzIGl0IGNvbnRhaW5zIGEgMTAtYml0IEEvRCBjb252
ZXJ0ZXIuIFRoZSBjb252ZXJ0ZXIgaGFzIDE2Cj4gPiA+IC1jaGFubmVscyB3aGljaCBjYW4gYmUg
dXNlZCBpbiBkaWZmZXJlbnQgbW9kZXMuCj4gPiA+IC1UaGUgQS9EIGNvbnZlcnRlciBoYXMgYSBy
ZXNvbHV0aW9uIG9mIDIuMjVtVi4gQ2hhbm5lbHMgMC00IGhhdmUKPiA+ID4gLWEgZGVkaWNhdGVk
IG1lYW5pbmcgd2l0aCBjaGlwIGludGVybmFsIHNjYWxpbmcgYXBwbGllZC4gQ2hhbm5lbHMgNS03
Cj4gPiA+IC1jYW4gYmUgdXNlZCBhcyBnZW5lcmFsIHB1cnBvc2UgaW5wdXRzIG9yIGFsdGVybmF0
aXZlbHkgaW4gYSBkZWRpY2F0ZWQKPiA+ID4gLW1vZGUuIENoYW5uZWxzIDEyLTE1IGFyZSBvY2N1
cGllZCBieSB0aGUgdG91Y2hzY3JlZW4gaWYgaXQncyBhY3RpdmUuCj4gPiA+ICtUaGUgRnJlZXNj
YWxlIE1DMTM3ODMgYW5kIE1DMTM4OTIgYXJlIFBvd2VyIE1hbmFnZW1lbnQgYW5kIEF1ZGlvCj4g
PiA+IENpcmN1aXRzLiArQW1vbmcgb3RoZXIgdGhpbmdzIHRoZXkgY29udGFpbiBhIDEwLWJpdCBB
L0QgY29udmVydGVyLiBUaGUKPiA+ID4gY29udmVydGVyIGhhcyAxNiArKE1DMTM3ODMpIHJlc3Au
IDEyIChNQzEzODkyKSBjaGFubmVscyB3aGljaCBjYW4gYmUKPiA+ID4gdXNlZCBpbiBkaWZmZXJl
bnQgbW9kZXMuIFRoZSArQS9EIGNvbnZlcnRlciBoYXMgYSByZXNvbHV0aW9uIG9mIDIuMjVtVi4K
PiA+ID4gIAo+ID4gPiAtQ3VycmVudGx5IHRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyBjaGFubmVs
cyAyIGFuZCA1LTE1IHdpdGggbm8KPiA+ID4gYWx0ZXJuYXRpdmUgLW1vZGVzIGZvciBjaGFubmVs
cyA1LTcuCj4gPiA+ICtTb21lIGNoYW5uZWxzIGNhbiBiZSB1c2VkIGFzIEdlbmVyYWwgUHVycG9z
ZSBpbnB1dHMgb3IgaW4gYSBkZWRpY2F0ZWQKPiA+ID4gbW9kZSB3aXRoICthIGNoaXAgaW50ZXJu
YWwgc2NhbGluZyBhcHBsaWVkIC4KPiA+ID4gIAo+ID4gPiAtU2VlIHRoaXMgdGFibGUgZm9yIHRo
ZSBtZWFuaW5nIG9mIHRoZSBkaWZmZXJlbnQgY2hhbm5lbHMgYW5kIHRoZWlyIGNoaXAKPiA+ID4g
LWludGVybmFsIHNjYWxpbmc6Cj4gPiA+ICtDdXJyZW50bHkgdGhlIGRyaXZlciBvbmx5IHN1cHBv
cnRzIEJQLCB0aGUgR2VuZXJhbCBQdXJwb3NlIGlucHV0cyBhbmQKPiA+ID4gK3RvdWNoc2NyZWVu
Lgo+ID4gCj4gPiBJdCBtaWdodCBiZSBhIGdvb2QgaWRlYSB0byBleHBsYWluIHdoYXQgQlAgaXMu
Li4gTWUsIEkgaGF2ZSBubyBpZGVhLgo+IEl0J3MgaW4gdGhlIHRhYmxlIGJlbG93IGFuZCBtZWFu
cyB0aGUgIkFwcGxpY2F0aW9uIFN1cHBseSIgY2hhbm5lbC4gTm8KPiBpZGVhIHdoYXQgdGhlIEZy
ZWVzY2FsZSBndXlzIHRob3VnaHQgaXQgc2hvdWxkIHN0YW5kIGZvci4KCiJCYXR0ZXJ5IFBvd2Vy
Ii4gSXQgaXMgdGhlICJCUCIgcG93ZXIgcmFpbCBjb21tb25seSBmb3VuZCBpbiBGcmVlc2NhbGUK
ZG9jdW1lbnRhdGlvbiwgdGhhdCBpcyBub3QgYWN0dWFsbHkgY29ubmVjdGVkIGRpcmVjdGx5IHRv
IHRoZSBiYXR0ZXJ5Li4uLgphbG1vc3QuIFRoYXQncyBwcm9iYWJseSB3aHkgY2FsbGluZyBpdCAi
QmF0dGVyeSBQb3dlciIgc2VlbWVkIHRvbyBtaXNsZWFkaW5nLApzbyB0aGV5IGFiYnJldmlhdGVk
IGl0IDstKSBJdCBiYXNpY2FsbHkgcG93ZXJzIHRoZSB3aG9sZSBzeXN0ZW0uCgpKdXN0IG15IDIg
Y2VudCA7LSkKClRoYW5rcyBmb3IgcGlja2luZyB0aGlzIHVwIGZpbmFsbHkuCgpCZXN0IHJlZ2Fy
ZHMsCgotLSAKRGF2aWQgSmFuZGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNv
cnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNl
bnNvcnM

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

end of thread, other threads:[~2012-01-30  7:27 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-27 21:16 [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the Uwe Kleine-König
2011-09-29 16:38 ` Guenter Roeck
2011-09-29 18:59 ` Uwe Kleine-König
2012-01-05 13:44 ` Jean Delvare
2012-01-23  9:01 ` [lm-sensors] [PATCH v2] hwmon/mc13xxx-adc: add support for the MC13892 PMIC Uwe Kleine-König
2012-01-27 16:53 ` Jean Delvare
2012-01-27 19:48 ` Uwe Kleine-König
2012-01-27 21:22 ` Guenter Roeck
2012-01-27 21:28 ` Jean Delvare
2012-01-27 21:35 ` Jean Delvare
2012-01-28 17:34 ` Guenter Roeck
2012-01-28 18:15 ` Jean Delvare
2012-01-28 18:42 ` Guenter Roeck
2012-01-28 20:47 ` Jean Delvare
2012-01-30  7:27 ` David Jander

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.