diff options
-rw-r--r-- | drivers/regulator/palmas-regulator.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c index 3b9206224cd1..faa389be7ca3 100644 --- a/drivers/regulator/palmas-regulator.c +++ b/drivers/regulator/palmas-regulator.c | |||
@@ -1467,10 +1467,10 @@ static struct palmas_pmic_driver_data tps65917_ddata = { | |||
1467 | .ldo_register = tps65917_ldo_registration, | 1467 | .ldo_register = tps65917_ldo_registration, |
1468 | }; | 1468 | }; |
1469 | 1469 | ||
1470 | static void palmas_dt_to_pdata(struct device *dev, | 1470 | static int palmas_dt_to_pdata(struct device *dev, |
1471 | struct device_node *node, | 1471 | struct device_node *node, |
1472 | struct palmas_pmic_platform_data *pdata, | 1472 | struct palmas_pmic_platform_data *pdata, |
1473 | struct palmas_pmic_driver_data *ddata) | 1473 | struct palmas_pmic_driver_data *ddata) |
1474 | { | 1474 | { |
1475 | struct device_node *regulators; | 1475 | struct device_node *regulators; |
1476 | u32 prop; | 1476 | u32 prop; |
@@ -1479,7 +1479,7 @@ static void palmas_dt_to_pdata(struct device *dev, | |||
1479 | regulators = of_get_child_by_name(node, "regulators"); | 1479 | regulators = of_get_child_by_name(node, "regulators"); |
1480 | if (!regulators) { | 1480 | if (!regulators) { |
1481 | dev_info(dev, "regulator node not found\n"); | 1481 | dev_info(dev, "regulator node not found\n"); |
1482 | return; | 1482 | return 0; |
1483 | } | 1483 | } |
1484 | 1484 | ||
1485 | ret = of_regulator_match(dev, regulators, ddata->palmas_matches, | 1485 | ret = of_regulator_match(dev, regulators, ddata->palmas_matches, |
@@ -1487,7 +1487,7 @@ static void palmas_dt_to_pdata(struct device *dev, | |||
1487 | of_node_put(regulators); | 1487 | of_node_put(regulators); |
1488 | if (ret < 0) { | 1488 | if (ret < 0) { |
1489 | dev_err(dev, "Error parsing regulator init data: %d\n", ret); | 1489 | dev_err(dev, "Error parsing regulator init data: %d\n", ret); |
1490 | return; | 1490 | return 0; |
1491 | } | 1491 | } |
1492 | 1492 | ||
1493 | for (idx = 0; idx < ddata->max_reg; idx++) { | 1493 | for (idx = 0; idx < ddata->max_reg; idx++) { |
@@ -1500,6 +1500,9 @@ static void palmas_dt_to_pdata(struct device *dev, | |||
1500 | continue; | 1500 | continue; |
1501 | 1501 | ||
1502 | rinit = devm_kzalloc(dev, sizeof(*rinit), GFP_KERNEL); | 1502 | rinit = devm_kzalloc(dev, sizeof(*rinit), GFP_KERNEL); |
1503 | if (!rinit) | ||
1504 | return -ENOMEM; | ||
1505 | |||
1503 | pdata->reg_data[idx] = match->init_data; | 1506 | pdata->reg_data[idx] = match->init_data; |
1504 | pdata->reg_init[idx] = rinit; | 1507 | pdata->reg_init[idx] = rinit; |
1505 | 1508 | ||
@@ -1552,6 +1555,8 @@ static void palmas_dt_to_pdata(struct device *dev, | |||
1552 | } | 1555 | } |
1553 | 1556 | ||
1554 | pdata->ldo6_vibrator = of_property_read_bool(node, "ti,ldo6-vibrator"); | 1557 | pdata->ldo6_vibrator = of_property_read_bool(node, "ti,ldo6-vibrator"); |
1558 | |||
1559 | return 0; | ||
1555 | } | 1560 | } |
1556 | 1561 | ||
1557 | static const struct of_device_id of_palmas_match_tbl[] = { | 1562 | static const struct of_device_id of_palmas_match_tbl[] = { |
@@ -1633,7 +1638,9 @@ static int palmas_regulators_probe(struct platform_device *pdev) | |||
1633 | platform_set_drvdata(pdev, pmic); | 1638 | platform_set_drvdata(pdev, pmic); |
1634 | pmic->palmas->pmic_ddata = driver_data; | 1639 | pmic->palmas->pmic_ddata = driver_data; |
1635 | 1640 | ||
1636 | palmas_dt_to_pdata(&pdev->dev, node, pdata, driver_data); | 1641 | ret = palmas_dt_to_pdata(&pdev->dev, node, pdata, driver_data); |
1642 | if (ret) | ||
1643 | return ret; | ||
1637 | 1644 | ||
1638 | ret = palmas_smps_read(palmas, PALMAS_SMPS_CTRL, ®); | 1645 | ret = palmas_smps_read(palmas, PALMAS_SMPS_CTRL, ®); |
1639 | if (ret) | 1646 | if (ret) |