aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/fixed.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2014-06-08 02:24:07 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2014-06-08 02:24:07 -0400
commita292241cccb7e20e8b997a9a44177e7c98141859 (patch)
treea0b0bb95e7dce3233a2d8b203f9e326cdec7a00e /drivers/regulator/fixed.c
parentd49cb7aeebb974713f9f7ab2991352d3050b095b (diff)
parent68807a0c2015cb40df4869e16651f0ce5cc14d52 (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.c46
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
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} 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
230static struct platform_driver regulator_fixed_voltage_driver = { 211static 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,