diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-04-30 16:00:10 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-03 08:25:03 -0400 |
commit | b4ec87aedbdae602dbc232915ff5a8c1fad89b36 (patch) | |
tree | 6f7a34aa5f94fc2c751779345989a933ae057927 /drivers/regulator/wm8350-regulator.c | |
parent | 6333e9ddf4787ec42cbb4cbb482168094e54b337 (diff) |
regulator: wm8350: Convert to use core regmap vsel readback
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator/wm8350-regulator.c')
-rw-r--r-- | drivers/regulator/wm8350-regulator.c | 75 |
1 files changed, 19 insertions, 56 deletions
diff --git a/drivers/regulator/wm8350-regulator.c b/drivers/regulator/wm8350-regulator.c index 94e550dc70b6..5ccab371b408 100644 --- a/drivers/regulator/wm8350-regulator.c +++ b/drivers/regulator/wm8350-regulator.c | |||
@@ -405,34 +405,6 @@ static int wm8350_dcdc_set_voltage(struct regulator_dev *rdev, int min_uV, | |||
405 | return 0; | 405 | return 0; |
406 | } | 406 | } |
407 | 407 | ||
408 | static int wm8350_dcdc_get_voltage_sel(struct regulator_dev *rdev) | ||
409 | { | ||
410 | struct wm8350 *wm8350 = rdev_get_drvdata(rdev); | ||
411 | int volt_reg, dcdc = rdev_get_id(rdev); | ||
412 | |||
413 | switch (dcdc) { | ||
414 | case WM8350_DCDC_1: | ||
415 | volt_reg = WM8350_DCDC1_CONTROL; | ||
416 | break; | ||
417 | case WM8350_DCDC_3: | ||
418 | volt_reg = WM8350_DCDC3_CONTROL; | ||
419 | break; | ||
420 | case WM8350_DCDC_4: | ||
421 | volt_reg = WM8350_DCDC4_CONTROL; | ||
422 | break; | ||
423 | case WM8350_DCDC_6: | ||
424 | volt_reg = WM8350_DCDC6_CONTROL; | ||
425 | break; | ||
426 | case WM8350_DCDC_2: | ||
427 | case WM8350_DCDC_5: | ||
428 | default: | ||
429 | return -EINVAL; | ||
430 | } | ||
431 | |||
432 | /* all DCDCs have same mV bits */ | ||
433 | return wm8350_reg_read(wm8350, volt_reg) & WM8350_DC1_VSEL_MASK; | ||
434 | } | ||
435 | |||
436 | static int wm8350_dcdc_list_voltage(struct regulator_dev *rdev, | 408 | static int wm8350_dcdc_list_voltage(struct regulator_dev *rdev, |
437 | unsigned selector) | 409 | unsigned selector) |
438 | { | 410 | { |
@@ -805,32 +777,6 @@ static int wm8350_ldo_set_voltage(struct regulator_dev *rdev, int min_uV, | |||
805 | return 0; | 777 | return 0; |
806 | } | 778 | } |
807 | 779 | ||
808 | static int wm8350_ldo_get_voltage_sel(struct regulator_dev *rdev) | ||
809 | { | ||
810 | struct wm8350 *wm8350 = rdev_get_drvdata(rdev); | ||
811 | int volt_reg, ldo = rdev_get_id(rdev); | ||
812 | |||
813 | switch (ldo) { | ||
814 | case WM8350_LDO_1: | ||
815 | volt_reg = WM8350_LDO1_CONTROL; | ||
816 | break; | ||
817 | case WM8350_LDO_2: | ||
818 | volt_reg = WM8350_LDO2_CONTROL; | ||
819 | break; | ||
820 | case WM8350_LDO_3: | ||
821 | volt_reg = WM8350_LDO3_CONTROL; | ||
822 | break; | ||
823 | case WM8350_LDO_4: | ||
824 | volt_reg = WM8350_LDO4_CONTROL; | ||
825 | break; | ||
826 | default: | ||
827 | return -EINVAL; | ||
828 | } | ||
829 | |||
830 | /* all LDOs have same mV bits */ | ||
831 | return wm8350_reg_read(wm8350, volt_reg) & WM8350_LDO1_VSEL_MASK; | ||
832 | } | ||
833 | |||
834 | static int wm8350_ldo_list_voltage(struct regulator_dev *rdev, | 780 | static int wm8350_ldo_list_voltage(struct regulator_dev *rdev, |
835 | unsigned selector) | 781 | unsigned selector) |
836 | { | 782 | { |
@@ -1225,7 +1171,7 @@ static int wm8350_ldo_is_enabled(struct regulator_dev *rdev) | |||
1225 | 1171 | ||
1226 | static struct regulator_ops wm8350_dcdc_ops = { | 1172 | static struct regulator_ops wm8350_dcdc_ops = { |
1227 | .set_voltage = wm8350_dcdc_set_voltage, | 1173 | .set_voltage = wm8350_dcdc_set_voltage, |
1228 | .get_voltage_sel = wm8350_dcdc_get_voltage_sel, | 1174 | .get_voltage_sel = regulator_get_voltage_sel_regmap, |
1229 | .list_voltage = wm8350_dcdc_list_voltage, | 1175 | .list_voltage = wm8350_dcdc_list_voltage, |
1230 | .enable = wm8350_dcdc_enable, | 1176 | .enable = wm8350_dcdc_enable, |
1231 | .disable = wm8350_dcdc_disable, | 1177 | .disable = wm8350_dcdc_disable, |
@@ -1249,7 +1195,7 @@ static struct regulator_ops wm8350_dcdc2_5_ops = { | |||
1249 | 1195 | ||
1250 | static struct regulator_ops wm8350_ldo_ops = { | 1196 | static struct regulator_ops wm8350_ldo_ops = { |
1251 | .set_voltage = wm8350_ldo_set_voltage, | 1197 | .set_voltage = wm8350_ldo_set_voltage, |
1252 | .get_voltage_sel = wm8350_ldo_get_voltage_sel, | 1198 | .get_voltage_sel = regulator_get_voltage_sel_regmap, |
1253 | .list_voltage = wm8350_ldo_list_voltage, | 1199 | .list_voltage = wm8350_ldo_list_voltage, |
1254 | .enable = wm8350_ldo_enable, | 1200 | .enable = wm8350_ldo_enable, |
1255 | .disable = wm8350_ldo_disable, | 1201 | .disable = wm8350_ldo_disable, |
@@ -1277,6 +1223,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1277 | .irq = WM8350_IRQ_UV_DC1, | 1223 | .irq = WM8350_IRQ_UV_DC1, |
1278 | .type = REGULATOR_VOLTAGE, | 1224 | .type = REGULATOR_VOLTAGE, |
1279 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, | 1225 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, |
1226 | .vsel_reg = WM8350_DCDC1_CONTROL, | ||
1227 | .vsel_mask = WM8350_DC1_VSEL_MASK, | ||
1280 | .owner = THIS_MODULE, | 1228 | .owner = THIS_MODULE, |
1281 | }, | 1229 | }, |
1282 | { | 1230 | { |
@@ -1294,6 +1242,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1294 | .irq = WM8350_IRQ_UV_DC3, | 1242 | .irq = WM8350_IRQ_UV_DC3, |
1295 | .type = REGULATOR_VOLTAGE, | 1243 | .type = REGULATOR_VOLTAGE, |
1296 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, | 1244 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, |
1245 | .vsel_reg = WM8350_DCDC3_CONTROL, | ||
1246 | .vsel_mask = WM8350_DC3_VSEL_MASK, | ||
1297 | .owner = THIS_MODULE, | 1247 | .owner = THIS_MODULE, |
1298 | }, | 1248 | }, |
1299 | { | 1249 | { |
@@ -1303,6 +1253,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1303 | .irq = WM8350_IRQ_UV_DC4, | 1253 | .irq = WM8350_IRQ_UV_DC4, |
1304 | .type = REGULATOR_VOLTAGE, | 1254 | .type = REGULATOR_VOLTAGE, |
1305 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, | 1255 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, |
1256 | .vsel_reg = WM8350_DCDC4_CONTROL, | ||
1257 | .vsel_mask = WM8350_DC4_VSEL_MASK, | ||
1306 | .owner = THIS_MODULE, | 1258 | .owner = THIS_MODULE, |
1307 | }, | 1259 | }, |
1308 | { | 1260 | { |
@@ -1320,6 +1272,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1320 | .irq = WM8350_IRQ_UV_DC6, | 1272 | .irq = WM8350_IRQ_UV_DC6, |
1321 | .type = REGULATOR_VOLTAGE, | 1273 | .type = REGULATOR_VOLTAGE, |
1322 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, | 1274 | .n_voltages = WM8350_DCDC_MAX_VSEL + 1, |
1275 | .vsel_reg = WM8350_DCDC6_CONTROL, | ||
1276 | .vsel_mask = WM8350_DC6_VSEL_MASK, | ||
1323 | .owner = THIS_MODULE, | 1277 | .owner = THIS_MODULE, |
1324 | }, | 1278 | }, |
1325 | { | 1279 | { |
@@ -1329,6 +1283,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1329 | .irq = WM8350_IRQ_UV_LDO1, | 1283 | .irq = WM8350_IRQ_UV_LDO1, |
1330 | .type = REGULATOR_VOLTAGE, | 1284 | .type = REGULATOR_VOLTAGE, |
1331 | .n_voltages = WM8350_LDO1_VSEL_MASK + 1, | 1285 | .n_voltages = WM8350_LDO1_VSEL_MASK + 1, |
1286 | .vsel_reg = WM8350_LDO1_CONTROL, | ||
1287 | .vsel_mask = WM8350_LDO1_VSEL_MASK, | ||
1332 | .owner = THIS_MODULE, | 1288 | .owner = THIS_MODULE, |
1333 | }, | 1289 | }, |
1334 | { | 1290 | { |
@@ -1338,6 +1294,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1338 | .irq = WM8350_IRQ_UV_LDO2, | 1294 | .irq = WM8350_IRQ_UV_LDO2, |
1339 | .type = REGULATOR_VOLTAGE, | 1295 | .type = REGULATOR_VOLTAGE, |
1340 | .n_voltages = WM8350_LDO2_VSEL_MASK + 1, | 1296 | .n_voltages = WM8350_LDO2_VSEL_MASK + 1, |
1297 | .vsel_reg = WM8350_LDO2_CONTROL, | ||
1298 | .vsel_mask = WM8350_LDO2_VSEL_MASK, | ||
1341 | .owner = THIS_MODULE, | 1299 | .owner = THIS_MODULE, |
1342 | }, | 1300 | }, |
1343 | { | 1301 | { |
@@ -1347,6 +1305,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1347 | .irq = WM8350_IRQ_UV_LDO3, | 1305 | .irq = WM8350_IRQ_UV_LDO3, |
1348 | .type = REGULATOR_VOLTAGE, | 1306 | .type = REGULATOR_VOLTAGE, |
1349 | .n_voltages = WM8350_LDO3_VSEL_MASK + 1, | 1307 | .n_voltages = WM8350_LDO3_VSEL_MASK + 1, |
1308 | .vsel_reg = WM8350_LDO3_CONTROL, | ||
1309 | .vsel_mask = WM8350_LDO3_VSEL_MASK, | ||
1350 | .owner = THIS_MODULE, | 1310 | .owner = THIS_MODULE, |
1351 | }, | 1311 | }, |
1352 | { | 1312 | { |
@@ -1356,6 +1316,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = { | |||
1356 | .irq = WM8350_IRQ_UV_LDO4, | 1316 | .irq = WM8350_IRQ_UV_LDO4, |
1357 | .type = REGULATOR_VOLTAGE, | 1317 | .type = REGULATOR_VOLTAGE, |
1358 | .n_voltages = WM8350_LDO4_VSEL_MASK + 1, | 1318 | .n_voltages = WM8350_LDO4_VSEL_MASK + 1, |
1319 | .vsel_reg = WM8350_LDO4_CONTROL, | ||
1320 | .vsel_mask = WM8350_LDO4_VSEL_MASK, | ||
1359 | .owner = THIS_MODULE, | 1321 | .owner = THIS_MODULE, |
1360 | }, | 1322 | }, |
1361 | { | 1323 | { |
@@ -1429,6 +1391,7 @@ static int wm8350_regulator_probe(struct platform_device *pdev) | |||
1429 | config.dev = &pdev->dev; | 1391 | config.dev = &pdev->dev; |
1430 | config.init_data = pdev->dev.platform_data; | 1392 | config.init_data = pdev->dev.platform_data; |
1431 | config.driver_data = dev_get_drvdata(&pdev->dev); | 1393 | config.driver_data = dev_get_drvdata(&pdev->dev); |
1394 | config.regmap = wm8350->regmap; | ||
1432 | 1395 | ||
1433 | /* register regulator */ | 1396 | /* register regulator */ |
1434 | rdev = regulator_register(&wm8350_reg[pdev->id], &config); | 1397 | rdev = regulator_register(&wm8350_reg[pdev->id], &config); |