* [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, ®);
+ 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, ®);
+ 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, ®);
+ 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, ®);
+ 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, ®);
> + 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, ®);
> + 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, ®);
> + 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, ®);
> + 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, ®);
>> + 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, ®);
>> + 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, ®);
>> + 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, ®);
>> + 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