Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: fixed: update to devm_* API

Update the code to use devm_* API so that driver core will manage
resources.

Signed-off-by: Manish Badarkhe <badarkhe.manish@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>

authored by

Manish Badarkhe and committed by
Mark Brown
84d0ffbe e31108ca

+12 -30
+12 -30
drivers/regulator/fixed.c
··· 132 132 GFP_KERNEL); 133 133 if (drvdata == NULL) { 134 134 dev_err(&pdev->dev, "Failed to allocate device data\n"); 135 - ret = -ENOMEM; 136 - goto err; 135 + return -ENOMEM; 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 141 if (drvdata->desc.name == NULL) { 141 142 dev_err(&pdev->dev, "Failed to allocate supply name\n"); 142 - ret = -ENOMEM; 143 - goto err; 143 + return -ENOMEM; 144 144 } 145 145 drvdata->desc.type = REGULATOR_VOLTAGE; 146 146 drvdata->desc.owner = THIS_MODULE; ··· 149 149 drvdata->desc.enable_time = config->startup_delay; 150 150 151 151 if (config->input_supply) { 152 - drvdata->desc.supply_name = kstrdup(config->input_supply, 153 - GFP_KERNEL); 152 + drvdata->desc.supply_name = devm_kstrdup(&pdev->dev, 153 + config->input_supply, 154 + GFP_KERNEL); 154 155 if (!drvdata->desc.supply_name) { 155 156 dev_err(&pdev->dev, 156 157 "Failed to allocate input supply\n"); 157 - ret = -ENOMEM; 158 - goto err_name; 158 + return -ENOMEM; 159 159 } 160 160 } 161 161 ··· 186 186 cfg.driver_data = drvdata; 187 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 191 if (IS_ERR(drvdata->dev)) { 191 192 ret = PTR_ERR(drvdata->dev); 192 193 dev_err(&pdev->dev, "Failed to register regulator: %d\n", ret); 193 - goto err_input; 194 + return ret; 194 195 } 195 196 196 197 platform_set_drvdata(pdev, drvdata); 197 198 198 199 dev_dbg(&pdev->dev, "%s supplying %duV\n", drvdata->desc.name, 199 200 drvdata->desc.fixed_uV); 200 - 201 - 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 201 219 202 return 0; 220 203 } ··· 212 229 213 230 static struct platform_driver regulator_fixed_voltage_driver = { 214 231 .probe = reg_fixed_voltage_probe, 215 - .remove = reg_fixed_voltage_remove, 216 232 .driver = { 217 233 .name = "reg-fixed-voltage", 218 234 .owner = THIS_MODULE,