diff options
| -rw-r--r-- | drivers/regulator/anatop-regulator.c | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/drivers/regulator/anatop-regulator.c b/drivers/regulator/anatop-regulator.c index a0041447ef00..3d4997aede1d 100644 --- a/drivers/regulator/anatop-regulator.c +++ b/drivers/regulator/anatop-regulator.c | |||
| @@ -122,8 +122,7 @@ static int anatop_regulator_probe(struct platform_device *pdev) | |||
| 122 | if (!sreg) | 122 | if (!sreg) |
| 123 | return -ENOMEM; | 123 | return -ENOMEM; |
| 124 | sreg->initdata = initdata; | 124 | sreg->initdata = initdata; |
| 125 | sreg->name = kstrdup(of_get_property(np, "regulator-name", NULL), | 125 | sreg->name = of_get_property(np, "regulator-name", NULL); |
| 126 | GFP_KERNEL); | ||
| 127 | rdesc = &sreg->rdesc; | 126 | rdesc = &sreg->rdesc; |
| 128 | memset(rdesc, 0, sizeof(*rdesc)); | 127 | memset(rdesc, 0, sizeof(*rdesc)); |
| 129 | rdesc->name = sreg->name; | 128 | rdesc->name = sreg->name; |
| @@ -143,37 +142,37 @@ static int anatop_regulator_probe(struct platform_device *pdev) | |||
| 143 | &sreg->control_reg); | 142 | &sreg->control_reg); |
| 144 | if (ret) { | 143 | if (ret) { |
| 145 | dev_err(dev, "no anatop-reg-offset property set\n"); | 144 | dev_err(dev, "no anatop-reg-offset property set\n"); |
| 146 | goto anatop_probe_end; | 145 | return ret; |
| 147 | } | 146 | } |
| 148 | ret = of_property_read_u32(np, "anatop-vol-bit-width", | 147 | ret = of_property_read_u32(np, "anatop-vol-bit-width", |
| 149 | &sreg->vol_bit_width); | 148 | &sreg->vol_bit_width); |
| 150 | if (ret) { | 149 | if (ret) { |
| 151 | dev_err(dev, "no anatop-vol-bit-width property set\n"); | 150 | dev_err(dev, "no anatop-vol-bit-width property set\n"); |
| 152 | goto anatop_probe_end; | 151 | return ret; |
| 153 | } | 152 | } |
| 154 | ret = of_property_read_u32(np, "anatop-vol-bit-shift", | 153 | ret = of_property_read_u32(np, "anatop-vol-bit-shift", |
| 155 | &sreg->vol_bit_shift); | 154 | &sreg->vol_bit_shift); |
| 156 | if (ret) { | 155 | if (ret) { |
| 157 | dev_err(dev, "no anatop-vol-bit-shift property set\n"); | 156 | dev_err(dev, "no anatop-vol-bit-shift property set\n"); |
| 158 | goto anatop_probe_end; | 157 | return ret; |
| 159 | } | 158 | } |
| 160 | ret = of_property_read_u32(np, "anatop-min-bit-val", | 159 | ret = of_property_read_u32(np, "anatop-min-bit-val", |
| 161 | &sreg->min_bit_val); | 160 | &sreg->min_bit_val); |
| 162 | if (ret) { | 161 | if (ret) { |
| 163 | dev_err(dev, "no anatop-min-bit-val property set\n"); | 162 | dev_err(dev, "no anatop-min-bit-val property set\n"); |
| 164 | goto anatop_probe_end; | 163 | return ret; |
| 165 | } | 164 | } |
| 166 | ret = of_property_read_u32(np, "anatop-min-voltage", | 165 | ret = of_property_read_u32(np, "anatop-min-voltage", |
| 167 | &sreg->min_voltage); | 166 | &sreg->min_voltage); |
| 168 | if (ret) { | 167 | if (ret) { |
| 169 | dev_err(dev, "no anatop-min-voltage property set\n"); | 168 | dev_err(dev, "no anatop-min-voltage property set\n"); |
| 170 | goto anatop_probe_end; | 169 | return ret; |
| 171 | } | 170 | } |
| 172 | ret = of_property_read_u32(np, "anatop-max-voltage", | 171 | ret = of_property_read_u32(np, "anatop-max-voltage", |
| 173 | &sreg->max_voltage); | 172 | &sreg->max_voltage); |
| 174 | if (ret) { | 173 | if (ret) { |
| 175 | dev_err(dev, "no anatop-max-voltage property set\n"); | 174 | dev_err(dev, "no anatop-max-voltage property set\n"); |
| 176 | goto anatop_probe_end; | 175 | return ret; |
| 177 | } | 176 | } |
| 178 | 177 | ||
| 179 | /* read LDO ramp up setting, only for core reg */ | 178 | /* read LDO ramp up setting, only for core reg */ |
| @@ -204,27 +203,11 @@ static int anatop_regulator_probe(struct platform_device *pdev) | |||
| 204 | if (IS_ERR(rdev)) { | 203 | if (IS_ERR(rdev)) { |
| 205 | dev_err(dev, "failed to register %s\n", | 204 | dev_err(dev, "failed to register %s\n", |
| 206 | rdesc->name); | 205 | rdesc->name); |
| 207 | ret = PTR_ERR(rdev); | 206 | return PTR_ERR(rdev); |
| 208 | goto anatop_probe_end; | ||
| 209 | } | 207 | } |
| 210 | 208 | ||
| 211 | platform_set_drvdata(pdev, rdev); | 209 | platform_set_drvdata(pdev, rdev); |
| 212 | 210 | ||
| 213 | anatop_probe_end: | ||
| 214 | if (ret) | ||
| 215 | kfree(sreg->name); | ||
| 216 | |||
| 217 | return ret; | ||
| 218 | } | ||
| 219 | |||
| 220 | static int anatop_regulator_remove(struct platform_device *pdev) | ||
| 221 | { | ||
| 222 | struct regulator_dev *rdev = platform_get_drvdata(pdev); | ||
| 223 | struct anatop_regulator *sreg = rdev_get_drvdata(rdev); | ||
| 224 | const char *name = sreg->name; | ||
| 225 | |||
| 226 | kfree(name); | ||
| 227 | |||
| 228 | return 0; | 211 | return 0; |
| 229 | } | 212 | } |
| 230 | 213 | ||
| @@ -240,7 +223,6 @@ static struct platform_driver anatop_regulator_driver = { | |||
| 240 | .of_match_table = of_anatop_regulator_match_tbl, | 223 | .of_match_table = of_anatop_regulator_match_tbl, |
| 241 | }, | 224 | }, |
| 242 | .probe = anatop_regulator_probe, | 225 | .probe = anatop_regulator_probe, |
| 243 | .remove = anatop_regulator_remove, | ||
| 244 | }; | 226 | }; |
| 245 | 227 | ||
| 246 | static int __init anatop_regulator_init(void) | 228 | static int __init anatop_regulator_init(void) |
