]> git.karo-electronics.de Git - linux-beck.git/commitdiff
mfd ab8500-gpadc: Introduce new AB version detection
authorMichel JAOUEN <michel.jaouen@stericsson.com>
Thu, 9 Feb 2012 11:06:47 +0000 (12:06 +0100)
committerLee Jones <lee.jones@linaro.org>
Mon, 4 Feb 2013 08:31:49 +0000 (08:31 +0000)
Add support for AB8505 and AB9540

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Maxime Coquelin <maxime.coquelin@stericsson.com>
Signed-off-by: Bengt Jonsson <bengt.g.jonsson@stericsson.com>
Reviewed-by: Rabin VINCENT <rabin.vincent@stericsson.com>
drivers/mfd/ab8500-gpadc.c

index bc0daf3bc93aa7a80ff77ae34b20d2ad1f235e60..61b176fc457b2aa739c46b864ec126cf5b1a2eeb 100644 (file)
@@ -102,10 +102,10 @@ struct adc_cal_data {
 
 /**
  * struct ab8500_gpadc - AB8500 GPADC device information
- * @chip_id                    ABB chip id
  * @dev:                       pointer to the struct device
  * @node:                      a list of AB8500 GPADCs, hence prepared for
                                reentrance
+ * @parent:                    pointer to the struct ab8500
  * @ab8500_gpadc_complete:     pointer to the struct completion, to indicate
  *                             the completion of gpadc conversion
  * @ab8500_gpadc_lock:         structure of type mutex
@@ -114,9 +114,9 @@ struct adc_cal_data {
  * @cal_data                   array of ADC calibration data structs
  */
 struct ab8500_gpadc {
-       u8 chip_id;
        struct device *dev;
        struct list_head node;
+       struct ab8500 *parent;
        struct completion ab8500_gpadc_complete;
        struct mutex ab8500_gpadc_lock;
        struct regulator *regu;
@@ -332,7 +332,7 @@ int ab8500_gpadc_read_raw(struct ab8500_gpadc *gpadc, u8 channel)
                        EN_BUF | EN_ICHAR);
                break;
        case BTEMP_BALL:
-               if (gpadc->chip_id >= AB8500_CUT3P0) {
+               if (!is_ab8500_2p0_or_earlier(gpadc->parent)) {
                        /* Turn on btemp pull-up on ABB 3.0 */
                        ret = abx500_mask_and_set_register_interruptible(
                                gpadc->dev,
@@ -591,6 +591,7 @@ static int ab8500_gpadc_probe(struct platform_device *pdev)
        }
 
        gpadc->dev = &pdev->dev;
+       gpadc->parent = dev_get_drvdata(pdev->dev.parent);
        mutex_init(&gpadc->ab8500_gpadc_lock);
 
        /* Initialize completion used to notify completion of conversion */
@@ -607,14 +608,6 @@ static int ab8500_gpadc_probe(struct platform_device *pdev)
                goto fail;
        }
 
-       /* Get Chip ID of the ABB ASIC  */
-       ret = abx500_get_chip_id(gpadc->dev);
-       if (ret < 0) {
-               dev_err(gpadc->dev, "failed to get chip ID\n");
-               goto fail_irq;
-       }
-       gpadc->chip_id = (u8) ret;
-
        /* VTVout LDO used to power up ab8500-GPADC */
        gpadc->regu = regulator_get(&pdev->dev, "vddadc");
        if (IS_ERR(gpadc->regu)) {