From patchwork Wed Oct 7 15:28:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 11820825 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EA9141580 for ; Wed, 7 Oct 2020 15:30:23 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 83DA821582 for ; Wed, 7 Oct 2020 15:30:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="LmRTTJqi"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ZzHhbfWp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 83DA821582 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version: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=A1EZwyyBKg5bof96xZ1R2xWdpqQ1ODZSjmPvKcYf2oM=; b=LmRTTJqiQG+hFcD2FAStLHU3/y w1Zq/IeVrQCf0z29XaDDjnJNuT9xv6oiaJjWDEubwL9p3TrBd+7W60jovnbaGW1OwPWjN5a+OImfq QRHMyhAcZALp62HY6A+43LnhAsm8kBIYZeNeI2SGZxlH/RjaOHYVK+SK0gyN0Ub3RLTeTpSiTWwiK S3HkCZEq0QBBJfpHqgn8w01jOWAsCzNrUafBFqK6uGBEJY0RyY5r0lMlCodXk+Q3TcxJuKnY1GIif dAEh3YJjraybvtdQOZX+HWcRhzIHi/o0zBaJitdmEyzt6CUKjVP7tSaey4+3CryxIaztnGylAB2k2 e2Uiod8w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQBN8-0003ip-3Z; Wed, 07 Oct 2020 15:28:54 +0000 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQBN5-0003i4-7K for linux-arm-kernel@lists.infradead.org; Wed, 07 Oct 2020 15:28:52 +0000 Received: by mail-pf1-x442.google.com with SMTP id x22so1497585pfo.12 for ; Wed, 07 Oct 2020 08:28:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=riAKcPVYtg+GC1pCuIb7AnRFVCer0d2eMcLFBIHh+3I=; b=ZzHhbfWpkIXkuRlZzNJQFnbzeCqmp4T0ayR6XwXDfdsjtdRtYriAAkNvFEwNApL3jy qCZW6QzXZ5g8FQGGXo0NTBv6tItZ+tHXNNt0uUCnAVQn+Neh1uOaEJqziFwAAB1hKZqT JTBGyfP5+PCkEDW9gw5BF/QzmQ7SNu80IQrwVXcUGJ5TPfDNrrhnW2GJ4OJOIUGWhiFl PvMLz616WnmTBkdJ4oY2lC5h1gxSx9DhNOQqrewym4A2GMwFt/6yqPUT5d4EkEJb58mV Z53q/mpfKfcVSNZJ2mULJFjJkZq8CZwfnd/LV5Xca4NcaCF0mz4AgnFZDJtSnBMuZ2ZN rdUw== 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:mime-version :content-transfer-encoding; bh=riAKcPVYtg+GC1pCuIb7AnRFVCer0d2eMcLFBIHh+3I=; b=qbdkvPwuCBAONramTj+tXQCT7OttAtNff+9zyLovRNIqrCsR4luW+fAASzVIhJVzGy GkJ0Sf2SX5nlD4tHejBH0Rqg+JaYi1KfqJCYMUnqAOi6ip2NJyyZhG9Ay6+1gUp2LOPW wYKohkIs6bMuMB7de9QrMPJEitdbxChCMAJtCWMGEh/r/nXXjtXkvDb+8fuOmh4feXFi yJbBebz3+qi6S6AAUaoXe2D8IHhyt+qTbiFaaWf1YOp0SSAG8rvA3DkggWhUxlTjmQdH R3mwICNZ3QLoVN1XbokXc7E0EM+A+8YApo9W8RbehU+PYblODjOse00OrxdL95dJpzt/ G5Fw== X-Gm-Message-State: AOAM530Zh0eBnXh+TR39qSgVnwbKhWcLZkSyX1edltTpmoD/d/HmZbTX ITw8eEMnAEW1orLpd9fhbfvtxQ== X-Google-Smtp-Source: ABdhPJwm9/+C5j7lYWV/wf8OnBPEDMdbN2tJBzwqTh4AYDbMvERw2OR0LU+trZIacjQmA27Tft6RUw== X-Received: by 2002:a65:6086:: with SMTP id t6mr3509049pgu.146.1602084529013; Wed, 07 Oct 2020 08:28:49 -0700 (PDT) Received: from localhost ([122.181.54.133]) by smtp.gmail.com with ESMTPSA id r8sm4322494pgn.30.2020.10.07.08.28.47 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Oct 2020 08:28:48 -0700 (PDT) From: Viresh Kumar To: Rob Herring , Jassi Brar , Borup Petersen , Viresh Kumar Subject: [RFC V2] dt-bindings: mailbox : arm,mhuv2: Add bindings Date: Wed, 7 Oct 2020 20:58:44 +0530 Message-Id: X-Mailer: git-send-email 2.25.0.rc1.19.g042ed3e048af MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201007_112851_279225_C0259F29 X-CRM114-Status: GOOD ( 27.00 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:442 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Vincent Guittot , linux-kernel@vger.kernel.org, Tushar Khandelwal , Sudeep.Holla@arm.com, Frank Rowand , linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org This patch adds device tree binding for ARM Message Handling Unit (MHU) controller version 2. Based on earlier work by Morten Borup Petersen. Co-developed-by: Morten Borup Petersen Signed-off-by: Morten Borup Petersen Signed-off-by: Tushar Khandelwal Signed-off-by: Viresh Kumar --- Morten/Tushar, I have prepared this based on the best of my understanding about the hardware, but since I haven't worked on the actual hardware yet there are chances that I may have misunderstood some of it. Please lemme know if any of my understanding is incorrect. Here is the link to the previous attempt by Tushar to get it upstreamed long back: https://lore.kernel.org/lkml/20190717192616.1731-1-tushar.khandelwal@arm.com/ This is very much a new approach and so I am not pointing out the differences from the previous one. I haven't started with redesigning the driver as of now and would like to get some feedback on the bindings first. Thanks in advance. --- .../bindings/mailbox/arm,mhuv2.yaml | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml diff --git a/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml new file mode 100644 index 000000000000..3cbdc97f1f4c --- /dev/null +++ b/Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml @@ -0,0 +1,170 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mailbox/arm,mhuv2.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: ARM MHUv2 Mailbox Controller + +maintainers: + - Morten Borup Petersen + - Viresh Kumar + +description: | + The Arm Message Handling Unit (MHU) Version 2 is a mailbox controller that has + between 1 and 124 channel windows (each 32-bit wide) to provide unidirectional + communication with remote processor(s), where the number of channel windows + are implementation dependent. + + Given the unidirectional nature of the controller, an MHUv2 mailbox may only + be written to or read from. If a pair of MHU controllers is implemented + between two processing elements to provide bidirectional communication, these + must be specified as two separate mailboxes. + + If the interrupts property is present in device tree node, then its treated as + a receiver mailbox, otherwise a sender. + + An MHU controller must be specified along with the supported transport + protocols. The transport protocols determine the method of data transmission + as well as the number of provided mailbox channels. + + Following are the possible transport protocols. + + - Doorbell: Each transfer is made up of single bit flag, using any one of the + bits in a channel window. A channel window can support up to 32 doorbells + and the entire window shall be used in doorbell mode. Optionally, data may + be transmitted through a shared memory region, wherein the MHU is used + strictly as an interrupt generation mechanism but that is out of the scope + of these bindings. + + - Single-word: Each transfer is single word, using a single Channel window. + + - Multi-word: Each transfer is made of two or more words, using two or more + channel windows. + +# We need a select here so we don't match all nodes with 'arm,primecell' +select: + properties: + compatible: + contains: + const: arm,mhuv2 + required: + - compatible + +properties: + compatible: + items: + - const: arm,mhuv2 + - const: arm,primecell + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + maxItems: 1 + + clock-names: + items: + - const: apb_pclk + + arm-mhuv2-mode: + description: | + The MHUv2 controller may contain up to 124 channel windows (each 32-bit + wide). The hardware and the DT bindings allows any combination of those to + be used for various transport protocols. + + This property allows a platform to describe how these channel windows are + used in various transport protocols. The entries in this property shall be + present as an array of tuples, where each tuple describes details about + one of the transport protocol being implemented over some channel + window(s). + + The first field of a tuple signifies the transfer protocol, 0 is reserved + for doorbell protocol, 1 is reserved for single-word protocol and 2 is + reserved for multi-word protocol. Using any other value in the first field + of a tuple makes it invalid. + + The second field of a tuple signifies the number of channel windows where + the protocol would be used. For doorbell protocol this field signifies the + number of 32-bit channel windows that implement the doorbell protocol. For + single-word protocol this field signifies the number of 32-bit channel + windows that implement separate single-word protocol mailbox channels. For + multi-word protocol this field signifies the number of channel windows + used for a multi-word protocol, it should be 2 or more. + + The total number of channel windows specified here shouldn't be more than + the ones implemented by the platform. + + mhu: mailbox@2b1f0000 { + ... + + arm-mhuv2-mode = <0 2>, <1 3>, <2 5>, <2 7>; + } + + The above example defines the mode of an ARM MHUv2 mailbox controller, + where a total of 17 channel windows are used. The first two windows are + used in doorbell mode (64 doorbells), the next 3 windows are (separately) + used in single-word mode, and the last two mailbox channels are used in + multi-word mode of length 5 and 7 channel windows. + + '#mbox-cells': + description: | + It contains two fields, the first field represents the channel number, + which may be used in doorbell, single-word, or multi-word mode, and the + second field (only relevant in doorbell mode, ignored otherwise) + represents the doorbell number within the 32 bit wide channel window. + + From the example given above for the arm-mhuv2-mode, here is how a client + node can reference them. + + mboxes = <&mhu 0 5>; // Mailbox channel 0, doorbell 5. + mboxes = <&mhu 1 7>; // Mailbox channel 1, doorbell 7. + mboxes = <&mhu 2 0>; // Mailbox channel 2, single-word mode. + mboxes = <&mhu 4 0>; // Mailbox channel 4, single-word mode. + mboxes = <&mhu 6 0>; // Mailbox channel 6, multi-word mode with 7 windows. + + const: 2 + +required: + - compatible + - reg + - '#mbox-cells' + - arm-mhuv2-mode + +additionalProperties: false + +examples: + # Multiple transport protocols implemented by the mailbox controller + # configured in sender mode + - | + soc { + #address-cells = <2>; + #size-cells = <2>; + + mhu: mailbox@2b1f0000 { + #mbox-cells = <2>; + compatible = "arm,mhuv2", "arm,primecell"; + reg = <0 0x2b1f0000 0 0x1000>; + clocks = <&clock 0>; + clock-names = "apb_pclk"; + arm-mhuv2-mode = <1 5>, <2 2>, <2 5>, <2 7>, <0 2>; + }; + + mhu_client: scb@2e000000 { + compatible = "fujitsu,mb86s70-scb-1.0"; + reg = <0 0x2e000000 0 0x4000>; + + mboxes = + //single-word protocol channel 0 + <&mhu 0 0>, + //single-word protocol channel 4 + <&mhu 4 0>, + //multi-word protocol channel 6 with 5 windows + <&mhu 6 0>, + //doorbell protocol channel 9, doorbell 27 + <&mhu 9 27>; + }; + };