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: 12693592 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 37775C433F5 for ; Wed, 24 Nov 2021 23:06:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ZTuV0CdxKv6LG0AcCMsqk+3RGJ6FJWtI1YJUzWtX2jw=; b=LDvFAEF+0owKKS kQjgWEiiLOf0OTbPtP28o5UxDTP5KlpCFeWeWlnn8ujxMJjgWmPmRDqkim4xOHfUjq8cZ4n996PFB I0c9+vvr/k6/sjovv5Hv2piMfCi6wYf62327nraILRSVGVESfDXSu7PFwjUYjHMd1PxMVxG7Jimf5 74qI05PaxxoYzsq4lojd3m2nsMVCxth1Z/HWDO6qxMDOmzZbzMULH4RegzI88V/yeS++1zbQxWfSj NIQ2wGbPNUm9ghCQn9ruA0EPNsA1HAt5qvqwYzv3G/jOzp3jOEnlqWZNJI8mDQTLXA84cwFYhksl7 DYTPyMfO1sQtR7/0nqzQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1K7-0060wE-Rj; Wed, 24 Nov 2021 23:05:08 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1Ju-0060sk-VI for linux-arm-kernel@lists.infradead.org; Wed, 24 Nov 2021 23:04:56 +0000 Received: by mail-lf1-x135.google.com with SMTP id t26so11222362lfk.9 for ; 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=73BR00c0TsOS/4Vvr2al6nuAfJ4DdzKARSZ9F+yw9OC74S33t3SaH/rUZJuQeWzU0R E17pvINNwPF94+JV/4h5v3mJhPHLu4wbgdlfEWhOgRzMlby7W0YPG+jcJmGOfPFOQBlv rySKXQMzx9EwqGt3ub7DYnsee/JDQm/JwrW5t6AOf71tAwHUwiTjHlL+eFcGV3JPDeHf HzRMTON3lKSqQ5oiw5pVC6SPLlZOuFDyg8CNXf5Yw3ID41kJ+LsRmQjM4ES6kmxCpg85 wmB/tnaHLE1v4FzQBpDjV9Ol4UPUrJRX07TOiPAJJGhWasHPRXWFrQd/a5p7GEX55ivy HySQ== X-Gm-Message-State: AOAM533ZP2XUlI2na16vg9jSm23RKNFOBWi+XgCutivk38cbk7G8LCuW fvEBwYTbEv1JLdao+9WGp9Azj2r5Fos= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211124_150455_036320_FC0E9159 X-CRM114-Status: GOOD ( 13.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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: 12693593 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9D937C433EF for ; Wed, 24 Nov 2021 23:06:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=BEyg324qYl73VPPFrCbo6jqqXIIl3pmZ9N9qVELKfMA=; b=zVF6HTGzSMgFqa lBburyKSv88kwGDNDrrl/TYNKLOrL48xx/CVd1/7sopWZ0RThRxOhwUnBuxG1g3TdwC/Y3upKApwU Wh9ghbyY2H/SJEk++MXoA006a1OCrqmaC/9fk308S+wjg8jpar/0oIPxc4SeQy3Lqn3Pc7cuHTLuM 26BHy53y0fLwnPwf+LaooQFcVRiceVctJLfvBzI3fokcCkWIzvTPU/dfNfef0J2zwrWGPwzAySV4w E9DBhRc8QLwFNPvpf3JZNHSi3gZn/aTfrelIGcOGUxfBMRRfYfUMvE9qSZWcgmaESLG/NVR4aYjwM QnGtU/9kYPVToXCNX9wg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1KI-0060yL-Nr; Wed, 24 Nov 2021 23:05:18 +0000 Received: from mail-lj1-x236.google.com ([2a00:1450:4864:20::236]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1Jx-0060tA-0P for linux-arm-kernel@lists.infradead.org; Wed, 24 Nov 2021 23:04:58 +0000 Received: by mail-lj1-x236.google.com with SMTP id e11so8548398ljo.13 for ; 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=8PqmR1AvyuHz8oyV5RWaiiNWKkB7Hy5O4mtpG488yaY1eJWeDYaZNDMFebWLqf6Bt/ fevYhB1ShUULcqwYZ1lakAg06mTWcjtLFj74D9/1pOBOVqmPkUVObMmZ2dF28fnzfhbZ 0sCHpdUW1Fw8iLMUeSpCj2cE242eGCrm1DKdqgra6VL9Av+83pwp8Wacvgr21/1L3oM8 4E8myC2pSQYnbSZ+pcaIFA7dNrRzMU+kGWFTTO864Qg6DrwwpjwhD3f9uP2MT55l6umz CB7PcV6sn2AQIIl41MFP0KL5fOErvWkdftD3zbIWOSp3Z6ZKhq1uHvunGjeLqiLYD2Ge p1WQ== X-Gm-Message-State: AOAM533UElkicwI0au6yZup0Q5+VJqgK11iMJvzWGDE160O656VGN6ta Mb/xlMEe2zSvEEO1a/YOrh4= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211124_150457_082625_AA637225 X-CRM114-Status: GOOD ( 13.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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: 12693594 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 37ACCC433F5 for ; Wed, 24 Nov 2021 23:07:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TdyD849AgvO/QL4SPMEF547JF1shT0qkdmE2x7rKbDo=; b=d3vosmO7cF4COw oQXQ9HWqaEnPgRyCmr4SegkgRGyl/Az1o0qHxqP25YNzTRJMgQK7QAEVJ7l+QwY1MsMm9sxfrF/He jiTqtYrEw7qBuSK8gzEliqGao+kRLlrS3TAH/objboYV2EmVQliOE2Mi+gijjveBQUkGnVwF7a8z9 sgGTTmAc1U8G9YvRFh1Xv7CAMaRLzNX680o/ZNZPCaWW/BN70NY9x5hbrzCU114sCIuhiIBp9D5uc NVghKONUJDPRMpTgRBeSL3yUmUgoELMTZ36uqD5gr7mwwNaagvW0K5iIYgwVKGKJId7yTczdOQbG8 BYHSwwErJCV8W7evnIZg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1KV-00610A-72; Wed, 24 Nov 2021 23:05:31 +0000 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1Jy-0060tl-NV for linux-arm-kernel@lists.infradead.org; Wed, 24 Nov 2021 23:05:00 +0000 Received: by mail-lf1-x12a.google.com with SMTP id b40so11221330lfv.10 for ; 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=FjgpvCT54A+fWXuTtUSq4VLDyG3ewi6B3HT9RlNbH4hLCtdajRpQW9V2mOBk7P61qS BdQ4km6F+dHVNoH4zNlkV9cbObRixDsMnywmKodN1AmI4hKQ8ly8+zjelnqlkL8VKolp Ooph/rZT9DLo5MIV7R281n38ZiELHCr6NYa6nQB5ZTCEDV7druW8HfENTF7n70ub3OW1 nz7y9ySqrukY4z5e9K6U4zKnIfIIyGP64EZ5gmmbm0+SAvbIIO4PIuQr73kFPAgEHSl/ 2IUxylKfUQ12jewFEA0aoFKCdlYHQqBFTbKZ22oKiFaYHP7xbcypNmqJEO7CjzORBxlx D1Qw== X-Gm-Message-State: AOAM532Qu0J75yabANy05gJwFqsn+InadXMtzATSA2/SD5Q0DbvxaD03 q35rgsH48s3EPRYOx5ZIuvA= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211124_150458_802771_7A4C3234 X-CRM114-Status: GOOD ( 12.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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: 12693595 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A7B9DC433EF for ; Wed, 24 Nov 2021 23:07:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2PqR7aBZ7tnByFYDboVt4178Oeui9kME9b1uhAV5ERQ=; b=qxaZsL/EpFS2VM rlCBku6A1XUSV8SxaovIeVE2hqyZ9bqMuiG4XhIGRsxfGuQy/GTDWazOiVBxoq+OMiD14Q+XAHUto 7BR5j7xSQ//GBVOYi9t6KkK/qA3Z+pDkiInVbVrAqA6UaokmDZtjzaipdRmFbTlbrT3M7FNJj7DUN /sPcAtGtDiVg11JBkH26CCtVAXISHxUnXDLA7SnRO8H8HclRt2f8M+Yn0wB3r6AysbGiXywezbFtJ ZvLDgU1Y7/Hc/0FtiLy9TeeuVaWWiT6a9F/xLOiYjhLpgJ1wwVKOE7nh2w2ANeTU3Tu7zK2oQ0rft r47GgG2W8m/pjjOpeU7g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1Kl-00614h-IB; Wed, 24 Nov 2021 23:05:47 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1K0-0060u6-26 for linux-arm-kernel@lists.infradead.org; Wed, 24 Nov 2021 23:05:01 +0000 Received: by mail-lf1-x135.google.com with SMTP id l22so11258687lfg.7 for ; Wed, 24 Nov 2021 15:04:59 -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=8CtrQiS3t0YGb8KvF148Sv8TD/TX9JJV6V4Vy/LGNrGJv1GHoGytpwGBesJ2ES1eLz MKsRY6ERR3t8RICweChJwO7V0MbYGrKQhZpKqueEvfai6to29OW05M56wHya9UofTKhh YM6Yp55Xiei5l88AigqpqREVIOgi58Uy4AawlN/eySOqmxSKK4oVUtb5860arFcvotH5 W8legNuKDPNwBAp9wMqDvytKn8q41wkFlbjgcV85nscC48u4z2bDL8zgMxStZXAOoEwZ 0o+fGVeKUA2O6uDbdgPiBGHahYa5Rck4GLAABHsMaEKE+coIAm+MB/5tbbfBHJ0jZxEB 6bQg== X-Gm-Message-State: AOAM533+VmmhGIlg+F1+4wTnv/yKxdp2kc1ro6TpMRxPprfdt82FP5R/ B+WC1Jmc6479VW27afsUhO0= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211124_150500_139224_7E716948 X-CRM114-Status: GOOD ( 18.05 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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: 12693596 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4EC73C433F5 for ; Wed, 24 Nov 2021 23:07:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xLO6CUKkQQMmwAhVl9LLi7Ui/KyB7lgPVlHGjZk3nFw=; b=fVXj3bjMMFNORQ M6IdprlrUX29MnMbojT850k6MtQAj972mjy/I74RVhLAuaYVo7Z5rZRMQaDONhPqwxKkqDGPnpgAh I2v0fC4wJXroQWLuqew99dBOvlyvOnEvH/mtvNiQOLHq0RgEUdHdimkGKmxvY0DMO87NsjuPxfeCK KHX7/888Pf42XI/k0nAZMQvD2ZQa4C8BiP2U9OgTZvX+iLy5J2bSd3cHWOXUytx+f8SGnLKSxaz64 7s1beepnX5xwasueCR3ouvaXenoIikgNT5IQJhbLu1iMj8cPwTRig6L3DADopbGkktvUu1EmiG3JW J2DN3IQWjKM65FVz6J/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1L7-0061E1-14; Wed, 24 Nov 2021 23:06:09 +0000 Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1K1-0060uU-Td for linux-arm-kernel@lists.infradead.org; Wed, 24 Nov 2021 23:05:03 +0000 Received: by mail-lf1-x131.google.com with SMTP id b1so11177723lfs.13 for ; 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=BiTXtREBCbUC04YpdOZ+aoiXEwKlGkxeW9nDZV3QAWaMHpni8NXSr9h2kV6Uhu+NOR ACS+8XDeEd1HuJIxRCQVJZM5DfhTfzdH18P55aScXM5T433nHyUPLNPHG9SrernkVIRC mRF2FMLSKy1E5/BuWXRoph5C7h/xSVyPOkpsSRjRjFjpOQI1Zfo/c01vv/II+fKG11u4 QPOsviwr61YjTH5QBOExw5wIJ+QZDUH858c8X3wi85KrAaSG9T/Qf9p0KZuMtTsrzC19 fTOGQPrjABoN5QPgk74tNt4y6//EkJAki5oEIf/hl3eVJXXGyF3+Zu/TMMIVE0vytYFp mp/A== X-Gm-Message-State: AOAM532egSkRyWlh9AqblxWS+PhR/wUbZj1o1ujbOaScYLKlH1L7yGdO n2xDN6wGSBH6qZ2wMkLonSs= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211124_150502_013384_DE110D4B X-CRM114-Status: GOOD ( 18.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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: 12693597 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6826AC433EF for ; Wed, 24 Nov 2021 23:08:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6CQYE8WOZTKa467wZnUKM3+KFkllqDCfG5JuGmOyj6M=; b=YHiJYuHDO1cwOX yrlcbaiXa+sDgIkjadHdEtTTLrA4uoJeH8kZ5SsoawCZWATHCbyG2wFtNX3/vKkh1bdeGB4O2Ic7N 1raCTVviDzJ2XyqWvxIRZSP9EQjcCx0j4qUcgH+9mJjTDCsiRNMX2z/ozoGQRPrX46qrrvpIPk7l8 jTw/6K3PSuoJJisBsVfhGrJ56iwo05043s0ITKH10by6WbVWHAMxyffKWgreE5XVtiCWYAShPICnt t0A+yfEUGG7N4YRFyJJCXFm6aV5zerWQAK6eloeY3kw6CNkLDTdeVzvY6ERJvtPaHoWWwrqTNUUN1 zsGvZ4LFOz+dM+fp5YOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1Lg-0061W3-Mi; Wed, 24 Nov 2021 23:06:45 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mq1K3-0060v5-LK for linux-arm-kernel@lists.infradead.org; Wed, 24 Nov 2021 23:05:05 +0000 Received: by mail-lf1-x130.google.com with SMTP id u3so11288070lfl.2 for ; 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=oOOLpfzbtF6MT9ytPArjqVLRR7qZ2imcUxU6Cm0c32VtRBK8xWPFqAtbEim2YfV5pC hHe7wwRCdNh/nbrGFLYGVLCxpwhU0mP73eHvEubFpWQzogs9XRYiK5xkL/M8YZqeS5Mb smDdOpndcPOhNHgdQZ2uq6Cbh5fellgGIoJF3xYKkE3T+04l6GE0EdryiAAqA4TvuP8z XHLU7Aa24G06SNojMQ7nejQJ6P3PC0GWyrhKjKZRhPrT5oKZjP9gNNopb2vbgJfuisXg E8gjs7A1paIlQW3b7ftrA4Vz0uEAZQCTpqA1yMmjlWXU6gDrRFQG3wL+pd2GK9iNpJ6n laBA== X-Gm-Message-State: AOAM532WzzIoMS3mQCoYMgK/KNZGfHdKAexgSLb8zZW+3k5gflwX+A7S o5TFMXNMGV7YHEROeOGh/2Dva8Ucjr0= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211124_150503_761606_37A78CA3 X-CRM114-Status: GOOD ( 13.82 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.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 {