From patchwork Tue Jul 27 09:25:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emil Renner Berthing X-Patchwork-Id: 487180 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18D89C43216 for ; Tue, 27 Jul 2021 09:26:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F1CC261266 for ; Tue, 27 Jul 2021 09:26:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236073AbhG0J0J (ORCPT ); Tue, 27 Jul 2021 05:26:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236027AbhG0J0J (ORCPT ); Tue, 27 Jul 2021 05:26:09 -0400 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 40965C061760; Tue, 27 Jul 2021 02:26:08 -0700 (PDT) Received: by mail-ed1-x532.google.com with SMTP id h8so14481488ede.4; Tue, 27 Jul 2021 02:26:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EoeHY/3nuAUWfIArvanaCJFU5UlahVcN4a6IXN0XWGI=; b=rEq3M3Qu26IkonEhacBOomR34niv7k8EOGnpiudPzh0HCJVRk2OtyiNgW+gptaDpEu n5g9UHvnYTbv7kws7v0i3wNxNZBuobNrhxOuNGgk4iOabYTIKCifpa74NiGYQfLGFAnM Xd0RS/5Kt7zppmUmtR47p+NJ/Jog8pI6oCW2M1jL8vawOEZ2X3FFg3P8kgNNutU1syYH mtIZ3/XLyenLn5tGF50uyj1AEbzQeiQEdihxMqF2UL0S3v9CyHo9qk3Xys5ioNxfN4br fC8MPQwsk6k2yiR7/4nhCczzpbvGWAxvzmdmrLnJLsdNeovoHCsL3NQSDVUJEWDdrlP+ xE6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=EoeHY/3nuAUWfIArvanaCJFU5UlahVcN4a6IXN0XWGI=; b=Tg3e68UcW47avqVtfDLEG2is7b8XuRUVBB8B2bFnI9JarYbEMVp3f/8eZKc9XJVqpD mL9ktOQiI4Swt2OotkGSPW8MPl0pxxl5Yau3Hunc41hjFBDVhEj7x7l4HwL77ASLZ6In +WiEIFh6gfFF9S6MJvYHnUotXXKBFIx08p506gAshPyAxnV3hr+lZZzHrUqK6rAXJ3aM X7qruCEwjsm5Qh3yn8vMa6rWxSAHTpcE5EX8O+qeStAj3pcXL5lVxum5F/nEDBqFJUDO apVjZIM/0MGI1LSnaVDoTxmELUjcULXyd/R1zikqHFietpq7Woubx41T7owq5HrsD+au 4MYg== X-Gm-Message-State: AOAM533Tb91VT5yh9KSR8FvevwpEO9/A6eEVzcKKLaW41xRPFP+ZcXaS OcWxQ9uthYnx9AvobrzcmUY= X-Google-Smtp-Source: ABdhPJztKkfC5r4MvyKXKqYiqP4NxRiiapj7qR9oRaQthogY1RtrHB/HyIRUaKz6OW+b6EUIG1DfXA== X-Received: by 2002:a05:6402:3507:: with SMTP id b7mr2683602edd.293.1627377966784; Tue, 27 Jul 2021 02:26:06 -0700 (PDT) Received: from stitch.. ([82.192.166.82]) by smtp.gmail.com with ESMTPSA id g3sm692369ejp.2.2021.07.27.02.26.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Jul 2021 02:26:06 -0700 (PDT) Sender: Emil Renner Berthing From: Emil Renner Berthing To: Lee Jones , Rob Herring , Sebastian Reichel Cc: Emil Renner Berthing , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/4] dt-bindings: mfd: convert tps65086.txt to YAML Date: Tue, 27 Jul 2021 11:25:51 +0200 Message-Id: <20210727092554.1059305-2-kernel@esmil.dk> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210727092554.1059305-1-kernel@esmil.dk> References: <20210727092554.1059305-1-kernel@esmil.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org This converts the tps65086.txt binding description to YAML schema so dts files can be verified automatically. Signed-off-by: Emil Renner Berthing Reviewed-by: Rob Herring --- .../devicetree/bindings/mfd/ti,tps65086.yaml | 127 ++++++++++++++++++ .../devicetree/bindings/mfd/tps65086.txt | 54 -------- 2 files changed, 127 insertions(+), 54 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/ti,tps65086.yaml delete mode 100644 Documentation/devicetree/bindings/mfd/tps65086.txt diff --git a/Documentation/devicetree/bindings/mfd/ti,tps65086.yaml b/Documentation/devicetree/bindings/mfd/ti,tps65086.yaml new file mode 100644 index 000000000000..9f6e1349eadc --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/ti,tps65086.yaml @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/ti,tps65086.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TPS65086 Power Management Integrated Circuit (PMIC) + +maintainers: + - Emil Renner Berthing + +properties: + compatible: + const: ti,tps65086 + + reg: + const: 0x5e + description: I2C slave address + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 2 + description: | + The first cell is the IRQ number. The second cell is the flags, + encoded as trigger masks from ../interrupt-controller/interrupts.txt. + + gpio-controller: true + + '#gpio-cells': + const: 2 + description: | + The first cell is the pin number and the second cell is used to specify + flags. See ../gpio/gpio.txt for more information. + + regulators: + type: object + description: | + List of child nodes that specify the regulator initialization data. + Child nodes must be named after their hardware counterparts: + buck[1-6], ldoa[1-3], swa1, swb[1-2], and vtt. + Each child node is defined using the standard binding for regulators and + the optional regulator properties defined below. + + patternProperties: + "^buck[1-6]$": + type: object + $ref: ../regulator/regulator.yaml + + properties: + regulator-name: true + regulator-boot-on: true + regulator-always-on: true + regulator-min-microvolt: true + regulator-max-microvolt: true + ti,regulator-step-size-25mv: + type: boolean + description: | + Set this if the regulator is factory set with a 25mv step voltage + mapping. + ti,regulator-decay: + type: boolean + description: | + Set this if the output needs to decay, default is for the output + to slew down. + + additionalProperties: false + + "^(ldoa[1-3]|swa1|swb[1-2]|vtt)$": + type: object + $ref: ../regulator/regulator.yaml + + properties: + regulator-name: true + regulator-boot-on: true + regulator-always-on: true + regulator-min-microvolt: true + regulator-max-microvolt: true + + additionalProperties: false + +additionalProperties: false + +required: + - compatible + - reg + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + - regulators + +examples: + - | + #include + i2c0 { + #address-cells = <1>; + #size-cells = <0>; + + pmic: pmic@5e { + compatible = "ti,tps65086"; + reg = <0x5e>; + interrupt-parent = <&gpio1>; + interrupts = <28 IRQ_TYPE_LEVEL_LOW>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + + regulators { + buck1 { + regulator-name = "vcc1"; + regulator-min-microvolt = <1600000>; + regulator-max-microvolt = <1600000>; + regulator-boot-on; + ti,regulator-decay; + ti,regulator-step-size-25mv; + }; + }; + }; + }; + +... diff --git a/Documentation/devicetree/bindings/mfd/tps65086.txt b/Documentation/devicetree/bindings/mfd/tps65086.txt deleted file mode 100644 index 67eac0ed32df..000000000000 --- a/Documentation/devicetree/bindings/mfd/tps65086.txt +++ /dev/null @@ -1,54 +0,0 @@ -* TPS65086 Power Management Integrated Circuit (PMIC) bindings - -Required properties: - - compatible : Should be "ti,tps65086". - - reg : I2C slave address. - - interrupts : The interrupt line the device is connected to. - - interrupt-controller : Marks the device node as an interrupt controller. - - #interrupt-cells : The number of cells to describe an IRQ, should be 2. - The first cell is the IRQ number. - The second cell is the flags, encoded as trigger - masks from ../interrupt-controller/interrupts.txt. - - gpio-controller : Marks the device node as a GPIO Controller. - - #gpio-cells : Should be two. The first cell is the pin number and - the second cell is used to specify flags. - See ../gpio/gpio.txt for more information. - - regulators: : List of child nodes that specify the regulator - initialization data. Child nodes must be named - after their hardware counterparts: buck[1-6], - ldoa[1-3], swa1, swb[1-2], and vtt. Each child - node is defined using the standard binding for - regulators and the optional regulator properties - defined below. - -Optional regulator properties: - - ti,regulator-step-size-25mv : This is applicable for buck[1-6], set this - if the regulator is factory set with a 25mv - step voltage mapping. - - ti,regulator-decay : This is applicable for buck[1-6], set this if - the output needs to decay, default is for - the output to slew down. - -Example: - - pmic: tps65086@5e { - compatible = "ti,tps65086"; - reg = <0x5e>; - interrupt-parent = <&gpio1>; - interrupts = <28 IRQ_TYPE_LEVEL_LOW>; - interrupt-controller; - #interrupt-cells = <2>; - gpio-controller; - #gpio-cells = <2>; - - regulators { - buck1 { - regulator-name = "vcc1"; - regulator-min-microvolt = <1600000>; - regulator-max-microvolt = <1600000>; - regulator-boot-on; - ti,regulator-decay; - ti,regulator-step-size-25mv; - }; - }; - }; From patchwork Tue Jul 27 09:25:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emil Renner Berthing X-Patchwork-Id: 488326 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-21.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 638E7C19F35 for ; Tue, 27 Jul 2021 09:26:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4D6EE6127A for ; Tue, 27 Jul 2021 09:26:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236076AbhG0J0K (ORCPT ); Tue, 27 Jul 2021 05:26:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236065AbhG0J0J (ORCPT ); Tue, 27 Jul 2021 05:26:09 -0400 Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC94AC061764; Tue, 27 Jul 2021 02:26:08 -0700 (PDT) Received: by mail-ej1-x633.google.com with SMTP id gs8so7527120ejc.13; Tue, 27 Jul 2021 02:26:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mBKXCsHfwip4Rwb+DfNH2Tu2tuIAQDn6p9m9ppniW64=; b=PaYQREomEDTfoBTOeayOvSQUZPuLugWj1zJJ3wgIho7cyBxghUd8rdo9sVvOBnyA70 p5VOpxCCd2KFsoeDfFqFcAV1oz9W7gJSI3LAg2WHBWR3p9B++pUpKeB6cmHfjroTiBCe GVe/xMCT4Gfjlt7Sv1LqKIkhRtAY++SiJfVm8yV+eETgm4harn/An0dZOrEEmFgrmC2Q gcLTmUGA745v9kb2rRpi+QL3EpUvw1HLw+haR7lDitUBfXJc7k9BKuy5XRSk71D7DC+H T4sbKSUCvCtKV56MpI0rPopwky3D725DWFncVDAgwpFD38pJDZR+CnNCVrJDpqn2yO1Z uGFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=mBKXCsHfwip4Rwb+DfNH2Tu2tuIAQDn6p9m9ppniW64=; b=Il4pj0tsWsv+hvtmCUEBTLzmLljJVqpa6S7vt27YeI2bNUejbnovLyf9tlBPjTGjUU 22nkEe7YZQwNYwu1NkIUDCY65MOIfRbww37c+bAzj8N8tg3Um8tnKVZKAL34uIgHxFcL kkqFkNa1m2qMZNmaioS2VR+vgTvhQH8npZ+RV23gAqZ0jK1+iOLoHJ5SKWWpyU28e4y5 iuE4TjbFhQ7JwSNcGLr+NzS7Ihs1FpOQzihmDeWMd8j79l0Z9JpfF2GHRJdidAs5Rww2 fn5G8AilfXfgIwWagnSpECXeIT0BysEx53wY9pMOvm90rqjU5jlujaqEKXY/DqONJOy9 f+qw== X-Gm-Message-State: AOAM532fy15CZYJU3e8658IpP2DS7fFHaSZD5OcPAz4dkvvINcpMs6t3 O3oGg4QJyAItv1vKfvlxkYw= X-Google-Smtp-Source: ABdhPJzTtskTMc5QZec5ZUvY3TDl4N0+dAB9ON6+fTzXzORIu58twTG7edWEwy6LylQVcHNEbgY6/g== X-Received: by 2002:a17:906:dbd9:: with SMTP id yc25mr21126510ejb.367.1627377967400; Tue, 27 Jul 2021 02:26:07 -0700 (PDT) Received: from stitch.. ([82.192.166.82]) by smtp.gmail.com with ESMTPSA id g3sm692369ejp.2.2021.07.27.02.26.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Jul 2021 02:26:07 -0700 (PDT) Sender: Emil Renner Berthing From: Emil Renner Berthing To: Lee Jones , Rob Herring , Sebastian Reichel Cc: Emil Renner Berthing , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring Subject: [PATCH v2 2/4] mfd: tps65086: Make interrupt line optional Date: Tue, 27 Jul 2021 11:25:52 +0200 Message-Id: <20210727092554.1059305-3-kernel@esmil.dk> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210727092554.1059305-1-kernel@esmil.dk> References: <20210727092554.1059305-1-kernel@esmil.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org The BeagleV Starlight v0.9 board[1] doesn't have the IRQB line routed to the SoC, but it is still useful to be able to reach the PMIC over I2C for the other functionality it provides such as GPIOs and regulator settings. [1] https://github.com/beagleboard/beaglev-starlight Signed-off-by: Emil Renner Berthing Acked-by: Rob Herring Acked-for-MFD-by: Lee Jones --- .../devicetree/bindings/mfd/ti,tps65086.yaml | 3 --- drivers/mfd/tps65086.c | 21 ++++++++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Documentation/devicetree/bindings/mfd/ti,tps65086.yaml b/Documentation/devicetree/bindings/mfd/ti,tps65086.yaml index 9f6e1349eadc..6aeedda3be15 100644 --- a/Documentation/devicetree/bindings/mfd/ti,tps65086.yaml +++ b/Documentation/devicetree/bindings/mfd/ti,tps65086.yaml @@ -87,9 +87,6 @@ additionalProperties: false required: - compatible - reg - - interrupts - - interrupt-controller - - '#interrupt-cells' - gpio-controller - '#gpio-cells' - regulators diff --git a/drivers/mfd/tps65086.c b/drivers/mfd/tps65086.c index 341466ef20cc..cc3478ee9a64 100644 --- a/drivers/mfd/tps65086.c +++ b/drivers/mfd/tps65086.c @@ -100,29 +100,30 @@ static int tps65086_probe(struct i2c_client *client, (char)((version & TPS65086_DEVICEID_OTP_MASK) >> 4) + 'A', (version & TPS65086_DEVICEID_REV_MASK) >> 6); - ret = regmap_add_irq_chip(tps->regmap, tps->irq, IRQF_ONESHOT, 0, - &tps65086_irq_chip, &tps->irq_data); - if (ret) { - dev_err(tps->dev, "Failed to register IRQ chip\n"); - return ret; + if (tps->irq > 0) { + ret = regmap_add_irq_chip(tps->regmap, tps->irq, IRQF_ONESHOT, 0, + &tps65086_irq_chip, &tps->irq_data); + if (ret) { + dev_err(tps->dev, "Failed to register IRQ chip\n"); + return ret; + } } ret = mfd_add_devices(tps->dev, PLATFORM_DEVID_AUTO, tps65086_cells, ARRAY_SIZE(tps65086_cells), NULL, 0, regmap_irq_get_domain(tps->irq_data)); - if (ret) { + if (ret && tps->irq > 0) regmap_del_irq_chip(tps->irq, tps->irq_data); - return ret; - } - return 0; + return ret; } static int tps65086_remove(struct i2c_client *client) { struct tps65086 *tps = i2c_get_clientdata(client); - regmap_del_irq_chip(tps->irq, tps->irq_data); + if (tps->irq > 0) + regmap_del_irq_chip(tps->irq, tps->irq_data); return 0; } From patchwork Tue Jul 27 09:25:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emil Renner Berthing X-Patchwork-Id: 487179 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-21.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7AABC19F37 for ; Tue, 27 Jul 2021 09:26:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A2A806137B for ; Tue, 27 Jul 2021 09:26:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236090AbhG0J0L (ORCPT ); Tue, 27 Jul 2021 05:26:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34688 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235946AbhG0J0K (ORCPT ); Tue, 27 Jul 2021 05:26:10 -0400 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 598F7C061757; Tue, 27 Jul 2021 02:26:09 -0700 (PDT) Received: by mail-ej1-x62a.google.com with SMTP id qk33so2438972ejc.12; Tue, 27 Jul 2021 02:26:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zTxbpyEBi9BLHVqlKkligQWKEqtO8+9t1v/xWkgvTkU=; b=hIF8ix9U4rnGSGmj5vMRPasBGm0tDHFAzvcMAEeiP69CvHPSZ2stmch0+WdJYLwZ/B 8fWCzZuiZ16mLE6nSWFVPWPmKErMNUkf9zIApidOVaASxAmm8YGsF3JmWWe+mLA2JYKI CTQSWNVBTFqH1wk3hUpoFjr2SSI494HOm+v/5ZZFpTPLdWVROnPRdXW8V8HVhAqLCLFt bZwcHhGBdJhmtatEGi/vH12hv6UyiAJsJw7+Qz67eUGrvfTYmi10abuQW8tKGUf94eWb nSkZDxAPH7ff5zzK7FPZvJ8PeIgkwdk4IDOM/WjKufuasb9JDTLyMZ6ERfxbok+Pn+aS UYnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=zTxbpyEBi9BLHVqlKkligQWKEqtO8+9t1v/xWkgvTkU=; b=SMjgSHCZvxg1x048RbBmtpYtKi6478oZm142EeKLy0pdQsJCo/qy70x94F2lNjBk9h UVkQHCVdcZ3J3b19j8a+qp6mK4/sxfe3rbhHHvTPvRsg7wPkHskoNcgU5pj2jLURkSga /kFOf82NEPCDBySeYP/xmVfWM8SLUsA5R/hhWfZtXgeSYySqjHf61pCpIcVRHqBVCQs+ TR8XG08vY8rq697ccSTKPLDfu9sJJ1KwJQt8GvhHfnoPl3UiZWH6PYJqe9KiKTpedT0Y 3SSVaF+aqNQF17M45ZlCyfRtlLdF9LZrmLXwc39yBvEpaHohkpSctTODGIM0XJAeegoJ bMRA== X-Gm-Message-State: AOAM531/qJQKqQ01t43NlsDKZTdUu3qtIU/jbRkM2JvbsFhZBhMDgWcY Aec6lT2fWuxt1AzerZFGv7Y= X-Google-Smtp-Source: ABdhPJzWBthXzvd02bAnk0H2j9AbAxH2DKotrJ6HuwNjc7S9f7aO/yqw3yg2G4aIpf/LkDwcWoBchg== X-Received: by 2002:a17:906:d182:: with SMTP id c2mr21594069ejz.111.1627377967994; Tue, 27 Jul 2021 02:26:07 -0700 (PDT) Received: from stitch.. ([82.192.166.82]) by smtp.gmail.com with ESMTPSA id g3sm692369ejp.2.2021.07.27.02.26.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Jul 2021 02:26:07 -0700 (PDT) Sender: Emil Renner Berthing From: Emil Renner Berthing To: Lee Jones , Rob Herring , Sebastian Reichel Cc: Emil Renner Berthing , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/4] power: reset: Add TPS65086 restart driver Date: Tue, 27 Jul 2021 11:25:53 +0200 Message-Id: <20210727092554.1059305-4-kernel@esmil.dk> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210727092554.1059305-1-kernel@esmil.dk> References: <20210727092554.1059305-1-kernel@esmil.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org The only way to reset the BeagleV Starlight v0.9 board[1] properly is to tell the PMIC to reset itself which will then assert the external reset lines of the SoC, USB hub and ethernet phy. This adds a driver to register a reset handler to do just that. [1] https://github.com/beagleboard/beaglev-starlight Signed-off-by: Emil Renner Berthing Acked-by: Sebastian Reichel --- drivers/power/reset/Kconfig | 6 ++ drivers/power/reset/Makefile | 1 + drivers/power/reset/tps65086-restart.c | 98 ++++++++++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 drivers/power/reset/tps65086-restart.c diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig index 4d1192062508..4b563db3ab3e 100644 --- a/drivers/power/reset/Kconfig +++ b/drivers/power/reset/Kconfig @@ -204,6 +204,12 @@ config POWER_RESET_ST help Reset support for STMicroelectronics boards. +config POWER_RESET_TPS65086 + bool "TPS65086 restart driver" + depends on MFD_TPS65086 + help + This driver adds support for resetting the TPS65086 PMIC on restart. + config POWER_RESET_VERSATILE bool "ARM Versatile family reboot driver" depends on ARM diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile index cf3f4d02d8a5..f606a2f60539 100644 --- a/drivers/power/reset/Makefile +++ b/drivers/power/reset/Makefile @@ -23,6 +23,7 @@ obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o obj-$(CONFIG_POWER_RESET_REGULATOR) += regulator-poweroff.o obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o obj-$(CONFIG_POWER_RESET_ST) += st-poweroff.o +obj-$(CONFIG_POWER_RESET_TPS65086) += tps65086-restart.o obj-$(CONFIG_POWER_RESET_VERSATILE) += arm-versatile-reboot.o obj-$(CONFIG_POWER_RESET_VEXPRESS) += vexpress-poweroff.o obj-$(CONFIG_POWER_RESET_XGENE) += xgene-reboot.o diff --git a/drivers/power/reset/tps65086-restart.c b/drivers/power/reset/tps65086-restart.c new file mode 100644 index 000000000000..78b89f745a3d --- /dev/null +++ b/drivers/power/reset/tps65086-restart.c @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 Emil Renner Berthing + */ + +#include +#include +#include +#include +#include + +struct tps65086_restart { + struct notifier_block handler; + struct device *dev; +}; + +static int tps65086_restart_notify(struct notifier_block *this, + unsigned long mode, void *cmd) +{ + struct tps65086_restart *tps65086_restart = + container_of(this, struct tps65086_restart, handler); + struct tps65086 *tps65086 = dev_get_drvdata(tps65086_restart->dev->parent); + int ret; + + ret = regmap_write(tps65086->regmap, TPS65086_FORCESHUTDN, 1); + if (ret) { + dev_err(tps65086_restart->dev, "%s: error writing to tps65086 pmic: %d\n", + __func__, ret); + return NOTIFY_DONE; + } + + /* give it a little time */ + mdelay(200); + + WARN_ON(1); + + return NOTIFY_DONE; +} + +static int tps65086_restart_probe(struct platform_device *pdev) +{ + struct tps65086_restart *tps65086_restart; + int ret; + + tps65086_restart = devm_kzalloc(&pdev->dev, sizeof(*tps65086_restart), GFP_KERNEL); + if (!tps65086_restart) + return -ENOMEM; + + platform_set_drvdata(pdev, tps65086_restart); + + tps65086_restart->handler.notifier_call = tps65086_restart_notify; + tps65086_restart->handler.priority = 192; + tps65086_restart->dev = &pdev->dev; + + ret = register_restart_handler(&tps65086_restart->handler); + if (ret) { + dev_err(&pdev->dev, "%s: cannot register restart handler: %d\n", + __func__, ret); + return -ENODEV; + } + + return 0; +} + +static int tps65086_restart_remove(struct platform_device *pdev) +{ + struct tps65086_restart *tps65086_restart = platform_get_drvdata(pdev); + int ret; + + ret = unregister_restart_handler(&tps65086_restart->handler); + if (ret) { + dev_err(&pdev->dev, "%s: cannot unregister restart handler: %d\n", + __func__, ret); + return -ENODEV; + } + + return 0; +} + +static const struct platform_device_id tps65086_restart_id_table[] = { + { "tps65086-reset", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(platform, tps65086_restart_id_table); + +static struct platform_driver tps65086_restart_driver = { + .driver = { + .name = "tps65086-restart", + }, + .probe = tps65086_restart_probe, + .remove = tps65086_restart_remove, + .id_table = tps65086_restart_id_table, +}; +module_platform_driver(tps65086_restart_driver); + +MODULE_AUTHOR("Emil Renner Berthing "); +MODULE_DESCRIPTION("TPS65086 restart driver"); +MODULE_LICENSE("GPL v2"); From patchwork Tue Jul 27 09:25:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emil Renner Berthing X-Patchwork-Id: 488325 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-21.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F559C432BE for ; Tue, 27 Jul 2021 09:26:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EB1026134F for ; Tue, 27 Jul 2021 09:26:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236131AbhG0J0P (ORCPT ); Tue, 27 Jul 2021 05:26:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34690 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236110AbhG0J0N (ORCPT ); Tue, 27 Jul 2021 05:26:13 -0400 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FA78C061760; Tue, 27 Jul 2021 02:26:10 -0700 (PDT) Received: by mail-ed1-x52d.google.com with SMTP id da26so14482263edb.1; Tue, 27 Jul 2021 02:26:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=upca8ZIRnBjP2uwyl9H9KklVRdJGlttXPnnXYpx4650=; b=n+ApQm+ESRJgkZY/kH6iEMGP5oHiEDw3WMeMrmJ8b71V/CF5oFY0O/GP2NfJ6RRdvr CwB06TaWH/O0rjuw1BtN40x+t9gHviKxW4l51lfq//5k98Ko2Lj17OJ2/KtJ3YeayB0S BJzJbRdAtUp875qq76gpIOFjvKaz2cdjKwc9mSDCWwNDmIpL/uFHswA2uZk0xIY0VsT/ uHiBta5Nac1yyGx/TXxwVl35368A0Lo7cZD7wOEzIrA3THl4wCp81c71edFumu7PntDM lh4BWU3O7aK/x0ec4Mf2wxWdsMpKSeZYMoq9hg5rq+rvDviri5JZWtN+eOI0KJvsvVwX piVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=upca8ZIRnBjP2uwyl9H9KklVRdJGlttXPnnXYpx4650=; b=WlQ/5GAL4Jj6GD5J3AtgUvQmqAaAXqjGCn/ml+u7UX6SEJYxyhQ0KrNGfFkix3BN5x LhIIfVIvVCbEeLEVOW6myJswcYA1vWmpqTQ/6DagDH5/ACmwFLUA+TBclYCXkIYW3EQZ Epdb9g+wSi5KvPRL0x1MlhXQ9naLGwsOhyuaMguuL27cGEhg15kTKnkgTDw49D42g2ZQ 7mS9wyZAdryaotRp/PYP/IULUNZ20CuRxe5vw40FoENwWoYYS8fbpe7TKlcenUmpwwrF Hp/G9V5O6YbM+4AuYzfuopTpqqng88dpttsctrovORJVC7WG2kSbkATwi6Ss+quVcrst 4olg== X-Gm-Message-State: AOAM532Jrh50IgF3qtX5wq4lpSlM26hiJT6pqv/sJxfbG/0iAahLhII8 IsZw2hBXl2j+jN20qrvxgUI= X-Google-Smtp-Source: ABdhPJyh15E5Fl4c8g3ZAoAI5k1TiBU0gBvaYrBD85ktOxeao55OE5ppu0SMgR2m4zljYIbGzKUBlQ== X-Received: by 2002:aa7:c042:: with SMTP id k2mr25839116edo.104.1627377968648; Tue, 27 Jul 2021 02:26:08 -0700 (PDT) Received: from stitch.. ([82.192.166.82]) by smtp.gmail.com with ESMTPSA id g3sm692369ejp.2.2021.07.27.02.26.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Jul 2021 02:26:08 -0700 (PDT) Sender: Emil Renner Berthing From: Emil Renner Berthing To: Lee Jones , Rob Herring , Sebastian Reichel Cc: Emil Renner Berthing , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/4] mfd: tps65086: Add cell entry for reset driver Date: Tue, 27 Jul 2021 11:25:54 +0200 Message-Id: <20210727092554.1059305-5-kernel@esmil.dk> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210727092554.1059305-1-kernel@esmil.dk> References: <20210727092554.1059305-1-kernel@esmil.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org The only way to reset the BeagleV Starlight v0.9 board[1] properly is to tell the PMIC to reset itself which will then assert the external reset lines of the SoC, USB hub and ethernet phy. This adds an mfd cell entry for the reset driver doing just that. [1] https://github.com/beagleboard/beaglev-starlight Signed-off-by: Emil Renner Berthing --- drivers/mfd/tps65086.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/mfd/tps65086.c b/drivers/mfd/tps65086.c index cc3478ee9a64..3bd5728844a0 100644 --- a/drivers/mfd/tps65086.c +++ b/drivers/mfd/tps65086.c @@ -24,6 +24,7 @@ static const struct mfd_cell tps65086_cells[] = { { .name = "tps65086-regulator", }, { .name = "tps65086-gpio", }, + { .name = "tps65086-reset", }, }; static const struct regmap_range tps65086_yes_ranges[] = {