diff --git a/drivers/regulator/qpnp-labibb-regulator.c b/drivers/regulator/qpnp-labibb-regulator.c index 47d6d987868c..dad82b43ea6e 100644 --- a/drivers/regulator/qpnp-labibb-regulator.c +++ b/drivers/regulator/qpnp-labibb-regulator.c @@ -1371,7 +1371,6 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb, struct device_node *of_node) { int rc = 0; - struct regulator_init_data *init_data; struct regulator_desc *rdesc; struct regulator_config cfg = {}; u8 val; @@ -1384,12 +1383,6 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb, return -EINVAL; } - init_data = of_get_regulator_init_data(labibb->dev, of_node); - if (!init_data) { - pr_err("unable to get regulator init data for qpnp lab regulator\n"); - return -ENOMEM; - } - rc = of_property_read_u32(of_node, "qcom,qpnp-lab-min-voltage", &(labibb->lab_vreg.min_volt)); if (rc < 0) { @@ -1596,34 +1589,25 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb, } } - if (init_data->constraints.name) { - rdesc = &(labibb->lab_vreg.rdesc); - rdesc->owner = THIS_MODULE; - rdesc->type = REGULATOR_VOLTAGE; - rdesc->ops = &qpnp_lab_ops; - rdesc->name = init_data->constraints.name; + rdesc = &(labibb->lab_vreg.rdesc); + rdesc->owner = THIS_MODULE; + rdesc->type = REGULATOR_VOLTAGE; + rdesc->ops = &qpnp_lab_ops; + rdesc->name = of_node->name; + rdesc->of_match = of_node->name; - cfg.dev = labibb->dev; - cfg.init_data = init_data; - cfg.driver_data = labibb; - cfg.of_node = of_node; + cfg.dev = labibb->dev; + cfg.driver_data = labibb; - init_data->constraints.valid_ops_mask - |= REGULATOR_CHANGE_VOLTAGE | - REGULATOR_CHANGE_STATUS; + labibb->lab_vreg.rdev + = devm_regulator_register(labibb->dev, rdesc, &cfg); + if (IS_ERR(labibb->lab_vreg.rdev)) { + rc = PTR_ERR(labibb->lab_vreg.rdev); + labibb->lab_vreg.rdev = NULL; + pr_err("unable to get regulator init data for qpnp lab regulator, rc = %d\n", + rc); - labibb->lab_vreg.rdev = regulator_register(rdesc, &cfg); - if (IS_ERR(labibb->lab_vreg.rdev)) { - rc = PTR_ERR(labibb->lab_vreg.rdev); - labibb->lab_vreg.rdev = NULL; - pr_err("unable to get regulator init data for qpnp lab regulator, rc = %d\n", - rc); - - return rc; - } - } else { - dev_err(labibb->dev, "qpnp lab regulator name missing\n"); - return -EINVAL; + return rc; } mutex_init(&(labibb->lab_vreg.lab_mutex)); @@ -2060,7 +2044,6 @@ static int register_qpnp_ibb_regulator(struct qpnp_labibb *labibb, struct device_node *of_node) { int rc = 0; - struct regulator_init_data *init_data; struct regulator_desc *rdesc; struct regulator_config cfg = {}; u8 val, ibb_enable_ctl; @@ -2071,12 +2054,6 @@ static int register_qpnp_ibb_regulator(struct qpnp_labibb *labibb, return -EINVAL; } - init_data = of_get_regulator_init_data(labibb->dev, of_node); - if (!init_data) { - pr_err("unable to get regulator init data for qpnp ibb regulator\n"); - return -ENOMEM; - } - rc = of_property_read_u32(of_node, "qcom,qpnp-ibb-min-voltage", &(labibb->ibb_vreg.min_volt)); if (rc < 0) { @@ -2297,34 +2274,25 @@ static int register_qpnp_ibb_regulator(struct qpnp_labibb *labibb, } } - if (init_data->constraints.name) { - rdesc = &(labibb->ibb_vreg.rdesc); - rdesc->owner = THIS_MODULE; - rdesc->type = REGULATOR_VOLTAGE; - rdesc->ops = &qpnp_ibb_ops; - rdesc->name = init_data->constraints.name; + rdesc = &(labibb->ibb_vreg.rdesc); + rdesc->owner = THIS_MODULE; + rdesc->type = REGULATOR_VOLTAGE; + rdesc->ops = &qpnp_ibb_ops; + rdesc->name = of_node->name; + rdesc->of_match = of_node->name; - cfg.dev = labibb->dev; - cfg.init_data = init_data; - cfg.driver_data = labibb; - cfg.of_node = of_node; + cfg.dev = labibb->dev; + cfg.driver_data = labibb; - init_data->constraints.valid_ops_mask - |= REGULATOR_CHANGE_VOLTAGE | - REGULATOR_CHANGE_STATUS; + labibb->ibb_vreg.rdev + = devm_regulator_register(labibb->dev, rdesc, &cfg); + if (IS_ERR(labibb->ibb_vreg.rdev)) { + rc = PTR_ERR(labibb->ibb_vreg.rdev); + labibb->ibb_vreg.rdev = NULL; + pr_err("unable to get regulator init data for qpnp ibb regulator, rc = %d\n", + rc); - labibb->ibb_vreg.rdev = regulator_register(rdesc, &cfg); - if (IS_ERR(labibb->ibb_vreg.rdev)) { - rc = PTR_ERR(labibb->ibb_vreg.rdev); - labibb->ibb_vreg.rdev = NULL; - pr_err("unable to get regulator init data for qpnp ibb regulator, rc = %d\n", - rc); - - return rc; - } - } else { - dev_err(labibb->dev, "qpnp ibb regulator name missing\n"); - return -EINVAL; + return rc; } mutex_init(&(labibb->ibb_vreg.ibb_mutex)); @@ -2435,27 +2403,9 @@ static int qpnp_labibb_regulator_probe(struct platform_device *pdev) return 0; fail_registration: - if (labibb->lab_vreg.rdev) - regulator_unregister(labibb->lab_vreg.rdev); - if (labibb->ibb_vreg.rdev) - regulator_unregister(labibb->ibb_vreg.rdev); - return rc; } -static int qpnp_labibb_regulator_remove(struct platform_device *pdev) -{ - struct qpnp_labibb *labibb = dev_get_drvdata(&pdev->dev); - - if (labibb) { - if (labibb->lab_vreg.rdev) - regulator_unregister(labibb->lab_vreg.rdev); - if (labibb->ibb_vreg.rdev) - regulator_unregister(labibb->ibb_vreg.rdev); - } - return 0; -} - static struct of_device_id spmi_match_table[] = { { .compatible = QPNP_LABIBB_REGULATOR_DRIVER_NAME, }, { }, @@ -2467,7 +2417,6 @@ static struct platform_driver qpnp_labibb_regulator_driver = { .of_match_table = spmi_match_table, }, .probe = qpnp_labibb_regulator_probe, - .remove = qpnp_labibb_regulator_remove, }; static int __init qpnp_labibb_regulator_init(void)