From patchwork Fri Feb 21 20:32:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 867203 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9375E1EEA2D; Fri, 21 Feb 2025 20:32:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740169967; cv=none; b=q/pjEaHTSotlNqKNCjuIc1DNQEDCEI9jgUWDJSKhPNXQ9VSG+NT99i5QkJaSLp3xuYU1lgtol9hIGFkSxCFz5a6kSVlj0vI/H3HgFtcb29+CEjFc53IWoN3Sxlfe22bxzbqcJg+Clf7wMYOODW9I+ZFwlTKiRzKvBjMiKxP5hBo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740169967; c=relaxed/simple; bh=LrzKwcuKH+7lMFxFZZvTxrTIVtGnQjlfl1kXpaPq4+8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Pwqy/LgEqcOc6qCGkyh3B4AWtUZiA4tt7vOVGPHNPr2yS3O7VHZ+4gwV/VEMaWS4LOxv5qqYCmlAObuC868wrsEA/qH7Lh5MC9dqusMrVbKfkCBSN2zNellShUG+QuchuEoEJv1vLEHTY1neAUxrBW1OgviHywvufTmdU4P/ZQ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HBScdTv+; arc=none smtp.client-ip=209.85.208.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HBScdTv+" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5ded51d31f1so4350238a12.3; Fri, 21 Feb 2025 12:32:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740169964; x=1740774764; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ZCn4OXt1rKFxWRXj+H4O8yAzMZpo+ImdOMNPkNdHGXo=; b=HBScdTv+wzY9TKokokt2A3bvU66xMHdNbz2qxu3MICv2aXJLdrbUFc3Cmg7M7Ki8gq 1PEHzo7SUEU74g0Vz2GQApXC3eT1ZGzhI9WeWH72XEplpZWtUvGEXY8Xgiyb+CejpX/U DOOlbFNy/C36yqQyGFPdCv4HCXIfU2feh8q/wjq9mm9LesCpPDLTUJIu6dTa5TC9L7oo NHf/xh4PJH2fb7/+Firo28QjhuekD4io5abHCJcYwCkWS+/2sOEMdSpEhzgzYvuh6pHE yWS0wedYAQZZNhpJXItVdbsY40oUj+VV+yKUXB2ALanKhk+ScNu7TUV51vbGJcAAO1HO mGnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740169964; x=1740774764; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZCn4OXt1rKFxWRXj+H4O8yAzMZpo+ImdOMNPkNdHGXo=; b=TA3h2xqAPZyUvaaKdA2inp9iGWYRT70zFrq3rP4zUkWthCVkjWbU8cIcReG9m5WvBE JN17b8qHgHKaGD/x7Ly6cSw2A4rRfeNhE6TKBBRqCBy8fkbCJ5MDd4BE0Se3hPlXtG1q X6RGFxZKXNJjuO5YZWxRAgQw7crMiLGCgd69zaZJQTklqd5ZlTU5epsmJPEfjDkE37Lo TlZTG32YZ4K6lF9QE6vAv/ogQ0etP4ZFVfrIekPSlXXmhelMnatkOUYE225puwk+IcDq QyWSPViEd6lJufg59nsmzavmfXBLdps4NN/lQkkgsCDPglJHsHlMqBwlkn9p0XOvMILk ottw== X-Forwarded-Encrypted: i=1; AJvYcCV8/cgGHzMdT6VkgXI5eOpMFhE14ZwNMfZ/lYC7GSJnhbJEToouTvewFeWhXqFsEIzEAIOouTzSLHPV@vger.kernel.org, AJvYcCW0k62j8/i+JoU853YPB024nrmMK78jHXM40Vkkgz8uWqt/WbwwULQekke52xjffl8yOPVyPwtM2zw1TM84@vger.kernel.org X-Gm-Message-State: AOJu0YwVpPkJcn+3Z29sWZSg2IaZxtOBkPfWDafQMV7Svj/pefdM7HMm K37NA4JSg7aIEsumCqj0Pbqs7iaio6gTvuOsA6WC03CwjDR0bBKF X-Gm-Gg: ASbGncsEON3eJmMbymFbRl+/UMpBkN1CALUWJ2LRlz03s+lT7b91K0uBbRHdoOHrZo+ Sokw3hJHQ3Ie2VRmvjy9ytllti1xGaALIth4nh9zDJg1FjE36x6H54XkT6maFWH1PgmPvT84Sls BFbeWBPQRs341mmRvw1YA1uLb9RUC1fqBrAxkeZ7dnYgFkv1n/amF/k/V8hQwYQXPtskHbhOT/2 eViomLP87be+yArkrgK3pAkop0sfAFz6129v3CYkGBDt2QCtldCGn1g6rvjmbOK6DmVUKoHImmo hrmiZjgBkEnmAeCCiMu2+YaNnYyUw4P60kUl549QQGl+aQouAVTP4yoFZ7r3Y4gi4TMd5a99 X-Google-Smtp-Source: AGHT+IFgnLCCi3RErue61glfb6xjxJDZZ92IhClCzKrH/m+jqwqtiTl7Ly7vqMdOKhmkffKjBQuywQ== X-Received: by 2002:a05:6402:2347:b0:5d0:e563:4475 with SMTP id 4fb4d7f45d1cf-5e0b722c319mr4363564a12.29.1740169963795; Fri, 21 Feb 2025 12:32:43 -0800 (PST) Received: from hex.my.domain (83.8.202.192.ipv4.supernova.orange.pl. [83.8.202.192]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dece1c418bsm14653485a12.24.2025.02.21.12.32.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Feb 2025 12:32:42 -0800 (PST) From: Artur Weber Date: Fri, 21 Feb 2025 21:32:37 +0100 Subject: [PATCH v2 1/6] dt-bindings: pinctrl: Add bindings for BCM21664 pin controller Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250221-bcm21664-pinctrl-v2-1-7d1f0279fe16@gmail.com> References: <20250221-bcm21664-pinctrl-v2-0-7d1f0279fe16@gmail.com> In-Reply-To: <20250221-bcm21664-pinctrl-v2-0-7d1f0279fe16@gmail.com> To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Stanislav Jakubek , ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740169959; l=5996; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=LrzKwcuKH+7lMFxFZZvTxrTIVtGnQjlfl1kXpaPq4+8=; b=KiP8RteV4d7KyJ/O+JBJXcIu0smkdw/YjWP7kyB9+XWKukjr4V+K0sD4Od+UEIstpKIt1gJ+Z qfw1Y0ets6BADhHuoCft0/aZod8vHdFoUefvv+lPlqX9n+Nq//+jI63 X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= Add device tree bindings for the pin controller included in the BCM21664 chip. The bindings are based off brcm,bcm11351-pinctrl.yaml; both chips use the same driver, but have different pins, and the BCM21664 has 6 alt modes instead of 4. Signed-off-by: Artur Weber --- Changes in v2: - Drop "property: true" declarations which had no effect with "unevaluatedProperties: false" - Define property limits for I2C pins only instead of standard pins, making the pin-specific "if" condition significantly smaller --- .../bindings/pinctrl/brcm,bcm21664-pinctrl.yaml | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,bcm21664-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/brcm,bcm21664-pinctrl.yaml new file mode 100644 index 0000000000000000000000000000000000000000..32b7e44e25900b9873790480b04f2feb9e54be02 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/brcm,bcm21664-pinctrl.yaml @@ -0,0 +1,138 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/brcm,bcm21664-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Broadcom BCM21664 pin controller + +maintainers: + - Florian Fainelli + - Ray Jui + - Scott Branden + +allOf: + - $ref: pinctrl.yaml# + +properties: + compatible: + const: brcm,bcm21664-pinctrl + + reg: + maxItems: 1 + +patternProperties: + '-pins$': + type: object + additionalProperties: false + + patternProperties: + '-grp[0-9]$': + type: object + unevaluatedProperties: false + + properties: + pins: + description: + Specifies the name(s) of one or more pins to be configured by + this node. + items: + enum: [ adcsyn, batrm, bsc1clk, bsc1dat, camcs0, camcs1, clk32k, + clk_cx8, dclk1, dclk4, dclkreq1, dclkreq4, dmic0clk, + dmic0dq, dsi0te, gpio00, gpio01, gpio02, gpio03, gpio04, + gpio05, gpio06, gpio07, gpio08, gpio09, gpio10, gpio11, + gpio12, gpio13, gpio14, gpio15, gpio16, gpio17, gpio18, + gpio19, gpio20, gpio21, gpio22, gpio23, gpio24, gpio25, + gpio26, gpio27, gpio28, gpio32, gpio33, gpio34, gpio93, + gpio94, gps_calreq, gps_hostreq, gps_pablank, gps_tmark, + icusbdm, icusbdp, lcdcs0, lcdres, lcdscl, lcdsda, lcdte, + mdmgpio00, mdmgpio01, mdmgpio02, mdmgpio03, mdmgpio04, + mdmgpio05, mdmgpio06, mdmgpio07, mdmgpio08, mmc0ck, + mmc0cmd, mmc0dat0, mmc0dat1, mmc0dat2, mmc0dat3, mmc0dat4, + mmc0dat5, mmc0dat6, mmc0dat7, mmc0rst, mmc1ck, mmc1cmd, + mmc1dat0, mmc1dat1, mmc1dat2, mmc1dat3, mmc1dat4, + mmc1dat5, mmc1dat6, mmc1dat7, mmc1rst, pc1, pc2, pmbscclk, + pmbscdat, pmuint, resetn, rfst2g_mtsloten3g, + rtxdata2g_txdata3g1, rtxen2g_txdata3g2, rxdata3g0, + rxdata3g1, rxdata3g2, sdck, sdcmd, sddat0, sddat1, sddat2, + sddat3, simclk, simdat, simdet, simrst, spi0clk, spi0fss, + spi0rxd, spi0txd, sri_c, sri_d, sri_e, sspck, sspdi, + sspdo, sspsyn, stat1, stat2, swclktck, swdiotms, sysclken, + tdi, tdo, testmode, traceclk, tracedt00, tracedt01, + tracedt02, tracedt03, tracedt04, tracedt05, tracedt06, + tracedt07, tracedt08, tracedt09, tracedt10, tracedt11, + tracedt12, tracedt13, tracedt14, tracedt15, trstb, + txdata3g0, ubctsn, ubrtsn, ubrx, ubtx ] + + function: + description: + Specifies the pin mux selection. + enum: [ alt1, alt2, alt3, alt4, alt5, alt6 ] + + slew-rate: + description: | + Meaning depends on configured pin mux: + bsc*clk/pmbscclk or bsc*dat/pmbscdat: + 0: Standard (100 kbps) & Fast (400 kbps) mode + 1: Highspeed (3.4 Mbps) mode + Otherwise: + 0: fast slew rate + 1: normal slew rate + + drive-strength: + enum: [ 2, 4, 6, 8, 10, 12, 14, 16 ] + + required: + - pins + + allOf: + - $ref: pincfg-node.yaml# + + # Limitations for I2C pins + - if: + properties: + pins: + contains: + enum: [ bsc1clk, bsc1dat, gpio16, gpio17, pmbscclk, + pmbscdat ] + then: + properties: + drive-strength: false + bias-pull-down: false + input-schmitt-enable: false + input-schmitt-disable: false + + +required: + - compatible + - reg + +unevaluatedProperties: false + +examples: + - | + pinctrl@35004800 { + compatible = "brcm,bcm21664-pinctrl"; + reg = <0x35004800 0x7f0>; + + dev-a-active-pins { + /* group node defining 1 standard pin */ + std-grp0 { + pins = "gpio00"; + function = "alt1"; + input-schmitt-enable; + bias-disable; + slew-rate = <1>; + drive-strength = <4>; + }; + + /* group node defining 2 I2C pins */ + i2c-grp0 { + pins = "bsc1clk", "bsc1dat"; + function = "alt2"; + bias-pull-up = <720>; + input-enable; + }; + }; + }; +... From patchwork Fri Feb 21 20:32:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 867202 Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1DB4A253B7D; Fri, 21 Feb 2025 20:32:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740169972; cv=none; b=KGGtHODoIzgXPCmyyBnDKFkafPU1xRlFb3xBillqVqMZ0lnF7VOocARKQ+ZLJYjmbpdFE/38v6uUzrcUyeV0lRfOvdPeJAHYIownnHl3/a0B15PhXecuqsMUaxOICqpqp7W8HIkvM4X0RG/VTQhxoiOu3K9mfNow7UG84bv8oM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740169972; c=relaxed/simple; bh=hBqTyx3cRXjMO8YcrUQl3T9HLfXnpEZnzEJ9oJSb1Dc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PjEqkaElUGJnk3/A8/LrIGzTdEQZBnXGsO6keFBdt97O8nUXIySgEDjAd9fnHvajXqSVp+GQ9Iz46cX6UYTGUjdRpva3jRiYqzoODI8XNTW1mcuXC8cutIw1VFQWhKCtoJl8xib4Oe2vFDjpJ73s05CwcFpxe5xlUuhpG+BRAlQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=T46uqCJU; arc=none smtp.client-ip=209.85.208.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="T46uqCJU" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-5df07041c24so3683580a12.0; Fri, 21 Feb 2025 12:32:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740169968; x=1740774768; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QaYFxN/ihbyHEozZR8rg46OlgPGpXgAil1GgQ0yQw30=; b=T46uqCJUIAyo51Asy/SkCqcvSgGvdrnAzPwW5c4MhNsHXk9FVyBrzohyc/NAN89Pyu yJ/QTKS1bhf87B0IMTd67iIJnbEpr+Pcq5ppS6CalJoZsFUqTQS1UmtSJZIYs1OTCeJf j1Y4e+s5hMIhAmdnkMe6R0yAlEmpjqUc/1GIIlJ4WBPx70CrsnXvW2o12z011TuvAq87 ZQtGVNRKBv8AYgN1+rOc/mt7MlrfFURN9jxo5UkzBCwJj4WEyaDe2pIfdfhZUCMNiNBM TllbpVid0cCu5uJKX59RbVPWwWfqk7FncFbsbesL1RB7fhxpFGXRrJ8Tkrnku3/2i68W r/SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740169968; x=1740774768; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QaYFxN/ihbyHEozZR8rg46OlgPGpXgAil1GgQ0yQw30=; b=QcLqnLuveWnsAqkYW/vo64cEV3nLqrd5hZ875Eloa/O1xlIDo1BieaBMA/snixVX3l TOQr6V1rk+0n7nZUDIi3aKvnBWo7zTVp5nWWZ26h0TR+CflzbsUDVMF5+1MUn4CuXrLu 0LCCImCI1h+02J6rYIKv50Gubx9HtOKHPIeBxVVFgZbOLVY5AohTio+M9Pwb+83BE9Jn dQT/Wwnp8rsC39xrJy43C9IzhVkRJCx/+iZ67c/LGG4QnTrKmlKp4EIhOsEl8rJqZUr6 uHHCs4+OtwrVz7+WNnuwEeNFqlVyUmsVs4DvTrXeoaWBeP6JhGielWa/KWzI6VcWI7t6 +SYg== X-Forwarded-Encrypted: i=1; AJvYcCVDXM2X1Q6/HF9dsI+g7ZaCDRO7Vgz28+Z7tuGdWgAozvwU2rP3mG1Z73vYCOg4JhJJMmnNcQ8mf/RPOSNW@vger.kernel.org, AJvYcCWJ4C26lAeFTulix7/EbfpcXgEglht/98Zpp2ounaQ7Mczh0U7beo8/4Vty5L95HDgy4EcSpiP2rdIo@vger.kernel.org X-Gm-Message-State: AOJu0YyaNpMObtGQaXCxTuG7klIgWGOaq+rcjYb54+HQ8XfcwZZmdNW8 1aRzL/3VfoYKSMwHvvDkUXwu/Yq2PNCH1Kuo8PCLEjIIhZ67iRr1 X-Gm-Gg: ASbGnctTGR7USOfCZxr8FplU2LBjGz4kt7lxM+jl8TO5VAB1qjur5duzk4qEms9147v DnSpG0DlhJLBhYZxRq18V9FmEIixGBZgHo/d2Wf+UwIyQ7W+2oXOr7ra2QkRCOc8FtqKZ8h6a7K GmGNh4sqKDMzDZzs32+yyfFYauxpghGrGfUppLI+eGQ5ZyZ6leSfiJAWTagdiCWWKtylfgIu6Gg H8nxRrZlq9ssNncqY/SBIMN81GKH32Cqs1skXtuUbqDqvuRXmneXyydVG3QIF68rNLW7lSju2FZ i7ainKka/jp2m0yfSPb7WwhVrWOAMxc30s9OZfa0BsbL87H4jtekG94C047QZGk5DwATCtND X-Google-Smtp-Source: AGHT+IGLEG8ESnyf5EpQSCaMOyDDp05nAfmVmcjBASTZj4YCtR7n5vuxkxAJJQElkQsuXfucOVIclg== X-Received: by 2002:a05:6402:388c:b0:5de:c9d0:6742 with SMTP id 4fb4d7f45d1cf-5e0b70df001mr3712533a12.9.1740169968116; Fri, 21 Feb 2025 12:32:48 -0800 (PST) Received: from hex.my.domain (83.8.202.192.ipv4.supernova.orange.pl. [83.8.202.192]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dece1c418bsm14653485a12.24.2025.02.21.12.32.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Feb 2025 12:32:47 -0800 (PST) From: Artur Weber Date: Fri, 21 Feb 2025 21:32:39 +0100 Subject: [PATCH v2 3/6] pinctrl: bcm281xx: Provide pinctrl device info as OF platform data Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250221-bcm21664-pinctrl-v2-3-7d1f0279fe16@gmail.com> References: <20250221-bcm21664-pinctrl-v2-0-7d1f0279fe16@gmail.com> In-Reply-To: <20250221-bcm21664-pinctrl-v2-0-7d1f0279fe16@gmail.com> To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Stanislav Jakubek , ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740169959; l=11471; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=hBqTyx3cRXjMO8YcrUQl3T9HLfXnpEZnzEJ9oJSb1Dc=; b=HTFfRP+A/6+NN/h42IoNON8PlB0XejYOo4pnPd22j6rOXZSQO1Q0LXzCPcSasChSDnt09ZK1I pyXJqAmLA6ECEHuD6U8oabKGasVSyr+jO+xTqfmn3kdsaXc1SJierYT X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= Introduce a new struct type, "bcm281xx_pinctrl_info", that holds information about the pins, pin functions and regmap config for a pin control chip. Create such a struct for the BCM218xx and pass it as device data for the OF compatible match. This is done in preparation for introducing additional chip types to the driver. Signed-off-by: Artur Weber --- Changes in v2: - Make regmap_config pointer member of bcm281xx_pinctrl_info a pointer (fixes "initializer element is not a compile-time constant" error) --- drivers/pinctrl/bcm/pinctrl-bcm281xx.c | 119 +++++++++++++++++++++------------ 1 file changed, 78 insertions(+), 41 deletions(-) diff --git a/drivers/pinctrl/bcm/pinctrl-bcm281xx.c b/drivers/pinctrl/bcm/pinctrl-bcm281xx.c index a039b490cdb8e6c41169bfd48abb371447c150a0..f5aeb8a56e6ffa1204423ddc22204a4f0f4e8f84 100644 --- a/drivers/pinctrl/bcm/pinctrl-bcm281xx.c +++ b/drivers/pinctrl/bcm/pinctrl-bcm281xx.c @@ -76,20 +76,40 @@ struct bcm281xx_pin_function { }; /* - * bcm281xx_pinctrl_data - Broadcom-specific pinctrl data - * @reg_base - base of pinctrl registers + * Device types (used in bcm281xx_pinctrl_desc to differentiate + * the two device types from each other) */ -struct bcm281xx_pinctrl_data { - void __iomem *reg_base; +enum bcm281xx_pinctrl_type { + BCM281XX_PINCTRL_TYPE, +}; + +/* + * bcm281xx_pinctrl_info - description of a pinctrl device supported + * by this driver, intended to be used as a provider of OF match data. + */ +struct bcm281xx_pinctrl_info { + enum bcm281xx_pinctrl_type device_type; /* List of all pins */ const struct pinctrl_pin_desc *pins; - const unsigned int npins; + unsigned int npins; const struct bcm281xx_pin_function *functions; - const unsigned int nfunctions; + unsigned int nfunctions; + + const struct regmap_config *regmap_config; +}; + +/* + * bcm281xx_pinctrl_data - Broadcom-specific pinctrl data + * @reg_base - base of pinctrl registers + */ +struct bcm281xx_pinctrl_data { + struct device *dev; + void __iomem *reg_base; struct regmap *regmap; + const struct bcm281xx_pinctrl_info *info; }; /* @@ -933,11 +953,22 @@ static const struct bcm281xx_pin_function bcm281xx_functions[] = { BCM281XX_PIN_FUNCTION(alt4), }; -static struct bcm281xx_pinctrl_data bcm281xx_pinctrl = { +static const struct regmap_config bcm281xx_pinctrl_regmap_config = { + .reg_bits = 32, + .reg_stride = 4, + .val_bits = 32, + .max_register = BCM281XX_PIN_VC_CAM3_SDA * 4, +}; + +static const struct bcm281xx_pinctrl_info bcm281xx_pinctrl = { + .device_type = BCM281XX_PINCTRL_TYPE, + .pins = bcm281xx_pinctrl_pins, .npins = ARRAY_SIZE(bcm281xx_pinctrl_pins), .functions = bcm281xx_functions, .nfunctions = ARRAY_SIZE(bcm281xx_functions), + + .regmap_config = &bcm281xx_pinctrl_regmap_config, }; static inline enum bcm281xx_pin_type pin_type_get(struct pinctrl_dev *pctldev, @@ -945,10 +976,10 @@ static inline enum bcm281xx_pin_type pin_type_get(struct pinctrl_dev *pctldev, { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - if (pin >= pdata->npins) + if (pin >= pdata->info->npins) return BCM281XX_PIN_TYPE_UNKNOWN; - return *(enum bcm281xx_pin_type *)(pdata->pins[pin].drv_data); + return *(enum bcm281xx_pin_type *)(pdata->info->pins[pin].drv_data); } #define BCM281XX_PIN_SHIFT(type, param) \ @@ -970,18 +1001,11 @@ static inline void bcm281xx_pin_update(u32 *reg_val, u32 *reg_mask, *reg_mask |= param_mask; } -static const struct regmap_config bcm281xx_pinctrl_regmap_config = { - .reg_bits = 32, - .reg_stride = 4, - .val_bits = 32, - .max_register = BCM281XX_PIN_VC_CAM3_SDA * 4, -}; - static int bcm281xx_pinctrl_get_groups_count(struct pinctrl_dev *pctldev) { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - return pdata->npins; + return pdata->info->npins; } static const char *bcm281xx_pinctrl_get_group_name(struct pinctrl_dev *pctldev, @@ -989,7 +1013,7 @@ static const char *bcm281xx_pinctrl_get_group_name(struct pinctrl_dev *pctldev, { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - return pdata->pins[group].name; + return pdata->info->pins[group].name; } static int bcm281xx_pinctrl_get_group_pins(struct pinctrl_dev *pctldev, @@ -999,7 +1023,7 @@ static int bcm281xx_pinctrl_get_group_pins(struct pinctrl_dev *pctldev, { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - *pins = &pdata->pins[group].number; + *pins = &pdata->info->pins[group].number; *num_pins = 1; return 0; @@ -1025,7 +1049,7 @@ static int bcm281xx_pinctrl_get_fcns_count(struct pinctrl_dev *pctldev) { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - return pdata->nfunctions; + return pdata->info->nfunctions; } static const char *bcm281xx_pinctrl_get_fcn_name(struct pinctrl_dev *pctldev, @@ -1033,7 +1057,7 @@ static const char *bcm281xx_pinctrl_get_fcn_name(struct pinctrl_dev *pctldev, { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - return pdata->functions[function].name; + return pdata->info->functions[function].name; } static int bcm281xx_pinctrl_get_fcn_groups(struct pinctrl_dev *pctldev, @@ -1043,8 +1067,8 @@ static int bcm281xx_pinctrl_get_fcn_groups(struct pinctrl_dev *pctldev, { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - *groups = pdata->functions[function].groups; - *num_groups = pdata->functions[function].ngroups; + *groups = pdata->info->functions[function].groups; + *num_groups = pdata->info->functions[function].ngroups; return 0; } @@ -1054,14 +1078,15 @@ static int bcm281xx_pinmux_set(struct pinctrl_dev *pctldev, unsigned int group) { struct bcm281xx_pinctrl_data *pdata = pinctrl_dev_get_drvdata(pctldev); - const struct bcm281xx_pin_function *f = &pdata->functions[function]; - u32 offset = 4 * pdata->pins[group].number; + const struct bcm281xx_pin_function *f = &pdata->info->functions[function]; + unsigned int pin = pdata->info->pins[group].number; + u32 offset = 4 * pin; int rc = 0; dev_dbg(pctldev->dev, "%s(): Enable function %s (%d) of pin %s (%d) @offset 0x%x.\n", - __func__, f->name, function, pdata->pins[group].name, - pdata->pins[group].number, offset); + __func__, f->name, function, pdata->info->pins[group].name, + pin, offset); rc = regmap_update_bits(pdata->regmap, offset, BCM281XX_PIN_REG_F_SEL_MASK, @@ -1069,7 +1094,7 @@ static int bcm281xx_pinmux_set(struct pinctrl_dev *pctldev, if (rc) dev_err(pctldev->dev, "Error updating register for pin %s (%d).\n", - pdata->pins[group].name, pdata->pins[group].number); + pdata->info->pins[group].name, pin); return rc; } @@ -1168,7 +1193,7 @@ static int bcm281xx_std_pin_update(struct pinctrl_dev *pctldev, "Invalid Drive Strength value (%d) for " "pin %s (%d). Valid values are " "(2..16) mA, even numbers only.\n", - arg, pdata->pins[pin].name, pin); + arg, pdata->info->pins[pin].name, pin); return -EINVAL; } bcm281xx_pin_update(val, mask, (arg/2)-1, @@ -1179,7 +1204,7 @@ static int bcm281xx_std_pin_update(struct pinctrl_dev *pctldev, default: dev_err(pctldev->dev, "Unrecognized pin config %d for pin %s (%d).\n", - param, pdata->pins[pin].name, pin); + param, pdata->info->pins[pin].name, pin); return -EINVAL; } /* switch config */ @@ -1233,7 +1258,7 @@ static int bcm281xx_i2c_pin_update(struct pinctrl_dev *pctldev, "Invalid pull-up value (%d) for pin %s " "(%d). Valid values are 568, 720, 831, " "1080, 1200, 1800, 2700 Ohms.\n", - arg, pdata->pins[pin].name, pin); + arg, pdata->info->pins[pin].name, pin); return -EINVAL; } @@ -1266,7 +1291,7 @@ static int bcm281xx_i2c_pin_update(struct pinctrl_dev *pctldev, default: dev_err(pctldev->dev, "Unrecognized pin config %d for pin %s (%d).\n", - param, pdata->pins[pin].name, pin); + param, pdata->info->pins[pin].name, pin); return -EINVAL; } /* switch config */ @@ -1311,7 +1336,7 @@ static int bcm281xx_hdmi_pin_update(struct pinctrl_dev *pctldev, default: dev_err(pctldev->dev, "Unrecognized pin config %d for pin %s (%d).\n", - param, pdata->pins[pin].name, pin); + param, pdata->info->pins[pin].name, pin); return -EINVAL; } /* switch config */ @@ -1354,7 +1379,7 @@ static int bcm281xx_pinctrl_pin_config_set(struct pinctrl_dev *pctldev, default: dev_err(pctldev->dev, "Unknown pin type for pin %s (%d).\n", - pdata->pins[pin].name, pin); + pdata->info->pins[pin].name, pin); return -EINVAL; } /* switch pin type */ @@ -1364,13 +1389,13 @@ static int bcm281xx_pinctrl_pin_config_set(struct pinctrl_dev *pctldev, dev_dbg(pctldev->dev, "%s(): Set pin %s (%d) with config 0x%x, mask 0x%x\n", - __func__, pdata->pins[pin].name, pin, cfg_val, cfg_mask); + __func__, pdata->info->pins[pin].name, pin, cfg_val, cfg_mask); rc = regmap_update_bits(pdata->regmap, offset, cfg_mask, cfg_val); if (rc) { dev_err(pctldev->dev, "Error updating register for pin %s (%d).\n", - pdata->pins[pin].name, pin); + pdata->info->pins[pin].name, pin); return rc; } @@ -1390,11 +1415,23 @@ static struct pinctrl_desc bcm281xx_pinctrl_desc = { .owner = THIS_MODULE, }; +static struct bcm281xx_pinctrl_data bcm281xx_pinctrl_pdata; + static int __init bcm281xx_pinctrl_probe(struct platform_device *pdev) { - struct bcm281xx_pinctrl_data *pdata = &bcm281xx_pinctrl; + struct bcm281xx_pinctrl_data *pdata = &bcm281xx_pinctrl_pdata; struct pinctrl_dev *pctl; + /* Set device pointer in platform data */ + pdata->dev = &pdev->dev; + + /* Get the data to use from OF match */ + pdata->info = of_device_get_match_data(&pdev->dev); + if (!pdata->info) { + dev_err(&pdev->dev, "Failed to get data from OF match\n"); + return -ENODEV; + } + /* So far We can assume there is only 1 bank of registers */ pdata->reg_base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(pdata->reg_base)) { @@ -1404,15 +1441,15 @@ static int __init bcm281xx_pinctrl_probe(struct platform_device *pdev) /* Initialize the dynamic part of pinctrl_desc */ pdata->regmap = devm_regmap_init_mmio(&pdev->dev, pdata->reg_base, - &bcm281xx_pinctrl_regmap_config); + pdata->info->regmap_config); if (IS_ERR(pdata->regmap)) { dev_err(&pdev->dev, "Regmap MMIO init failed.\n"); return -ENODEV; } bcm281xx_pinctrl_desc.name = dev_name(&pdev->dev); - bcm281xx_pinctrl_desc.pins = bcm281xx_pinctrl.pins; - bcm281xx_pinctrl_desc.npins = bcm281xx_pinctrl.npins; + bcm281xx_pinctrl_desc.pins = pdata->info->pins; + bcm281xx_pinctrl_desc.npins = pdata->info->npins; pctl = devm_pinctrl_register(&pdev->dev, &bcm281xx_pinctrl_desc, pdata); if (IS_ERR(pctl)) { @@ -1426,7 +1463,7 @@ static int __init bcm281xx_pinctrl_probe(struct platform_device *pdev) } static const struct of_device_id bcm281xx_pinctrl_of_match[] = { - { .compatible = "brcm,bcm11351-pinctrl", }, + { .compatible = "brcm,bcm11351-pinctrl", .data = &bcm281xx_pinctrl }, { }, }; From patchwork Fri Feb 21 20:32:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artur Weber X-Patchwork-Id: 867201 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E04A253B64; Fri, 21 Feb 2025 20:32:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740169976; cv=none; b=CCJ/KhkbxzlsRxuFEepfCsMz0KZdBRBoGx0sbVgiGKf7BqQDgjagKdkLXWgR0jpXq0+ZTvfQnqH6LmwELOSQOLaAppNuIK2MkXRJu2cC/hJQqW24FqVaLTxACLYPllKktuat5I+jx4lEYfupYgXalFABLzy6dCup3wn+DDBbMjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740169976; c=relaxed/simple; bh=xRQ8Om8ehQPvJHYxu39ZbgjQg1cKM3esiDGEfRR8xBY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aETwh0vVGs2LscalKPxUlfzfws5reCi7j1t4ENzOF6vnqedrvWxUNZ4fEJu5EOCJnTbnnwlSpZ2cPa83RJ1lv6wy7/P0Ayi+8kgb6tdP4Ye/YcEekFzcNPeyiZ98YCQoyjtovfwUEH4ZdjSVz6oYmdcGa2YrCBLivp7HLtLFNUc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Q1b8cVnM; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Q1b8cVnM" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5e0813bd105so4207522a12.1; Fri, 21 Feb 2025 12:32:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740169972; x=1740774772; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9YQfu5eAZOpEQuO+Sfc4ihsBhzM3CKhym7/o/Ff/aLE=; b=Q1b8cVnMXosZ+B4puVOXWC5DTZiwjKy2B7QIIlNbRtmyoDhEcvTy57UDkcO4tnsNDw poDYxiG/W0WGmPVjru5X2+fTWhRJhXV1brm4hhG/o/SMJ2XkQuAoBszRVQ0A2W3ByOMP s30qce2nGC1P+bBwty07jjNCqE9epTboxyC6398Sk030j/BiVUxp6Mg2kh+JLskhSPOq fmxkA/kPGixYL4MM9+nCbGjYqEVkE5kexXLyyZL54dJl68lneHjLxwv6Wo1KB1wDDPWn 5shuL4DU31QrPOSekADf1NtBxHijA9r/grDRmcgQuPsQ81Q6dcZz0G3uHliWY0Pev/AZ 3Aaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740169972; x=1740774772; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9YQfu5eAZOpEQuO+Sfc4ihsBhzM3CKhym7/o/Ff/aLE=; b=xEpGEkaRbmhuBc4qXvUJ/Rg8Cs7/7SdS9vJwYh9vwYp0PbSmNg8XyhV9AEqzJlCXfq ZpG2h9Qs+/I3tvED6GROnmEI3s9Dr76d+KIUWKmQj0XXzo13qUDqSp75wm0F8oS+v7aV t+fDNSxIYc6i4SH7Bb5Aq9lDIGyelE/uK18pfH2pZbVi84ioyMtKRUZCDYs+dzT+TCY+ ExT0SyAbKL5O3dRZCMcwFwrEP4Bc+/8GWI5G7N/eas2HNrtQj/9bP8HluKAXuuE64d4I R7Gl98PSrJpnB8Z4p3E6FYiMAcwPyP4wEWSOu6hiVqv+VLqNK+GRAt68KG1VtwqXzujx Jb5w== X-Forwarded-Encrypted: i=1; AJvYcCUWxIVmxS1f8ZeALWP65dIHWcZPAar4hSA8fQLPYYYRGGp3vX/4RBxjtib7M1R1NLvqJ2SVsfpH335C@vger.kernel.org, AJvYcCVT95/iAfVFR8rm6z3B2beV/j3CGFV+dBvUHGx+g1ZcrEgM3wRygj1XPA3YxfYUp5jiVgwGMVuLQh4AXhB2@vger.kernel.org X-Gm-Message-State: AOJu0YwXJCODBGJgQJ/oBALEwpr7bqYsuXbL5pKYOkse5DdB5X4rrtFe jiKg4Kcrjz1JmfRijLflgGrUnBWgw8f2fYaSY8GCCsxFDgE+oCYy X-Gm-Gg: ASbGncsSxO5mI7ADDR5THwb+AaKLX6G8zK0UpAMZKwI1k4tEDhM/hEDFYN6CA+9WO2j yjf5ICoxfpLwHqfzktKqsUjMJy0O0e1VxlMf2WIe3tuq1MHdVmYZzwAR8eV1VfbpK06bJHzbJ0R IfpmtCOiYYx6/MBlvBdRmIiYWj5YqcR1l7LoMZ0AFbEB5bBbBpCHYUwkLYPL8DR+QnkVpwC3PJu s/MYig7Y+uhx0pAw+cmJveFZzM8iM/pjSElQVxNk/T0pvV581OgayrxV1UyOyjYVWC/MGAQ1c42 bT3KjC39GmQHFkMpoBg/4/Rse3EORoRr7RZTj2p5oxFwRGQTdogBRsO+ap7U6jiFq68VvKl6 X-Google-Smtp-Source: AGHT+IFX16OnZk9d1DL8WxnUdqDk352LK10QFk5bhYj/vuHbbpoHUx8vxoyOPPZmEZpTd3FXudXcXw== X-Received: by 2002:a05:6402:388e:b0:5de:de30:dd0d with SMTP id 4fb4d7f45d1cf-5e0b7248363mr3572711a12.32.1740169971704; Fri, 21 Feb 2025 12:32:51 -0800 (PST) Received: from hex.my.domain (83.8.202.192.ipv4.supernova.orange.pl. [83.8.202.192]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dece1c418bsm14653485a12.24.2025.02.21.12.32.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Feb 2025 12:32:51 -0800 (PST) From: Artur Weber Date: Fri, 21 Feb 2025 21:32:41 +0100 Subject: [PATCH v2 5/6] ARM: dts: bcm2166x-common: Add pinctrl node Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250221-bcm21664-pinctrl-v2-5-7d1f0279fe16@gmail.com> References: <20250221-bcm21664-pinctrl-v2-0-7d1f0279fe16@gmail.com> In-Reply-To: <20250221-bcm21664-pinctrl-v2-0-7d1f0279fe16@gmail.com> To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Stanislav Jakubek , ~postmarketos/upstreaming@lists.sr.ht, Artur Weber X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740169959; l=896; i=aweber.kernel@gmail.com; s=20231030; h=from:subject:message-id; bh=xRQ8Om8ehQPvJHYxu39ZbgjQg1cKM3esiDGEfRR8xBY=; b=imTpwTI+Jp+A/uOxco0Ul0XB7DjOg3uyuqGuJeRn+bIitq+0cRSB7FHVyh6HSkhgxCIe5UP1C dCspq25gqPyBmoECI0KxT/cToXGsSGsHmG69DnJQy0vRcYNrYHSRGJs X-Developer-Key: i=aweber.kernel@gmail.com; a=ed25519; pk=RhDBfWbJEHqDibXbhNEBAnc9FMkyznGxX/hwfhL8bv8= Now that the pinctrl driver supports the BCM21664, add a node for pinctrl in the DTS to allow for controlling pinmux pins. Signed-off-by: Artur Weber --- arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi b/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi index 87180b7fd695e65b52c52743e6315cbcca385fba..d4b412ac8b0343bd3773f50c59a20fa00a3923f8 100644 --- a/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi +++ b/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi @@ -46,6 +46,11 @@ gpio: gpio@1003000 { interrupt-controller; }; + pinctrl: pinctrl@1004800 { + compatible = "brcm,bcm21664-pinctrl"; + reg = <0x01004800 0x7f4>; + }; + timer@1006000 { compatible = "brcm,kona-timer"; reg = <0x01006000 0x1c>;