max8903: store pointer to pdata instead of copying it.
authorChris Lapa <chris@lapa.com.au>
Fri, 24 Jun 2016 02:26:07 +0000 (12:26 +1000)
committerSebastian Reichel <sre@kernel.org>
Tue, 28 Jun 2016 18:05:41 +0000 (20:05 +0200)
Stores pointer to pdata because it easily allows pdata to reference
either platform data or in the future device tree data.

Signed-off-by: Chris Lapa <chris@lapa.com.au>
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
drivers/power/max8903_charger.c

index 17876caf31e5d7e8cba3405c7a037e436e52ec75..0a5b0e142788dfc09ee1efb10430784867fe2707 100644 (file)
@@ -29,7 +29,7 @@
 #include <linux/power/max8903_charger.h>
 
 struct max8903_data {
-       struct max8903_pdata pdata;
+       struct max8903_pdata *pdata;
        struct device *dev;
        struct power_supply *psy;
        struct power_supply_desc psy_desc;
@@ -53,8 +53,8 @@ static int max8903_get_property(struct power_supply *psy,
        switch (psp) {
        case POWER_SUPPLY_PROP_STATUS:
                val->intval = POWER_SUPPLY_STATUS_UNKNOWN;
-               if (data->pdata.chg) {
-                       if (gpio_get_value(data->pdata.chg) == 0)
+               if (data->pdata->chg) {
+                       if (gpio_get_value(data->pdata->chg) == 0)
                                val->intval = POWER_SUPPLY_STATUS_CHARGING;
                        else if (data->usb_in || data->ta_in)
                                val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING;
@@ -81,7 +81,7 @@ static int max8903_get_property(struct power_supply *psy,
 static irqreturn_t max8903_dcin(int irq, void *_data)
 {
        struct max8903_data *data = _data;
-       struct max8903_pdata *pdata = &data->pdata;
+       struct max8903_pdata *pdata = data->pdata;
        bool ta_in;
        enum power_supply_type old_type;
 
@@ -122,7 +122,7 @@ static irqreturn_t max8903_dcin(int irq, void *_data)
 static irqreturn_t max8903_usbin(int irq, void *_data)
 {
        struct max8903_data *data = _data;
-       struct max8903_pdata *pdata = &data->pdata;
+       struct max8903_pdata *pdata = data->pdata;
        bool usb_in;
        enum power_supply_type old_type;
 
@@ -161,7 +161,7 @@ static irqreturn_t max8903_usbin(int irq, void *_data)
 static irqreturn_t max8903_fault(int irq, void *_data)
 {
        struct max8903_data *data = _data;
-       struct max8903_pdata *pdata = &data->pdata;
+       struct max8903_pdata *pdata = data->pdata;
        bool fault;
 
        fault = gpio_get_value(pdata->flt) ? false : true;
@@ -190,12 +190,18 @@ static int max8903_probe(struct platform_device *pdev)
        int ta_in = 0;
        int usb_in = 0;
 
+       if (pdata == NULL) {
+               dev_err(dev, "No platform data.\n");
+               return -EINVAL;
+       }
+
        data = devm_kzalloc(dev, sizeof(struct max8903_data), GFP_KERNEL);
        if (data == NULL) {
                dev_err(dev, "Cannot allocate memory.\n");
                return -ENOMEM;
        }
-       memcpy(&data->pdata, pdata, sizeof(struct max8903_pdata));
+
+       data->pdata = pdev->dev.platform_data;
        data->dev = dev;
        platform_set_drvdata(pdev, data);