Merge tag 'perf-core-for-mingo-4.21-20190103' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-microblaze.git] / drivers / regulator / s5m8767.c
index 219b9af..b581f01 100644 (file)
@@ -561,7 +561,7 @@ static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev,
        pdata->opmode = rmode;
        for_each_child_of_node(regulators_np, reg_np) {
                for (i = 0; i < ARRAY_SIZE(regulators); i++)
-                       if (!of_node_cmp(reg_np->name, regulators[i].name))
+                       if (of_node_name_eq(reg_np, regulators[i].name))
                                break;
 
                if (i == ARRAY_SIZE(regulators)) {
@@ -956,10 +956,17 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
                config.regmap = iodev->regmap_pmic;
                config.of_node = pdata->regulators[i].reg_node;
                config.ena_gpiod = NULL;
-               if (pdata->regulators[i].ext_control_gpiod)
+               if (pdata->regulators[i].ext_control_gpiod) {
+                       /* Assigns config.ena_gpiod */
                        s5m8767_regulator_config_ext_control(s5m8767,
                                        &pdata->regulators[i], &config);
 
+                       /*
+                        * Hand the GPIO descriptor management over to the
+                        * regulator core, remove it from devres management.
+                        */
+                       devm_gpiod_unhinge(s5m8767->dev, config.ena_gpiod);
+               }
                rdev = devm_regulator_register(&pdev->dev, &regulators[id],
                                                  &config);
                if (IS_ERR(rdev)) {