From patchwork Sun Aug 20 12:02:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jisheng Zhang X-Patchwork-Id: 136286 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp2575356vqi; Sun, 20 Aug 2023 10:22:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEQUFT0v4DtS9LnR6/M8911chbWnItvrFu2BE3Xe97YAW4STdUZR9qGUZdyiVh8rxLdsYcu X-Received: by 2002:a05:6512:3b92:b0:4fe:7e1f:b044 with SMTP id g18-20020a0565123b9200b004fe7e1fb044mr3972615lfv.15.1692552126967; Sun, 20 Aug 2023 10:22:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692552126; cv=none; d=google.com; s=arc-20160816; b=iYuMxL8LqaRms818TihVmL6rZWhvnKnWxjnTryVXL71UNhO1E4TmMCePTR9rf6QG/6 OB7IZt2rwgDTeaQHt9+ZI2IXTTHb49ZC49yqFwKQ8siM4C1pyYE4sRXu0zqm1oIxeL0D c9EUhsOCoxq7Gp2zK7/6mPYi9F+YKW42EGs33pHoRJFuj8wz8Ejyyi7Ra0mANLN9CLyd qfSFe9mRbdU8gibmT7bDqCccOBg5T4Wukx5N9fGtoE6h0hhA2EJrEWBkMsTanB/uRMlA +oFQGf4qkiD4HK2wbsNQFCBk0sPi6+xlA4cvTLs/t43BSgmos1kZGWINIBzNF5OrxbhC 4a6w== 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:from :dkim-signature; bh=Vw3ndZHYmsrpmm6X5qSfqaRvB0WqN9/1zY+W5v7Im/M=; fh=MjWO+TP1oGk2BYJLI/JuO2koKsKwAbcrISUQHBxvn9o=; b=GagcpLpEINDPxHCGa7Zc1AuGOjPyc3R5BUzdc/k0MUNI6qU6UotTBj3t36/4sjVaS0 dQ2TrEUpqsFSrW4ExRXCDRDGqYzfKwF9gtkH4hz/thgI0XbnpkwRLsfIZ25zzwWELvuo MJJfinTpm221ryYK3rwM5mTbWORNaPxsomfIIZDBG0PKITYNYIPOPnjc8yyKx3731FXt rfvQOwsD+rz87/yXk9mdx43uV+4LNkeyeCCic+lYJgt+0AHkPMpnK5grk/3nFMn1VkDx yRlua1+b2/qMZ2MBwqGbDN4Lqu4FNdfsHKg38KamBl9G4sPYixsOz0WE5uCpIreYOxOF RhQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uaQRsHHd; 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=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x12-20020a1709065acc00b0099329251046si4255562ejs.14.2023.08.20.10.21.43; Sun, 20 Aug 2023 10:22:06 -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=@kernel.org header.s=k20201202 header.b=uaQRsHHd; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230494AbjHTMST (ORCPT + 99 others); Sun, 20 Aug 2023 08:18:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230467AbjHTMSP (ORCPT ); Sun, 20 Aug 2023 08:18:15 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E04F3EB; Sun, 20 Aug 2023 05:14:08 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 74D2461337; Sun, 20 Aug 2023 12:14:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6527CC433CC; Sun, 20 Aug 2023 12:14:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692533647; bh=JobfbCNun9/CKRyR25756fW741H572o4jwNRMnpEBdE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uaQRsHHdvpihZdkFmaKkGvL6GuO5xzJ19kcCAozGdotB7TyHu+7wv0sfrEeUd3p/P kC0aQkeztPrfvW1dn1p6HEgbv7QwXjPJSByJE+DQo/cyHoGDiTHTooRcNxOD5DBExP GrArCMKkTFSVqXXPg9xUXOLuhU9Cond7uxNPHnqqwhtcj0+F4oAvCqtXgIOJZyErxG H96/Al6d6rSjR+me62K1oenTfHPY3ZemDVxmVwj2SJ3M+R2kpxCbQ07yguZ4t3CFAZ lzkrBR1NcoO/aElKEUgtyG+e7m18xThaHWHFYvp8vLpUw1SAyM9AVBzOIYsArNwbLh YGGMDo27HJzHQ== From: Jisheng Zhang To: "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , Maxime Coquelin Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net-next 1/3] dt-bindings: net: snps,dwmac: allow dwmac-3.70a to set pbl properties Date: Sun, 20 Aug 2023 20:02:11 +0800 Message-Id: <20230820120213.2054-2-jszhang@kernel.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230820120213.2054-1-jszhang@kernel.org> References: <20230820120213.2054-1-jszhang@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774769538856398890 X-GMAIL-MSGID: 1774769538856398890 snps dwmac 3.70a also supports setting pbl related properties, such as "snps,pbl", "snps,txpbl", "snps,rxpbl" and "snps,no-pbl-x8". Signed-off-by: Jisheng Zhang --- Documentation/devicetree/bindings/net/snps,dwmac.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index a916701474dc..7626289157df 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -659,6 +659,7 @@ allOf: - qcom,sa8775p-ethqos - qcom,sc8280xp-ethqos - snps,dwmac-3.50a + - snps,dwmac-3.70a - snps,dwmac-4.10a - snps,dwmac-4.20a - snps,dwmac-5.20 From patchwork Sun Aug 20 12:02:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jisheng Zhang X-Patchwork-Id: 136254 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp2468777vqi; Sun, 20 Aug 2023 06:04:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGbI/XnepYEaLqDk277N7zuy0jcSnRoS9fac+FdcvR10IzrFZvHsaPwoUolN3j3GUPf4sFr X-Received: by 2002:aa7:c698:0:b0:527:60c:53d9 with SMTP id n24-20020aa7c698000000b00527060c53d9mr2552578edq.15.1692536698250; Sun, 20 Aug 2023 06:04:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692536698; cv=none; d=google.com; s=arc-20160816; b=PRkIQWUBMo0/QjMHDYrZHrNpsLhYgFWHpED+sZoF9O+GIl6XMg/NoBIpd3lCEksrj0 MmVFdHlIJ8RbJTVHfEBCuuQOQH05T3jXoscmfZ0Bf+LqQo1csP3QKLgr2EmLGg2hDSgG XUwXgwea0HK1NBmvlWixFOUToi9hXIfHlUJt+m95EKJz/ufxgH16r82M1N3XEhot9zHm lME8civLrB/rWYGdT8Eo804Dv13kqd9aT3zSuqCQPsHnBCCecEGPPmO2faQK3SGCJ0yH tFNjmConmN2pjRlUFftLimjiKo8wAKtkRoAUev7DtP3ET2fZjitNffmv2+IegiyboAAu 3Arw== 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:from :dkim-signature; bh=B7TpjZhlAzb14WYWOxW7iNZcTqvUjn7E8K9f1n+r7Lw=; fh=MjWO+TP1oGk2BYJLI/JuO2koKsKwAbcrISUQHBxvn9o=; b=UtisFt388y8LY6VEqUjHVRsmDs61cbfewrraytFuz5tx2Ch3xhcyCqn/sZJFf2VNdB LKEaU3q/lZlaBIWktxynAeNskIpMVbG1vAIXdaZjxUcVxrnPjl+snj9A7/iKXOdlicsI XUab0SOX0H8meTNZFBB6wZ9ou1s4FeKnZOh26A62BOPiDSi1984I9EE5EiMCQfiiVnnM G5gSe0VWV7z3O5aOSxLzCvTSXjyMUNc6ZNESkOLpU87V9oVA9h5oWbDOVJu+VGU9yWjj V+FKoKMZBdYTBVTBH637UswYnY1m4XHsUPwqVlM02HVVERsCcU7z2twMs5jIc0ft0HQd /kew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=q2xkdFXW; 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=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i6-20020a50fc06000000b00525713faed0si4009507edr.662.2023.08.20.06.04.27; Sun, 20 Aug 2023 06:04:58 -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=@kernel.org header.s=k20201202 header.b=q2xkdFXW; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230505AbjHTMSV (ORCPT + 99 others); Sun, 20 Aug 2023 08:18:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60776 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230495AbjHTMSP (ORCPT ); Sun, 20 Aug 2023 08:18:15 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D53F4EE; Sun, 20 Aug 2023 05:14:12 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 641D062016; Sun, 20 Aug 2023 12:14:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54E68C433CB; Sun, 20 Aug 2023 12:14:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692533651; bh=EWb+P3txvbafg7rtyKSyM9vIE84CV5SI1rjEO7WrC7E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q2xkdFXW9IDM4IEr5OO9OFBpFD5VxDqpX80tvSxxF14Z6z+DYDTv3j1UFDSFcqOqL 1EdUE3yXcdCkFyRMOVj767X0ETveH/PRAVcMXH9GOWYkV8CKdAnq/+WQG9bns0kuEU svD7noomEBmZZPBpHeFxJ4NCxGNE18ESX+geeIn9unHfpZVVtxQvZ/YYuHS0vAiMAi uXLkWw6VjzpXND1nYqcXcz9i8z3WBapUs3+KZBtk4IbOkXOYXFpRcELTsSIsJ2xG/1 CU44q1bQp2cObVDRMd8J1vec6VcFmEl35A8HVyLRj90KRvA8Lndt+Xp9wzHdJ4tvnY WlQH4OCv1+r6g== From: Jisheng Zhang To: "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , Maxime Coquelin Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net-next 2/3] dt-bindings: net: add T-HEAD dwmac support Date: Sun, 20 Aug 2023 20:02:12 +0800 Message-Id: <20230820120213.2054-3-jszhang@kernel.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230820120213.2054-1-jszhang@kernel.org> References: <20230820120213.2054-1-jszhang@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774753360911819932 X-GMAIL-MSGID: 1774753360911819932 Add documentation to describe T-HEAD dwmac. Signed-off-by: Jisheng Zhang --- .../devicetree/bindings/net/snps,dwmac.yaml | 1 + .../devicetree/bindings/net/thead,dwmac.yaml | 87 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/thead,dwmac.yaml diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 7626289157df..b8f61db0e9d9 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -96,6 +96,7 @@ properties: - snps,dwxgmac - snps,dwxgmac-2.10 - starfive,jh7110-dwmac + - thead,th1520-dwmac reg: minItems: 1 diff --git a/Documentation/devicetree/bindings/net/thead,dwmac.yaml b/Documentation/devicetree/bindings/net/thead,dwmac.yaml new file mode 100644 index 000000000000..8ab16c408537 --- /dev/null +++ b/Documentation/devicetree/bindings/net/thead,dwmac.yaml @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/thead,dwmac.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: T-HEAD DWMAC glue layer + +maintainers: + - Jisheng Zhang + +select: + properties: + compatible: + contains: + enum: + - thead,th1520-dwmac + required: + - compatible + +properties: + compatible: + items: + - enum: + - thead,th1520-dwmac + - const: snps,dwmac-3.70a + + reg: + maxItems: 1 + + clocks: + items: + - description: GMAC main clock + - description: AXI clock + + clock-names: + items: + - const: stmmaceth + - const: axi + + thead,gmacapb: + $ref: /schemas/types.yaml#/definitions/phandle + description: + The phandle to the syscon node that control ethernet + interface and timing delay. + +required: + - compatible + - reg + - clocks + - clock-names + - interrupts + - interrupt-names + - phy-mode + - thead,gmacapb + +allOf: + - $ref: snps,dwmac.yaml# + +unevaluatedProperties: false + +examples: + - | + gmac0: ethernet@e7070000 { + compatible = "thead,th1520-dwmac", "snps,dwmac-3.70a"; + reg = <0xe7070000 0x2000>; + clocks = <&clk 1>, <&clk 2>; + clock-names = "stmmaceth", "axi"; + interrupts = <66>; + interrupt-names = "macirq"; + phy-mode = "rgmii-id"; + snps,fixed-burst; + snps,axi-config = <&stmmac_axi_setup>; + snps,pbl = <32>; + thead,gmacapb = <&gmacapb_syscon>; + phy-handle = <&phy0>; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + + phy0: ethernet-phy@0 { + reg = <0>; + }; + }; + }; From patchwork Sun Aug 20 12:02:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jisheng Zhang X-Patchwork-Id: 136278 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp2553248vqi; Sun, 20 Aug 2023 09:26:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFHLy5NMT5ZYKPrOuaOdbD7tRQCPLLgZzpvsUFPle9aTsqDT/MHfmN+rzxcRqZTAunGd+/r X-Received: by 2002:a05:6a20:13c7:b0:135:293b:9b14 with SMTP id ho7-20020a056a2013c700b00135293b9b14mr5036274pzc.55.1692548810747; Sun, 20 Aug 2023 09:26:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692548810; cv=none; d=google.com; s=arc-20160816; b=A3xzon8q/tb++E/dlINk4aHEwEECa4PSO7JrmrFj9xC3M0c+WpAJKmH4BGbAJ9bcMw LZfnN8O5WbA+th398mA0u0CqatHAz6eP4Xv7JE33Albx3BmSNfOex13Urr7w5fK40n+K 2gfrX8Un4ZnpmVWU9TxVN/DpRNR38Dbulh8D9wsGHWsk3YnYLGkBKDMCG5Srawi9Im+c 2cANZN0B+2awGU/qQEILwwRn2VvCG704f5zKojyDnQPSrnN5qe91AM4XTzabS8kvPgvP ZZ3N5GSyrg3YWKDPuIP9Yydnc1VxEw2aEylO8NRmY1Ys0KiF9/UsG+dlYcy9ocf6Nmmb xQ1w== 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:from :dkim-signature; bh=3sPncOmJTs2GFUTn1Yov3NkpQzs2mXvzmrRctuPG+Gc=; fh=MjWO+TP1oGk2BYJLI/JuO2koKsKwAbcrISUQHBxvn9o=; b=hF2I0o5F2Rk8xys+1CmUm6+b3iSLXHmK+VNhjgwbpRMTwBkeCBAYD+Ea1ZAUNTx7gd 8/8wNELFE0yIKWbxj0blVBP3FTUYZI8zwvIxI2H9FbFtkNyK4jV1xmwSEISK3LnG6ibJ zVgOmUCJGCtr8FbiAzTX7gOC+D5BbNaIuKXsRTul+qnxedtirSZOf0KmgU/tjpw7nD2Y wNUy2XcvsihX27z61DVI/lFv4T8TVEx72nwxupYFR1C/GpWEjd5C74XPknvr7RaLkaLK 48yuRNZkh2+sWbM0djA/hkwngNfFATsb30dSawSe/PPEXZoHx6jgnEWH5pG8SiZqwQQB m69g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WAWeleQQ; 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=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s23-20020a632c17000000b0055f8db24692si2378169pgs.624.2023.08.20.09.26.37; Sun, 20 Aug 2023 09:26:50 -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=@kernel.org header.s=k20201202 header.b=WAWeleQQ; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230075AbjHTMSZ (ORCPT + 99 others); Sun, 20 Aug 2023 08:18:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231128AbjHTMSQ (ORCPT ); Sun, 20 Aug 2023 08:18:16 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34C72102; Sun, 20 Aug 2023 05:14:17 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B0F9560DBC; Sun, 20 Aug 2023 12:14:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4441DC433C9; Sun, 20 Aug 2023 12:14:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692533656; bh=Den5dFS0MXDAQfMUN5eWruNGI0pHi2wHRF4CX/oFhPU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WAWeleQQXgSnGBz+bKec0yrb1T+7jeNMDNsHql0UcfYmV0J77tSPOorMEJwMpeu6C AWHfiUp2W0gq60d3KViN4Iqg14fabrwtSp1W5XtuvHI8Ididi4UkRHvydQXFMSX82o pCN7l+cGuosKiNXqjyiX29D6KEVXvNGvtLpY6ck5hHGA4z2Cq44Zv1ysG3jVbhL9/M TLGWRRXeGMtv71YF2JoecVmuEOFK4JqYUNyK63ePNUOmsnDzUAd8nuFz1iOqbjexeP 01SGbXzbBTsZCp6MjeSZh6DwG82+UZOTNHWPUmkNJx6Cu6NsEQ+zvLMTpzZaDs8agH 7ifgar5a/FxKw== From: Jisheng Zhang To: "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , Maxime Coquelin Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net-next 3/3] net: stmmac: add glue layer for T-HEAD TH1520 SoC Date: Sun, 20 Aug 2023 20:02:13 +0800 Message-Id: <20230820120213.2054-4-jszhang@kernel.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230820120213.2054-1-jszhang@kernel.org> References: <20230820120213.2054-1-jszhang@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774761996331518225 X-GMAIL-MSGID: 1774766061569207646 Add dwmac glue driver to support the dwmac on the T-HEAD TH1520 SoC. Signed-off-by: Jisheng Zhang --- drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 + drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + .../net/ethernet/stmicro/stmmac/dwmac-thead.c | 304 ++++++++++++++++++ 3 files changed, 316 insertions(+) create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig index 06c6871f8788..1bf71804c270 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig @@ -216,6 +216,17 @@ config DWMAC_SUN8I stmmac device driver. This driver is used for H3/A83T/A64 EMAC ethernet controller. +config DWMAC_THEAD + tristate "T-HEAD dwmac support" + depends on OF && (ARCH_THEAD || COMPILE_TEST) + select MFD_SYSCON + help + Support for ethernet controllers on T-HEAD RISC-V SoCs + + This selects the T-HEAD platform specific glue layer support for + the stmmac device driver. This driver is used for T-HEAD TH1520 + ethernet controller. + config DWMAC_IMX8 tristate "NXP IMX8 DWMAC support" default ARCH_MXC diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile index 5b57aee19267..d73171ed6ad7 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Makefile +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile @@ -27,6 +27,7 @@ obj-$(CONFIG_DWMAC_STI) += dwmac-sti.o obj-$(CONFIG_DWMAC_STM32) += dwmac-stm32.o obj-$(CONFIG_DWMAC_SUNXI) += dwmac-sunxi.o obj-$(CONFIG_DWMAC_SUN8I) += dwmac-sun8i.o +obj-$(CONFIG_DWMAC_THEAD) += dwmac-thead.o obj-$(CONFIG_DWMAC_DWC_QOS_ETH) += dwmac-dwc-qos-eth.o obj-$(CONFIG_DWMAC_INTEL_PLAT) += dwmac-intel-plat.o obj-$(CONFIG_DWMAC_GENERIC) += dwmac-generic.o diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c new file mode 100644 index 000000000000..1a5a174b88ff --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-thead.c @@ -0,0 +1,304 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * T-HEAD DWMAC platform driver + * + * Copyright (C) 2023 Jisheng Zhang + * Copyright (C) 2021 Alibaba Group Holding Limited. + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "stmmac_platform.h" + +#define GMAC_CLK_EN 0x00 +#define GMAC_TX_CLK_EN BIT(1) +#define GMAC_TX_CLK_N_EN BIT(2) +#define GMAC_TX_CLK_OUT_EN BIT(3) +#define GMAC_RX_CLK_EN BIT(4) +#define GMAC_RX_CLK_N_EN BIT(5) +#define GMAC_EPHY_REF_CLK_EN BIT(6) +#define GMAC_RXCLK_DELAY_CTRL 0x04 +#define GMAC_RXCLK_BYPASS BIT(15) +#define GMAC_RXCLK_INVERT BIT(14) +#define GMAC_RXCLK_DELAY_MASK GENMASK(4, 0) +#define GMAC_RXCLK_DELAY_VAL(x) FIELD_PREP(GMAC_RXCLK_DELAY_MASK, (x)) +#define GMAC_TXCLK_DELAY_CTRL 0x08 +#define GMAC_TXCLK_BYPASS BIT(15) +#define GMAC_TXCLK_INVERT BIT(14) +#define GMAC_TXCLK_DELAY_MASK GENMASK(4, 0) +#define GMAC_TXCLK_DELAY_VAL(x) FIELD_PREP(GMAC_RXCLK_DELAY_MASK, (x)) +#define GMAC_PLLCLK_DIV 0x0c +#define GMAC_PLLCLK_DIV_EN BIT(31) +#define GMAC_PLLCLK_DIV_MASK GENMASK(7, 0) +#define GMAC_PLLCLK_DIV_NUM(x) FIELD_PREP(GMAC_PLLCLK_DIV_MASK, (x)) +#define GMAC_GTXCLK_SEL 0x18 +#define GMAC_GTXCLK_SEL_PLL BIT(0) +#define GMAC_INTF_CTRL 0x1c +#define PHY_INTF_MASK BIT(0) +#define PHY_INTF_RGMII FIELD_PREP(PHY_INTF_MASK, 1) +#define PHY_INTF_MII_GMII FIELD_PREP(PHY_INTF_MASK, 0) +#define GMAC_TXCLK_OEN 0x20 +#define TXCLK_DIR_MASK BIT(0) +#define TXCLK_DIR_OUTPUT FIELD_PREP(TXCLK_DIR_MASK, 0) +#define TXCLK_DIR_INPUT FIELD_PREP(TXCLK_DIR_MASK, 1) + +#define GMAC_GMII_RGMII_RATE 125000000 +#define GMAC_MII_RATE 25000000 + +struct thead_dwmac { + struct plat_stmmacenet_data *plat; + struct regmap *apb_regmap; + struct device *dev; + struct clk *clk_axi; + u32 rx_delay; + u32 tx_delay; +}; + +static int thead_dwmac_set_phy_if(struct plat_stmmacenet_data *plat) +{ + struct thead_dwmac *dwmac = plat->bsp_priv; + u32 phyif; + + switch (plat->interface) { + case PHY_INTERFACE_MODE_MII: + phyif = PHY_INTF_MII_GMII; + break; + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_TXID: + case PHY_INTERFACE_MODE_RGMII_RXID: + phyif = PHY_INTF_RGMII; + break; + default: + dev_err(dwmac->dev, "unsupported phy interface %d\n", + plat->interface); + return -EINVAL; + }; + + regmap_write(dwmac->apb_regmap, GMAC_INTF_CTRL, phyif); + + return 0; +} + +static int thead_dwmac_set_txclk_dir(struct plat_stmmacenet_data *plat) +{ + struct thead_dwmac *dwmac = plat->bsp_priv; + u32 txclk_dir;; + + switch (plat->interface) { + case PHY_INTERFACE_MODE_MII: + txclk_dir = TXCLK_DIR_INPUT; + break; + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_TXID: + case PHY_INTERFACE_MODE_RGMII_RXID: + txclk_dir = TXCLK_DIR_OUTPUT; + break; + default: + dev_err(dwmac->dev, "unsupported phy interface %d\n", + plat->interface); + return -EINVAL; + }; + + regmap_write(dwmac->apb_regmap, GMAC_TXCLK_OEN, txclk_dir); + + return 0; +} + +static void thead_dwmac_fix_speed(void *priv, unsigned int speed, unsigned int mode) +{ + struct thead_dwmac *dwmac = priv; + struct plat_stmmacenet_data *plat = dwmac->plat; + unsigned long rate; + u32 div; + + switch (plat->interface) { + /* For MII, rxc/txc is provided by phy */ + case PHY_INTERFACE_MODE_MII: + return; + + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: + rate = clk_get_rate(plat->stmmac_clk); + if (!rate || rate % GMAC_GMII_RGMII_RATE != 0 || + rate % GMAC_MII_RATE != 0) { + dev_err(dwmac->dev, "invalid gmac rate %ld\n", rate); + return; + } + + regmap_update_bits(dwmac->apb_regmap, GMAC_PLLCLK_DIV, GMAC_PLLCLK_DIV_EN, 0); + + switch (speed) { + case SPEED_1000: + div = rate / GMAC_GMII_RGMII_RATE; + break; + case SPEED_100: + div = rate / GMAC_MII_RATE; + break; + case SPEED_10: + div = rate * 10 / GMAC_MII_RATE; + break; + default: + dev_err(dwmac->dev, "invalid speed %u\n", speed); + break; + } + regmap_update_bits(dwmac->apb_regmap, GMAC_PLLCLK_DIV, + GMAC_PLLCLK_DIV_MASK, GMAC_PLLCLK_DIV_NUM(div)); + + regmap_update_bits(dwmac->apb_regmap, GMAC_PLLCLK_DIV, + GMAC_PLLCLK_DIV_EN, GMAC_PLLCLK_DIV_EN); + break; + default: + dev_err(dwmac->dev, "unsupported phy interface %d\n", + plat->interface); + return; + } +} + +static int thead_dwmac_enable_clk(struct plat_stmmacenet_data *plat) +{ + struct thead_dwmac *dwmac = plat->bsp_priv; + u32 reg; + + switch (plat->interface) { + case PHY_INTERFACE_MODE_MII: + reg = GMAC_RX_CLK_EN | GMAC_TX_CLK_EN; + break; + + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: + /* use pll */ + regmap_write(dwmac->apb_regmap, GMAC_GTXCLK_SEL, GMAC_GTXCLK_SEL_PLL); + + reg = GMAC_TX_CLK_EN | GMAC_TX_CLK_N_EN | GMAC_TX_CLK_OUT_EN | + GMAC_RX_CLK_EN | GMAC_RX_CLK_N_EN; + break; + + default: + dev_err(dwmac->dev, "unsupported phy interface %d\n", + plat->interface); + return -EINVAL; + } + + regmap_write(dwmac->apb_regmap, GMAC_CLK_EN, reg); + + return 0; +} + +static int thead_dwmac_init(struct platform_device *pdev, + struct plat_stmmacenet_data *plat) +{ + struct thead_dwmac *dwmac = plat->bsp_priv; + int ret; + + ret = thead_dwmac_set_phy_if(plat); + if (ret) + return ret; + + ret = thead_dwmac_set_txclk_dir(plat); + if (ret) + return ret; + + regmap_write(dwmac->apb_regmap, GMAC_RXCLK_DELAY_CTRL, + GMAC_RXCLK_DELAY_VAL(dwmac->rx_delay)); + regmap_write(dwmac->apb_regmap, GMAC_TXCLK_DELAY_CTRL, + GMAC_TXCLK_DELAY_VAL(dwmac->tx_delay)); + + thead_dwmac_fix_speed(dwmac, SPEED_1000, 0); + + return thead_dwmac_enable_clk(plat); +} + +static int thead_dwmac_probe(struct platform_device *pdev) +{ + struct plat_stmmacenet_data *plat; + struct stmmac_resources stmmac_res; + struct thead_dwmac *dwmac; + struct device_node *np = pdev->dev.of_node; + u32 delay_ps; + int ret; + + ret = stmmac_get_platform_resources(pdev, &stmmac_res); + if (ret) + return dev_err_probe(&pdev->dev, ret, + "failed to get resources\n"); + + plat = stmmac_probe_config_dt(pdev, stmmac_res.mac); + if (IS_ERR(plat)) + return dev_err_probe(&pdev->dev, PTR_ERR(plat), + "dt configuration failed\n"); + + dwmac = devm_kzalloc(&pdev->dev, sizeof(*dwmac), GFP_KERNEL); + if (!dwmac) + return -ENOMEM; + + dwmac->clk_axi = devm_clk_get_enabled(&pdev->dev, "axi"); + if (IS_ERR(dwmac->clk_axi)) + return dev_err_probe(&pdev->dev, PTR_ERR(dwmac->clk_axi), + "error getting axi clock\n"); + + if (!of_property_read_u32(np, "rx-internal-delay-ps", &delay_ps)) + dwmac->rx_delay = delay_ps; + if (!of_property_read_u32(np, "tx-internal-delay-ps", &delay_ps)) + dwmac->tx_delay = delay_ps; + + dwmac->apb_regmap = syscon_regmap_lookup_by_phandle(np, "thead,gmacapb"); + if (IS_ERR(dwmac->apb_regmap)) { + dev_err(&pdev->dev, "Failed to get gmac apb syscon\n"); + return PTR_ERR(dwmac->apb_regmap); + } + + dwmac->dev = &pdev->dev; + dwmac->plat = plat; + plat->bsp_priv = dwmac; + plat->fix_mac_speed = thead_dwmac_fix_speed; + + ret = thead_dwmac_init(pdev, plat); + if (ret) + goto err_dvr_probe; + + ret = stmmac_dvr_probe(&pdev->dev, plat, &stmmac_res); + if (ret) + goto err_dvr_probe; + + return 0; + +err_dvr_probe: + stmmac_remove_config_dt(pdev, plat); + + return ret; +} + +static const struct of_device_id thead_dwmac_match[] = { + { .compatible = "thead,th1520-dwmac" }, + { } +}; +MODULE_DEVICE_TABLE(of, thead_dwmac_match); + +static struct platform_driver thead_dwmac_driver = { + .probe = thead_dwmac_probe, + .remove_new = stmmac_pltfr_remove, + .driver = { + .name = "thead-dwmac", + .pm = &stmmac_pltfr_pm_ops, + .of_match_table = thead_dwmac_match, + }, +}; +module_platform_driver(thead_dwmac_driver); + +MODULE_AUTHOR("T-HEAD"); +MODULE_AUTHOR("Jisheng Zhang "); +MODULE_DESCRIPTION("T-HEAD dwmac platform driver"); +MODULE_LICENSE("GPL");