diff options
Diffstat (limited to 'drivers/regulator/fixed.c')
-rw-r--r-- | drivers/regulator/fixed.c | 42 |
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 | |||
203 | err_input: | ||
204 | kfree(drvdata->desc.supply_name); | ||
205 | err_name: | ||
206 | kfree(drvdata->desc.name); | ||
207 | err: | ||
208 | return ret; | ||
209 | } | ||
210 | |||
211 | static 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 | ||
230 | static struct platform_driver regulator_fixed_voltage_driver = { | 213 | static 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, |