aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/palmas-regulator.c
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2013-09-04 02:31:01 -0400
committerMark Brown <broonie@linaro.org>2013-09-16 19:28:42 -0400
commit51c86b3eb80ebe0a35aba5ba3e96b22d61043ad1 (patch)
tree08a089da7107f8f287ab182ef663a4d707cf6d6e /drivers/regulator/palmas-regulator.c
parent8c0b4ab5024c7b7d3498957cdbe4fea151142f7a (diff)
regulator: palmas: Use devm_regulator_register
devm_* simplifies the code. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/regulator/palmas-regulator.c')
-rw-r--r--drivers/regulator/palmas-regulator.c38
1 files changed, 11 insertions, 27 deletions
diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
index 488dfe7ce9a6..6c9670ff6be5 100644
--- a/drivers/regulator/palmas-regulator.c
+++ b/drivers/regulator/palmas-regulator.c
@@ -862,7 +862,7 @@ static int palmas_regulators_probe(struct platform_device *pdev)
862 if (ret < 0) { 862 if (ret < 0) {
863 dev_err(&pdev->dev, 863 dev_err(&pdev->dev,
864 "reading TSTEP reg failed: %d\n", ret); 864 "reading TSTEP reg failed: %d\n", ret);
865 goto err_unregister_regulator; 865 return ret;
866 } 866 }
867 pmic->desc[id].ramp_delay = 867 pmic->desc[id].ramp_delay =
868 palmas_smps_ramp_delay[reg & 0x3]; 868 palmas_smps_ramp_delay[reg & 0x3];
@@ -874,7 +874,7 @@ static int palmas_regulators_probe(struct platform_device *pdev)
874 reg_init = pdata->reg_init[id]; 874 reg_init = pdata->reg_init[id];
875 ret = palmas_smps_init(palmas, id, reg_init); 875 ret = palmas_smps_init(palmas, id, reg_init);
876 if (ret) 876 if (ret)
877 goto err_unregister_regulator; 877 return ret;
878 } 878 }
879 879
880 /* Register the regulators */ 880 /* Register the regulators */
@@ -915,7 +915,7 @@ static int palmas_regulators_probe(struct platform_device *pdev)
915 915
916 ret = palmas_smps_read(pmic->palmas, addr, &reg); 916 ret = palmas_smps_read(pmic->palmas, addr, &reg);
917 if (ret) 917 if (ret)
918 goto err_unregister_regulator; 918 return ret;
919 if (reg & PALMAS_SMPS12_VOLTAGE_RANGE) 919 if (reg & PALMAS_SMPS12_VOLTAGE_RANGE)
920 pmic->range[id] = 1; 920 pmic->range[id] = 1;
921 921
@@ -931,7 +931,7 @@ static int palmas_regulators_probe(struct platform_device *pdev)
931 addr = palmas_regs_info[id].ctrl_addr; 931 addr = palmas_regs_info[id].ctrl_addr;
932 ret = palmas_smps_read(pmic->palmas, addr, &reg); 932 ret = palmas_smps_read(pmic->palmas, addr, &reg);
933 if (ret) 933 if (ret)
934 goto err_unregister_regulator; 934 return ret;
935 pmic->current_reg_mode[id] = reg & 935 pmic->current_reg_mode[id] = reg &
936 PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK; 936 PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
937 } 937 }
@@ -947,13 +947,13 @@ static int palmas_regulators_probe(struct platform_device *pdev)
947 pmic->desc[id].supply_name = palmas_regs_info[id].sname; 947 pmic->desc[id].supply_name = palmas_regs_info[id].sname;
948 config.of_node = palmas_matches[id].of_node; 948 config.of_node = palmas_matches[id].of_node;
949 949
950 rdev = regulator_register(&pmic->desc[id], &config); 950 rdev = devm_regulator_register(&pdev->dev, &pmic->desc[id],
951 &config);
951 if (IS_ERR(rdev)) { 952 if (IS_ERR(rdev)) {
952 dev_err(&pdev->dev, 953 dev_err(&pdev->dev,
953 "failed to register %s regulator\n", 954 "failed to register %s regulator\n",
954 pdev->name); 955 pdev->name);
955 ret = PTR_ERR(rdev); 956 return PTR_ERR(rdev);
956 goto err_unregister_regulator;
957 } 957 }
958 958
959 /* Save regulator for cleanup */ 959 /* Save regulator for cleanup */
@@ -1015,13 +1015,13 @@ static int palmas_regulators_probe(struct platform_device *pdev)
1015 pmic->desc[id].supply_name = palmas_regs_info[id].sname; 1015 pmic->desc[id].supply_name = palmas_regs_info[id].sname;
1016 config.of_node = palmas_matches[id].of_node; 1016 config.of_node = palmas_matches[id].of_node;
1017 1017
1018 rdev = regulator_register(&pmic->desc[id], &config); 1018 rdev = devm_regulator_register(&pdev->dev, &pmic->desc[id],
1019 &config);
1019 if (IS_ERR(rdev)) { 1020 if (IS_ERR(rdev)) {
1020 dev_err(&pdev->dev, 1021 dev_err(&pdev->dev,
1021 "failed to register %s regulator\n", 1022 "failed to register %s regulator\n",
1022 pdev->name); 1023 pdev->name);
1023 ret = PTR_ERR(rdev); 1024 return PTR_ERR(rdev);
1024 goto err_unregister_regulator;
1025 } 1025 }
1026 1026
1027 /* Save regulator for cleanup */ 1027 /* Save regulator for cleanup */
@@ -1039,7 +1039,7 @@ static int palmas_regulators_probe(struct platform_device *pdev)
1039 id, reg_init); 1039 id, reg_init);
1040 if (ret) { 1040 if (ret) {
1041 regulator_unregister(pmic->rdev[id]); 1041 regulator_unregister(pmic->rdev[id]);
1042 goto err_unregister_regulator; 1042 return ret;
1043 } 1043 }
1044 } 1044 }
1045 } 1045 }
@@ -1047,21 +1047,6 @@ static int palmas_regulators_probe(struct platform_device *pdev)
1047 1047
1048 1048
1049 return 0; 1049 return 0;
1050
1051err_unregister_regulator:
1052 while (--id >= 0)
1053 regulator_unregister(pmic->rdev[id]);
1054 return ret;
1055}
1056
1057static int palmas_regulators_remove(struct platform_device *pdev)
1058{
1059 struct palmas_pmic *pmic = platform_get_drvdata(pdev);
1060 int id;
1061
1062 for (id = 0; id < PALMAS_NUM_REGS; id++)
1063 regulator_unregister(pmic->rdev[id]);
1064 return 0;
1065} 1050}
1066 1051
1067static struct of_device_id of_palmas_match_tbl[] = { 1052static struct of_device_id of_palmas_match_tbl[] = {
@@ -1083,7 +1068,6 @@ static struct platform_driver palmas_driver = {
1083 .owner = THIS_MODULE, 1068 .owner = THIS_MODULE,
1084 }, 1069 },
1085 .probe = palmas_regulators_probe, 1070 .probe = palmas_regulators_probe,
1086 .remove = palmas_regulators_remove,
1087}; 1071};
1088 1072
1089static int __init palmas_init(void) 1073static int __init palmas_init(void)