Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp2946215imm; Thu, 24 May 2018 19:38:43 -0700 (PDT) X-Google-Smtp-Source: AB8JxZp2/xPN7ahflqBZkNdSexokr8l0OZsQWdCqqDfEJPOjoo8erv520FbKsMa1Z7QEC/sKBh5y X-Received: by 2002:a62:b03:: with SMTP id t3-v6mr606257pfi.32.1527215923474; Thu, 24 May 2018 19:38:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527215923; cv=none; d=google.com; s=arc-20160816; b=lunnDYLofpjx1Qgj+R+YXPrO/4ECu6dH1kyv/vx4RqyxHAVoplfd32y8rudKJzsU3W EKoRHZ2FqEY1Lh+WGKUFAPa6NTKLhf5jfL65+iYGYbOkPOqTGdopqRUf80HGl8zbij6s OAkUIPyYl0O0WHOWNkqKM0JRNXoWNn64vQQof1KkOfZgN9OosGYTRt1Li6FkegRXjStk 2MbXDBa4nLcMxjMQNK7/18SQWPcfm1n/zDaC9dfVN2jLK+GfD43jD84csj0X/IrzoRK8 uIsuqdyFnnuniZa8Ec05oKabFyDc9+4N+xbf6XT9MHzfHk9dDFnCHGkoGMwmKB31IVw2 k59A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:message-id:in-reply-to:subject:cc:to :from:dkim-signature:arc-authentication-results; bh=DZXeVnVIBDqt2A66CUNCx33MxHchLY0obmFxfgGXd6c=; b=UqmSxxwsq8jihEYmjEiEmIm9dpzPtpVjYepudqeHnqePkIAGRiYQac9vjdPUAd6BxY Hx89lpkBQQUz/qsSjI335o9YtCSqa42uZLCgrPpj9jMZaXi0EDSyGUOj2xFj7qcHeha6 4CLi81dKEQUQ0b7GDO9fvXmZDcT5tCmwXBB0P+WDian2NS8RJlZ9kOoBDahAWkFA5H6h MZfJ0PXyHF8jwlHd0LvcPkGorI3QPjoeHoFz0QaS/3Gtc89lVUOEVQmKTNUZPkzW8ziS Mct5RE44BtCBmYk3OrNIhX70qT4+4vXGruRcWXmsqcHH95QZbrYuso+I44HuV5I3qwNz qlBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=mfcW9ays; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f5-v6si17751246pgc.37.2018.05.24.19.38.29; Thu, 24 May 2018 19:38:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=mfcW9ays; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1034512AbeEXTN6 (ORCPT + 99 others); Thu, 24 May 2018 15:13:58 -0400 Received: from heliosphere.sirena.org.uk ([172.104.155.198]:55698 "EHLO heliosphere.sirena.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1034448AbeEXTN5 (ORCPT ); Thu, 24 May 2018 15:13:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sirena.org.uk; s=20170815-heliosphere; h=Date:Message-Id:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner: List-Archive; bh=DZXeVnVIBDqt2A66CUNCx33MxHchLY0obmFxfgGXd6c=; b=mfcW9aysX7x+ RQfofQAATgl0XFjywyDYBX7DOM3j1pEQ+hGc/p5Qdr8tX89fimM/1Iw5N9cY0TrWJaBDXDPAqUD4Q JzUVjrSxlpGW9iiTpETaBD3uhzOJUMNEvCTnDyjzZ/slRIK4aRD/cPaKTF57e/ZXBPBgL+C1FG/MG y+Geo=; Received: from debutante.sirena.org.uk ([2001:470:1f1d:6b5::3] helo=debutante) by heliosphere.sirena.org.uk with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fLvgR-0006Kj-8H; Thu, 24 May 2018 19:13:55 +0000 Received: from broonie by debutante with local (Exim 4.91) (envelope-from ) id 1fLvgQ-0004zs-2z; Thu, 24 May 2018 20:13:54 +0100 From: Mark Brown To: Linus Walleij Cc: Lee Jones , Mark Brown , Liam Girdwood , Mark Brown , linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Lee Jones , linux-kernel@vger.kernel.org Subject: Applied "regulator: tps65090: Pass descriptor instead of GPIO number" to the regulator tree In-Reply-To: <20180212131717.27193-16-linus.walleij@linaro.org> Message-Id: Date: Thu, 24 May 2018 20:13:54 +0100 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The patch regulator: tps65090: Pass descriptor instead of GPIO number has been applied to the regulator tree at https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark From 3012e81446d011c1bd99812e562e2292f21060fb Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Mon, 14 May 2018 10:06:33 +0200 Subject: [PATCH] regulator: tps65090: Pass descriptor instead of GPIO number 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. Signed-off-by: Linus Walleij Acked-by: Lee Jones Signed-off-by: Mark Brown --- drivers/regulator/tps65090-regulator.c | 50 ++++++++++++-------------- include/linux/mfd/tps65090.h | 8 +++-- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/drivers/regulator/tps65090-regulator.c b/drivers/regulator/tps65090-regulator.c index 395f35dc8cdb..2d398fa3b720 100644 --- a/drivers/regulator/tps65090-regulator.c +++ b/drivers/regulator/tps65090-regulator.c @@ -19,8 +19,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include @@ -300,26 +300,6 @@ static int tps65090_regulator_disable_ext_control( return tps65090_config_ext_control(ri, false); } -static void tps65090_configure_regulator_config( - struct tps65090_regulator_plat_data *tps_pdata, - struct regulator_config *config) -{ - if (gpio_is_valid(tps_pdata->gpio)) { - int gpio_flag = GPIOF_OUT_INIT_LOW; - - if (tps_pdata->reg_init_data->constraints.always_on || - tps_pdata->reg_init_data->constraints.boot_on) - gpio_flag = GPIOF_OUT_INIT_HIGH; - - config->ena_gpio = tps_pdata->gpio; - config->ena_gpio_initialized = true; - config->ena_gpio_flags = gpio_flag; - } else { - config->ena_gpio = -EINVAL; - config->ena_gpio_initialized = false; - } -} - #ifdef CONFIG_OF static struct of_regulator_match tps65090_matches[] = { { .name = "dcdc1", }, @@ -385,9 +365,26 @@ static struct tps65090_platform_data *tps65090_parse_dt_reg_data( rpdata->enable_ext_control = of_property_read_bool( tps65090_matches[idx].of_node, "ti,enable-ext-control"); - if (rpdata->enable_ext_control) - rpdata->gpio = of_get_named_gpio(np, - "dcdc-ext-control-gpios", 0); + if (rpdata->enable_ext_control) { + enum gpiod_flags gflags; + + if (ri_data->constraints.always_on || + ri_data->constraints.boot_on) + gflags = GPIOD_OUT_HIGH; + else + gflags = GPIOD_OUT_LOW; + + rpdata->gpiod = devm_gpiod_get_from_of_node(&pdev->dev, + tps65090_matches[idx].of_node, + "dcdc-ext-control-gpios", 0, + gflags, + "tps65090"); + if (IS_ERR(rpdata->gpiod)) + return ERR_CAST(rpdata->gpiod); + if (!rpdata->gpiod) + dev_err(&pdev->dev, + "could not find DCDC external control GPIO\n"); + } if (of_property_read_u32(tps65090_matches[idx].of_node, "ti,overcurrent-wait", @@ -455,8 +452,7 @@ static int tps65090_regulator_probe(struct platform_device *pdev) */ if (tps_pdata && is_dcdc(num) && tps_pdata->reg_init_data) { if (tps_pdata->enable_ext_control) { - tps65090_configure_regulator_config( - tps_pdata, &config); + config.ena_gpiod = tps_pdata->gpiod; ri->desc->ops = &tps65090_ext_control_ops; } else { ret = tps65090_regulator_disable_ext_control( diff --git a/include/linux/mfd/tps65090.h b/include/linux/mfd/tps65090.h index 67d144b3b8f9..f05bf4a146e2 100644 --- a/include/linux/mfd/tps65090.h +++ b/include/linux/mfd/tps65090.h @@ -83,6 +83,8 @@ enum { #define TPS65090_MAX_REG TPS65090_REG_AD_OUT2 #define TPS65090_NUM_REGS (TPS65090_MAX_REG + 1) +struct gpio_desc; + struct tps65090 { struct device *dev; struct regmap *rmap; @@ -95,8 +97,8 @@ struct tps65090 { * @reg_init_data: The regulator init data. * @enable_ext_control: Enable extrenal control or not. Only available for * DCDC1, DCDC2 and DCDC3. - * @gpio: Gpio number if external control is enabled and controlled through - * gpio. + * @gpiod: Gpio descriptor if external control is enabled and controlled through + * gpio * @overcurrent_wait_valid: True if the overcurrent_wait should be applied. * @overcurrent_wait: Value to set as the overcurrent wait time. This is the * actual bitfield value, not a time in ms (valid value are 0 - 3). @@ -104,7 +106,7 @@ struct tps65090 { struct tps65090_regulator_plat_data { struct regulator_init_data *reg_init_data; bool enable_ext_control; - int gpio; + struct gpio_desc *gpiod; bool overcurrent_wait_valid; int overcurrent_wait; }; -- 2.17.0