diff options
Diffstat (limited to 'drivers/regulator/core.c')
| -rw-r--r-- | drivers/regulator/core.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index a3c3785901f5..496002efd961 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3516,12 +3516,17 @@ regulator_register(const struct regulator_desc *regulator_desc,  		return ERR_PTR(-EINVAL);  	} -	init_data = config->init_data; -  	rdev = kzalloc(sizeof(struct regulator_dev), GFP_KERNEL);  	if (rdev == NULL)  		return ERR_PTR(-ENOMEM); +	init_data = regulator_of_get_init_data(dev, regulator_desc, +					       &rdev->dev.of_node); +	if (!init_data) { +		init_data = config->init_data; +		rdev->dev.of_node = of_node_get(config->of_node); +	} +  	mutex_lock(®ulator_list_mutex);  	mutex_init(&rdev->mutex); @@ -3548,7 +3553,6 @@ regulator_register(const struct regulator_desc *regulator_desc,  	/* register with sysfs */  	rdev->dev.class = ®ulator_class; -	rdev->dev.of_node = of_node_get(config->of_node);  	rdev->dev.parent = dev;  	dev_set_name(&rdev->dev, "regulator.%d",  		     atomic_inc_return(®ulator_no) - 1);  | 
