aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/regulator/fixed.c42
1 files changed, 12 insertions, 30 deletions
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 5ea64b94341c..3c307d62fd31 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -132,15 +132,15 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
132 GFP_KERNEL); 132 GFP_KERNEL);
133 if (drvdata == NULL) { 133 if (drvdata == NULL) {
134 dev_err(&pdev->dev, "Failed to allocate device data\n"); 134 dev_err(&pdev->dev, "Failed to allocate device data\n");
135 ret = -ENOMEM; 135 return -ENOMEM;
136 goto err;
137 } 136 }
138 137
139 drvdata->desc.name = kstrdup(config->supply_name, GFP_KERNEL); 138 drvdata->desc.name = devm_kstrdup(&pdev->dev,
139 config->supply_name,
140 GFP_KERNEL);
140 if (drvdata->desc.name == NULL) { 141 if (drvdata->desc.name == NULL) {
141 dev_err(&pdev->dev, "Failed to allocate supply name\n"); 142 dev_err(&pdev->dev, "Failed to allocate supply name\n");
142 ret = -ENOMEM; 143 return -ENOMEM;
143 goto err;
144 } 144 }
145 drvdata->desc.type = REGULATOR_VOLTAGE; 145 drvdata->desc.type = REGULATOR_VOLTAGE;
146 drvdata->desc.owner = THIS_MODULE; 146 drvdata->desc.owner = THIS_MODULE;
@@ -149,13 +149,13 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
149 drvdata->desc.enable_time = config->startup_delay; 149 drvdata->desc.enable_time = config->startup_delay;
150 150
151 if (config->input_supply) { 151 if (config->input_supply) {
152 drvdata->desc.supply_name = kstrdup(config->input_supply, 152 drvdata->desc.supply_name = devm_kstrdup(&pdev->dev,
153 GFP_KERNEL); 153 config->input_supply,
154 GFP_KERNEL);
154 if (!drvdata->desc.supply_name) { 155 if (!drvdata->desc.supply_name) {
155 dev_err(&pdev->dev, 156 dev_err(&pdev->dev,
156 "Failed to allocate input supply\n"); 157 "Failed to allocate input supply\n");
157 ret = -ENOMEM; 158 return -ENOMEM;
158 goto err_name;
159 } 159 }
160 } 160 }
161 161
@@ -186,11 +186,12 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
186 cfg.driver_data = drvdata; 186 cfg.driver_data = drvdata;
187 cfg.of_node = pdev->dev.of_node; 187 cfg.of_node = pdev->dev.of_node;
188 188
189 drvdata->dev = regulator_register(&drvdata->desc, &cfg); 189 drvdata->dev = devm_regulator_register(&pdev->dev, &drvdata->desc,
190 &cfg);
190 if (IS_ERR(drvdata->dev)) { 191 if (IS_ERR(drvdata->dev)) {
191 ret = PTR_ERR(drvdata->dev); 192 ret = PTR_ERR(drvdata->dev);
192 dev_err(&pdev->dev, "Failed to register regulator: %d\n", ret); 193 dev_err(&pdev->dev, "Failed to register regulator: %d\n", ret);
193 goto err_input; 194 return ret;
194 } 195 }
195 196
196 platform_set_drvdata(pdev, drvdata); 197 platform_set_drvdata(pdev, drvdata);
@@ -199,24 +200,6 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
199 drvdata->desc.fixed_uV); 200 drvdata->desc.fixed_uV);
200 201
201 return 0; 202 return 0;
202
203err_input:
204 kfree(drvdata->desc.supply_name);
205err_name:
206 kfree(drvdata->desc.name);
207err:
208 return ret;
209}
210
211static int reg_fixed_voltage_remove(struct platform_device *pdev)
212{
213 struct fixed_voltage_data *drvdata = platform_get_drvdata(pdev);
214
215 regulator_unregister(drvdata->dev);
216 kfree(drvdata->desc.supply_name);
217 kfree(drvdata->desc.name);
218
219 return 0;
220} 203}
221 204
222#if defined(CONFIG_OF) 205#if defined(CONFIG_OF)
@@ -229,7 +212,6 @@ MODULE_DEVICE_TABLE(of, fixed_of_match);
229 212
230static struct platform_driver regulator_fixed_voltage_driver = { 213static struct platform_driver regulator_fixed_voltage_driver = {
231 .probe = reg_fixed_voltage_probe, 214 .probe = reg_fixed_voltage_probe,
232 .remove = reg_fixed_voltage_remove,
233 .driver = { 215 .driver = {
234 .name = "reg-fixed-voltage", 216 .name = "reg-fixed-voltage",
235 .owner = THIS_MODULE, 217 .owner = THIS_MODULE,