diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2014-06-08 02:24:07 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2014-06-08 02:24:07 -0400 |
commit | a292241cccb7e20e8b997a9a44177e7c98141859 (patch) | |
tree | a0b0bb95e7dce3233a2d8b203f9e326cdec7a00e /drivers/regulator/fixed.c | |
parent | d49cb7aeebb974713f9f7ab2991352d3050b095b (diff) | |
parent | 68807a0c2015cb40df4869e16651f0ce5cc14d52 (diff) |
Merge branch 'next' into for-linus
Prepare input updates for 3.16.
Diffstat (limited to 'drivers/regulator/fixed.c')
-rw-r--r-- | drivers/regulator/fixed.c | 46 |
1 files changed, 13 insertions, 33 deletions
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c index 5ea64b94341c..c61f7e97e4f8 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c | |||
@@ -130,17 +130,15 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev) | |||
130 | 130 | ||
131 | drvdata = devm_kzalloc(&pdev->dev, sizeof(struct fixed_voltage_data), | 131 | drvdata = devm_kzalloc(&pdev->dev, sizeof(struct fixed_voltage_data), |
132 | GFP_KERNEL); | 132 | GFP_KERNEL); |
133 | if (drvdata == NULL) { | 133 | if (!drvdata) |
134 | dev_err(&pdev->dev, "Failed to allocate device data\n"); | 134 | return -ENOMEM; |
135 | ret = -ENOMEM; | ||
136 | goto err; | ||
137 | } | ||
138 | 135 | ||
139 | drvdata->desc.name = kstrdup(config->supply_name, GFP_KERNEL); | 136 | drvdata->desc.name = devm_kstrdup(&pdev->dev, |
137 | config->supply_name, | ||
138 | GFP_KERNEL); | ||
140 | if (drvdata->desc.name == NULL) { | 139 | if (drvdata->desc.name == NULL) { |
141 | dev_err(&pdev->dev, "Failed to allocate supply name\n"); | 140 | dev_err(&pdev->dev, "Failed to allocate supply name\n"); |
142 | ret = -ENOMEM; | 141 | return -ENOMEM; |
143 | goto err; | ||
144 | } | 142 | } |
145 | drvdata->desc.type = REGULATOR_VOLTAGE; | 143 | drvdata->desc.type = REGULATOR_VOLTAGE; |
146 | drvdata->desc.owner = THIS_MODULE; | 144 | drvdata->desc.owner = THIS_MODULE; |
@@ -149,13 +147,13 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev) | |||
149 | drvdata->desc.enable_time = config->startup_delay; | 147 | drvdata->desc.enable_time = config->startup_delay; |
150 | 148 | ||
151 | if (config->input_supply) { | 149 | if (config->input_supply) { |
152 | drvdata->desc.supply_name = kstrdup(config->input_supply, | 150 | drvdata->desc.supply_name = devm_kstrdup(&pdev->dev, |
153 | GFP_KERNEL); | 151 | config->input_supply, |
152 | GFP_KERNEL); | ||
154 | if (!drvdata->desc.supply_name) { | 153 | if (!drvdata->desc.supply_name) { |
155 | dev_err(&pdev->dev, | 154 | dev_err(&pdev->dev, |
156 | "Failed to allocate input supply\n"); | 155 | "Failed to allocate input supply\n"); |
157 | ret = -ENOMEM; | 156 | return -ENOMEM; |
158 | goto err_name; | ||
159 | } | 157 | } |
160 | } | 158 | } |
161 | 159 | ||
@@ -186,11 +184,12 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev) | |||
186 | cfg.driver_data = drvdata; | 184 | cfg.driver_data = drvdata; |
187 | cfg.of_node = pdev->dev.of_node; | 185 | cfg.of_node = pdev->dev.of_node; |
188 | 186 | ||
189 | drvdata->dev = regulator_register(&drvdata->desc, &cfg); | 187 | drvdata->dev = devm_regulator_register(&pdev->dev, &drvdata->desc, |
188 | &cfg); | ||
190 | if (IS_ERR(drvdata->dev)) { | 189 | if (IS_ERR(drvdata->dev)) { |
191 | ret = PTR_ERR(drvdata->dev); | 190 | ret = PTR_ERR(drvdata->dev); |
192 | dev_err(&pdev->dev, "Failed to register regulator: %d\n", ret); | 191 | dev_err(&pdev->dev, "Failed to register regulator: %d\n", ret); |
193 | goto err_input; | 192 | return ret; |
194 | } | 193 | } |
195 | 194 | ||
196 | platform_set_drvdata(pdev, drvdata); | 195 | platform_set_drvdata(pdev, drvdata); |
@@ -199,24 +198,6 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev) | |||
199 | drvdata->desc.fixed_uV); | 198 | drvdata->desc.fixed_uV); |
200 | 199 | ||
201 | return 0; | 200 | 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 | } | 201 | } |
221 | 202 | ||
222 | #if defined(CONFIG_OF) | 203 | #if defined(CONFIG_OF) |
@@ -229,7 +210,6 @@ MODULE_DEVICE_TABLE(of, fixed_of_match); | |||
229 | 210 | ||
230 | static struct platform_driver regulator_fixed_voltage_driver = { | 211 | static struct platform_driver regulator_fixed_voltage_driver = { |
231 | .probe = reg_fixed_voltage_probe, | 212 | .probe = reg_fixed_voltage_probe, |
232 | .remove = reg_fixed_voltage_remove, | ||
233 | .driver = { | 213 | .driver = { |
234 | .name = "reg-fixed-voltage", | 214 | .name = "reg-fixed-voltage", |
235 | .owner = THIS_MODULE, | 215 | .owner = THIS_MODULE, |