From patchwork Wed Nov 24 23:04:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 518395 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 98657C433EF for ; Wed, 24 Nov 2021 23:04:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352181AbhKXXIG (ORCPT ); Wed, 24 Nov 2021 18:08:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54050 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232233AbhKXXIF (ORCPT ); Wed, 24 Nov 2021 18:08:05 -0500 Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EAAA1C061574; Wed, 24 Nov 2021 15:04:54 -0800 (PST) Received: by mail-lf1-x133.google.com with SMTP id c32so11296391lfv.4; Wed, 24 Nov 2021 15:04:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lWbqyeFKTpIICRMymi5H38k0B/Ww7jwmEeUwnVlXWRw=; b=BBWiwwcrrubeEEsKBJa5owoPeKRZfdluFYfF1P2knbtHA/JkxNnrKnPs0BWbU8gEPN FYLgYu1SnlfvtAZ6TcFeXiQsBYIh1czGq/jULOgkELbpTBDLv5RYa+MBEbdPCeA6fLET RBRU5RY3Q3t63NgXhTryEs/TNpI2AMN9Ti0IL84bP4zbLY9A7G986Vpi6Ivs/RKYm/S3 DrHrpXaW+ZSEKjFJEVDvUE5uqeaFFVxJ9DHs13pC1NrazwSVZNqWF+chU12lt+bvhhrg RtaW4F0yIflUPD9AvdF+hw/PjQ2aHDDMyqB3xl7y01rt0DbpoyL+Vh1I/a8efmf7nYYI IIMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lWbqyeFKTpIICRMymi5H38k0B/Ww7jwmEeUwnVlXWRw=; b=X1a01tuw/AKKpvS9o4XcYgCT0FefJAftnY6gONcQ3lBFzMRRpzljDKDCFi+26UZ4T1 P8JIn7/KIRLFKjAQpp8FSmrctvXsPi3bVBsZMLGe4m336+lPhBu5f8yWy/usyco+5LhW fDR3Hbmm9Jy22wnjSraG1onO3frhsTctcNYr7p/hjmG1J79eY/MQ5oSMCUABMkF5AvLW N5NtRPlfzB0Mb+sPjxb7pkZXdumO9JzW/EDukjqM+mYwz/KIAOeeYXgQQ1AD/QIyXyxA pubx1B43pFybC519YG6mSwXJwR0d74N0nZLSQ0qXaont6vL0kxwjsbkaejvI7y6XUclD K1qA== X-Gm-Message-State: AOAM533HJU1/6BKjOumvgExf09EBKXEz+GvP9+pSHepY5HODm7hTup+x aI1Re/SEfZYjdPwtUwGVX2o= X-Google-Smtp-Source: ABdhPJzPn86hxh8E/nA0jTARqE7u4J7ABNdcZr57j9b5czRc0sWmJkNF1kqtc4K5OHdUhqRQtJQXBA== X-Received: by 2002:a19:9157:: with SMTP id y23mr19363900lfj.277.1637795093282; Wed, 24 Nov 2021 15:04:53 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id t15sm106243lfp.181.2021.11.24.15.04.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Nov 2021 15:04:53 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Linus Walleij , Rob Herring Cc: Tony Lindgren , Andy Shevchenko , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= Subject: [PATCH V2 1/6] dt-bindings: pinctrl: support specifying pins, groups & functions Date: Thu, 25 Nov 2021 00:04:34 +0100 Message-Id: <20211124230439.17531-2-zajec5@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124230439.17531-1-zajec5@gmail.com> References: <20211124230439.17531-1-zajec5@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Rafał Miłecki This binding change is meant to introduce a generic way of describing pinctrl blocks details. Every pinmux block is expected to have: 1. Named pins 2. Named groups containing one or more pins 3. Named functions referencing one or more groups It doesn't describe how hw should be programmed. That remains binding and driver specific. This commit describes syntax for "pins", "groups" & "functions" nodes in a standard pinctrl binding. Every above node allows specifying its entries and it's done using subnodes. That design it meant to be generic and extendable (hw specific properties can be added). Using subnodes allows storing hw specific pin/group/function configuration. While it would be possible to have: groups { foo-pins = <0 1>; bar-pins = <2 3>; }; that doesn't allow hw specific quirks. Introduced design allows e.g.: groups { foo { pins = <0 1>; vendor,magic = <0xbeaf>; }; }; Signed-off-by: Rafał Miłecki --- Rob: this patch depends on another one I sent 2 weeks ago: [PATCH 2/2] dt-bindings: pinctrl: use pinctrl.yaml https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20211110165720.30242-2-zajec5@gmail.com/ V2: Don't use "reg" property as explained by Tony --- .../devicetree/bindings/pinctrl/pinctrl.yaml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/pinctrl.yaml index d471563119a9..25d8188fbb26 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl.yaml +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl.yaml @@ -42,4 +42,44 @@ properties: This property can be set either globally for the pin controller or in child nodes for individual pin group control. + pins: + type: object + + patternProperties: + "^.*$": + type: object + + properties: + number: + description: Pin number + $ref: /schemas/types.yaml#/definitions/uint32 + + additionalProperties: false + + groups: + type: object + + patternProperties: + "^.*$": + type: object + description: Group identified by node name + + properties: + pins: + $ref: /schemas/types.yaml#/definitions/uint32-array + description: Array of pins belonging to this group + + functions: + type: object + + patternProperties: + "^.*$": + type: object + description: Function identified by node name + + properties: + groups: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: Array of pins groups used by this function + additionalProperties: true From patchwork Wed Nov 24 23:04:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 517099 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3BA7CC433F5 for ; Wed, 24 Nov 2021 23:05:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352309AbhKXXIK (ORCPT ); Wed, 24 Nov 2021 18:08:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350651AbhKXXIH (ORCPT ); Wed, 24 Nov 2021 18:08:07 -0500 Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com [IPv6:2a00:1450:4864:20::231]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BA49C061574; Wed, 24 Nov 2021 15:04:57 -0800 (PST) Received: by mail-lj1-x231.google.com with SMTP id i63so8665855lji.3; Wed, 24 Nov 2021 15:04:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=t5U1SyZfZoNpGvHsTDHh7UaG3kdZXZO+eWrR/VnLjrk=; b=lCDNG9jpw+/etEW6mwyL4EzIUojTEv+dOGBBzgrrZB2DbGynnUmiV83vYs5DXdOUIy T5U80pnSUEq1tYgeHhySOJZe7lTdOEj71TkP+XU3JZK8uTbcAy3HA4J51Oe0v7CJQg1w 7ywe+qhLGu6Ze6qA+cJB5S9SMYxjOFe1acreWzja7KvbjJHa05DDdtOMYJpTXov2Hll+ oQ7/6Oa8qR1rLuIS8OiBFazPtbjgWp5QMhSfIiHeqS9wvIqR5EQ7i/3cf8D+n5hCy87W /u7Oes8iQC2Fev+B+L/taTDoJxcYYfQ/++RqdOEYi+4uDnvwNHEyki25aSrP/x2exnot F2FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=t5U1SyZfZoNpGvHsTDHh7UaG3kdZXZO+eWrR/VnLjrk=; b=QO+SW/F+GpMedL600PcfDCxU41O4k+BGV1c3zTcpkEzF6vknYOiYD30mzn88K/7C/u IbEbYdLovAeCVAtSZPNIhNXc4+gMquacH9PPZoYeM+ScVTTp8Ye0vSaEN7mZJxnvCH7E dmSJudWKquWOPfyBPkczPytp8zc7T8oesZsDO5ATlM1bvVR3U3EWo6mWq7mnXZzBLIG2 fz0b806RQF6PJHY/voO1JoE86sop4IqbjlftwpwQUSS8/7kNOQuByGrMfRVdYIqmsSrg 6+lSKm7x7rFUyDfhscT88mfGMngVB0Z24Vdq91qF7k5ZxR0jOl2lKJBIk0uPIiKcZtHR pi2A== X-Gm-Message-State: AOAM530+mq6d25lgMevWCsySlCc3aOlcomzgewy/HSvwsBZQCCn0Pj1/ MvhXMLD8S9fzJbXFgmjKATc= X-Google-Smtp-Source: ABdhPJx6vDIEcyUtB+GGU0RO2j8UW/qmW6qWgbrVozwXJdnq6GLsQfLFu/fmFeWwCylyo3vB3wo+Ww== X-Received: by 2002:a2e:904b:: with SMTP id n11mr19791007ljg.120.1637795095369; Wed, 24 Nov 2021 15:04:55 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id t15sm106243lfp.181.2021.11.24.15.04.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Nov 2021 15:04:55 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Linus Walleij , Rob Herring Cc: Tony Lindgren , Andy Shevchenko , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= Subject: [PATCH V2 2/6] dt-bindings: pinctrl: brcm,ns-pinmux: extend example Date: Thu, 25 Nov 2021 00:04:35 +0100 Message-Id: <20211124230439.17531-3-zajec5@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124230439.17531-1-zajec5@gmail.com> References: <20211124230439.17531-1-zajec5@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Rafał Miłecki pinctrl bindings allow specifying pins, groups & functions now. Put some entries in binding example to help writing DTS files. Specify pins, groups & functions in the example. Signed-off-by: Rafał Miłecki --- V2: Update "pins" to match new binding --- .../bindings/pinctrl/brcm,ns-pinmux.yaml | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,ns-pinmux.yaml b/Documentation/devicetree/bindings/pinctrl/brcm,ns-pinmux.yaml index 8d1e5b1cdd5f..e5816a10938c 100644 --- a/Documentation/devicetree/bindings/pinctrl/brcm,ns-pinmux.yaml +++ b/Documentation/devicetree/bindings/pinctrl/brcm,ns-pinmux.yaml @@ -74,7 +74,7 @@ required: - reg - reg-names -additionalProperties: false +unevaluatedProperties: false examples: - | @@ -83,6 +83,28 @@ examples: reg = <0x1800c1c0 0x24>; reg-names = "cru_gpio_control"; + pins { + i2c_scl { + number = <4>; + }; + + i2c_sda { + number = <5>; + }; + }; + + groups { + i2c_grp: i2c_grp { + pins = <4 5>; + }; + }; + + functions { + i2c { + groups = <&i2c_grp>; + }; + }; + spi-pins { function = "spi"; groups = "spi_grp"; From patchwork Wed Nov 24 23:04:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 518394 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5889DC433FE for ; Wed, 24 Nov 2021 23:05:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350651AbhKXXIL (ORCPT ); Wed, 24 Nov 2021 18:08:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352394AbhKXXIJ (ORCPT ); Wed, 24 Nov 2021 18:08:09 -0500 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B65CBC061574; Wed, 24 Nov 2021 15:04:58 -0800 (PST) Received: by mail-lf1-x12f.google.com with SMTP id t26so11222719lfk.9; Wed, 24 Nov 2021 15:04:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YVkTUK7QkjIeFdpB9hVLrTY5BoIQjyOYtxWUGwbvJys=; b=kL/fVgVn10AbM0lKYm76V+9I42RK7/GvBIURJGR8n2ZR4lXDzve1AorLsLZ6GvintH Ml8g8BKIMgZYfaNyI1Mw6jYiq+xc4mnote0sT054Cjd0jTLfvmQVyNFryxYdRLDgFTf2 nGiWvuKURLzZ6MVUyUEIVRZsaOS69rOClS2qPukxGaEljXP/uS2zgdrpNDVzrCO64sZ3 b1WQBeEt+UKjU/K8/Yg0VorHNDjMnvqJgk4SMVv5JVCnd5LbQ6R/VpJ5K8+gBdi/cP4z sOpwGIEA5JAL2XG/uAHpFHEtoscF6nP8gGON9Qr07D1VJYIu63H/b+uBqQb6SKlVc3fE IqPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YVkTUK7QkjIeFdpB9hVLrTY5BoIQjyOYtxWUGwbvJys=; b=7nGAarQcGdLUlcSLwQq59BPQJdm7ZIAaqXIrLVxlcvYOFarEVY4XSCVQdapk+fb+7m EXbAqyt6K1Q9t9EnLH1f3BT3xHa8lkksCBoy5auA1jd7xGyw2QuqzybK5Y4LKSmPOkvB JjcGWm8srAkY7X2XrDg9LDYD2PTD63KcGN6uQj5TeBQt2QOxxesGkiVAd2fIyB4eavBN wg3zlR3KdYDVYfYJlzyZ1YwOEMenIzAj4MuOIGDNaCXkdzB5VX24uuATmAvvaRbUXhwf pEuAP3H7yAim+JtOykVQY7z2etFj46Wx61ofsS5n6tsG7Ls7P/JBmBJCo7nJ3mcyTMK0 SYeA== X-Gm-Message-State: AOAM531Agmc0Cp4xmuGyi7AnCHveoS9yyL8FkbLmWfxIOoAHE0jEyy+s VpuLYyUSPoTmtTDI3VQ8crg= X-Google-Smtp-Source: ABdhPJyAbaZJqJqseIcqpYz/VNW4WSEM4wxx6mxoUSpt0+BE7dUQIugjOrYjhoVf6yWSu5lF8vYrog== X-Received: by 2002:a05:6512:a91:: with SMTP id m17mr19411033lfu.638.1637795097079; Wed, 24 Nov 2021 15:04:57 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id t15sm106243lfp.181.2021.11.24.15.04.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Nov 2021 15:04:56 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Linus Walleij , Rob Herring Cc: Tony Lindgren , Andy Shevchenko , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= Subject: [PATCH V2 3/6] pinctrl: prepare API for reading pins, groups & functions Date: Thu, 25 Nov 2021 00:04:36 +0100 Message-Id: <20211124230439.17531-4-zajec5@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124230439.17531-1-zajec5@gmail.com> References: <20211124230439.17531-1-zajec5@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Rafał Miłecki That API can be used for parsing platform data (coming from e.g. DT or ACPI) into pinctrl generic structures. Signed-off-by: Rafał Miłecki --- V2: New patch in the series to address Andy's API review --- drivers/pinctrl/core.c | 12 ++++++++++++ drivers/pinctrl/core.h | 4 ++++ drivers/pinctrl/pinmux.c | 6 ++++++ drivers/pinctrl/pinmux.h | 2 ++ 4 files changed, 24 insertions(+) diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index ffe39336fcac..53b3e8b54a9b 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -515,8 +515,20 @@ void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev, } EXPORT_SYMBOL_GPL(pinctrl_remove_gpio_range); +int pinctrl_generic_load_pins(struct pinctrl_desc *pctldesc, struct device *dev) +{ + return -ENOENT; +} +EXPORT_SYMBOL_GPL(pinctrl_generic_load_pins); + #ifdef CONFIG_GENERIC_PINCTRL_GROUPS +int pinctrl_generic_load_groups(struct pinctrl_dev *pctldev) +{ + return -ENOENT; +} +EXPORT_SYMBOL_GPL(pinctrl_generic_load_groups); + /** * pinctrl_generic_get_group_count() - returns the number of pin groups * @pctldev: pin controller device diff --git a/drivers/pinctrl/core.h b/drivers/pinctrl/core.h index 840103c40c14..def60d89d37b 100644 --- a/drivers/pinctrl/core.h +++ b/drivers/pinctrl/core.h @@ -182,6 +182,8 @@ struct pinctrl_maps { unsigned num_maps; }; +int pinctrl_generic_load_pins(struct pinctrl_desc *pctldesc, struct device *dev); + #ifdef CONFIG_GENERIC_PINCTRL_GROUPS /** @@ -198,6 +200,8 @@ struct group_desc { void *data; }; +int pinctrl_generic_load_groups(struct pinctrl_dev *pctldev); + int pinctrl_generic_get_group_count(struct pinctrl_dev *pctldev); const char *pinctrl_generic_get_group_name(struct pinctrl_dev *pctldev, diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c index 6cdbd9ccf2f0..ef7d2cbf0946 100644 --- a/drivers/pinctrl/pinmux.c +++ b/drivers/pinctrl/pinmux.c @@ -788,6 +788,12 @@ void pinmux_init_device_debugfs(struct dentry *devroot, #ifdef CONFIG_GENERIC_PINMUX_FUNCTIONS +int pinmux_generic_load_functions(struct pinctrl_dev *pctldev) +{ + return -ENOENT; +} +EXPORT_SYMBOL_GPL(pinmux_generic_load_functions); + /** * pinmux_generic_get_function_count() - returns number of functions * @pctldev: pin controller device diff --git a/drivers/pinctrl/pinmux.h b/drivers/pinctrl/pinmux.h index 78c3a31be882..85e5e3a0222f 100644 --- a/drivers/pinctrl/pinmux.h +++ b/drivers/pinctrl/pinmux.h @@ -134,6 +134,8 @@ struct function_desc { void *data; }; +int pinmux_generic_load_functions(struct pinctrl_dev *pctldev); + int pinmux_generic_get_function_count(struct pinctrl_dev *pctldev); const char * From patchwork Wed Nov 24 23:04:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 518393 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC44AC43217 for ; Wed, 24 Nov 2021 23:05:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352323AbhKXXIN (ORCPT ); Wed, 24 Nov 2021 18:08:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232233AbhKXXIL (ORCPT ); Wed, 24 Nov 2021 18:08:11 -0500 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5CF7EC061574; Wed, 24 Nov 2021 15:05:00 -0800 (PST) Received: by mail-lf1-x12a.google.com with SMTP id f18so11268025lfv.6; Wed, 24 Nov 2021 15:05:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jf6byrH4ANB6TExq8PGAH/b0DeVk7tVroeKAe91ZQMA=; b=YuXEfoqeeoz4pH50VVL6U1HkVptULVaVyPgPEEbDEf8T2A/euQ3lqUFLD4i0mqTlwq sxOLf4/HAHQk3xAjsdKdV4AUHXg611sp2XJu+9S/bPtWwcw2Z7SHf5UljbtHIBThyoCc xRB8wL0euX+PlgZJFw7HRcPnNuieA2M6B62lqitOlhyL8FkEKulIcx53XIF3vJXsYwX8 PbR7+4F+RocD917qxATdpLW0FWbgQRn0moCiArJWe3zIdcikvjQR8MR8580ES1pV4r8D wg+O1cwR7YK/wNhnkoCz4Qs9mKFObc561aPpzZ1r7Vqoopeha0wbh0LoDTX6t4xwAbxG F1nQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jf6byrH4ANB6TExq8PGAH/b0DeVk7tVroeKAe91ZQMA=; b=WElYkPnKFItoxwdp53w9T65k+k39kopb50YSUveAWsYAU0dCon84SPehDJwdjjBIqI gEb2ZQJHlYMEI9CThvXiKSH+UBnXlvz8wP1bJMXkXevIIrqyw0AnQGLgykbjgvIYjrso 642Q61IDGF/Y0JSuN2Oo8vJUx/NYsPMjNsVY1DaNlIheOwKaMCPBVzzMliyQckGg91V7 +vk98O6Uc0RZMpKM25fExPoDWuOM/hxfxdmQsvgNhNa/5kYZDp9fG0Ap0wNUSQYK9Bf0 byiKy98bCcxNrPwbN8U8QsGAknHR2OQVAbU29tYtolqIS2sYsTq+l9WAqw3tNNhkdw96 3urg== X-Gm-Message-State: AOAM532ktfyEsQGMqvMlzxAldZgHBC/FX8vRwLjxBiPfpDiDSICyaGqM 1FDbv9X8HfOEZ0F90Ux8DZE= X-Google-Smtp-Source: ABdhPJyJn22Wtpwzu5pAhlIuYMkgGMQTdAOfiqhTeUMu7YgI7YJ022htjj1hLABdJ7l4WIVT61FF6Q== X-Received: by 2002:a05:6512:39d6:: with SMTP id k22mr19465971lfu.559.1637795098680; Wed, 24 Nov 2021 15:04:58 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id t15sm106243lfp.181.2021.11.24.15.04.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Nov 2021 15:04:58 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Linus Walleij , Rob Herring Cc: Tony Lindgren , Andy Shevchenko , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= Subject: [PATCH V2 4/6] pinctrl: support reading pins, groups & functions from DT Date: Thu, 25 Nov 2021 00:04:37 +0100 Message-Id: <20211124230439.17531-5-zajec5@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124230439.17531-1-zajec5@gmail.com> References: <20211124230439.17531-1-zajec5@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Rafał Miłecki DT binding allows specifying pins, groups & functions now. That allows storing them in DT instead of hardcoding in drivers. This adds support for DT as data source to recently introduced API. Signed-off-by: Rafał Miłecki --- V2: Update pinctrl_generic_dt_load_pins() to support new binding --- drivers/pinctrl/core.c | 6 ++ drivers/pinctrl/devicetree.c | 131 +++++++++++++++++++++++++++++++++++ drivers/pinctrl/devicetree.h | 29 ++++++++ drivers/pinctrl/pinmux.c | 4 ++ 4 files changed, 170 insertions(+) diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index 53b3e8b54a9b..4c39ca338896 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -517,6 +517,9 @@ EXPORT_SYMBOL_GPL(pinctrl_remove_gpio_range); int pinctrl_generic_load_pins(struct pinctrl_desc *pctldesc, struct device *dev) { + if (dev->of_node) + return pinctrl_generic_dt_load_pins(pctldesc, dev); + return -ENOENT; } EXPORT_SYMBOL_GPL(pinctrl_generic_load_pins); @@ -525,6 +528,9 @@ EXPORT_SYMBOL_GPL(pinctrl_generic_load_pins); int pinctrl_generic_load_groups(struct pinctrl_dev *pctldev) { + if (pctldev->dev->of_node) + return pinctrl_generic_load_dt_groups(pctldev); + return -ENOENT; } EXPORT_SYMBOL_GPL(pinctrl_generic_load_groups); diff --git a/drivers/pinctrl/devicetree.c b/drivers/pinctrl/devicetree.c index 3fb238714718..5e511e61449a 100644 --- a/drivers/pinctrl/devicetree.c +++ b/drivers/pinctrl/devicetree.c @@ -12,6 +12,7 @@ #include "core.h" #include "devicetree.h" +#include "pinmux.h" /** * struct pinctrl_dt_map - mapping table chunk parsed from device tree @@ -27,6 +28,136 @@ struct pinctrl_dt_map { unsigned num_maps; }; +int pinctrl_generic_dt_load_pins(struct pinctrl_desc *pctldesc, + struct device *dev) +{ + struct pinctrl_pin_desc *descs; + struct device_node *pins; + struct device_node *np; + int err = 0; + int i = 0; + + pins = of_get_child_by_name(dev->of_node, "pins"); + if (!pins) { + dev_err(dev, "failed to find \"pins\" DT node\n"); + err = -ENOENT; + goto err_out; + } + + pctldesc->npins = of_get_available_child_count(pins); + + descs = devm_kcalloc(dev, pctldesc->npins, sizeof(*descs), GFP_KERNEL); + if (!descs) { + err = -ENOMEM; + goto err_put_node; + } + + for_each_available_child_of_node(pins, np) { + descs[i].name = np->name; + + if (of_property_read_u32(np, "number", &descs[i].number)) { + dev_err(dev, "missing \"number\" property in %pOF\n", np); + err = -ENOENT; + goto err_put_node; + } + + i++; + } + + pctldesc->pins = descs; + +err_put_node: + of_node_put(pins); +err_out: + return err; +} + +#ifdef CONFIG_GENERIC_PINCTRL_GROUPS + +int pinctrl_generic_load_dt_groups(struct pinctrl_dev *pctldev) +{ + struct device *dev = pctldev->dev; + struct device_node *groups; + struct device_node *np; + int err = 0; + + groups = of_get_child_by_name(dev->of_node, "groups"); + if (!groups) { + dev_err(dev, "failed to find \"groups\" DT node\n"); + err = -ENOENT; + goto err_out; + } + + for_each_available_child_of_node(groups, np) { + int num_pins; + u32 *pins; + + num_pins = of_property_count_u32_elems(np, "pins"); + pins = devm_kmalloc_array(dev, num_pins, sizeof(*pins), GFP_KERNEL); + if (!pins) { + err = -ENOMEM; + goto err_put_node; + } + + if (of_property_read_u32_array(np, "pins", pins, num_pins)) { + err = -EIO; + goto err_put_node; + } + + pinctrl_generic_add_group(pctldev, np->name, pins, num_pins, np); + } + +err_put_node: + of_node_put(groups); +err_out: + return err; +} + +#endif + +#ifdef CONFIG_GENERIC_PINMUX_FUNCTIONS +int pinmux_generic_load_dt_functions(struct pinctrl_dev *pctldev) +{ + struct device *dev = pctldev->dev; + struct device_node *functions; + struct device_node *np; + int err = 0; + + functions = of_get_child_by_name(dev->of_node, "functions"); + if (!functions) { + dev_err(dev, "failed to find \"functions\" DT node\n"); + err = -ENOENT; + goto err_out; + } + + for_each_available_child_of_node(functions, np) { + int num_groups = of_count_phandle_with_args(np, "groups", NULL); + struct of_phandle_iterator it; + const char **groups; + int ret; + int i; + + groups = devm_kmalloc_array(dev, num_groups, sizeof(*groups), GFP_KERNEL); + if (!groups) { + err = -ENOMEM; + goto err_put_node; + } + + i = 0; + of_for_each_phandle(&it, ret, np, "groups", NULL, 0) { + groups[i++] = it.node->name; + } + + pinmux_generic_add_function(pctldev, np->name, groups, num_groups, np); + } + +err_put_node: + of_node_put(functions); +err_out: + return err; +} +#endif + static void dt_free_map(struct pinctrl_dev *pctldev, struct pinctrl_map *map, unsigned num_maps) { diff --git a/drivers/pinctrl/devicetree.h b/drivers/pinctrl/devicetree.h index efa80779de4f..156f13896c39 100644 --- a/drivers/pinctrl/devicetree.h +++ b/drivers/pinctrl/devicetree.h @@ -9,6 +9,15 @@ struct of_phandle_args; #ifdef CONFIG_OF +int pinctrl_generic_dt_load_pins(struct pinctrl_desc *pctldesc, + struct device *dev); +#ifdef CONFIG_GENERIC_PINCTRL_GROUPS +int pinctrl_generic_load_dt_groups(struct pinctrl_dev *pctldev); +#endif +#ifdef CONFIG_GENERIC_PINMUX_FUNCTIONS +int pinmux_generic_load_dt_functions(struct pinctrl_dev *pctldev); +#endif + void pinctrl_dt_free_maps(struct pinctrl *p); int pinctrl_dt_to_map(struct pinctrl *p, struct pinctrl_dev *pctldev); @@ -21,6 +30,26 @@ int pinctrl_parse_index_with_args(const struct device_node *np, #else +static inline int pinctrl_generic_dt_load_pins(struct pinctrl_desc *pctldesc, + struct device *dev) +{ + return -EOPNOTSUPP; +} + +#ifdef CONFIG_GENERIC_PINCTRL_GROUPS +static inline int pinctrl_generic_load_dt_groups(struct pinctrl_dev *pctldev) +{ + return -EOPNOTSUPP; +} +#endif + +#ifdef CONFIG_GENERIC_PINMUX_FUNCTIONS +static inline int pinmux_generic_load_dt_functions(struct pinctrl_dev *pctldev) +{ + return -EOPNOTSUPP; +} +#endif + static inline int pinctrl_dt_to_map(struct pinctrl *p, struct pinctrl_dev *pctldev) { diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c index ef7d2cbf0946..36a1d1af4a20 100644 --- a/drivers/pinctrl/pinmux.c +++ b/drivers/pinctrl/pinmux.c @@ -27,6 +27,7 @@ #include #include #include "core.h" +#include "devicetree.h" #include "pinmux.h" int pinmux_check_ops(struct pinctrl_dev *pctldev) @@ -790,6 +791,9 @@ void pinmux_init_device_debugfs(struct dentry *devroot, int pinmux_generic_load_functions(struct pinctrl_dev *pctldev) { + if (pctldev->dev->of_node) + return pinmux_generic_load_dt_functions(pctldev); + return -ENOENT; } EXPORT_SYMBOL_GPL(pinmux_generic_load_functions); From patchwork Wed Nov 24 23:04:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 517098 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32DF1C4167B for ; Wed, 24 Nov 2021 23:05:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352378AbhKXXIN (ORCPT ); Wed, 24 Nov 2021 18:08:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352370AbhKXXIM (ORCPT ); Wed, 24 Nov 2021 18:08:12 -0500 Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 00EFFC061748; Wed, 24 Nov 2021 15:05:01 -0800 (PST) Received: by mail-lf1-x12c.google.com with SMTP id n12so11328636lfe.1; Wed, 24 Nov 2021 15:05:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=F+wTJaDM5r+kBEnKzSjdLDhTIMgT1zwrllSdQA6Fd8c=; b=GAcDYwPz9LSENEq26U7TEJnu6ce9k/4l2vXsfG9xKZjxo8q93jC+Eus++WIDCdLORm zRHYDw+2TK48X2NRzeY8Dm6gWWoZu0TPJRBOVIFaepkjyOzU7nBLlsQtC7Dv01TZ/zlW xZbtJ1pckfWxeRzXBGO4b32ioqsDT7zF/kXP5BTNnV/ysyURA505gvVNXBo2KFxfDaMc eWLuAGaSrja2fTXgkIFzqXWlb3FjnJH9ZuNvek935eCPQ9YFo5kfIkpEH5KacDuq0787 orInYbewu19bnL4v+tqLC8vUySuQKrbc6O1hxiwdRd2Tz1eelXOWuu+i58rEcBO35YDv k8CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=F+wTJaDM5r+kBEnKzSjdLDhTIMgT1zwrllSdQA6Fd8c=; b=0mmTIKzXgqMs18WwGvt+ip4xv5uVuaFsJFh34xk+NuhW/HL6Z95siyzYHquVJ+Ktpr Z4Ge/UfwRiZYOXitWCBsMWTIvhJnDVYUj4TcYDyZqhTxBXC30tv63gXzvVBH/ig7wLoN YNLgJH+lp3f4IrP+DAQqZw9hWIjFZ6qtlHC1ayB95wZwVBvdcMl2xpKNew8YCk/zbyLW +Dk5xA3yRFCW3hoNiMZ1WTdesYcyKFf53CRJ+B6DBrSyQoVa70j1dF5dImqigaOJt44T WoNasTTEgDrS+54VtL5+szooZcrPN3FDy27Sz3s5YIbGTmgokjoN1flKS6exsfrPD5JG kGxA== X-Gm-Message-State: AOAM530b906gnOdWQlsdNKvOncdbctfqWU0UWz3p3egqB3P/133A1t3y fA4GZ9oJvmNue1ay9oLdrPw= X-Google-Smtp-Source: ABdhPJwu/Bw6vmmNeIOw2NrUsgPlQvnNVaCKt3cFrezWklnMjvvFXnXK5qx9O+hzEH9Qtt3+e1/LMA== X-Received: by 2002:ac2:5388:: with SMTP id g8mr19570402lfh.382.1637795100285; Wed, 24 Nov 2021 15:05:00 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id t15sm106243lfp.181.2021.11.24.15.04.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Nov 2021 15:05:00 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Linus Walleij , Rob Herring Cc: Tony Lindgren , Andy Shevchenko , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= Subject: [PATCH V2 5/6] pinctrl: bcm: pinctrl-ns: supoprt DT specified pins, groups & functions Date: Thu, 25 Nov 2021 00:04:38 +0100 Message-Id: <20211124230439.17531-6-zajec5@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124230439.17531-1-zajec5@gmail.com> References: <20211124230439.17531-1-zajec5@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Rafał Miłecki It's now possible to specify hardware pins, groups & functions in DT instead of hardcoding that info in a driver. Use pinctrl subsystem helpers to extract that info from DT. Keep hardcoded data as fallback method. Signed-off-by: Rafał Miłecki --- drivers/pinctrl/bcm/pinctrl-ns.c | 90 +++++++++++++++++++++----------- 1 file changed, 60 insertions(+), 30 deletions(-) diff --git a/drivers/pinctrl/bcm/pinctrl-ns.c b/drivers/pinctrl/bcm/pinctrl-ns.c index 0897041b5ef1..9036d62c806f 100644 --- a/drivers/pinctrl/bcm/pinctrl-ns.c +++ b/drivers/pinctrl/bcm/pinctrl-ns.c @@ -213,7 +213,11 @@ static int ns_pinctrl_probe(struct platform_device *pdev) struct ns_pinctrl *ns_pinctrl; struct pinctrl_desc *pctldesc; struct pinctrl_pin_desc *pin; + struct device_node *functions; + struct device_node *groups; + struct device_node *pins; struct resource *res; + int err; int i; ns_pinctrl = devm_kzalloc(dev, sizeof(*ns_pinctrl), GFP_KERNEL); @@ -243,19 +247,27 @@ static int ns_pinctrl_probe(struct platform_device *pdev) /* Set pinctrl properties */ - pctldesc->pins = devm_kcalloc(dev, ARRAY_SIZE(ns_pinctrl_pins), - sizeof(struct pinctrl_pin_desc), - GFP_KERNEL); - if (!pctldesc->pins) - return -ENOMEM; - for (i = 0, pin = (struct pinctrl_pin_desc *)&pctldesc->pins[0]; - i < ARRAY_SIZE(ns_pinctrl_pins); i++) { - const struct pinctrl_pin_desc *src = &ns_pinctrl_pins[i]; - unsigned int chipsets = (uintptr_t)src->drv_data; - - if (chipsets & ns_pinctrl->chipset_flag) { - memcpy(pin++, src, sizeof(*src)); - pctldesc->npins++; + pins = of_get_child_by_name(dev->of_node, "pins"); + if (pins) { + err = pinctrl_generic_load_pins(pctldesc, dev); + of_node_put(pins); + if (err) + return err; + } else { + pctldesc->pins = devm_kcalloc(dev, ARRAY_SIZE(ns_pinctrl_pins), + sizeof(struct pinctrl_pin_desc), + GFP_KERNEL); + if (!pctldesc->pins) + return -ENOMEM; + for (i = 0, pin = (struct pinctrl_pin_desc *)&pctldesc->pins[0]; + i < ARRAY_SIZE(ns_pinctrl_pins); i++) { + const struct pinctrl_pin_desc *src = &ns_pinctrl_pins[i]; + unsigned int chipsets = (uintptr_t)src->drv_data; + + if (chipsets & ns_pinctrl->chipset_flag) { + memcpy(pin++, src, sizeof(*src)); + pctldesc->npins++; + } } } @@ -267,25 +279,43 @@ static int ns_pinctrl_probe(struct platform_device *pdev) return PTR_ERR(ns_pinctrl->pctldev); } - for (i = 0; i < ARRAY_SIZE(ns_pinctrl_groups); i++) { - const struct ns_pinctrl_group *group = &ns_pinctrl_groups[i]; - - if (!(group->chipsets & ns_pinctrl->chipset_flag)) - continue; - - pinctrl_generic_add_group(ns_pinctrl->pctldev, group->name, - group->pins, group->num_pins, NULL); + groups = of_get_child_by_name(dev->of_node, "groups"); + if (groups) { + err = pinctrl_generic_load_groups(ns_pinctrl->pctldev); + of_node_put(groups); + if (err) + return err; + } else { + for (i = 0; i < ARRAY_SIZE(ns_pinctrl_groups); i++) { + const struct ns_pinctrl_group *group = &ns_pinctrl_groups[i]; + + if (!(group->chipsets & ns_pinctrl->chipset_flag)) + continue; + + pinctrl_generic_add_group(ns_pinctrl->pctldev, + group->name, group->pins, + group->num_pins, NULL); + } } - for (i = 0; i < ARRAY_SIZE(ns_pinctrl_functions); i++) { - const struct ns_pinctrl_function *function = &ns_pinctrl_functions[i]; - - if (!(function->chipsets & ns_pinctrl->chipset_flag)) - continue; - - pinmux_generic_add_function(ns_pinctrl->pctldev, function->name, - function->groups, - function->num_groups, NULL); + functions = of_get_child_by_name(dev->of_node, "functions"); + if (functions) { + err = pinmux_generic_load_functions(ns_pinctrl->pctldev); + of_node_put(functions); + if (err) + return err; + } else { + for (i = 0; i < ARRAY_SIZE(ns_pinctrl_functions); i++) { + const struct ns_pinctrl_function *function = &ns_pinctrl_functions[i]; + + if (!(function->chipsets & ns_pinctrl->chipset_flag)) + continue; + + pinmux_generic_add_function(ns_pinctrl->pctldev, + function->name, + function->groups, + function->num_groups, NULL); + } } return 0; From patchwork Wed Nov 24 23:04:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 517097 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 352A0C433EF for ; Wed, 24 Nov 2021 23:05:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352394AbhKXXIO (ORCPT ); Wed, 24 Nov 2021 18:08:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352383AbhKXXIO (ORCPT ); Wed, 24 Nov 2021 18:08:14 -0500 Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6402C061574; Wed, 24 Nov 2021 15:05:03 -0800 (PST) Received: by mail-lf1-x12e.google.com with SMTP id l22so11258944lfg.7; Wed, 24 Nov 2021 15:05:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BA4tDKZ+Blkfi7C2aIpzTSZjN8sBLs0JXhtIeRx//l0=; b=HJ3CzNE720BoEQwLXxTJzU5F5WnyQL9L+TwIUcvsYGsBGKSIQ5GwKBnVoSjH5CG2sv olhelTd/O/14pEeBgbvUOg+NzaB3ti4j8hOxor24+LHcu9G96PuxnjTsTOZmf5NtkoNP DirSPu/JIGQNj0alR1rqZgsizHyjfmxyMrfp7pAEBUelBW9esFxun/ii54ytV1xPsGQg dfXegp2PYaR8aIMhricIxIftejKYnrv1fNGg1/EugDfqfWduqxSb7mI4/u7syXNf+8nU epZwkE9dHJ0+Lg/EjwpmTZ4qNdo/1tndgnYTyLcc7KLrNB0jIVYkc8csr3qfcZyTjSr5 LpQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BA4tDKZ+Blkfi7C2aIpzTSZjN8sBLs0JXhtIeRx//l0=; b=ZvwzbirFQWSWub4hZzK4n2S+Vg5ljOvh3EI7OHF0d6OvaRtoHCA+2Wj2j/H0O0rWm5 DlNPqSNLWgx80cwEArVerLNYP4ODyv2FV04Mf8zNbq8Qr/UPDtrAiiserooVhobNEwjo NmdwwZWlV56Y7fU3RWrrGvte2DF1TcGhgaEUa7hyBJ6tv1wH/SHQ0pYOfad6wnKq0zF4 aAUECSX4wKSTRsVCjB9hfPOdgVfiOX8XPfxiUWe5a+qI0RjKeIY34axm4MEwBMqj6+Bu ez3y+eu6U3vls+Wrm7k+KBdk0HeFxNoYyFw5k7xtSEDDlk9XJJ8TzT08hSzp59+HQxvz CKyQ== X-Gm-Message-State: AOAM530VDyUkyHpmRfMc5gfW3kMJWLwG95w0Y8KlrTCnwLwMjSky1ct+ u2LWLZ30zDxClanGP18kiQg= X-Google-Smtp-Source: ABdhPJxlKTpuABlfgXMhnD3RKra37k5e5VXA1sE76OLIfrEf7HmMbG+YtBDg7qbXIQtXRpVCU4Zzhw== X-Received: by 2002:ac2:5d67:: with SMTP id h7mr18924907lft.493.1637795102007; Wed, 24 Nov 2021 15:05:02 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id t15sm106243lfp.181.2021.11.24.15.05.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Nov 2021 15:05:01 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: Linus Walleij , Rob Herring Cc: Tony Lindgren , Andy Shevchenko , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= Subject: [PATCH V2 6/6] ARM: dts: BCM5301X: add pinctrl pins, groups & functions Date: Thu, 25 Nov 2021 00:04:39 +0100 Message-Id: <20211124230439.17531-7-zajec5@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124230439.17531-1-zajec5@gmail.com> References: <20211124230439.17531-1-zajec5@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Rafał Miłecki They can now be described in DT so do that. Signed-off-by: Rafał Miłecki --- V2: Update "pins" to match updated binding --- arch/arm/boot/dts/bcm4709.dtsi | 67 ++++++++++++++++++++ arch/arm/boot/dts/bcm47094.dtsi | 11 +--- arch/arm/boot/dts/bcm5301x.dtsi | 109 ++++++++++++++++++++++++++++++++ 3 files changed, 177 insertions(+), 10 deletions(-) diff --git a/arch/arm/boot/dts/bcm4709.dtsi b/arch/arm/boot/dts/bcm4709.dtsi index cba3d910bed8..481dc3e9353b 100644 --- a/arch/arm/boot/dts/bcm4709.dtsi +++ b/arch/arm/boot/dts/bcm4709.dtsi @@ -10,6 +10,73 @@ &uart0 { status = "okay"; }; +&pinctrl { + compatible = "brcm,bcm4709-pinmux"; + + pins { + mdc { + number = <6>; + }; + + mdio { + number = <7>; + }; + + uart2_rx { + number = <16>; + }; + + uart2_tx { + number = <17>; + }; + + /* TODO + * xtal_out { + * }; + */ + + sdio_pwr { + number = <22>; + }; + + sdio_en_1p8v { + number = <23>; + }; + }; + + groups { + mdio_grp: mdio_grp { + pins = <6 7>; + }; + + uart2_grp: uart2_grp { + pins = <16 17>; + }; + + sdio_pwr_grp: sdio_pwr_grp { + pins = <22>; + }; + + sdio_1p8v_grp: sdio_1p8v_grp { + pins = <23>; + }; + }; + + functions { + mdio { + groups = <&mdio_grp>; + }; + + uart2 { + groups = <&uart2_grp>; + }; + + sdio { + groups = <&sdio_pwr_grp &sdio_1p8v_grp>; + }; + }; +}; + &srab { compatible = "brcm,bcm53012-srab", "brcm,bcm5301x-srab"; }; diff --git a/arch/arm/boot/dts/bcm47094.dtsi b/arch/arm/boot/dts/bcm47094.dtsi index 6282363313e1..239c1c1b0268 100644 --- a/arch/arm/boot/dts/bcm47094.dtsi +++ b/arch/arm/boot/dts/bcm47094.dtsi @@ -3,14 +3,12 @@ * Copyright (C) 2016 Rafał Miłecki */ -#include "bcm4708.dtsi" +#include "bcm4709.dtsi" / { }; &pinctrl { - compatible = "brcm,bcm4709-pinmux"; - pinmux_mdio: mdio-pins { groups = "mdio_grp"; function = "mdio"; @@ -21,11 +19,4 @@ &usb3_phy { compatible = "brcm,ns-bx-usb3-phy"; }; -&uart0 { - clock-frequency = <125000000>; - status = "okay"; -}; -&srab { - compatible = "brcm,bcm53012-srab", "brcm,bcm5301x-srab"; -}; diff --git a/arch/arm/boot/dts/bcm5301x.dtsi b/arch/arm/boot/dts/bcm5301x.dtsi index d4f355015e3c..dc89d2f5fa8f 100644 --- a/arch/arm/boot/dts/bcm5301x.dtsi +++ b/arch/arm/boot/dts/bcm5301x.dtsi @@ -473,6 +473,115 @@ pinmux_uart1: uart1-pins { groups = "uart1_grp"; function = "uart1"; }; + + pins { + #address-cells = <1>; + #size-cells = <0>; + + spi_clk { + number = <0>; + }; + + spi_ss { + number = <1>; + }; + + spi_mosi { + number = <2>; + }; + + spi_miso { + number = <3>; + }; + + i2c_scl { + number = <4>; + }; + + i2c_sda { + number = <5>; + }; + + pwm0 { + number = <8>; + }; + + pwm1 { + number = <9>; + }; + + pwm2 { + number = <10>; + }; + + pwm3 { + number = <11>; + }; + + uart1_rx { + number = <12>; + }; + + uart1_tx { + number = <13>; + }; + + uart1_cts { + number = <14>; + }; + + uart1_rts { + number = <15>; + }; + }; + + groups { + spi_grp: spi_grp { + pins = <0 1 2 3>; + }; + + i2c_grp: i2c_grp { + pins = <4 5>; + }; + + pwm0_grp: pwm0_grp { + pins = <8>; + }; + + pwm1_grp: pwm1_grp { + pins = <9>; + }; + + pwm2_grp: pwm2_grp { + pins = <10>; + }; + + pwm3_grp: pwm3_grp { + pins = <11>; + }; + + uart1_grp: uart1_grp { + pins = <12 13 14 15>; + }; + }; + + functions { + spi { + groups = <&spi_grp>; + }; + + i2c { + groups = <&i2c_grp>; + }; + + pwm { + groups = <&pwm0_grp &pwm1_grp &pwm2_grp &pwm3_grp>; + }; + + uart1 { + groups = <&uart1_grp>; + }; + }; }; thermal: thermal@2c0 {