public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] regulator: palmas fix SMPS no voltages
@ 2013-02-22  0:52 Ian Lartey
  2013-02-22  0:52 ` [PATCH 2/2] mfd: palmas add variant and OTP detection Ian Lartey
  2013-02-22 10:41 ` [PATCH 1/2] regulator: palmas fix SMPS no voltages Laxman Dewangan
  0 siblings, 2 replies; 5+ messages in thread
From: Ian Lartey @ 2013-02-22  0:52 UTC (permalink / raw)
  To: linux-kernel, broonie, lrg, sameo; +Cc: ldewangan, Graeme Gregory, Ian Lartey

From: Graeme Gregory <gg@slimlogic.co.uk>

Number of voltages for SMPS regulators was off by one.

Signed-off-by: Graeme Gregory <gg@slimlogic.co.uk>
Signed-off-by: Ian Lartey <ian@slimlogic.co.uk>
---
 drivers/regulator/palmas-regulator.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
index cde13bb..39cf146 100644
--- a/drivers/regulator/palmas-regulator.c
+++ b/drivers/regulator/palmas-regulator.c
@@ -4,6 +4,7 @@
  * Copyright 2011-2012 Texas Instruments Inc.
  *
  * Author: Graeme Gregory <gg@slimlogic.co.uk>
+ * Author: Ian Lartey <ian@slimlogic.co.uk>
  *
  *  This program is free software; you can redistribute it and/or modify it
  *  under  the terms of the GNU General  Public License as published by the
