diff options
Diffstat (limited to 'drivers/regulator/max8907-regulator.c')
| -rw-r--r-- | drivers/regulator/max8907-regulator.c | 35 | 
1 files changed, 9 insertions, 26 deletions
diff --git a/drivers/regulator/max8907-regulator.c b/drivers/regulator/max8907-regulator.c index 4568c15fa78..9623e9e290b 100644 --- a/drivers/regulator/max8907-regulator.c +++ b/drivers/regulator/max8907-regulator.c @@ -34,7 +34,6 @@  struct max8907_regulator {  	struct regulator_desc desc[MAX8907_NUM_REGULATORS]; -	struct regulator_dev *rdev[MAX8907_NUM_REGULATORS];  };  #define REG_MBATT() \ @@ -231,7 +230,7 @@ static int max8907_regulator_parse_dt(struct platform_device *pdev)  	if (!np)  		return 0; -	regulators = of_find_node_by_name(np, "regulators"); +	regulators = of_get_child_by_name(np, "regulators");  	if (!regulators) {  		dev_err(&pdev->dev, "regulators node not found\n");  		return -EINVAL; @@ -292,10 +291,9 @@ static int max8907_regulator_probe(struct platform_device *pdev)  		return ret;  	pmic = devm_kzalloc(&pdev->dev, sizeof(*pmic), GFP_KERNEL); -	if (!pmic) { -		dev_err(&pdev->dev, "Failed to alloc pmic\n"); +	if (!pmic)  		return -ENOMEM; -	} +  	platform_set_drvdata(pdev, pmic);  	memcpy(pmic->desc, max8907_regulators, sizeof(pmic->desc)); @@ -311,6 +309,8 @@ static int max8907_regulator_probe(struct platform_device *pdev)  	}  	for (i = 0; i < MAX8907_NUM_REGULATORS; i++) { +		struct regulator_dev *rdev; +  		config.dev = pdev->dev.parent;  		if (pdata)  			idata = pdata->init_data[i]; @@ -350,33 +350,17 @@ static int max8907_regulator_probe(struct platform_device *pdev)  				pmic->desc[i].ops = &max8907_out5v_hwctl_ops;  		} -		pmic->rdev[i] = regulator_register(&pmic->desc[i], &config); -		if (IS_ERR(pmic->rdev[i])) { +		rdev = devm_regulator_register(&pdev->dev, +						&pmic->desc[i], &config); +		if (IS_ERR(rdev)) {  			dev_err(&pdev->dev,  				"failed to register %s regulator\n",  				pmic->desc[i].name); -			ret = PTR_ERR(pmic->rdev[i]); -			goto err_unregister_regulator; +			return PTR_ERR(rdev);  		}  	}  	return 0; - -err_unregister_regulator: -	while (--i >= 0) -		regulator_unregister(pmic->rdev[i]); -	return ret; -} - -static int max8907_regulator_remove(struct platform_device *pdev) -{ -	struct max8907_regulator *pmic = platform_get_drvdata(pdev); -	int i; - -	for (i = 0; i < MAX8907_NUM_REGULATORS; i++) -		regulator_unregister(pmic->rdev[i]); - -	return 0;  }  static struct platform_driver max8907_regulator_driver = { @@ -385,7 +369,6 @@ static struct platform_driver max8907_regulator_driver = {  		   .owner = THIS_MODULE,  		   },  	.probe = max8907_regulator_probe, -	.remove = max8907_regulator_remove,  };  static int __init max8907_regulator_init(void)  | 
