diff options
author | Chris Lapa <chris@lapa.com.au> | 2016-06-24 12:26:07 +1000 |
---|---|---|
committer | Sebastian Reichel <sre@kernel.org> | 2016-06-28 20:05:41 +0200 |
commit | 0c3ae04b00f5664b98435b072c1694e62a823e5a (patch) | |
tree | 26ea067e1b790b8bdd23aaeec20d13b21fe6fde7 /drivers/power | |
parent | 411ef2be439abae8e187e1c608b0a8c24a758adc (diff) | |
download | lwn-0c3ae04b00f5664b98435b072c1694e62a823e5a.tar.gz lwn-0c3ae04b00f5664b98435b072c1694e62a823e5a.zip |
max8903: store pointer to pdata instead of copying it.
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>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/max8903_charger.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/power/max8903_charger.c b/drivers/power/max8903_charger.c index 17876caf31e5..0a5b0e142788 100644 --- a/drivers/power/max8903_charger.c +++ b/drivers/power/max8903_charger.c @@ -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); |