@@ -156,7 +157,7 @@ static const struct regs_info palmas_regs_info[] = {
  *
  * So they are basically (maxV-minV)/stepV
  */
-#define PALMAS_SMPS_NUM_VOLTAGES	116
+#define PALMAS_SMPS_NUM_VOLTAGES	117
 #define PALMAS_SMPS10_NUM_VOLTAGES	2
 #define PALMAS_LDO_NUM_VOLTAGES		50
 
-- 
1.7.0.4


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

* [PATCH 2/2] mfd: palmas add variant and OTP detection
  2013-02-22  0:52 [PATCH 1/2] regulator: palmas fix SMPS no voltages Ian Lartey
@ 2013-02-22  0:52 ` Ian Lartey
  2013-02-22 10:30   ` Laxman Dewangan
  2013-02-22 10:41 ` [PATCH 1/2] regulator: palmas fix SMPS no voltages Laxman Dewangan
  1 sibling, 1 reply; 5+ messages in thread
From: Ian Lartey @ 2013-02-22  0:52 UTC (permalink / raw)
  To: linux-kernel, broonie, lrg, sameo; +Cc: ldewangan, Graeme Gregory, Ian Lartey

From: Graeme Gregory <gg@slimlogic.co.uk>

Read the chip varient and the OTP information from the chip and display
this on probe to aid in debugging of issues.

Older palmas chips do not have the USB_ID programmed and will therefore
return 0x0000 for this field.

Signed-off-by: Graeme Gregory <gg@slimlogic.co.uk>
Signed-off-by: Ian Lartey <ian@slimlogic.co.uk>
---
 drivers/mfd/palmas.c       |   49 ++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/palmas.h |   38 ++++++++++++++++++++++++++++++++++
 2 files changed, 87 insertions(+), 0 deletions(-)

diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
index bbdbc50..2bca666 100644
--- a/drivers/mfd/palmas.c
+++ b/drivers/mfd/palmas.c
@@ -4,6 +4,7 @@
  * Copyright 2011-2012 Texas Instruments Inc.
  *
  * Author: Graeme Gregory <gg@slimlogic.co.uk>
+ * Author: Ian Lartey <ian@slimlogic.co.uk>
  *
  *  This program is free software; you can redistribute it and/or modify it
  *  under  the terms of the GNU General  Public License as published by the
@@ -344,6 +345,54 @@ static int palmas_i2c_probe(struct i2c_client *i2c,
 		}
 	}
 
+	/* Read varient info from the device */
+	slave = PALMAS_BASE_TO_SLAVE(PALMAS_ID_BASE);
+	addr = PALMAS_BASE_TO_REG(PALMAS_ID_BASE, PALMAS_PRODUCT_ID_LSB);
+	ret = regmap_read(palmas->regmap[slave], addr, &reg);
+	if (ret < 0) {
+		dev_err(palmas->dev, "Unable to read ID err: %d\n", ret);
+		goto err;
+	}
+
+	palmas->id = reg;
+
+	slave = PALMAS_BASE_TO_SLAVE(PALMAS_ID_BASE);
+	addr = PALMAS_BASE_TO_REG(PALMAS_ID_BASE, PALMAS_PRODUCT_ID_MSB);
+	ret = regmap_read(palmas->regmap[slave], addr, &reg);
+	if (ret < 0) {
+		dev_err(palmas->dev, "Unable to read ID err: %d\n", ret);
+		goto err;
+	}
+
+	palmas->id |= reg << 8;
+
+	dev_info(palmas->dev, "Product ID %x\n", palmas->id);
+
+	slave = PALMAS_BASE_TO_SLAVE(PALMAS_DESIGNREV_BASE);
+	addr = PALMAS_BASE_TO_REG(PALMAS_DESIGNREV_BASE, PALMAS_DESIGNREV);
+	ret = regmap_read(palmas->regmap[slave], addr, &reg);
+	if (ret < 0) {
+		dev_err(palmas->dev, "Unable to read DESIGNREV err: %d\n", ret);
+		goto err;
+	}
+
+	palmas->designrev = reg & PALMAS_DESIGNREV_DESIGNREV_MASK;
+
+	dev_info(palmas->dev, "Product Design Rev %x\n", palmas->designrev);
+
+	slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
+	addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE, PALMAS_SW_REVISION);
+	ret = regmap_read(palmas->regmap[slave], addr, &reg);
+	if (ret < 0) {
+		dev_err(palmas->dev, "Unable to read SW_REVISION err: %d\n",
+				ret);
+		goto err;
+	}
+
+	palmas->sw_revision = reg;
+
+	dev_info(palmas->dev, "Product SW Rev %x\n", palmas->sw_revision);
+
 	/* Change IRQ into clear on read mode for efficiency */
 	slave = PALMAS_BASE_TO_SLAVE(PALMAS_INTERRUPT_BASE);
 	addr = PALMAS_BASE_TO_REG(PALMAS_INTERRUPT_BASE, PALMAS_INT_CTRL);
diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h
index a4d13d7..2e8b747 100644
--- a/include/linux/mfd/palmas.h
+++ b/include/linux/mfd/palmas.h
@@ -4,6 +4,7 @@
  * Copyright 2011 Texas Instruments Inc.
  *
  * Author: Graeme Gregory <gg@slimlogic.co.uk>
+ * Author: Ian Lartey <ian@slimlogic.co.uk>
  *
  *  This program is free software; you can redistribute it and/or modify it
  *  under  the terms of the GNU General  Public License as published by the
@@ -22,6 +23,10 @@
 
 #define PALMAS_NUM_CLIENTS		3
 
+/* The ID_REVISION NUMBERS */
+#define PALMAS_CHIP_OLD_ID		0x0000
+#define PALMAS_CHIP_ID			0xC035
+
 struct palmas_pmic;
 struct palmas_gpadc;
 struct palmas_resource;
@@ -35,6 +40,8 @@ struct palmas {
 
 	/* Stored chip id */
 	int id;
+	int designrev;
+	int sw_revision;
 
 	/* IRQ Data */
 	int irq;
@@ -427,11 +434,13 @@ enum usb_irq_events {
 #define PALMAS_PU_PD_OD_BASE					0x1F4
 #define PALMAS_LED_BASE						0x200
 #define PALMAS_INTERRUPT_BASE					0x210
+#define PALMAS_ID_BASE						0x24F
 #define PALMAS_USB_OTG_BASE					0x250
 #define PALMAS_VIBRATOR_BASE					0x270
 #define PALMAS_GPIO_BASE					0x280
 #define PALMAS_USB_BASE						0x290
 #define PALMAS_GPADC_BASE					0x2C0
+#define PALMAS_DESIGNREV_BASE					0x357
 #define PALMAS_TRIM_GPADC_BASE					0x3CD
 
 /* Registers for function RTC */
@@ -2149,6 +2158,28 @@ enum usb_irq_events {
 #define PALMAS_INT_CTRL_INT_CLEAR				0x01
 #define PALMAS_INT_CTRL_INT_CLEAR_SHIFT				0
 
+/* Registers for function ID */
+#define PALMAS_VENDOR_ID_LSB					0x0
+#define PALMAS_VENDOR_ID_MSB					0x1
+#define PALMAS_PRODUCT_ID_LSB					0x2
+#define PALMAS_PRODUCT_ID_MSB					0x3
+
+/* Bit definitions for VENDOR_ID_LSB */
+#define PALMAS_VENDOR_ID_LSB_VENDOR_ID_MASK			0xff
+#define PALMAS_VENDOR_ID_LSB_VENDOR_ID_SHIFT			0
+
+/* Bit definitions for VENDOR_ID_MSB */
+#define PALMAS_VENDOR_ID_MSB_VENDOR_ID_MASK			0xff
+#define PALMAS_VENDOR_ID_MSB_VENDOR_ID_SHIFT			0
+
+/* Bit definitions for PRODUCT_ID_LSB */
+#define PALMAS_PRODUCT_ID_LSB_PRODUCT_ID_MASK			0xff
+#define PALMAS_PRODUCT_ID_LSB_PRODUCT_ID_SHIFT			0
+
+/* Bit definitions for PRODUCT_ID_MSB */
+#define PALMAS_PRODUCT_ID_MSB_PRODUCT_ID_MASK			0xff
+#define PALMAS_PRODUCT_ID_MSB_PRODUCT_ID_SHIFT			0
+
 /* Registers for function USB_OTG */
 #define PALMAS_USB_WAKEUP					0x3
 #define PALMAS_USB_VBUS_CTRL_SET				0x4
@@ -2771,6 +2802,13 @@ enum usb_irq_events {
 #define PALMAS_GPADC_SMPS_VSEL_MONITORING_SMPS_VSEL_MONITORING_MASK	0x7f
 #define PALMAS_GPADC_SMPS_VSEL_MONITORING_SMPS_VSEL_MONITORING_SHIFT	0
 
+/* Registers for function DESIGNREV */
+#define PALMAS_DESIGNREV					0x0
+
+/* Bit definitions for DESIGNREV */
+#define PALMAS_DESIGNREV_DESIGNREV_MASK				0x0f
+#define PALMAS_DESIGNREV_DESIGNREV_SHIFT			0
+
 /* Registers for function GPADC */
 #define PALMAS_GPADC_TRIM1					0x0
 #define PALMAS_GPADC_TRIM2					0x1
-- 
1.7.0.4


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

* Re: [PATCH 2/2] mfd: palmas add variant and OTP detection
  2013-02-22  0:52 ` [PATCH 2/2] mfd: palmas add variant and OTP detection Ian Lartey
@ 2013-02-22 10:30   ` Laxman Dewangan
  2013-02-22 15:52     ` Ian Lartey
  0 siblings, 1 reply; 5+ messages in thread
From: Laxman Dewangan @ 2013-02-22 10:30 UTC (permalink / raw)
  To: Ian Lartey
  Cc: linux-kernel@vger.kernel.org, broonie@opensource.wolfsonmicro.com,
	lrg@ti.com, sameo@linux.intel.com, Graeme Gregory

On Friday 22 February 2013 06:22 AM, Ian Lartey wrote:
> From: Graeme Gregory <gg@slimlogic.co.uk>
>
> Read the chip varient and the OTP information from the chip and display
> this on probe to aid in debugging of issues.
>

>   
> +	/* Read varient info from the device */
> +	slave = PALMAS_BASE_TO_SLAVE(PALMAS_ID_BASE);
> +	addr = PALMAS_BASE_TO_REG(PALMAS_ID_BASE, PALMAS_PRODUCT_ID_LSB);
> +	ret = regmap_read(palmas->regmap[slave], addr, &reg);
> +	if (ret < 0) {
> +		dev_err(palmas->dev, "Unable to read ID err: %d\n", ret);
> +		goto err;
> +	}
> +

Can you please use the api palmas_* for reading register which I added 
recently. This will reduce the calc of slave and addr and done in single 
call?
Same of following code also.


Also can we move all these new code to one function where we read id and 
diaplay. To keep probe() smaller.


> +	palmas->id = reg;
> +
> +	slave = PALMAS_BASE_TO_SLAVE(PALMAS_ID_BASE);
> +	addr = PALMAS_BASE_TO_REG(PALMAS_ID_BASE, PALMAS_PRODUCT_ID_MSB);
> +	ret = regmap_read(palmas->regmap[slave], addr, &reg);
> +	if (ret < 0) {
> +		dev_err(palmas->dev, "Unable to read ID err: %d\n", ret);
> +		goto err;
> +	}
> +
> +	palmas->id |= reg << 8;

Is it possible to change variable name id to product_id and then update 
to have more meaningful name?
We can add for vendor_id also if require.

> +
> +	dev_info(palmas->dev, "Product ID %x\n", palmas->id);
> +
> +	slave = PALMAS_BASE_TO_SLAVE(PALMAS_DESIGNREV_BASE);
> +	addr = PALMAS_BASE_TO_REG(PALMAS_DESIGNREV_BASE, PALMAS_DESIGNREV);
> +	ret = regmap_read(palmas->regmap[slave], addr, &reg);
> +	if (ret < 0) {
> +		dev_err(palmas->dev, "Unable to read DESIGNREV err: %d\n", ret);
> +		goto err;
> +	}
> +
> +	palmas->designrev = reg & PALMAS_DESIGNREV_DESIGNREV_MASK;
> +
> +	dev_info(palmas->dev, "Product Design Rev %x\n", palmas->designrev);
> +
> +	slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
> +	addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE, PALMAS_SW_REVISION);
> +	ret = regmap_read(palmas->regmap[slave], addr, &reg);
> +	if (ret < 0) {
> +		dev_err(palmas->dev, "Unable to read SW_REVISION err: %d\n",
> +				ret);
> +		goto err;
> +	}
> +
> +	palmas->sw_revision = reg;
> +
> +	dev_info(palmas->dev, "Product SW Rev %x\n", palmas->sw_revision);
> +


