From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932901AbeBLO7U (ORCPT ); Mon, 12 Feb 2018 09:59:20 -0500 Received: from mail-wr0-f193.google.com ([209.85.128.193]:38410 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932358AbeBLO67 (ORCPT ); Mon, 12 Feb 2018 09:58:59 -0500 X-Google-Smtp-Source: AH8x2275RJAxFO6oo2cnTWmyniQAr3e/An2Z4yoMRqtolEufjAlyrY4WFeqMrgqrzODLrGRU7SnSWQ== Date: Mon, 12 Feb 2018 14:58:55 +0000 From: Lee Jones To: Linus Walleij Cc: Liam Girdwood , Mark Brown , linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org Subject: Re: [PATCH 14/21] regulator: s5m8767: Pass descriptor instead of GPIO number Message-ID: <20180212145855.2xxr5zvfbuswsbgh@dell> References: <20180212131717.27193-1-linus.walleij@linaro.org> <20180212131717.27193-15-linus.walleij@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180212131717.27193-15-linus.walleij@linaro.org> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 12 Feb 2018, Linus Walleij wrote: > Instead of passing a global GPIO number for the enable GPIO, pass > a descriptor looked up from the device tree node for the > regulator. > > This regulator supports passing platform data, but enable/sleep > regulators are looked up from the device tree exclusively, so > we can need not touch other files. > > Cc: Lee Jones > Signed-off-by: Linus Walleij > --- > Lee: would be nice if you could ACK this smallish patch to > the MFD header. Fine, but any sign of a conflict and I'll need a PR. Acked-by: Lee Jones > --- > drivers/regulator/s5m8767.c | 26 +++++++++++++++----------- > include/linux/mfd/samsung/core.h | 4 +++- > 2 files changed, 18 insertions(+), 12 deletions(-) > > diff --git a/drivers/regulator/s5m8767.c b/drivers/regulator/s5m8767.c > index 4836947e1521..b8443a360646 100644 > --- a/drivers/regulator/s5m8767.c > +++ b/drivers/regulator/s5m8767.c > @@ -13,6 +13,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -459,15 +460,14 @@ static void s5m8767_regulator_config_ext_control(struct s5m8767_info *s5m8767, > return; > } > > - if (!gpio_is_valid(rdata->ext_control_gpio)) { > + if (!rdata->ext_control_gpiod) { > dev_warn(s5m8767->dev, > "ext-control for %s: GPIO not valid, ignoring\n", > - rdata->reg_node->name); > + rdata->reg_node->name); > return; > } > > - config->ena_gpio = rdata->ext_control_gpio; > - config->ena_gpio_flags = GPIOF_OUT_INIT_HIGH; > + config->ena_gpiod = rdata->ext_control_gpiod; > } > > /* > @@ -577,8 +577,14 @@ static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev, > continue; > } > > - rdata->ext_control_gpio = of_get_named_gpio(reg_np, > - "s5m8767,pmic-ext-control-gpios", 0); > + rdata->ext_control_gpiod = devm_gpiod_get_from_of_node(&pdev->dev, > + reg_np, > + "s5m8767,pmic-ext-control-gpios", > + 0, > + GPIOD_OUT_HIGH, > + "s5m8767"); > + if (IS_ERR(rdata->ext_control_gpiod)) > + return PTR_ERR(rdata->ext_control_gpiod); > > rdata->id = i; > rdata->initdata = of_get_regulator_init_data( > @@ -954,10 +960,8 @@ static int s5m8767_pmic_probe(struct platform_device *pdev) > config.driver_data = s5m8767; > config.regmap = iodev->regmap_pmic; > config.of_node = pdata->regulators[i].reg_node; > - config.ena_gpio = -EINVAL; > - config.ena_gpio_flags = 0; > - config.ena_gpio_initialized = true; > - if (gpio_is_valid(pdata->regulators[i].ext_control_gpio)) > + config.ena_gpiod = NULL; > + if (pdata->regulators[i].ext_control_gpiod) > s5m8767_regulator_config_ext_control(s5m8767, > &pdata->regulators[i], &config); > > @@ -970,7 +974,7 @@ static int s5m8767_pmic_probe(struct platform_device *pdev) > return ret; > } > > - if (gpio_is_valid(pdata->regulators[i].ext_control_gpio)) { > + if (pdata->regulators[i].ext_control_gpiod) { > ret = s5m8767_enable_ext_control(s5m8767, rdev); > if (ret < 0) { > dev_err(s5m8767->dev, > diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h > index 5a23dd4df432..28f4ae76271d 100644 > --- a/include/linux/mfd/samsung/core.h > +++ b/include/linux/mfd/samsung/core.h > @@ -39,6 +39,8 @@ > #define STEP_12_5_MV 12500 > #define STEP_6_25_MV 6250 > > +struct gpio_desc; > + > enum sec_device_type { > S5M8751X, > S5M8763X, > @@ -151,7 +153,7 @@ struct sec_regulator_data { > int id; > struct regulator_init_data *initdata; > struct device_node *reg_node; > - int ext_control_gpio; > + struct gpio_desc *ext_control_gpiod; > }; > > /* -- Lee Jones Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog