projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge ath-current from ath.git
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
power
/
lp8727_charger.c
diff --git
a/drivers/power/lp8727_charger.c
b/drivers/power/lp8727_charger.c
index 7e741f1d3cd5e392d8a13445daefc2688d861e7d..042fb3dacb461d460817093f61b6b69dc6b62a1d 100644
(file)
--- a/
drivers/power/lp8727_charger.c
+++ b/
drivers/power/lp8727_charger.c
@@
-508,23
+508,23
@@
out:
return param;
}
return param;
}
-static
int
lp8727_parse_dt(struct device *dev)
+static
struct lp8727_platform_data *
lp8727_parse_dt(struct device *dev)
{
struct device_node *np = dev->of_node;
struct device_node *child;
struct lp8727_platform_data *pdata;
const char *type;
{
struct device_node *np = dev->of_node;
struct device_node *child;
struct lp8727_platform_data *pdata;
const char *type;
- /* If charging parameter is not defined, just skip parsing the dt */
- if (of_get_child_count(np) == 0)
- goto out;
-
pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
if (!pdata)
pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
if (!pdata)
- return
-ENOMEM
;
+ return
ERR_PTR(-ENOMEM)
;
of_property_read_u32(np, "debounce-ms", &pdata->debounce_msec);
of_property_read_u32(np, "debounce-ms", &pdata->debounce_msec);
+ /* If charging parameter is not defined, just skip parsing the dt */
+ if (of_get_child_count(np) == 0)
+ return pdata;
+
for_each_child_of_node(np, child) {
of_property_read_string(child, "charger-type", &type);
for_each_child_of_node(np, child) {
of_property_read_string(child, "charger-type", &type);
@@
-535,29
+535,30
@@
static int lp8727_parse_dt(struct device *dev)
pdata->usb = lp8727_parse_charge_pdata(dev, child);
}
pdata->usb = lp8727_parse_charge_pdata(dev, child);
}
- dev->platform_data = pdata;
-out:
- return 0;
+ return pdata;
}
#else
}
#else
-static
int
lp8727_parse_dt(struct device *dev)
+static
struct lp8727_platform_data *
lp8727_parse_dt(struct device *dev)
{
{
- return
0
;
+ return
NULL
;
}
#endif
static int lp8727_probe(struct i2c_client *cl, const struct i2c_device_id *id)
{
struct lp8727_chg *pchg;
}
#endif
static int lp8727_probe(struct i2c_client *cl, const struct i2c_device_id *id)
{
struct lp8727_chg *pchg;
+ struct lp8727_platform_data *pdata;
int ret;
if (!i2c_check_functionality(cl->adapter, I2C_FUNC_SMBUS_I2C_BLOCK))
return -EIO;
if (cl->dev.of_node) {
int ret;
if (!i2c_check_functionality(cl->adapter, I2C_FUNC_SMBUS_I2C_BLOCK))
return -EIO;
if (cl->dev.of_node) {
- ret = lp8727_parse_dt(&cl->dev);
- if (ret)
- return ret;
+ pdata = lp8727_parse_dt(&cl->dev);
+ if (IS_ERR(pdata))
+ return PTR_ERR(pdata);
+ } else {
+ pdata = dev_get_platdata(&cl->dev);
}
pchg = devm_kzalloc(&cl->dev, sizeof(*pchg), GFP_KERNEL);
}
pchg = devm_kzalloc(&cl->dev, sizeof(*pchg), GFP_KERNEL);
@@
-566,7
+567,7
@@
static int lp8727_probe(struct i2c_client *cl, const struct i2c_device_id *id)
pchg->client = cl;
pchg->dev = &cl->dev;
pchg->client = cl;
pchg->dev = &cl->dev;
- pchg->pdata =
cl->dev.platform_
data;
+ pchg->pdata =
p
data;
i2c_set_clientdata(cl, pchg);
mutex_init(&pchg->xfer_lock);
i2c_set_clientdata(cl, pchg);
mutex_init(&pchg->xfer_lock);