Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp38385601rwd; Wed, 12 Jul 2023 07:04:49 -0700 (PDT) X-Google-Smtp-Source: APBJJlFSL5T4m1pmXyhZl1iNxSocej8dSStgQdRgdcl/D0I9rhTFVia7wLpRqp7utNL0FtCesrfe X-Received: by 2002:a05:6a20:72a8:b0:12e:caac:f260 with SMTP id o40-20020a056a2072a800b0012ecaacf260mr18766938pzk.2.1689170689050; Wed, 12 Jul 2023 07:04:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689170689; cv=none; d=google.com; s=arc-20160816; b=hGuNoomYtWkIFN0n7Q1+GjPqUyuJ6H2paaGfAoLkA/7/uhjp4fOcrGvrckxj3KeThi 2VlkItHASbQXzignX3RZz4VwspnXGEMcpefP3vrEu5H5VvOBajpsFlxkVCDIq/Ia+mVv 0Q0uxOjsMdHmq1bROtJiImW/SLJrDrVDY4KtDfZPHpgvXHHSiQmIa4hWaUa2OjcuaAru Qlr2qLN8arEQtbB4ZuHkls4bjC8MhWCIFo8qVy+tB3TsmR2rJOJrsO4HxHb+kDFvnPA2 MDKQ+YFGblInIbk3Gi0ZgoeMBQwRTmil2nm9nw172YvJfvOiEZRFDUDQjYlQr94TclzY 2kNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:dkim-signature :from; bh=MDjcxHwKAkbnDFoF09JZJJNakVmauHwYvdirrNru67w=; fh=hHNDnSRuYkUfRjasHwIsQiNUzardZepYEZrnXbwWfYM=; b=pHvgvj/JjJIqxbzrC6Rb5A1eyC3LlhupdyFwxwq1EAurTRglUlSfVp4FiATOaeIgBr 6mK4RLFPwnV/Gaexj5+9RcGUXFMZP/1Rxo55THkegHmoy9711UMoI+l43mwPARrK1Tsi xp/wS49j81djiZ/lmq6jb20858Np/3HKXg0CVkfQ6biuYVa2PqEL0CNtcIr9oZDMd3uN qtxZMICN0uLC1LsE0SiAzEiOmIrTF9KYOvQy8pkoacXPrlRpOgbg10VW/AaF6l/91cMH eM6rEI58Q3rouSA+jPMeWDUimQeJAPcOptkbA3pTDtcoClThlybracInz86/vCKldl9r pWOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cutebit.org header.s=mail header.b=p9nRWNe6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cutebit.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z2-20020aa78882000000b0065dfb27ee3fsi3451074pfe.246.2023.07.12.07.04.36; Wed, 12 Jul 2023 07:04:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cutebit.org header.s=mail header.b=p9nRWNe6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cutebit.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232083AbjGLNiU (ORCPT + 99 others); Wed, 12 Jul 2023 09:38:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229649AbjGLNiR (ORCPT ); Wed, 12 Jul 2023 09:38:17 -0400 Received: from hutie.ust.cz (hutie.ust.cz [185.8.165.127]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7DAA19B9 for ; Wed, 12 Jul 2023 06:38:14 -0700 (PDT) From: =?UTF-8?q?Martin=20Povi=C5=A1er?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cutebit.org; s=mail; t=1689169090; bh=MDjcxHwKAkbnDFoF09JZJJNakVmauHwYvdirrNru67w=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=p9nRWNe6U3z4u4E7mhqhHdUKp1QoeKp/H+AS8GMT+veGNsNnW2hKALhOshGs/IDlt LojJLgNYLMmfV0cr8zn2DA896TJxwh8MbNixIz6+4gc/BL2gQl5yEh3WinY6wCuS+W T1pL3F3VbalquQDQWYhiZXRaLXjUQPEhVaGP/L+E= To: =?UTF-8?q?Martin=20Povi=C5=A1er?= , Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: asahi@lists.linux.dev, dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring Subject: [PATCH 1/2] dt-bindings: dma: apple,sio: Add schema Date: Wed, 12 Jul 2023 15:38:05 +0200 Message-Id: <20230712133806.4450-2-povik+lin@cutebit.org> In-Reply-To: <20230712133806.4450-1-povik+lin@cutebit.org> References: <20230712133806.4450-1-povik+lin@cutebit.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Describe the SIO coprocessor which serves as pretend DMA controller on recent Apple platforms. Reviewed-by: Rob Herring Signed-off-by: Martin Povišer --- .../devicetree/bindings/dma/apple,sio.yaml | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 Documentation/devicetree/bindings/dma/apple,sio.yaml diff --git a/Documentation/devicetree/bindings/dma/apple,sio.yaml b/Documentation/devicetree/bindings/dma/apple,sio.yaml new file mode 100644 index 000000000000..0e3780ad9dd7 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/apple,sio.yaml @@ -0,0 +1,111 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/dma/apple,sio.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple SIO Coprocessor + +description: + SIO is a coprocessor on Apple M1 and later chips (and maybe also on earlier + chips). Its role is to offload SPI, UART and DisplayPort audio transfers, + being a pretend DMA controller. + +maintainers: + - Martin Povišer + +allOf: + - $ref: dma-controller.yaml# + +properties: + compatible: + items: + - enum: + - apple,t6000-sio + - apple,t8103-sio + - const: apple,sio + + reg: + maxItems: 1 + + '#dma-cells': + const: 1 + description: + DMA clients specify a single cell that corresponds to the RTKit endpoint + number used for arranging the transfers in question + + dma-channels: + maximum: 128 + + mboxes: + maxItems: 1 + + iommus: + maxItems: 1 + + power-domains: + maxItems: 1 + + memory-region: + minItems: 2 + maxItems: 8 + description: + A number of references to reserved memory regions among which are the DATA/TEXT + sections of coprocessor executable firmware and also auxiliary firmware data + describing the available DMA-enabled peripherals + + apple,sio-firmware-params: + $ref: /schemas/types.yaml#/definitions/uint32-array + description: | + Parameters in the form of opaque key/value pairs that are to be sent to the SIO + coprocesssor once it boots. These parameters can point into the reserved memory + regions (in device address space). + + Note that unlike Apple's firmware, we treat the parameters, and the data they + refer to, as opaque. Apple embed short data blobs into their SIO devicetree node + that describe the DMA-enabled peripherals (presumably with defined semantics). + Their driver processes those blobs and sets up data structure in mapped device + memory, then references this memory in the parameters sent to the SIO. At the + level of description we are opting for in this binding, we assume the job of + constructing those data structures has been done in advance, leaving behind an + opaque list of key/value parameter pairs to be sent by a prospective driver. + + This approach is chosen for two reasons: + + - It means we don't need to try to understand the semantics of Apple's blobs + as long as we know the transformation we need to do from Apple's devicetree + data to SIO data (which can be shoved away into a loader). It also means the + semantics of Apple's blobs (or of something to replace them) need not be part + of the binding and be kept up with Apple's firmware changes in the future. + + - It leaves less work for the driver attaching on this binding. Instead the work + is done upfront in the loader which can be better suited for keeping up with + Apple's firmware changes. + +required: + - compatible + - reg + - '#dma-cells' + - dma-channels + - mboxes + - iommus + - power-domains + +additionalProperties: false + +examples: + - | + sio: dma-controller@36400000 { + compatible = "apple,t8103-sio", "apple,sio"; + reg = <0x36400000 0x8000>; + dma-channels = <128>; + #dma-cells = <1>; + mboxes = <&sio_mbox>; + iommus = <&sio_dart 0>; + power-domains = <&ps_sio_cpu>; + memory-region = <&sio_text>, <&sio_data>, + <&sio_auxdata1>, <&sio_auxdata2>; /* Filled by loader */ + apple,sio-firmware-params = <0xb 0x10>, <0xc 0x1b80>, <0xf 0x14>, + <0x10 0x1e000>, <0x30d 0x34>, <0x30e 0x4000>, + <0x1a 0x38>, <0x1b 0x50>; /* Filled by loader */ + }; -- 2.38.3