Commit 0c3ae04b authored by Chris Lapa's avatar Chris Lapa Committed by Sebastian Reichel
Browse files

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: default avatarChris Lapa <chris@lapa.com.au>

Reviewed-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: default avatarSebastian Reichel <sre@kernel.org>
parent 411ef2be
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -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);