From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751756AbcFVI2R (ORCPT ); Wed, 22 Jun 2016 04:28:17 -0400 Received: from nat-hk.nvidia.com ([203.18.50.4]:11270 "EHLO hkmmgate101.nvidia.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750970AbcFVI1d (ORCPT ); Wed, 22 Jun 2016 04:27:33 -0400 X-PGP-Universal: processed; by hkpgpgate102.nvidia.com on Wed, 22 Jun 2016 01:27:27 -0700 From: Alexandre Courbot To: Liam Girdwood , Mark Brown , Rob Herring , Mark Rutland CC: , , , Alexandre Courbot Subject: [PATCH 4/6] regulator: gpio: Use of_get_regulator_gpio_config Date: Wed, 22 Jun 2016 17:25:56 +0900 Message-ID: <20160622082558.20935-5-acourbot@nvidia.com> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20160622082558.20935-1-acourbot@nvidia.com> References: <20160622082558.20935-1-acourbot@nvidia.com> X-NVConfidentiality: public MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If instanciated from the DT, use of_get_regulator_gpio_config to obtain the enable GPIO configuration. Signed-off-by: Alexandre Courbot --- drivers/regulator/gpio-regulator.c | 47 ++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/drivers/regulator/gpio-regulator.c b/drivers/regulator/gpio-regulator.c index 83e89e5d4752..5c079f854e77 100644 --- a/drivers/regulator/gpio-regulator.c +++ b/drivers/regulator/gpio-regulator.c @@ -153,18 +153,8 @@ of_get_gpio_regulator_config(struct device *dev, struct device_node *np, config->supply_name = config->init_data->constraints.name; - if (of_property_read_bool(np, "enable-active-high")) - config->enable_high = true; - - if (of_property_read_bool(np, "enable-at-boot")) - config->enabled_at_boot = true; - of_property_read_u32(np, "startup-delay-us", &config->startup_delay); - config->enable_gpio = of_get_named_gpio(np, "enable-gpio", 0); - if (config->enable_gpio == -EPROBE_DEFER) - return ERR_PTR(-EPROBE_DEFER); - /* Fetch GPIOs. - optional property*/ ret = of_gpio_count(np); if ((ret < 0) && (ret != -ENOENT)) @@ -237,6 +227,9 @@ of_get_gpio_regulator_config(struct device *dev, struct device_node *np, regtype); } + /* GPIO info will be obtained via regulator_of_get_gpio_config */ + config->enable_gpio = -ENOENT; + return config; } @@ -263,6 +256,11 @@ static int gpio_regulator_probe(struct platform_device *pdev) &drvdata->desc); if (IS_ERR(config)) return PTR_ERR(config); + + ret = of_get_regulator_gpio_config(&pdev->dev, np, + "enable-gpio", &cfg); + if (ret) + return ret; } drvdata->desc.name = kstrdup(config->supply_name, GFP_KERNEL); @@ -337,21 +335,26 @@ static int gpio_regulator_probe(struct platform_device *pdev) cfg.driver_data = drvdata; cfg.of_node = np; + /* + * For platform-defined regulators - DT is already handled by + * of_get_regulator_gpio_config + */ if (gpio_is_valid(config->enable_gpio)) { cfg.ena_gpio = config->enable_gpio; cfg.ena_gpio_initialized = true; - } - cfg.ena_gpio_invert = !config->enable_high; - if (config->enabled_at_boot) { - if (config->enable_high) - cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH; - else - cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW; - } else { - if (config->enable_high) - cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW; - else - cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH; + + cfg.ena_gpio_invert = !config->enable_high; + if (config->enabled_at_boot) { + if (config->enable_high) + cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH; + else + cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW; + } else { + if (config->enable_high) + cfg.ena_gpio_flags |= GPIOF_OUT_INIT_LOW; + else + cfg.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH; + } } drvdata->dev = regulator_register(&drvdata->desc, &cfg); -- 2.8.3