From patchwork Mon May 21 20:57:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Lamparter X-Patchwork-Id: 10416341 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0DEA0600CC for ; Mon, 21 May 2018 20:59:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F017628A6B for ; Mon, 21 May 2018 20:59:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E3D1628A68; Mon, 21 May 2018 20:59:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id C051928A63 for ; Mon, 21 May 2018 20:59:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=M+jm80q3HUJlORpt6ICsrDMjgOSwKkiDHSfYllLuniw=; b=tP7 xLigqRWK9si4bAXeepXqtgcWePkxT+v28aaCzksnAqG4Oo60OEFo9c8OxPWKjvoeVCWScN7AFpAvb iCYbvrdhlklLaZzabdd1tDc6h7kQ9azvY0Lm7OTFIhh/+YBl1PKwKnWEQxE/OiWKds/0HP3i25z8e Lg08tkDUAkVLcwTKGOaB7IRwCnTRwzmCUHl1U1CklEyuDgA11Xhrhcx3xFNkZj4J+HXVU73Cg9ce9 9j/gYmQLHwPMjDdAU4wCfhZZthUu7KEkRmMbVy+BoFbwSBZqbp3dhGgYkc79vY5IYprIVXO83S1DQ u0wnyBWfq4qJQcz+kRsLS+GE3MxADHA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fKrtS-0000h7-PF; Mon, 21 May 2018 20:58:58 +0000 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fKrsR-0008Pz-Rs for linux-arm-kernel@lists.infradead.org; Mon, 21 May 2018 20:58:18 +0000 Received: by mail-wr0-x241.google.com with SMTP id j1-v6so6340922wrm.1 for ; Mon, 21 May 2018 13:57:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=R1uJsf6BvS/REaZUeLDKbp5xwEBVq6EWzJrQWUbub94=; b=IKduv3cLsEiVjbsYwxuxjT83X3BViQS8DYFLf/CUcUctQisBFTwA0keUeZ0Eqp4HmJ dxkXnTG6ftOrPVW5DeVq+nvFhiueL2dup7CvBaeqQ6vBuNpqi2gvqM4curUmqTkh9MrI RzRQaRbisCKP30T8ZoCCUkrNcmQfH1FxYSaUidlasBeyCA5ZfBYpcMn8accyB2Z74Ibj 8fefK5gcOGt3SVxJtKn2ksdSuQk7SP3Og4cDFWN/TU7UnuakBLb/s4ojd3fFbN8Rjwh6 MQkbb191Jo0N7AGGTmkSIvS9EaBAj5i7LYwr4FEegNLb1XxA6o6X9/BBU7iixwiRly4h 5XtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=R1uJsf6BvS/REaZUeLDKbp5xwEBVq6EWzJrQWUbub94=; b=ke8PJCQ89cw+/deXfRLiv8nDx5l6fx4FOszEynyeQMF/FKISuNEg3oMxK3OZmSYflk +lIx8xwYCZX8AXGRfCoF9O3blSjC90GcafJYqEtwiMUOjQv023ITEgzg/KOqtGVm4c/x kTmSXuhMsufYl9bcgBK54k3iB3ed7/ld2uKIIoSDILXss7aDxVjLTTVHf+f+pJMI5FXF oZVCeW1c7sxFzoFH9y2LiVboFXUdZNhiaVFsj5uDG1VqYIAsfyV6a/dpQrS0NLo/h5mC Ur36+y759B2w6//Wdp8pLJWB+t+8f34sb57L7sYY2f6vinISddHjnZ9Nup6k8Plda0w0 oXJw== X-Gm-Message-State: ALKqPweLDtDcc0fqOKg85pDjalTDxMAdYe/CpqPN8u0PMpSFB/anzJDU gsImMiNTEVmB0BxwTmTR2c5FS22R X-Google-Smtp-Source: AB8JxZpl/SeVUWXzoMnYrbk9l9JnF8R4241qpP60aYE3reSUduxCPSz41cjhN6FEArsVqbbCYK1mZA== X-Received: by 2002:adf:b004:: with SMTP id f4-v6mr17267046wra.75.1526936262797; Mon, 21 May 2018 13:57:42 -0700 (PDT) Received: from debian64.daheim (p5B0D7D7A.dip0.t-ipconnect.de. [91.13.125.122]) by smtp.gmail.com with ESMTPSA id y7-v6sm6043151wrh.86.2018.05.21.13.57.41 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 21 May 2018 13:57:41 -0700 (PDT) Received: from chuck by debian64.daheim with local (Exim 4.91) (envelope-from ) id 1fKrsB-00064q-Gq; Mon, 21 May 2018 22:57:39 +0200 From: Christian Lamparter To: linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v5 1/4] dt-bindings: pinctrl: qcom: add gpio-ranges, gpio-reserved-ranges Date: Mon, 21 May 2018 22:57:36 +0200 Message-Id: <910e5a85a6a8020069996e2ff397c93e9c5fe18c.1526935804.git.chunkeey@gmail.com> X-Mailer: git-send-email 2.17.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180521_135756_053108_9761C00A X-CRM114-Status: GOOD ( 15.01 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Stephen Boyd , Linus Walleij , Bjorn Andersson , David Brown , Rob Herring , Sven Eckelmann , Andy Gross MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP This patch adds the gpio-ranges and gpio-reserved-ranges property definitions to the binding text files supported by the pinctrl-msm driver framework. gpio-ranges: For DT-based platforms the pinctrl-msm framework currently relies on the deprecated-for-DT gpiochip_add_pin_range() function to add the range of GPIOs to be handled by the pin controller. Due to interactions within gpiolib code, this causes the pinctrl-msm driver to bail out (-517) during boot when a gpio-hog is declared. This can be fatal and cause the system to not boot or reset (for a detailed explanation and call-trace, refer to patch: "pinctrl: msm: fix gpio-hog related boot issues" in this series). gpio-reserved-ranges: The binding has been added as a precaution since the TrustZone firmware (aka QSEE), which is running as the hypervisor, might have reserved certain, but undisclosed pins. Hence reading or writing to the registers for those pins will cause an XPU violation and this subsequently crashes the kernel. Signed-off-by: Christian Lamparter --- .../bindings/pinctrl/qcom,apq8064-pinctrl.txt | 6 ++++++ .../bindings/pinctrl/qcom,apq8084-pinctrl.txt | 11 +++++++++++ .../bindings/pinctrl/qcom,ipq4019-pinctrl.txt | 6 ++++++ .../bindings/pinctrl/qcom,ipq8064-pinctrl.txt | 6 ++++++ .../bindings/pinctrl/qcom,ipq8074-pinctrl.txt | 10 ++++++++++ .../bindings/pinctrl/qcom,mdm9615-pinctrl.txt | 11 +++++++++++ .../bindings/pinctrl/qcom,msm8660-pinctrl.txt | 6 ++++++ .../bindings/pinctrl/qcom,msm8916-pinctrl.txt | 11 +++++++++++ .../bindings/pinctrl/qcom,msm8960-pinctrl.txt | 11 +++++++++++ .../bindings/pinctrl/qcom,msm8974-pinctrl.txt | 6 ++++++ .../bindings/pinctrl/qcom,msm8994-pinctrl.txt | 11 +++++++++++ .../bindings/pinctrl/qcom,msm8996-pinctrl.txt | 11 +++++++++++ 12 files changed, 106 insertions(+) diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt index a752a4716486..7f78c6bb4e35 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt @@ -10,6 +10,11 @@ Required properties: - #gpio-cells : Should be two. The first cell is the gpio pin number and the second cell is used for optional parameters. +- gpio-ranges: Range of pins managed by the GPIO controller. + +Optional properties: + +- gpio-reserved-ranges: Range of pins reserved by the TrustZone TEE. Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -67,6 +72,7 @@ Example: pinctrl-names = "default"; pinctrl-0 = <&gsbi5_uart_default>; + gpio-ranges = <&msmgpio 0 0 90>; gsbi5_uart_default: gsbi5_uart_default { mux { diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,apq8084-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,apq8084-pinctrl.txt index c4ea61ac56f2..362f32b945af 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,apq8084-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,apq8084-pinctrl.txt @@ -40,6 +40,16 @@ MSM8960 platform. Definition: must be 2. Specifying the pin number and flags, as defined in +- gpio-ranges: + Usage: required + Value type: + Definition: Range of pins managed by the GPIO controller. + +- gpio-reserved-ranges: + Usage: optional + Value type: + Definition: Range of pins reserved by the TrustZone TEE. + Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -154,6 +164,7 @@ Example: gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&tlmm 0 0 147>; interrupt-controller; #interrupt-cells = <2>; interrupts = <0 208 0>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,ipq4019-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,ipq4019-pinctrl.txt index 93374f478b9e..7323bc54a1a0 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,ipq4019-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,ipq4019-pinctrl.txt @@ -13,6 +13,11 @@ Required properties: - #gpio-cells : Should be two. The first cell is the gpio pin number and the second cell is used for optional parameters. +- gpio-ranges: Range of pins managed by the GPIO controller. + +Optional properties: + +- gpio-reserved-ranges: Range of pins reserved by the TrustZone TEE. Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -64,6 +69,7 @@ Example: gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&tlmm 0 0 100>; interrupt-controller; #interrupt-cells = <2>; interrupts = <0 208 0>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt index 6e88e91feb11..e6843ef15169 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt @@ -10,6 +10,11 @@ Required properties: - #gpio-cells : Should be two. The first cell is the gpio pin number and the second cell is used for optional parameters. +- gpio-ranges: Range of pins managed by the GPIO controller. + +Optional properties: + +- gpio-reserved-ranges: Range of pins reserved by the TrustZone TEE. Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -67,6 +72,7 @@ Example: gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&pinmux 0 0 69>; interrupt-controller; #interrupt-cells = <2>; interrupts = <0 32 0x4>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,ipq8074-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8074-pinctrl.txt index 407b9443629d..e4d7ebcda0b0 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,ipq8074-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8074-pinctrl.txt @@ -39,6 +39,15 @@ IPQ8074 platform. Value type: Definition: must be 2. Specifying the pin number and flags, as defined in +- gpio-ranges: + Usage: required + Value type: + Definition: Range of pins managed by the GPIO controller. + +- gpio-reserved-ranges: + Usage: optional + Value type: + Definition: Range of pins reserved by the TrustZone TEE. Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -148,6 +157,7 @@ Example: interrupts = ; gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&tlmm 0 0 70>; interrupt-controller; #interrupt-cells = <2>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt index 1b52f01ddcb7..6a104f7800f9 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt @@ -40,6 +40,16 @@ MDM9615 platform. Definition: must be 2. Specifying the pin number and flags, as defined in +- gpio-ranges: + Usage: required + Value type: + Definition: Range of pins managed by the GPIO controller. + +- gpio-reserved-ranges: + Usage: optional + Value type: + Definition: Range of pins reserved by the TrustZone TEE. + Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -127,6 +137,7 @@ Example: gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&msmgpio 0 0 88>; interrupt-controller; #interrupt-cells = <2>; interrupts = <0 16 0x4>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt index df9a838ec5f9..311ea80a0101 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt @@ -10,6 +10,11 @@ Required properties: - #gpio-cells : Should be two. The first cell is the gpio pin number and the second cell is used for optional parameters. +- gpio-ranges: Range of pins managed by the GPIO controller. + +Optional properties: + +- gpio-reserved-ranges: Range of pins reserved by the TrustZone TEE. Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -62,6 +67,7 @@ Example: gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&msmgpio 0 0 173>; interrupt-controller; #interrupt-cells = <2>; interrupts = <0 16 0x4>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt index 498caff6029e..99d1629f0940 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8916-pinctrl.txt @@ -40,6 +40,16 @@ MSM8916 platform. Definition: must be 2. Specifying the pin number and flags, as defined in +- gpio-ranges: + Usage: required + Value type: + Definition: Range of pins managed by the GPIO controller. + +- gpio-reserved-ranges: + Usage: optional + Value type: + Definition: Range of pins reserved by the TrustZone TEE. + Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -162,6 +172,7 @@ Example: interrupts = <0 208 0>; gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&tlmm 0 0 122>; interrupt-controller; #interrupt-cells = <2>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8960-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8960-pinctrl.txt index eb8d8aa41f20..b1ad096ad60d 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8960-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8960-pinctrl.txt @@ -40,6 +40,16 @@ MSM8960 platform. Definition: must be 2. Specifying the pin number and flags, as defined in +- gpio-ranges: + Usage: required + Value type: + Definition: Range of pins managed by the GPIO controller. + +- gpio-reserved-ranges: + Usage: optional + Value type: + Definition: Range of pins reserved by the TrustZone TEE. + Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -156,6 +166,7 @@ Example: gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&msmgpio 0 0 152>; interrupt-controller; #interrupt-cells = <2>; interrupts = <0 16 0x4>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt index 453bd7c76d6b..54eda96a0d95 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt @@ -10,6 +10,11 @@ Required properties: - #gpio-cells : Should be two. The first cell is the gpio pin number and the second cell is used for optional parameters. +- gpio-ranges: Range of pins managed by the GPIO controller. + +Optional properties: + +- gpio-reserved-ranges: Range of pins reserved by the TrustZone TEE. Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -87,6 +92,7 @@ Example: gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&msmgpio 0 0 146>; interrupt-controller; #interrupt-cells = <2>; interrupts = <0 208 0>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8994-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8994-pinctrl.txt index 13cd629f896e..58208f2eb455 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8994-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8994-pinctrl.txt @@ -42,6 +42,16 @@ MSM8994 platform. Definition: must be 2. Specifying the pin number and flags, as defined in +- gpio-ranges: + Usage: required + Value type: + Definition: Range of pins managed by the GPIO controller. + +- gpio-reserved-ranges: + Usage: optional + Value type: + Definition: Range of pins reserved by the TrustZone TEE. + Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -160,6 +170,7 @@ Example: interrupts = ; gpio-controller; #gpio-cells = <2>; + gpio-ranges = <&msmgpio 0 0 146>; interrupt-controller; #interrupt-cells = <2>; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8996-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8996-pinctrl.txt index aaf01e929eea..65f5e901ee1a 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8996-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8996-pinctrl.txt @@ -40,6 +40,16 @@ MSM8996 platform. Definition: must be 2. Specifying the pin number and flags, as defined in +- gpio-ranges: + Usage: required + Value type: + Definition: Range of pins managed by the GPIO controller. + +- gpio-reserved-ranges: + Usage: optional + Value type: + Definition: Range of pins reserved by the TrustZone TEE. + Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for a general description of GPIO and interrupt bindings. @@ -180,6 +190,7 @@ Example: reg = <0x01010000 0x300000>; interrupts = <0 208 0>; gpio-controller; + gpio-ranges = <&tlmm 0 0 150>; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>;