Here designrev also says the ES version and sw revision says the OTP SW 
revision.
TI has make the design revision as ES1.0, ES2.0, ES2.1, ES2.2 like this 
and other technical names are 0xA0, 0xB0, 0xB1, 0xB2 etc.

Probably I will add this in follow on patch becasue we have some errata 
which we need to implement based on the version number.





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

* Re: [PATCH 1/2] regulator: palmas fix SMPS no voltages
  2013-02-22  0:52 [PATCH 1/2] regulator: palmas fix SMPS no voltages Ian Lartey
  2013-02-22  0:52 ` [PATCH 2/2] mfd: palmas add variant and OTP detection Ian Lartey
@ 2013-02-22 10:41 ` Laxman Dewangan
  1 sibling, 0 replies; 5+ messages in thread
From: Laxman Dewangan @ 2013-02-22 10:41 UTC (permalink / raw)
  To: Ian Lartey
  Cc: linux-kernel@vger.kernel.org, broonie@opensource.wolfsonmicro.com,
	lrg@ti.com, sameo@linux.intel.com, Graeme Gregory

On Friday 22 February 2013 06:22 AM, Ian Lartey wrote:
> From: Graeme Gregory <gg@slimlogic.co.uk>
>
> Number of voltages for SMPS regulators was off by one.
>
> Signed-off-by: Graeme Gregory <gg@slimlogic.co.uk>
> Signed-off-by: Ian Lartey <ian@slimlogic.co.uk>
> ---
>   drivers/regulator/palmas-regulator.c |    3 ++-
>   1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
> index cde13bb..39cf146 100644
> --- a/drivers/regulator/palmas-regulator.c
> +++ b/drivers/regulator/palmas-regulator.c
> @@ -4,6 +4,7 @@
>    * Copyright 2011-2012 Texas Instruments Inc.
>    *
>    * Author: Graeme Gregory <gg@slimlogic.co.uk>
> + * Author: Ian Lartey <ian@slimlogic.co.uk>
>    *
>    *  This program is free software; you can redistribute it and/or modify it
>    *  under  the terms of the GNU General  Public License as published by the
> @@ -156,7 +157,7 @@ static const struct regs_info palmas_regs_info[] = {
>    *
>    * So they are basically (maxV-minV)/stepV
>    */
> -#define PALMAS_SMPS_NUM_VOLTAGES	116
> +#define PALMAS_SMPS_NUM_VOLTAGES	117

Yes, if we keep one for  0.5V and one for 1.65 the it becomes 117 
including off.

Acked-by: Laxman Dewangan <ldewangan@nvidia.com>

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

* Re: [PATCH 2/2] mfd: palmas add variant and OTP detection
  2013-02-22 10:30   ` Laxman Dewangan
@ 2013-02-22 15:52     ` Ian Lartey
  0 siblings, 0 replies; 5+ messages in thread
From: Ian Lartey @ 2013-02-22 15:52 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: linux-kernel@vger.kernel.org, broonie@opensource.wolfsonmicro.com,
	lrg@ti.com, sameo@linux.intel.com, Graeme Gregory

On 22/02/13 10:30, Laxman Dewangan wrote:
> On Friday 22 February 2013 06:22 AM, Ian Lartey wrote:
>> From: Graeme Gregory <gg@slimlogic.co.uk>
>>
>> Read the chip varient and the OTP information from the chip and display
>> this on probe to aid in debugging of issues.
>>
>
>> +    /* Read varient info from the device */
>> +    slave = PALMAS_BASE_TO_SLAVE(PALMAS_ID_BASE);
>> +    addr = PALMAS_BASE_TO_REG(PALMAS_ID_BASE, PALMAS_PRODUCT_ID_LSB);
>> +    ret = regmap_read(palmas->regmap[slave], addr, &reg);
>> +    if (ret < 0) {
>> +        dev_err(palmas->dev, "Unable to read ID err: %d\n", ret);
>> +        goto err;
>> +    }
>> +
>
> Can you please use the api palmas_* for reading register which I added
> recently. This will reduce the calc of slave and addr and done in single
> call?
> Same of following code also.

Will do.
>
>
> Also can we move all these new code to one function where we read id and
> diaplay. To keep probe() smaller.

Yes, I'll do that too.
>
>
>> +    palmas->id = reg;
>> +
>> +    slave = PALMAS_BASE_TO_SLAVE(PALMAS_ID_BASE);
>> +    addr = PALMAS_BASE_TO_REG(PALMAS_ID_BASE, PALMAS_PRODUCT_ID_MSB);
>> +    ret = regmap_read(palmas->regmap[slave], addr, &reg);
>> +    if (ret < 0) {
>> +        dev_err(palmas->dev, "Unable to read ID err: %d\n", ret);
>> +        goto err;
>> +    }
>> +
>> +    palmas->id |= reg << 8;
>
> Is it possible to change variable name id to product_id and then update
> to have more meaningful name?
> We can add for vendor_id also if require.

The rename of id to product_id is fine, if this what you mean by
"update to have a more meaningful name" then I agree.
Though if you wish for a additional change, I am not sure what the 
additional change is.

>
>> +
>> +    dev_info(palmas->dev, "Product ID %x\n", palmas->id);
>> +
>> +    slave = PALMAS_BASE_TO_SLAVE(PALMAS_DESIGNREV_BASE);
>> +    addr = PALMAS_BASE_TO_REG(PALMAS_DESIGNREV_BASE, PALMAS_DESIGNREV);
>> +    ret = regmap_read(palmas->regmap[slave], addr, &reg);
>> +    if (ret < 0) {
>> +        dev_err(palmas->dev, "Unable to read DESIGNREV err: %d\n", ret);
>> +        goto err;
>> +    }
>> +
>> +    palmas->designrev = reg & PALMAS_DESIGNREV_DESIGNREV_MASK;
>> +
>> +    dev_info(palmas->dev, "Product Design Rev %x\n", palmas->designrev);
>> +
>> +    slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE);
>> +    addr = PALMAS_BASE_TO_REG(PALMAS_PMU_CONTROL_BASE,
>> PALMAS_SW_REVISION);
>> +    ret = regmap_read(palmas->regmap[slave], addr, &reg);
>> +    if (ret < 0) {
>> +        dev_err(palmas->dev, "Unable to read SW_REVISION err: %d\n",
>> +                ret);
>> +        goto err;
>> +    }
>> +
>> +    palmas->sw_revision = reg;
>> +
>> +    dev_info(palmas->dev, "Product SW Rev %x\n", palmas->sw_revision);
>> +
>
>
> Here designrev also says the ES version and sw revision says the OTP SW
> revision.
> TI has make the design revision as ES1.0, ES2.0, ES2.1, ES2.2 like this
> and other technical names are 0xA0, 0xB0, 0xB1, 0xB2 etc.
>
> Probably I will add this in follow on patch becasue we have some errata
> which we need to implement based on the version number.

OK, I'll not make this change in favour of your later patch.
>
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


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

end of thread, other threads:[~2013-02-22 15:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-22  0:52 [PATCH 1/2] regulator: palmas fix SMPS no voltages Ian Lartey
2013-02-22  0:52 ` [PATCH 2/2] mfd: palmas add variant and OTP detection Ian Lartey
2013-02-22 10:30   ` Laxman Dewangan
2013-02-22 15:52     ` Ian Lartey
2013-02-22 10:41 ` [PATCH 1/2] regulator: palmas fix SMPS no voltages Laxman Dewangan

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