regulator: tps80031: Check configuraton for LDO2-Track mode
Laxman Dewangan [Thu, 17 Nov 2011 07:01:40 +0000 (12:01 +0530)]
Some of the values are not supported in the LDO2 configuration
when using in track mode due to hw issue in tps80031 and
tps80032-ES1.0.
Adding proper check before configuring the LDO2 in this case.

bug 898613

Reviewed-on: http://git-master/r/65441
(cherry picked from commit 58e3672102825b662ea904b46b6c1efbf639365b)

Change-Id: I4e63a932d32c7cb2d13a07611acfa0b7dae649cc
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/66327
Reviewed-by: Lokesh Pathak <lpathak@nvidia.com>
Tested-by: Lokesh Pathak <lpathak@nvidia.com>

Rebase-Id: R18c7e415b604271267523d5652ea4e50b58c91bf

drivers/mfd/tps80031.c
include/linux/mfd/tps80031.h

index 094adaa..1cffa45 100644 (file)
@@ -198,6 +198,7 @@ struct tps80031_client {
 struct tps80031 {
        struct device           *dev;
        unsigned long           chip_info;
+       int                     es_version;
 
        struct gpio_chip        gpio;
        struct irq_chip         irq_chip;
@@ -484,6 +485,13 @@ unsigned long tps80031_get_chip_info(struct device *dev)
 }
 EXPORT_SYMBOL_GPL(tps80031_get_chip_info);
 
+int tps80031_get_pmu_version(struct device *dev)
+{
+       struct tps80031 *tps80031 = dev_get_drvdata(dev);
+       return tps80031->es_version;
+}
+EXPORT_SYMBOL_GPL(tps80031_get_pmu_version);
+
 static struct tps80031 *tps80031_dev;
 int tps80031_power_off(void)
 {
@@ -1009,7 +1017,8 @@ static int dbg_tps_show(struct seq_file *s, void *unused)
        print_regs("MASK_PH Regs",   s, SLAVE_ID1, 0x20, 0x21);
        print_regs("PMC MISC Regs",  s, SLAVE_ID1, 0xE0, 0xEF);
        print_regs("CONT_STATE",     s, SLAVE_ID2, 0xE0, 0xE4);
-       print_regs("VERNUM Regs",    s, SLAVE_ID1, 0x87, 0x87);
+       print_regs("VERNUM Regs",    s, SLAVE_ID3, 0x87, 0x87);
+       print_regs("EEPROM Regs",    s, SLAVE_ID3, 0xDF, 0xDF);
        print_regs("CHARGE Regs",    s, SLAVE_ID2, 0xDA, 0xF5);
        return 0;
 }
@@ -1099,6 +1108,7 @@ static int __devinit tps80031_i2c_probe(struct i2c_client *client,
        if (tps80031 == NULL)
                return -ENOMEM;
 
+       tps80031->es_version = jtag_ver;
        tps80031->dev = &client->dev;
        i2c_set_clientdata(client, tps80031);
        tps80031->chip_info = id->driver_data;
index 0be3424..ef5502c 100644 (file)
@@ -186,4 +186,6 @@ extern unsigned long tps80031_get_chip_info(struct device *dev);
 
 extern int tps80031_gpadc_conversion(int channle_no);
 
+extern int tps80031_get_pmu_version(struct device *dev);
+
 #endif /*__LINUX_MFD_TPS80031_H */