From patchwork Fri Nov 27 13:33:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steen Hegelund X-Patchwork-Id: 11936345 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 179F1C63798 for ; Fri, 27 Nov 2020 13:34:53 +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 9AE5E2224D for ; Fri, 27 Nov 2020 13:34:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="wccwGZBR"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="NlNqiP2C" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9AE5E2224D Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.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:References:In-Reply-To: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:List-Owner; bh=QiEldlXxgFf0gKi+IxBp0AYu2bhvgvQqPJ59DDySW9c=; b=wccwGZBR/kJ/NyOY0X6VFec5s B5ETkxeJoqg8A1OG3XK9umwShaqkuhwK0416cmC4Q/c5Yk8qhDYh16lJHpqdzl3hxQWC03f8c05c0 Z3IswGu3skK40w9Bu3OYz33poo1QuTd5+sdOd5EwuGx+KzhBEXoId3RBbSy+xOyxmESdw2bFRavpN vXPXzH3pPYkywkL7ANn7aQbj513nqEQhdM9v+NM4NZ7aFCDPweeEBwZcZjyOQUkIkQ/VuG6Qvp58v Dyirpy8bNeP9GKB7PsmiqyGz2q9zp++5gu8ZyV9CdVj8AqNAYoa6X573xsndSV2NuHAQDF9WOmbWC XDYva+qLA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kidsV-00057U-2T; Fri, 27 Nov 2020 13:33:35 +0000 Received: from esa2.microchip.iphmx.com ([68.232.149.84]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kidsR-00056Q-3h for linux-arm-kernel@lists.infradead.org; Fri, 27 Nov 2020 13:33:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1606484010; x=1638020010; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0dOf69sGzmS56bmRLRipVRoXtXx280gHYbVkjGeTXvA=; b=NlNqiP2CtezR+QXO5E2xMt8igOcnxjuNTMiFRs9Hm7su82ONVBV27OdA YGjyl4lu2QbsNZZHSKXPIiExKXQNJD2x9c2ELUwWRuvpn36bty6lucRRJ 5t+HTaNuz84nWV6SnfK0g4gn1UJZ1Ns+uN7EVHQgR6OM9jBsJjy/sCNYV NNm6M9slU0J97VAua0SwX4pnjV6zOlI6JT1zkvvvJnr5LtbaLMYuP6yxe jbSwwFIHRAxYq+KBwQDa7rOUsVWvZV/j+ICDcTpBFUXavTXKXlTXbaHq2 xDIw9c/YGle4JcbtxftSl7x23886DA9eELi/MZdn2c0Rm5yXRS2Tx9yXI Q==; IronPort-SDR: DiambrVqpZSJbhtQ+uz9UDnxd7Py4NVNO3T4nDCSaU0xTPitpxZ4rVmxxdDz7nrg955kL4x5hJ UnRmNd8EtzJVBIItljDrfbkI9ckXX6m23bJ8B5blKONb4mhNPs5pIMfPmdH0gL74oU2WyzmlDB rZskdC4fv0A1Bu7dVmT0cSy5kxh7i3LhDbY/sVENWxBgA2yA9a5jzeNjcLlrlJAykprYYl495D y0C2Tyl5L93FdRQ73/AS6KtummQVz+h+lkM3s/k2tf91X35FbHfd+u8/gQU8OG79+GJ7odR1r/ 59w= X-IronPort-AV: E=Sophos;i="5.78,374,1599548400"; d="scan'208";a="97796848" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 27 Nov 2020 06:33:26 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 27 Nov 2020 06:33:26 -0700 Received: from mchp-dev-shegelun.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 27 Nov 2020 06:33:23 -0700 From: Steen Hegelund To: "David S. Miller" , Jakub Kicinski , Rob Herring Subject: [RFC PATCH 1/3] dt-bindings: net: sparx5: Add sparx5-switch bindings Date: Fri, 27 Nov 2020 14:33:05 +0100 Message-ID: <20201127133307.2969817-2-steen.hegelund@microchip.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201127133307.2969817-1-steen.hegelund@microchip.com> References: <20201127133307.2969817-1-steen.hegelund@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201127_083331_331821_5797565C X-CRM114-Status: GOOD ( 13.91 ) 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: Bjarni Jonasson , Alexandre Belloni , devicetree@vger.kernel.org, netdev@vger.kernel.org, Steen Hegelund , linux-kernel@vger.kernel.org, Microchip Linux Driver Support , Microsemi List , linux-arm-kernel@lists.infradead.org, Lars Povlsen Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document the Sparx5 switch device driver bindings Signed-off-by: Steen Hegelund --- .../bindings/net/microchip,sparx5-switch.yaml | 633 ++++++++++++++++++ 1 file changed, 633 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml diff --git a/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml b/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml new file mode 100644 index 000000000000..34af605af533 --- /dev/null +++ b/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml @@ -0,0 +1,633 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/microchip,sparx5-switch.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Microchip Sparx5 Ethernet switch controller + +maintainers: + - Lars Povlsen + - Steen Hegelund + +description: | + The SparX-5 Enterprise Ethernet switch family provides a rich set of + Enterprise switching features such as advanced TCAM-based VLAN and + QoS processing enabling delivery of differentiated services, and + security through TCAM-based frame processing using versatile content + aware processor (VCAP). + + IPv4/IPv6 Layer 3 (L3) unicast and multicast routing is supported + with up to 18K IPv4/9K IPv6 unicast LPM entries and up to 9K IPv4/3K + IPv6 (S,G) multicast groups. + + L3 security features include source guard and reverse path + forwarding (uRPF) tasks. Additional L3 features include VRF-Lite and + IP tunnels (IP over GRE/IP). + + The SparX-5 switch family targets managed Layer 2 and Layer 3 + equipment in SMB, SME, and Enterprise where high port count + 1G/2.5G/5G/10G switching with 10G/25G aggregation links is required. + +properties: + $nodename: + pattern: "^switch@[0-9a-f]+$" + + compatible: + const: microchip,sparx5-switch + + reg: + minItems: 153 + + reg-names: + minItems: 153 + items: + - const: dev2g5_0 + - const: dev5g_0 + - const: pcs5g_br_0 + - const: dev2g5_1 + - const: dev5g_1 + - const: pcs5g_br_1 + - const: dev2g5_2 + - const: dev5g_2 + - const: pcs5g_br_2 + - const: dev2g5_6 + - const: dev5g_6 + - const: pcs5g_br_6 + - const: dev2g5_7 + - const: dev5g_7 + - const: pcs5g_br_7 + - const: dev2g5_8 + - const: dev5g_8 + - const: pcs5g_br_8 + - const: dev2g5_9 + - const: dev5g_9 + - const: pcs5g_br_9 + - const: dev2g5_10 + - const: dev5g_10 + - const: pcs5g_br_10 + - const: dev2g5_11 + - const: dev5g_11 + - const: pcs5g_br_11 + - const: dev2g5_12 + - const: dev10g_0 + - const: pcs10g_br_0 + - const: dev2g5_14 + - const: dev10g_2 + - const: pcs10g_br_2 + - const: dev2g5_15 + - const: dev10g_3 + - const: pcs10g_br_3 + - const: dev2g5_16 + - const: dev2g5_17 + - const: dev2g5_18 + - const: dev2g5_19 + - const: dev2g5_20 + - const: dev2g5_21 + - const: dev2g5_22 + - const: dev2g5_23 + - const: dev2g5_32 + - const: dev2g5_33 + - const: dev2g5_34 + - const: dev2g5_35 + - const: dev2g5_36 + - const: dev2g5_37 + - const: dev2g5_38 + - const: dev2g5_39 + - const: dev2g5_40 + - const: dev2g5_41 + - const: dev2g5_42 + - const: dev2g5_43 + - const: dev2g5_44 + - const: dev2g5_45 + - const: dev2g5_46 + - const: dev2g5_47 + - const: dev2g5_57 + - const: dev25g_1 + - const: pcs25g_br_1 + - const: dev2g5_59 + - const: dev25g_3 + - const: pcs25g_br_3 + - const: dev2g5_60 + - const: dev25g_4 + - const: pcs25g_br_4 + - const: dev2g5_64 + - const: dev5g_64 + - const: pcs5g_br_64 + - const: port_conf + - const: dev2g5_3 + - const: dev5g_3 + - const: pcs5g_br_3 + - const: dev2g5_4 + - const: dev5g_4 + - const: pcs5g_br_4 + - const: dev2g5_5 + - const: dev5g_5 + - const: pcs5g_br_5 + - const: dev2g5_13 + - const: dev10g_1 + - const: pcs10g_br_1 + - const: dev2g5_24 + - const: dev2g5_25 + - const: dev2g5_26 + - const: dev2g5_27 + - const: dev2g5_28 + - const: dev2g5_29 + - const: dev2g5_30 + - const: dev2g5_31 + - const: dev2g5_48 + - const: dev10g_4 + - const: pcs10g_br_4 + - const: dev2g5_49 + - const: dev10g_5 + - const: pcs10g_br_5 + - const: dev2g5_50 + - const: dev10g_6 + - const: pcs10g_br_6 + - const: dev2g5_51 + - const: dev10g_7 + - const: pcs10g_br_7 + - const: dev2g5_52 + - const: dev10g_8 + - const: pcs10g_br_8 + - const: dev2g5_53 + - const: dev10g_9 + - const: pcs10g_br_9 + - const: dev2g5_54 + - const: dev10g_10 + - const: pcs10g_br_10 + - const: dev2g5_55 + - const: dev10g_11 + - const: pcs10g_br_11 + - const: dev2g5_56 + - const: dev25g_0 + - const: pcs25g_br_0 + - const: dev2g5_58 + - const: dev25g_2 + - const: pcs25g_br_2 + - const: dev2g5_61 + - const: dev25g_5 + - const: pcs25g_br_5 + - const: dev2g5_62 + - const: dev25g_6 + - const: pcs25g_br_6 + - const: dev2g5_63 + - const: dev25g_7 + - const: pcs25g_br_7 + - const: dsm + - const: asm + - const: gcb + - const: qs + - const: ana_acl + - const: lrn + - const: vcap_super + - const: qsys + - const: qfwd + - const: xqs + - const: clkgen + - const: ana_ac_pol + - const: qres + - const: eacl + - const: ana_cl + - const: ana_l3 + - const: hsch + - const: rew + - const: ana_l2 + - const: ana_ac + - const: vop + + interrupts: + maxItems: 1 + description: Interrupt used for reception of packets to the CPU + + ethernet-ports: + type: object + properties: + '#address-cells': + const: 1 + '#size-cells': + const: 0 + + patternProperties: + "^port@[0-9]+$": + type: object + description: Switch ports + + allOf: + - $ref: ethernet-controller.yaml# + + properties: + reg: + description: Switch port number + + max-speed: + maxItems: 1 + description: Bandwidth allocated to this port + + phys: + description: phandle of a Ethernet Serdes PHY + + phy-handle: + description: phandle of a Ethernet PHY + + phy-mode: + description: Interface between the serdes and the phy + + sfp: + description: phandle of an SFP + + managed: + maxItems: 1 + description: SFP management + + required: + - reg + - max-speed + - phys + + oneOf: + - required: + - phy-handle + - phy-mode + - required: + - sfp + - managed + + additionalProperties: false + +required: + - compatible + - reg + - reg-names + - interrupts + - ethernet-ports + +additionalProperties: false + +examples: + - | + #include + switch: switch@600000000 { + compatible = "microchip,sparx5-switch"; + reg = <0x10004000 0x4000>, /* dev2g5_0 */ + <0x10008000 0x4000>, /* dev5g_0 */ + <0x1000c000 0x4000>, /* pcs5g_br_0 */ + <0x10010000 0x4000>, /* dev2g5_1 */ + <0x10014000 0x4000>, /* dev5g_1 */ + <0x10018000 0x4000>, /* pcs5g_br_1 */ + <0x1001c000 0x4000>, /* dev2g5_2 */ + <0x10020000 0x4000>, /* dev5g_2 */ + <0x10024000 0x4000>, /* pcs5g_br_2 */ + <0x10028000 0x4000>, /* dev2g5_6 */ + <0x1002c000 0x4000>, /* dev5g_6 */ + <0x10030000 0x4000>, /* pcs5g_br_6 */ + <0x10034000 0x4000>, /* dev2g5_7 */ + <0x10038000 0x4000>, /* dev5g_7 */ + <0x1003c000 0x4000>, /* pcs5g_br_7 */ + <0x10040000 0x4000>, /* dev2g5_8 */ + <0x10044000 0x4000>, /* dev5g_8 */ + <0x10048000 0x4000>, /* pcs5g_br_8 */ + <0x1004c000 0x4000>, /* dev2g5_9 */ + <0x10050000 0x4000>, /* dev5g_9 */ + <0x10054000 0x4000>, /* pcs5g_br_9 */ + <0x10058000 0x4000>, /* dev2g5_10 */ + <0x1005c000 0x4000>, /* dev5g_10 */ + <0x10060000 0x4000>, /* pcs5g_br_10 */ + <0x10064000 0x4000>, /* dev2g5_11 */ + <0x10068000 0x4000>, /* dev5g_11 */ + <0x1006c000 0x4000>, /* pcs5g_br_11 */ + <0x10070000 0x4000>, /* dev2g5_12 */ + <0x10074000 0x4000>, /* dev10g_0 */ + <0x10078000 0x4000>, /* pcs10g_br_0 */ + <0x1007c000 0x4000>, /* dev2g5_14 */ + <0x10080000 0x4000>, /* dev10g_2 */ + <0x10084000 0x4000>, /* pcs10g_br_2 */ + <0x10088000 0x4000>, /* dev2g5_15 */ + <0x1008c000 0x4000>, /* dev10g_3 */ + <0x10090000 0x4000>, /* pcs10g_br_3 */ + <0x10094000 0x4000>, /* dev2g5_16 */ + <0x10098000 0x4000>, /* dev2g5_17 */ + <0x1009c000 0x4000>, /* dev2g5_18 */ + <0x100a0000 0x4000>, /* dev2g5_19 */ + <0x100a4000 0x4000>, /* dev2g5_20 */ + <0x100a8000 0x4000>, /* dev2g5_21 */ + <0x100ac000 0x4000>, /* dev2g5_22 */ + <0x100b0000 0x4000>, /* dev2g5_23 */ + <0x100b4000 0x4000>, /* dev2g5_32 */ + <0x100b8000 0x4000>, /* dev2g5_33 */ + <0x100bc000 0x4000>, /* dev2g5_34 */ + <0x100c0000 0x4000>, /* dev2g5_35 */ + <0x100c4000 0x4000>, /* dev2g5_36 */ + <0x100c8000 0x4000>, /* dev2g5_37 */ + <0x100cc000 0x4000>, /* dev2g5_38 */ + <0x100d0000 0x4000>, /* dev2g5_39 */ + <0x100d4000 0x4000>, /* dev2g5_40 */ + <0x100d8000 0x4000>, /* dev2g5_41 */ + <0x100dc000 0x4000>, /* dev2g5_42 */ + <0x100e0000 0x4000>, /* dev2g5_43 */ + <0x100e4000 0x4000>, /* dev2g5_44 */ + <0x100e8000 0x4000>, /* dev2g5_45 */ + <0x100ec000 0x4000>, /* dev2g5_46 */ + <0x100f0000 0x4000>, /* dev2g5_47 */ + <0x100f4000 0x4000>, /* dev2g5_57 */ + <0x100f8000 0x4000>, /* dev25g_1 */ + <0x100fc000 0x4000>, /* pcs25g_br_1 */ + <0x10104000 0x4000>, /* dev2g5_59 */ + <0x10108000 0x4000>, /* dev25g_3 */ + <0x1010c000 0x4000>, /* pcs25g_br_3 */ + <0x10114000 0x4000>, /* dev2g5_60 */ + <0x10118000 0x4000>, /* dev25g_4 */ + <0x1011c000 0x4000>, /* pcs25g_br_4 */ + <0x10124000 0x4000>, /* dev2g5_64 */ + <0x10128000 0x4000>, /* dev5g_64 */ + <0x1012c000 0x4000>, /* pcs5g_br_64 */ + <0x10130000 0x2d0000>, /* port_conf */ + <0x10404000 0x4000>, /* dev2g5_3 */ + <0x10408000 0x4000>, /* dev5g_3 */ + <0x1040c000 0x4000>, /* pcs5g_br_3 */ + <0x10410000 0x4000>, /* dev2g5_4 */ + <0x10414000 0x4000>, /* dev5g_4 */ + <0x10418000 0x4000>, /* pcs5g_br_4 */ + <0x1041c000 0x4000>, /* dev2g5_5 */ + <0x10420000 0x4000>, /* dev5g_5 */ + <0x10424000 0x4000>, /* pcs5g_br_5 */ + <0x10428000 0x4000>, /* dev2g5_13 */ + <0x1042c000 0x4000>, /* dev10g_1 */ + <0x10430000 0x4000>, /* pcs10g_br_1 */ + <0x10434000 0x4000>, /* dev2g5_24 */ + <0x10438000 0x4000>, /* dev2g5_25 */ + <0x1043c000 0x4000>, /* dev2g5_26 */ + <0x10440000 0x4000>, /* dev2g5_27 */ + <0x10444000 0x4000>, /* dev2g5_28 */ + <0x10448000 0x4000>, /* dev2g5_29 */ + <0x1044c000 0x4000>, /* dev2g5_30 */ + <0x10450000 0x4000>, /* dev2g5_31 */ + <0x10454000 0x4000>, /* dev2g5_48 */ + <0x10458000 0x4000>, /* dev10g_4 */ + <0x1045c000 0x4000>, /* pcs10g_br_4 */ + <0x10460000 0x4000>, /* dev2g5_49 */ + <0x10464000 0x4000>, /* dev10g_5 */ + <0x10468000 0x4000>, /* pcs10g_br_5 */ + <0x1046c000 0x4000>, /* dev2g5_50 */ + <0x10470000 0x4000>, /* dev10g_6 */ + <0x10474000 0x4000>, /* pcs10g_br_6 */ + <0x10478000 0x4000>, /* dev2g5_51 */ + <0x1047c000 0x4000>, /* dev10g_7 */ + <0x10480000 0x4000>, /* pcs10g_br_7 */ + <0x10484000 0x4000>, /* dev2g5_52 */ + <0x10488000 0x4000>, /* dev10g_8 */ + <0x1048c000 0x4000>, /* pcs10g_br_8 */ + <0x10490000 0x4000>, /* dev2g5_53 */ + <0x10494000 0x4000>, /* dev10g_9 */ + <0x10498000 0x4000>, /* pcs10g_br_9 */ + <0x1049c000 0x4000>, /* dev2g5_54 */ + <0x104a0000 0x4000>, /* dev10g_10 */ + <0x104a4000 0x4000>, /* pcs10g_br_10 */ + <0x104a8000 0x4000>, /* dev2g5_55 */ + <0x104ac000 0x4000>, /* dev10g_11 */ + <0x104b0000 0x4000>, /* pcs10g_br_11 */ + <0x104b4000 0x4000>, /* dev2g5_56 */ + <0x104b8000 0x4000>, /* dev25g_0 */ + <0x104bc000 0x4000>, /* pcs25g_br_0 */ + <0x104c4000 0x4000>, /* dev2g5_58 */ + <0x104c8000 0x4000>, /* dev25g_2 */ + <0x104cc000 0x4000>, /* pcs25g_br_2 */ + <0x104d4000 0x4000>, /* dev2g5_61 */ + <0x104d8000 0x4000>, /* dev25g_5 */ + <0x104dc000 0x4000>, /* pcs25g_br_5 */ + <0x104e4000 0x4000>, /* dev2g5_62 */ + <0x104e8000 0x4000>, /* dev25g_6 */ + <0x104ec000 0x4000>, /* pcs25g_br_6 */ + <0x104f4000 0x4000>, /* dev2g5_63 */ + <0x104f8000 0x4000>, /* dev25g_7 */ + <0x104fc000 0x4000>, /* pcs25g_br_7 */ + <0x10504000 0x4000>, /* dsm */ + <0x10600000 0x200000>, /* asm */ + <0x11010000 0x10000>, /* gcb */ + <0x11030000 0x10000>, /* qs */ + <0x11050000 0x10000>, /* ana_acl */ + <0x11060000 0x10000>, /* lrn */ + <0x11080000 0x10000>, /* vcap_super */ + <0x110a0000 0x10000>, /* qsys */ + <0x110b0000 0x10000>, /* qfwd */ + <0x110c0000 0x10000>, /* xqs */ + <0x11100000 0x100000>, /* clkgen */ + <0x11200000 0x40000>, /* ana_ac_pol */ + <0x11280000 0x40000>, /* qres */ + <0x112c0000 0x140000>, /* eacl */ + <0x11400000 0x80000>, /* ana_cl */ + <0x11480000 0x80000>, /* ana_l3 */ + <0x11580000 0x80000>, /* hsch */ + <0x11600000 0x80000>, /* rew */ + <0x11800000 0x100000>, /* ana_l2 */ + <0x11900000 0x100000>, /* ana_ac */ + <0x11a00000 0x100000>; /* vop */ + reg-names = + "dev2g5_0", + "dev5g_0", + "pcs5g_br_0", + "dev2g5_1", + "dev5g_1", + "pcs5g_br_1", + "dev2g5_2", + "dev5g_2", + "pcs5g_br_2", + "dev2g5_6", + "dev5g_6", + "pcs5g_br_6", + "dev2g5_7", + "dev5g_7", + "pcs5g_br_7", + "dev2g5_8", + "dev5g_8", + "pcs5g_br_8", + "dev2g5_9", + "dev5g_9", + "pcs5g_br_9", + "dev2g5_10", + "dev5g_10", + "pcs5g_br_10", + "dev2g5_11", + "dev5g_11", + "pcs5g_br_11", + "dev2g5_12", + "dev10g_0", + "pcs10g_br_0", + "dev2g5_14", + "dev10g_2", + "pcs10g_br_2", + "dev2g5_15", + "dev10g_3", + "pcs10g_br_3", + "dev2g5_16", + "dev2g5_17", + "dev2g5_18", + "dev2g5_19", + "dev2g5_20", + "dev2g5_21", + "dev2g5_22", + "dev2g5_23", + "dev2g5_32", + "dev2g5_33", + "dev2g5_34", + "dev2g5_35", + "dev2g5_36", + "dev2g5_37", + "dev2g5_38", + "dev2g5_39", + "dev2g5_40", + "dev2g5_41", + "dev2g5_42", + "dev2g5_43", + "dev2g5_44", + "dev2g5_45", + "dev2g5_46", + "dev2g5_47", + "dev2g5_57", + "dev25g_1", + "pcs25g_br_1", + "dev2g5_59", + "dev25g_3", + "pcs25g_br_3", + "dev2g5_60", + "dev25g_4", + "pcs25g_br_4", + "dev2g5_64", + "dev5g_64", + "pcs5g_br_64", + "port_conf", + "dev2g5_3", + "dev5g_3", + "pcs5g_br_3", + "dev2g5_4", + "dev5g_4", + "pcs5g_br_4", + "dev2g5_5", + "dev5g_5", + "pcs5g_br_5", + "dev2g5_13", + "dev10g_1", + "pcs10g_br_1", + "dev2g5_24", + "dev2g5_25", + "dev2g5_26", + "dev2g5_27", + "dev2g5_28", + "dev2g5_29", + "dev2g5_30", + "dev2g5_31", + "dev2g5_48", + "dev10g_4", + "pcs10g_br_4", + "dev2g5_49", + "dev10g_5", + "pcs10g_br_5", + "dev2g5_50", + "dev10g_6", + "pcs10g_br_6", + "dev2g5_51", + "dev10g_7", + "pcs10g_br_7", + "dev2g5_52", + "dev10g_8", + "pcs10g_br_8", + "dev2g5_53", + "dev10g_9", + "pcs10g_br_9", + "dev2g5_54", + "dev10g_10", + "pcs10g_br_10", + "dev2g5_55", + "dev10g_11", + "pcs10g_br_11", + "dev2g5_56", + "dev25g_0", + "pcs25g_br_0", + "dev2g5_58", + "dev25g_2", + "pcs25g_br_2", + "dev2g5_61", + "dev25g_5", + "pcs25g_br_5", + "dev2g5_62", + "dev25g_6", + "pcs25g_br_6", + "dev2g5_63", + "dev25g_7", + "pcs25g_br_7", + "dsm", + "asm", + "gcb", + "qs", + "ana_acl", + "lrn", + "vcap_super", + "qsys", + "qfwd", + "xqs", + "clkgen", + "ana_ac_pol", + "qres", + "eacl", + "ana_cl", + "ana_l3", + "hsch", + "rew", + "ana_l2", + "ana_ac", + "vop"; + + interrupts = ; + ethernet-ports { + #address-cells = <1>; + #size-cells = <0>; + + port0: port@0 { + reg = <0>; + max-speed = <1000>; + phys = <&serdes 13>; + phy-handle = <&phy0>; + phy-mode = "qsgmii"; + }; + /* ... */ + /* Then the 25G interfaces */ + port60: port@60 { + reg = <60>; + max-speed = <25000>; + phys = <&serdes 29>; + sfp = <&sfp_eth60>; + managed = "in-band-status"; + }; + port61: port@61 { + reg = <61>; + max-speed = <25000>; + phys = <&serdes 30>; + sfp = <&sfp_eth61>; + managed = "in-band-status"; + }; + port62: port@62 { + reg = <62>; + max-speed = <25000>; + phys = <&serdes 31>; + sfp = <&sfp_eth62>; + managed = "in-band-status"; + }; + port63: port@63 { + reg = <63>; + max-speed = <25000>; + phys = <&serdes 32>; + sfp = <&sfp_eth63>; + managed = "in-band-status"; + }; + /* Finally the Management interface */ + port64: port@64 { + reg = <64>; + max-speed = <1000>; + phys = <&serdes 0>; + phy-handle = <&phy64>; + phy-mode = "sgmii"; + }; + }; + }; + +... From patchwork Fri Nov 27 13:33:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steen Hegelund X-Patchwork-Id: 11936347 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3134AC63798 for ; Fri, 27 Nov 2020 13:35:06 +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 93EE72224D for ; Fri, 27 Nov 2020 13:35:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="R3ugpimX"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="jYv/IgVV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 93EE72224D Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.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:References:In-Reply-To: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:List-Owner; bh=gO9ZIjFvu8Mo9gT97Vo84v3vZnTmTL8ibVA4X0GcXo4=; b=R3ugpimXjJV1yEN5sXkd/Yb/n 5XfGrIO3PkW339E+edKRFvGUb2awmdftIT0WURMQqg0PHCGJgXzmVlpIhlUcaZWOSFRChQw9gGSSE TK145LNsggGYYSaM/PAJcKZZFxog4a3SNnOFwk52taP45fN515zywIbE7JT2mTMFgXwCd4NxsgNRI RMEixRW1rEl7jnochRhNWiHFKQq5d8HxtQID9Y1GEXeqS5aq0ELpWDze7oIixlHGobJaC27YpTGQO RsHgjQNRguy5wDZHqqU/owwmY+QO7v47xyL7Uu7B1BXTSSVSGxi6DsESz9dbAFmiDARBGf/gkwN1G Jv0vwc9+g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kidse-000591-4b; Fri, 27 Nov 2020 13:33:44 +0000 Received: from esa4.microchip.iphmx.com ([68.232.154.123]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kidsa-00057o-Pf for linux-arm-kernel@lists.infradead.org; Fri, 27 Nov 2020 13:33:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1606484020; x=1638020020; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IUnuGdc+Gwk7DAt1ZunPUaR11DhnnKboAQycNJ0VtbU=; b=jYv/IgVVCkrYY8KkgWgUVXkzYvqkUNmAdQiE1+QarVmf4bESYj9phYEw IMzkdNFsIXScxl8QU5sUr1xDpymiEHDIIq0GtzKJ3CuF24f3fj+T+gjnl G+Rh6dofKkiZKGB3DcZoLE370qUTs8OPD45dOHJk955bbWeT8J0DLwULc Yo35Tu3hsip1fJ4xe0smWP8s2mCHFLYUU1hEm7+18+XNeMgtfR2NyAz36 cS4v9qrlvVfqJLQ6RTKQQzupE0/Gnwht4qHM5UIRzqrFn2ef0QncosNk+ FHMDZq/3+NstaKrikRP45FAEcZ+8j0hjeqMnqc9sCP7b1B5tWlX6JJFs6 g==; IronPort-SDR: 2KOYvkDU6tHiMCWpJ7Txtmn59W4ZdNcS7GJBDLZicq/zLe67OI/TnJAtdXXlsFrUf1Qa06d9CC 58oZS9AnCveczXAt5L1KAu/11xdKgN7BYoEzWE6c2eo4IidBPvq3QabaIbm2VQDESCt0Bup//1 UqmP+FAkk+Q9vCLW/nBR2s8wUDN4cJP1tpmlzyQwqyBnv6JBKBO1kgjagpAsNXzNUYXPtakAV1 Rqx3j+zu+5ZP4xwfVmNx6e01dB9Y+eAK9bWbS0/WUDHuWN42880unLdng2J6PXUMXl14HhmdQR MvI= X-IronPort-AV: E=Sophos;i="5.78,374,1599548400"; d="scan'208";a="95050366" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 27 Nov 2020 06:33:36 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 27 Nov 2020 06:33:35 -0700 Received: from mchp-dev-shegelun.microchip.com (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 27 Nov 2020 06:33:32 -0700 From: Steen Hegelund To: "David S. Miller" , Jakub Kicinski , Rob Herring Subject: [RFC PATCH 3/3] arm64: dts: sparx5: Add the Sparx5 switch node Date: Fri, 27 Nov 2020 14:33:07 +0100 Message-ID: <20201127133307.2969817-4-steen.hegelund@microchip.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201127133307.2969817-1-steen.hegelund@microchip.com> References: <20201127133307.2969817-1-steen.hegelund@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201127_083341_104819_2493D782 X-CRM114-Status: GOOD ( 12.34 ) 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: Bjarni Jonasson , Alexandre Belloni , devicetree@vger.kernel.org, netdev@vger.kernel.org, Steen Hegelund , linux-kernel@vger.kernel.org, Microchip Linux Driver Support , Microsemi List , linux-arm-kernel@lists.infradead.org, Lars Povlsen Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This provides switchdev support for the Microship Sparx5 PCB134 and PCB135 reference boards. This commit depends on the following series currently on their way into the kernel: - Sparx5 SerDes Driver Link: https://lore.kernel.org/r/20201123114234.2292766-1-steen.hegelund@microchip.com/ - Serial GPIO Controller Link: https://lore.kernel.org/r/20201113145151.68900-1-lars.povlsen@microchip.com/ Signed-off-by: Steen Hegelund --- arch/arm64/boot/dts/microchip/sparx5.dtsi | 364 +++++++++++ .../dts/microchip/sparx5_pcb134_board.dtsi | 424 ++++++++++-- .../dts/microchip/sparx5_pcb135_board.dtsi | 602 +++++++++++++++++- 3 files changed, 1330 insertions(+), 60 deletions(-) diff --git a/arch/arm64/boot/dts/microchip/sparx5.dtsi b/arch/arm64/boot/dts/microchip/sparx5.dtsi index 08d0c2fe208e..8119ea1029e0 100644 --- a/arch/arm64/boot/dts/microchip/sparx5.dtsi +++ b/arch/arm64/boot/dts/microchip/sparx5.dtsi @@ -267,6 +267,21 @@ emmc_pins: emmc-pins { "GPIO_46", "GPIO_47"; function = "emmc"; }; + + miim1_pins: miim1-pins { + pins = "GPIO_56", "GPIO_57"; + function = "miim"; + }; + + miim2_pins: miim2-pins { + pins = "GPIO_58", "GPIO_59"; + function = "miim"; + }; + + miim3_pins: miim3-pins { + pins = "GPIO_52", "GPIO_53"; + function = "miim"; + }; }; sgpio0: gpio@61101036c { @@ -379,6 +394,44 @@ tmon0: tmon@610508110 { clocks = <&ahb_clk>; }; + mdio0: mdio@6110102b0 { + compatible = "mscc,ocelot-miim"; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x6 0x110102b0 0x24>; + }; + + mdio1: mdio@6110102d4 { + compatible = "mscc,ocelot-miim"; + status = "disabled"; + pinctrl-0 = <&miim1_pins>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x6 0x110102d4 0x24>; + }; + + mdio2: mdio@6110102f8 { + compatible = "mscc,ocelot-miim"; + status = "disabled"; + pinctrl-0 = <&miim2_pins>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x6 0x110102d4 0x24>; + }; + + mdio3: mdio@61101031c { + compatible = "mscc,ocelot-miim"; + status = "disabled"; + pinctrl-0 = <&miim3_pins>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x6 0x1101031c 0x24>; + }; + serdes: serdes@10808000 { compatible = "microchip,sparx5-serdes"; #phy-cells = <1>; @@ -574,5 +627,316 @@ serdes: serdes@10808000 { "sd_lane_25g_32"; }; + switch: switch@600000000 { + compatible = "microchip,sparx5-switch"; + reg = <0x6 0x10004000 0x4000>, /* dev2g5_0 */ + <0x6 0x10008000 0x4000>, /* dev5g_0 */ + <0x6 0x1000c000 0x4000>, /* pcs5g_br_0 */ + <0x6 0x10010000 0x4000>, /* dev2g5_1 */ + <0x6 0x10014000 0x4000>, /* dev5g_1 */ + <0x6 0x10018000 0x4000>, /* pcs5g_br_1 */ + <0x6 0x1001c000 0x4000>, /* dev2g5_2 */ + <0x6 0x10020000 0x4000>, /* dev5g_2 */ + <0x6 0x10024000 0x4000>, /* pcs5g_br_2 */ + <0x6 0x10028000 0x4000>, /* dev2g5_6 */ + <0x6 0x1002c000 0x4000>, /* dev5g_6 */ + <0x6 0x10030000 0x4000>, /* pcs5g_br_6 */ + <0x6 0x10034000 0x4000>, /* dev2g5_7 */ + <0x6 0x10038000 0x4000>, /* dev5g_7 */ + <0x6 0x1003c000 0x4000>, /* pcs5g_br_7 */ + <0x6 0x10040000 0x4000>, /* dev2g5_8 */ + <0x6 0x10044000 0x4000>, /* dev5g_8 */ + <0x6 0x10048000 0x4000>, /* pcs5g_br_8 */ + <0x6 0x1004c000 0x4000>, /* dev2g5_9 */ + <0x6 0x10050000 0x4000>, /* dev5g_9 */ + <0x6 0x10054000 0x4000>, /* pcs5g_br_9 */ + <0x6 0x10058000 0x4000>, /* dev2g5_10 */ + <0x6 0x1005c000 0x4000>, /* dev5g_10 */ + <0x6 0x10060000 0x4000>, /* pcs5g_br_10 */ + <0x6 0x10064000 0x4000>, /* dev2g5_11 */ + <0x6 0x10068000 0x4000>, /* dev5g_11 */ + <0x6 0x1006c000 0x4000>, /* pcs5g_br_11 */ + <0x6 0x10070000 0x4000>, /* dev2g5_12 */ + <0x6 0x10074000 0x4000>, /* dev10g_0 */ + <0x6 0x10078000 0x4000>, /* pcs10g_br_0 */ + <0x6 0x1007c000 0x4000>, /* dev2g5_14 */ + <0x6 0x10080000 0x4000>, /* dev10g_2 */ + <0x6 0x10084000 0x4000>, /* pcs10g_br_2 */ + <0x6 0x10088000 0x4000>, /* dev2g5_15 */ + <0x6 0x1008c000 0x4000>, /* dev10g_3 */ + <0x6 0x10090000 0x4000>, /* pcs10g_br_3 */ + <0x6 0x10094000 0x4000>, /* dev2g5_16 */ + <0x6 0x10098000 0x4000>, /* dev2g5_17 */ + <0x6 0x1009c000 0x4000>, /* dev2g5_18 */ + <0x6 0x100a0000 0x4000>, /* dev2g5_19 */ + <0x6 0x100a4000 0x4000>, /* dev2g5_20 */ + <0x6 0x100a8000 0x4000>, /* dev2g5_21 */ + <0x6 0x100ac000 0x4000>, /* dev2g5_22 */ + <0x6 0x100b0000 0x4000>, /* dev2g5_23 */ + <0x6 0x100b4000 0x4000>, /* dev2g5_32 */ + <0x6 0x100b8000 0x4000>, /* dev2g5_33 */ + <0x6 0x100bc000 0x4000>, /* dev2g5_34 */ + <0x6 0x100c0000 0x4000>, /* dev2g5_35 */ + <0x6 0x100c4000 0x4000>, /* dev2g5_36 */ + <0x6 0x100c8000 0x4000>, /* dev2g5_37 */ + <0x6 0x100cc000 0x4000>, /* dev2g5_38 */ + <0x6 0x100d0000 0x4000>, /* dev2g5_39 */ + <0x6 0x100d4000 0x4000>, /* dev2g5_40 */ + <0x6 0x100d8000 0x4000>, /* dev2g5_41 */ + <0x6 0x100dc000 0x4000>, /* dev2g5_42 */ + <0x6 0x100e0000 0x4000>, /* dev2g5_43 */ + <0x6 0x100e4000 0x4000>, /* dev2g5_44 */ + <0x6 0x100e8000 0x4000>, /* dev2g5_45 */ + <0x6 0x100ec000 0x4000>, /* dev2g5_46 */ + <0x6 0x100f0000 0x4000>, /* dev2g5_47 */ + <0x6 0x100f4000 0x4000>, /* dev2g5_57 */ + <0x6 0x100f8000 0x4000>, /* dev25g_1 */ + <0x6 0x100fc000 0x4000>, /* pcs25g_br_1 */ + <0x6 0x10104000 0x4000>, /* dev2g5_59 */ + <0x6 0x10108000 0x4000>, /* dev25g_3 */ + <0x6 0x1010c000 0x4000>, /* pcs25g_br_3 */ + <0x6 0x10114000 0x4000>, /* dev2g5_60 */ + <0x6 0x10118000 0x4000>, /* dev25g_4 */ + <0x6 0x1011c000 0x4000>, /* pcs25g_br_4 */ + <0x6 0x10124000 0x4000>, /* dev2g5_64 */ + <0x6 0x10128000 0x4000>, /* dev5g_64 */ + <0x6 0x1012c000 0x4000>, /* pcs5g_br_64 */ + <0x6 0x10130000 0x2d0000>, /* port_conf */ + <0x6 0x10404000 0x4000>, /* dev2g5_3 */ + <0x6 0x10408000 0x4000>, /* dev5g_3 */ + <0x6 0x1040c000 0x4000>, /* pcs5g_br_3 */ + <0x6 0x10410000 0x4000>, /* dev2g5_4 */ + <0x6 0x10414000 0x4000>, /* dev5g_4 */ + <0x6 0x10418000 0x4000>, /* pcs5g_br_4 */ + <0x6 0x1041c000 0x4000>, /* dev2g5_5 */ + <0x6 0x10420000 0x4000>, /* dev5g_5 */ + <0x6 0x10424000 0x4000>, /* pcs5g_br_5 */ + <0x6 0x10428000 0x4000>, /* dev2g5_13 */ + <0x6 0x1042c000 0x4000>, /* dev10g_1 */ + <0x6 0x10430000 0x4000>, /* pcs10g_br_1 */ + <0x6 0x10434000 0x4000>, /* dev2g5_24 */ + <0x6 0x10438000 0x4000>, /* dev2g5_25 */ + <0x6 0x1043c000 0x4000>, /* dev2g5_26 */ + <0x6 0x10440000 0x4000>, /* dev2g5_27 */ + <0x6 0x10444000 0x4000>, /* dev2g5_28 */ + <0x6 0x10448000 0x4000>, /* dev2g5_29 */ + <0x6 0x1044c000 0x4000>, /* dev2g5_30 */ + <0x6 0x10450000 0x4000>, /* dev2g5_31 */ + <0x6 0x10454000 0x4000>, /* dev2g5_48 */ + <0x6 0x10458000 0x4000>, /* dev10g_4 */ + <0x6 0x1045c000 0x4000>, /* pcs10g_br_4 */ + <0x6 0x10460000 0x4000>, /* dev2g5_49 */ + <0x6 0x10464000 0x4000>, /* dev10g_5 */ + <0x6 0x10468000 0x4000>, /* pcs10g_br_5 */ + <0x6 0x1046c000 0x4000>, /* dev2g5_50 */ + <0x6 0x10470000 0x4000>, /* dev10g_6 */ + <0x6 0x10474000 0x4000>, /* pcs10g_br_6 */ + <0x6 0x10478000 0x4000>, /* dev2g5_51 */ + <0x6 0x1047c000 0x4000>, /* dev10g_7 */ + <0x6 0x10480000 0x4000>, /* pcs10g_br_7 */ + <0x6 0x10484000 0x4000>, /* dev2g5_52 */ + <0x6 0x10488000 0x4000>, /* dev10g_8 */ + <0x6 0x1048c000 0x4000>, /* pcs10g_br_8 */ + <0x6 0x10490000 0x4000>, /* dev2g5_53 */ + <0x6 0x10494000 0x4000>, /* dev10g_9 */ + <0x6 0x10498000 0x4000>, /* pcs10g_br_9 */ + <0x6 0x1049c000 0x4000>, /* dev2g5_54 */ + <0x6 0x104a0000 0x4000>, /* dev10g_10 */ + <0x6 0x104a4000 0x4000>, /* pcs10g_br_10 */ + <0x6 0x104a8000 0x4000>, /* dev2g5_55 */ + <0x6 0x104ac000 0x4000>, /* dev10g_11 */ + <0x6 0x104b0000 0x4000>, /* pcs10g_br_11 */ + <0x6 0x104b4000 0x4000>, /* dev2g5_56 */ + <0x6 0x104b8000 0x4000>, /* dev25g_0 */ + <0x6 0x104bc000 0x4000>, /* pcs25g_br_0 */ + <0x6 0x104c4000 0x4000>, /* dev2g5_58 */ + <0x6 0x104c8000 0x4000>, /* dev25g_2 */ + <0x6 0x104cc000 0x4000>, /* pcs25g_br_2 */ + <0x6 0x104d4000 0x4000>, /* dev2g5_61 */ + <0x6 0x104d8000 0x4000>, /* dev25g_5 */ + <0x6 0x104dc000 0x4000>, /* pcs25g_br_5 */ + <0x6 0x104e4000 0x4000>, /* dev2g5_62 */ + <0x6 0x104e8000 0x4000>, /* dev25g_6 */ + <0x6 0x104ec000 0x4000>, /* pcs25g_br_6 */ + <0x6 0x104f4000 0x4000>, /* dev2g5_63 */ + <0x6 0x104f8000 0x4000>, /* dev25g_7 */ + <0x6 0x104fc000 0x4000>, /* pcs25g_br_7 */ + <0x6 0x10504000 0x4000>, /* dsm */ + <0x6 0x10600000 0x200000>, /* asm */ + <0x6 0x11010000 0x10000>, /* gcb */ + <0x6 0x11030000 0x10000>, /* qs */ + <0x6 0x11050000 0x10000>, /* ana_acl */ + <0x6 0x11060000 0x10000>, /* lrn */ + <0x6 0x11080000 0x10000>, /* vcap_super */ + <0x6 0x110a0000 0x10000>, /* qsys */ + <0x6 0x110b0000 0x10000>, /* qfwd */ + <0x6 0x110c0000 0x10000>, /* xqs */ + <0x6 0x11100000 0x100000>, /* clkgen */ + <0x6 0x11200000 0x40000>, /* ana_ac_pol */ + <0x6 0x11280000 0x40000>, /* qres */ + <0x6 0x112c0000 0x140000>, /* eacl */ + <0x6 0x11400000 0x80000>, /* ana_cl */ + <0x6 0x11480000 0x80000>, /* ana_l3 */ + <0x6 0x11580000 0x80000>, /* hsch */ + <0x6 0x11600000 0x80000>, /* rew */ + <0x6 0x11800000 0x100000>, /* ana_l2 */ + <0x6 0x11900000 0x100000>, /* ana_ac */ + <0x6 0x11a00000 0x100000>; /* vop */ + reg-names = + "dev2g5_0", + "dev5g_0", + "pcs5g_br_0", + "dev2g5_1", + "dev5g_1", + "pcs5g_br_1", + "dev2g5_2", + "dev5g_2", + "pcs5g_br_2", + "dev2g5_6", + "dev5g_6", + "pcs5g_br_6", + "dev2g5_7", + "dev5g_7", + "pcs5g_br_7", + "dev2g5_8", + "dev5g_8", + "pcs5g_br_8", + "dev2g5_9", + "dev5g_9", + "pcs5g_br_9", + "dev2g5_10", + "dev5g_10", + "pcs5g_br_10", + "dev2g5_11", + "dev5g_11", + "pcs5g_br_11", + "dev2g5_12", + "dev10g_0", + "pcs10g_br_0", + "dev2g5_14", + "dev10g_2", + "pcs10g_br_2", + "dev2g5_15", + "dev10g_3", + "pcs10g_br_3", + "dev2g5_16", + "dev2g5_17", + "dev2g5_18", + "dev2g5_19", + "dev2g5_20", + "dev2g5_21", + "dev2g5_22", + "dev2g5_23", + "dev2g5_32", + "dev2g5_33", + "dev2g5_34", + "dev2g5_35", + "dev2g5_36", + "dev2g5_37", + "dev2g5_38", + "dev2g5_39", + "dev2g5_40", + "dev2g5_41", + "dev2g5_42", + "dev2g5_43", + "dev2g5_44", + "dev2g5_45", + "dev2g5_46", + "dev2g5_47", + "dev2g5_57", + "dev25g_1", + "pcs25g_br_1", + "dev2g5_59", + "dev25g_3", + "pcs25g_br_3", + "dev2g5_60", + "dev25g_4", + "pcs25g_br_4", + "dev2g5_64", + "dev5g_64", + "pcs5g_br_64", + "port_conf", + "dev2g5_3", + "dev5g_3", + "pcs5g_br_3", + "dev2g5_4", + "dev5g_4", + "pcs5g_br_4", + "dev2g5_5", + "dev5g_5", + "pcs5g_br_5", + "dev2g5_13", + "dev10g_1", + "pcs10g_br_1", + "dev2g5_24", + "dev2g5_25", + "dev2g5_26", + "dev2g5_27", + "dev2g5_28", + "dev2g5_29", + "dev2g5_30", + "dev2g5_31", + "dev2g5_48", + "dev10g_4", + "pcs10g_br_4", + "dev2g5_49", + "dev10g_5", + "pcs10g_br_5", + "dev2g5_50", + "dev10g_6", + "pcs10g_br_6", + "dev2g5_51", + "dev10g_7", + "pcs10g_br_7", + "dev2g5_52", + "dev10g_8", + "pcs10g_br_8", + "dev2g5_53", + "dev10g_9", + "pcs10g_br_9", + "dev2g5_54", + "dev10g_10", + "pcs10g_br_10", + "dev2g5_55", + "dev10g_11", + "pcs10g_br_11", + "dev2g5_56", + "dev25g_0", + "pcs25g_br_0", + "dev2g5_58", + "dev25g_2", + "pcs25g_br_2", + "dev2g5_61", + "dev25g_5", + "pcs25g_br_5", + "dev2g5_62", + "dev25g_6", + "pcs25g_br_6", + "dev2g5_63", + "dev25g_7", + "pcs25g_br_7", + "dsm", + "asm", + "gcb", + "qs", + "ana_acl", + "lrn", + "vcap_super", + "qsys", + "qfwd", + "xqs", + "clkgen", + "ana_ac_pol", + "qres", + "eacl", + "ana_cl", + "ana_l3", + "hsch", + "rew", + "ana_l2", + "ana_ac", + "vop"; + interrupts = ; + }; }; }; diff --git a/arch/arm64/boot/dts/microchip/sparx5_pcb134_board.dtsi b/arch/arm64/boot/dts/microchip/sparx5_pcb134_board.dtsi index 6820579448d0..f8623be51b57 100644 --- a/arch/arm64/boot/dts/microchip/sparx5_pcb134_board.dtsi +++ b/arch/arm64/boot/dts/microchip/sparx5_pcb134_board.dtsi @@ -7,30 +7,6 @@ #include "sparx5_pcb_common.dtsi" /{ - aliases { - i2c0 = &i2c0; - i2c100 = &i2c100; - i2c101 = &i2c101; - i2c102 = &i2c102; - i2c103 = &i2c103; - i2c104 = &i2c104; - i2c105 = &i2c105; - i2c106 = &i2c106; - i2c107 = &i2c107; - i2c108 = &i2c108; - i2c109 = &i2c109; - i2c110 = &i2c110; - i2c111 = &i2c111; - i2c112 = &i2c112; - i2c113 = &i2c113; - i2c114 = &i2c114; - i2c115 = &i2c115; - i2c116 = &i2c116; - i2c117 = &i2c117; - i2c118 = &i2c118; - i2c119 = &i2c119; - }; - gpio-restart { compatible = "gpio-restart"; gpios = <&gpio 37 GPIO_ACTIVE_LOW>; @@ -328,6 +304,11 @@ gpio@1 { }; }; +&sgpio2 { + status = "okay"; + microchip,sgpio-port-ranges = <0 0>, <11 31>; +}; + &gpio { i2cmux_pins_i: i2cmux-pins-i { pins = "GPIO_16", "GPIO_17", "GPIO_18", "GPIO_19", @@ -415,9 +396,9 @@ i2c0_emux: i2c0-emux@0 { &i2c0_imux { pinctrl-names = - "i2c100", "i2c101", "i2c102", "i2c103", - "i2c104", "i2c105", "i2c106", "i2c107", - "i2c108", "i2c109", "i2c110", "i2c111", "idle"; + "i2c_sfp1", "i2c_sfp2", "i2c_sfp3", "i2c_sfp4", + "i2c_sfp5", "i2c_sfp6", "i2c_sfp7", "i2c_sfp8", + "i2c_sfp9", "i2c_sfp10", "i2c_sfp11", "i2c_sfp12", "idle"; pinctrl-0 = <&i2cmux_0>; pinctrl-1 = <&i2cmux_1>; pinctrl-2 = <&i2cmux_2>; @@ -431,62 +412,62 @@ &i2c0_imux { pinctrl-10 = <&i2cmux_10>; pinctrl-11 = <&i2cmux_11>; pinctrl-12 = <&i2cmux_pins_i>; - i2c100: i2c_sfp1 { + i2c_sfp1: i2c_sfp1 { reg = <0x0>; #address-cells = <1>; #size-cells = <0>; }; - i2c101: i2c_sfp2 { + i2c_sfp2: i2c_sfp2 { reg = <0x1>; #address-cells = <1>; #size-cells = <0>; }; - i2c102: i2c_sfp3 { + i2c_sfp3: i2c_sfp3 { reg = <0x2>; #address-cells = <1>; #size-cells = <0>; }; - i2c103: i2c_sfp4 { + i2c_sfp4: i2c_sfp4 { reg = <0x3>; #address-cells = <1>; #size-cells = <0>; }; - i2c104: i2c_sfp5 { + i2c_sfp5: i2c_sfp5 { reg = <0x4>; #address-cells = <1>; #size-cells = <0>; }; - i2c105: i2c_sfp6 { + i2c_sfp6: i2c_sfp6 { reg = <0x5>; #address-cells = <1>; #size-cells = <0>; }; - i2c106: i2c_sfp7 { + i2c_sfp7: i2c_sfp7 { reg = <0x6>; #address-cells = <1>; #size-cells = <0>; }; - i2c107: i2c_sfp8 { + i2c_sfp8: i2c_sfp8 { reg = <0x7>; #address-cells = <1>; #size-cells = <0>; }; - i2c108: i2c_sfp9 { + i2c_sfp9: i2c_sfp9 { reg = <0x8>; #address-cells = <1>; #size-cells = <0>; }; - i2c109: i2c_sfp10 { + i2c_sfp10: i2c_sfp10 { reg = <0x9>; #address-cells = <1>; #size-cells = <0>; }; - i2c110: i2c_sfp11 { + i2c_sfp11: i2c_sfp11 { reg = <0xa>; #address-cells = <1>; #size-cells = <0>; }; - i2c111: i2c_sfp12 { + i2c_sfp12: i2c_sfp12 { reg = <0xb>; #address-cells = <1>; #size-cells = <0>; @@ -499,44 +480,393 @@ &gpio 60 GPIO_ACTIVE_HIGH &gpio 61 GPIO_ACTIVE_HIGH &gpio 54 GPIO_ACTIVE_HIGH>; idle-state = <0x8>; - i2c112: i2c_sfp13 { + i2c_sfp13: i2c_sfp13 { reg = <0x0>; #address-cells = <1>; #size-cells = <0>; }; - i2c113: i2c_sfp14 { + i2c_sfp14: i2c_sfp14 { reg = <0x1>; #address-cells = <1>; #size-cells = <0>; }; - i2c114: i2c_sfp15 { + i2c_sfp15: i2c_sfp15 { reg = <0x2>; #address-cells = <1>; #size-cells = <0>; }; - i2c115: i2c_sfp16 { + i2c_sfp16: i2c_sfp16 { reg = <0x3>; #address-cells = <1>; #size-cells = <0>; }; - i2c116: i2c_sfp17 { + i2c_sfp17: i2c_sfp17 { reg = <0x4>; #address-cells = <1>; #size-cells = <0>; }; - i2c117: i2c_sfp18 { + i2c_sfp18: i2c_sfp18 { reg = <0x5>; #address-cells = <1>; #size-cells = <0>; }; - i2c118: i2c_sfp19 { + i2c_sfp19: i2c_sfp19 { reg = <0x6>; #address-cells = <1>; #size-cells = <0>; }; - i2c119: i2c_sfp20 { + i2c_sfp20: i2c_sfp20 { reg = <0x7>; #address-cells = <1>; #size-cells = <0>; }; }; + +&mdio3 { + status = "ok"; + phy64: ethernet-phy@64 { + reg = <28>; + }; +}; + +&axi { + sfp_eth12: sfp-eth12 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp1>; + tx-disable-gpios = <&sgpio_out2 11 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 11 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 11 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 12 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth13: sfp-eth13 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp2>; + tx-disable-gpios = <&sgpio_out2 12 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 12 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 12 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 13 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth14: sfp-eth14 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp3>; + tx-disable-gpios = <&sgpio_out2 13 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 13 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 13 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 14 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth15: sfp-eth15 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp4>; + tx-disable-gpios = <&sgpio_out2 14 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 14 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 14 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 15 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth48: sfp-eth48 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp5>; + tx-disable-gpios = <&sgpio_out2 15 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 15 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 15 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 16 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth49: sfp-eth49 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp6>; + tx-disable-gpios = <&sgpio_out2 16 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 16 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 16 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 17 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth50: sfp-eth50 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp7>; + tx-disable-gpios = <&sgpio_out2 17 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 17 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 17 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 18 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth51: sfp-eth51 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp8>; + tx-disable-gpios = <&sgpio_out2 18 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 18 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 18 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 19 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth52: sfp-eth52 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp9>; + tx-disable-gpios = <&sgpio_out2 19 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 19 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 19 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 20 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth53: sfp-eth53 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp10>; + tx-disable-gpios = <&sgpio_out2 20 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 20 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 20 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 21 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth54: sfp-eth54 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp11>; + tx-disable-gpios = <&sgpio_out2 21 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 21 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 21 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 22 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth55: sfp-eth55 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp12>; + tx-disable-gpios = <&sgpio_out2 22 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 22 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 22 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 23 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth56: sfp-eth56 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp13>; + tx-disable-gpios = <&sgpio_out2 23 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 23 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 23 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 24 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth57: sfp-eth57 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp14>; + tx-disable-gpios = <&sgpio_out2 24 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 24 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 24 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 25 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth58: sfp-eth58 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp15>; + tx-disable-gpios = <&sgpio_out2 25 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 25 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 25 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 26 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth59: sfp-eth59 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp16>; + tx-disable-gpios = <&sgpio_out2 26 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 26 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 26 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 27 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth60: sfp-eth60 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp17>; + tx-disable-gpios = <&sgpio_out2 27 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 27 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 27 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 28 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth61: sfp-eth61 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp18>; + tx-disable-gpios = <&sgpio_out2 28 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 28 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 28 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 29 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth62: sfp-eth62 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp19>; + tx-disable-gpios = <&sgpio_out2 29 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 29 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 29 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 30 0 GPIO_ACTIVE_HIGH>; + }; + sfp_eth63: sfp-eth63 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp20>; + tx-disable-gpios = <&sgpio_out2 30 1 GPIO_ACTIVE_LOW>; + los-gpios = <&sgpio_in2 30 1 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 30 2 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 31 0 GPIO_ACTIVE_HIGH>; + }; +}; + +&switch { + ethernet-ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 10G SFPs */ + port12: port@12 { + reg = <12>; + max-speed = <10000>; + phys = <&serdes 13>; + sfp = <&sfp_eth12>; + sd_sgpio = <301>; + managed = "in-band-status"; + }; + port13: port@13 { + reg = <13>; + /* Example: CU SFP, 1G speed */ + max-speed = <10000>; + phys = <&serdes 14>; + sfp = <&sfp_eth13>; + sd_sgpio = <305>; + managed = "in-band-status"; + }; + port14: port@14 { + reg = <14>; + max-speed = <10000>; + phys = <&serdes 15>; + sfp = <&sfp_eth14>; + sd_sgpio = <309>; + managed = "in-band-status"; + }; + port15: port@15 { + reg = <15>; + max-speed = <10000>; + phys = <&serdes 16>; + sfp = <&sfp_eth15>; + sd_sgpio = <313>; + managed = "in-band-status"; + }; + port48: port@48 { + reg = <48>; + max-speed = <10000>; + phys = <&serdes 17>; + sfp = <&sfp_eth48>; + sd_sgpio = <317>; + managed = "in-band-status"; + }; + port49: port@49 { + reg = <49>; + max-speed = <10000>; + phys = <&serdes 18>; + sfp = <&sfp_eth49>; + sd_sgpio = <321>; + managed = "in-band-status"; + }; + port50: port@50 { + reg = <50>; + max-speed = <10000>; + phys = <&serdes 19>; + sfp = <&sfp_eth50>; + sd_sgpio = <325>; + managed = "in-band-status"; + }; + port51: port@51 { + reg = <51>; + max-speed = <10000>; + phys = <&serdes 20>; + sfp = <&sfp_eth51>; + sd_sgpio = <329>; + managed = "in-band-status"; + }; + port52: port@52 { + reg = <52>; + max-speed = <10000>; + phys = <&serdes 21>; + sfp = <&sfp_eth52>; + sd_sgpio = <333>; + managed = "in-band-status"; + }; + port53: port@53 { + reg = <53>; + max-speed = <10000>; + phys = <&serdes 22>; + sfp = <&sfp_eth53>; + sd_sgpio = <337>; + managed = "in-band-status"; + }; + port54: port@54 { + reg = <54>; + max-speed = <10000>; + phys = <&serdes 23>; + sfp = <&sfp_eth54>; + sd_sgpio = <341>; + managed = "in-band-status"; + }; + port55: port@55 { + reg = <55>; + max-speed = <10000>; + phys = <&serdes 24>; + sfp = <&sfp_eth55>; + sd_sgpio = <345>; + managed = "in-band-status"; + }; + /* 25G SFPs */ + port56: port@56 { + reg = <56>; + max-speed = <10000>; + phys = <&serdes 25>; + sfp = <&sfp_eth56>; + sd_sgpio = <349>; + managed = "in-band-status"; + }; + port57: port@57 { + reg = <57>; + max-speed = <10000>; + phys = <&serdes 26>; + sfp = <&sfp_eth57>; + sd_sgpio = <353>; + managed = "in-band-status"; + }; + port58: port@58 { + reg = <58>; + max-speed = <10000>; + phys = <&serdes 27>; + sfp = <&sfp_eth58>; + sd_sgpio = <357>; + managed = "in-band-status"; + }; + port59: port@59 { + reg = <59>; + max-speed = <10000>; + phys = <&serdes 28>; + sfp = <&sfp_eth59>; + sd_sgpio = <361>; + managed = "in-band-status"; + }; + port60: port@60 { + reg = <60>; + max-speed = <10000>; + phys = <&serdes 29>; + sfp = <&sfp_eth60>; + sd_sgpio = <365>; + managed = "in-band-status"; + }; + port61: port@61 { + reg = <61>; + max-speed = <10000>; + phys = <&serdes 30>; + sfp = <&sfp_eth61>; + sd_sgpio = <369>; + managed = "in-band-status"; + }; + port62: port@62 { + reg = <62>; + max-speed = <10000>; + phys = <&serdes 31>; + sfp = <&sfp_eth62>; + sd_sgpio = <373>; + managed = "in-band-status"; + }; + port63: port@63 { + reg = <63>; + max-speed = <10000>; + phys = <&serdes 32>; + sfp = <&sfp_eth63>; + sd_sgpio = <377>; + managed = "in-band-status"; + }; + /* Finally the Management interface */ + port64: port@64 { + reg = <64>; + max-speed = <1000>; + phys = <&serdes 0>; + phy-handle = <&phy64>; + phy-mode = "sgmii"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/microchip/sparx5_pcb135_board.dtsi b/arch/arm64/boot/dts/microchip/sparx5_pcb135_board.dtsi index e28c6dd16377..69e136c7bb9c 100644 --- a/arch/arm64/boot/dts/microchip/sparx5_pcb135_board.dtsi +++ b/arch/arm64/boot/dts/microchip/sparx5_pcb135_board.dtsi @@ -7,14 +7,6 @@ #include "sparx5_pcb_common.dtsi" /{ - aliases { - i2c0 = &i2c0; - i2c152 = &i2c152; - i2c153 = &i2c153; - i2c154 = &i2c154; - i2c155 = &i2c155; - }; - gpio-restart { compatible = "gpio-restart"; gpios = <&gpio 37 GPIO_ACTIVE_LOW>; @@ -138,6 +130,11 @@ gpio@1 { }; }; +&sgpio2 { + status = "okay"; + microchip,sgpio-port-ranges = <0 0>, <16 18>, <28 31>; +}; + &axi { i2c0_imux: i2c0-imux@0 { compatible = "i2c-mux-pinctrl"; @@ -149,31 +146,610 @@ i2c0_imux: i2c0-imux@0 { &i2c0_imux { pinctrl-names = - "i2c152", "i2c153", "i2c154", "i2c155", + "i2c_sfp1", "i2c_sfp2", "i2c_sfp3", "i2c_sfp4", "idle"; pinctrl-0 = <&i2cmux_s29>; pinctrl-1 = <&i2cmux_s30>; pinctrl-2 = <&i2cmux_s31>; pinctrl-3 = <&i2cmux_s32>; pinctrl-4 = <&i2cmux_pins_i>; - i2c152: i2c_sfp1 { + i2c_sfp1: i2c_sfp1 { reg = <0x0>; #address-cells = <1>; #size-cells = <0>; }; - i2c153: i2c_sfp2 { + i2c_sfp2: i2c_sfp2 { reg = <0x1>; #address-cells = <1>; #size-cells = <0>; }; - i2c154: i2c_sfp3 { + i2c_sfp3: i2c_sfp3 { reg = <0x2>; #address-cells = <1>; #size-cells = <0>; }; - i2c155: i2c_sfp4 { + i2c_sfp4: i2c_sfp4 { reg = <0x3>; #address-cells = <1>; #size-cells = <0>; }; }; + +&axi { + sfp_eth60: sfp-eth60 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp1>; + tx-disable-gpios = <&sgpio_out2 28 0 GPIO_ACTIVE_LOW>; + rate-select0-gpios = <&sgpio_out2 28 1 GPIO_ACTIVE_HIGH>; + los-gpios = <&sgpio_in2 28 0 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 28 1 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 28 2 GPIO_ACTIVE_HIGH>; + }; + sfp_eth61: sfp-eth61 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp2>; + tx-disable-gpios = <&sgpio_out2 29 0 GPIO_ACTIVE_LOW>; + rate-select0-gpios = <&sgpio_out2 29 1 GPIO_ACTIVE_HIGH>; + los-gpios = <&sgpio_in2 29 0 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 29 1 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 29 2 GPIO_ACTIVE_HIGH>; + }; + sfp_eth62: sfp-eth62 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp3>; + tx-disable-gpios = <&sgpio_out2 30 0 GPIO_ACTIVE_LOW>; + rate-select0-gpios = <&sgpio_out2 30 1 GPIO_ACTIVE_HIGH>; + los-gpios = <&sgpio_in2 30 0 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 30 1 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 30 2 GPIO_ACTIVE_HIGH>; + }; + sfp_eth63: sfp-eth63 { + compatible = "sff,sfp"; + i2c-bus = <&i2c_sfp4>; + tx-disable-gpios = <&sgpio_out2 31 0 GPIO_ACTIVE_LOW>; + rate-select0-gpios = <&sgpio_out2 31 1 GPIO_ACTIVE_HIGH>; + los-gpios = <&sgpio_in2 31 0 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&sgpio_in2 31 1 GPIO_ACTIVE_LOW>; + tx-fault-gpios = <&sgpio_in2 31 2 GPIO_ACTIVE_HIGH>; + }; +}; + +&mdio0 { + status = "ok"; + phy0: ethernet-phy@0 { + reg = <0>; + }; + phy1: ethernet-phy@1 { + reg = <1>; + }; + phy2: ethernet-phy@2 { + reg = <2>; + }; + phy3: ethernet-phy@3 { + reg = <3>; + }; + phy4: ethernet-phy@4 { + reg = <4>; + }; + phy5: ethernet-phy@5 { + reg = <5>; + }; + phy6: ethernet-phy@6 { + reg = <6>; + }; + phy7: ethernet-phy@7 { + reg = <7>; + }; + phy8: ethernet-phy@8 { + reg = <8>; + }; + phy9: ethernet-phy@9 { + reg = <9>; + }; + phy10: ethernet-phy@10 { + reg = <10>; + }; + phy11: ethernet-phy@11 { + reg = <11>; + }; + phy12: ethernet-phy@12 { + reg = <12>; + }; + phy13: ethernet-phy@13 { + reg = <13>; + }; + phy14: ethernet-phy@14 { + reg = <14>; + }; + phy15: ethernet-phy@15 { + reg = <15>; + }; + phy16: ethernet-phy@16 { + reg = <16>; + }; + phy17: ethernet-phy@17 { + reg = <17>; + }; + phy18: ethernet-phy@18 { + reg = <18>; + }; + phy19: ethernet-phy@19 { + reg = <19>; + }; + phy20: ethernet-phy@20 { + reg = <20>; + }; + phy21: ethernet-phy@21 { + reg = <21>; + }; + phy22: ethernet-phy@22 { + reg = <22>; + }; + phy23: ethernet-phy@23 { + reg = <23>; + }; +}; + +&mdio1 { + status = "ok"; + phy24: ethernet-phy@24 { + reg = <0>; + }; + phy25: ethernet-phy@25 { + reg = <1>; + }; + phy26: ethernet-phy@26 { + reg = <2>; + }; + phy27: ethernet-phy@27 { + reg = <3>; + }; + phy28: ethernet-phy@28 { + reg = <4>; + }; + phy29: ethernet-phy@29 { + reg = <5>; + }; + phy30: ethernet-phy@30 { + reg = <6>; + }; + phy31: ethernet-phy@31 { + reg = <7>; + }; + phy32: ethernet-phy@32 { + reg = <8>; + }; + phy33: ethernet-phy@33 { + reg = <9>; + }; + phy34: ethernet-phy@34 { + reg = <10>; + }; + phy35: ethernet-phy@35 { + reg = <11>; + }; + phy36: ethernet-phy@36 { + reg = <12>; + }; + phy37: ethernet-phy@37 { + reg = <13>; + }; + phy38: ethernet-phy@38 { + reg = <14>; + }; + phy39: ethernet-phy@39 { + reg = <15>; + }; + phy40: ethernet-phy@40 { + reg = <16>; + }; + phy41: ethernet-phy@41 { + reg = <17>; + }; + phy42: ethernet-phy@42 { + reg = <18>; + }; + phy43: ethernet-phy@43 { + reg = <19>; + }; + phy44: ethernet-phy@44 { + reg = <20>; + }; + phy45: ethernet-phy@45 { + reg = <21>; + }; + phy46: ethernet-phy@46 { + reg = <22>; + }; + phy47: ethernet-phy@47 { + reg = <23>; + }; +}; + +&mdio3 { + status = "ok"; + phy64: ethernet-phy@64 { + reg = <28>; + }; +}; + +&switch { + ethernet-ports { + #address-cells = <1>; + #size-cells = <0>; + + port0: port@0 { + reg = <0>; + max-speed = <1000>; + phys = <&serdes 13>; + phy-handle = <&phy0>; + phy-mode = "qsgmii"; + }; + port1: port@1 { + reg = <1>; + max-speed = <1000>; + phys = <&serdes 13>; + phy-handle = <&phy1>; + phy-mode = "qsgmii"; + }; + port2: port@2 { + reg = <2>; + max-speed = <1000>; + phys = <&serdes 13>; + phy-handle = <&phy2>; + phy-mode = "qsgmii"; + }; + port3: port@3 { + reg = <3>; + max-speed = <1000>; + phys = <&serdes 13>; + phy-handle = <&phy3>; + phy-mode = "qsgmii"; + }; + port4: port@4 { + reg = <4>; + max-speed = <1000>; + phys = <&serdes 14>; + phy-handle = <&phy4>; + phy-mode = "qsgmii"; + }; + port5: port@5 { + reg = <5>; + max-speed = <1000>; + phys = <&serdes 14>; + phy-handle = <&phy5>; + phy-mode = "qsgmii"; + }; + port6: port@6 { + reg = <6>; + max-speed = <1000>; + phys = <&serdes 14>; + phy-handle = <&phy6>; + phy-mode = "qsgmii"; + }; + port7: port@7 { + reg = <7>; + max-speed = <1000>; + phys = <&serdes 14>; + phy-handle = <&phy7>; + phy-mode = "qsgmii"; + }; + port8: port@8 { + reg = <8>; + max-speed = <1000>; + phys = <&serdes 15>; + phy-handle = <&phy8>; + phy-mode = "qsgmii"; + }; + port9: port@9 { + reg = <9>; + max-speed = <1000>; + phys = <&serdes 15>; + phy-handle = <&phy9>; + phy-mode = "qsgmii"; + }; + port10: port@10 { + reg = <10>; + max-speed = <1000>; + phys = <&serdes 15>; + phy-handle = <&phy10>; + phy-mode = "qsgmii"; + }; + port11: port@11 { + reg = <11>; + max-speed = <1000>; + phys = <&serdes 15>; + phy-handle = <&phy11>; + phy-mode = "qsgmii"; + }; + port12: port@12 { + reg = <12>; + max-speed = <1000>; + phys = <&serdes 16>; + phy-handle = <&phy12>; + phy-mode = "qsgmii"; + }; + port13: port@13 { + reg = <13>; + max-speed = <1000>; + phys = <&serdes 16>; + phy-handle = <&phy13>; + phy-mode = "qsgmii"; + }; + port14: port@14 { + reg = <14>; + max-speed = <1000>; + phys = <&serdes 16>; + phy-handle = <&phy14>; + phy-mode = "qsgmii"; + }; + port15: port@15 { + reg = <15>; + max-speed = <1000>; + phys = <&serdes 16>; + phy-handle = <&phy15>; + phy-mode = "qsgmii"; + }; + port16: port@16 { + reg = <16>; + max-speed = <1000>; + phys = <&serdes 17>; + phy-handle = <&phy16>; + phy-mode = "qsgmii"; + }; + port17: port@17 { + reg = <17>; + max-speed = <1000>; + phys = <&serdes 17>; + phy-handle = <&phy17>; + phy-mode = "qsgmii"; + }; + port18: port@18 { + reg = <18>; + max-speed = <1000>; + phys = <&serdes 17>; + phy-handle = <&phy18>; + phy-mode = "qsgmii"; + }; + port19: port@19 { + reg = <19>; + max-speed = <1000>; + phys = <&serdes 17>; + phy-handle = <&phy19>; + phy-mode = "qsgmii"; + }; + port20: port@20 { + reg = <20>; + max-speed = <1000>; + phys = <&serdes 18>; + phy-handle = <&phy20>; + phy-mode = "qsgmii"; + }; + port21: port@21 { + reg = <21>; + max-speed = <1000>; + phys = <&serdes 18>; + phy-handle = <&phy21>; + phy-mode = "qsgmii"; + }; + port22: port@22 { + reg = <22>; + max-speed = <1000>; + phys = <&serdes 18>; + phy-handle = <&phy22>; + phy-mode = "qsgmii"; + }; + port23: port@23 { + reg = <23>; + max-speed = <1000>; + phys = <&serdes 18>; + phy-handle = <&phy23>; + phy-mode = "qsgmii"; + }; + port24: port@24 { + reg = <24>; + max-speed = <1000>; + phys = <&serdes 19>; + phy-handle = <&phy24>; + phy-mode = "qsgmii"; + }; + port25: port@25 { + reg = <25>; + max-speed = <1000>; + phys = <&serdes 19>; + phy-handle = <&phy25>; + phy-mode = "qsgmii"; + }; + port26: port@26 { + reg = <26>; + max-speed = <1000>; + phys = <&serdes 19>; + phy-handle = <&phy26>; + phy-mode = "qsgmii"; + }; + port27: port@27 { + reg = <27>; + max-speed = <1000>; + phys = <&serdes 19>; + phy-handle = <&phy27>; + phy-mode = "qsgmii"; + }; + port28: port@28 { + reg = <28>; + max-speed = <1000>; + phys = <&serdes 20>; + phy-handle = <&phy28>; + phy-mode = "qsgmii"; + }; + port29: port@29 { + reg = <29>; + max-speed = <1000>; + phys = <&serdes 20>; + phy-handle = <&phy29>; + phy-mode = "qsgmii"; + }; + port30: port@30 { + reg = <30>; + max-speed = <1000>; + phys = <&serdes 20>; + phy-handle = <&phy30>; + phy-mode = "qsgmii"; + }; + port31: port@31 { + reg = <31>; + max-speed = <1000>; + phys = <&serdes 20>; + phy-handle = <&phy31>; + phy-mode = "qsgmii"; + }; + port32: port@32 { + reg = <32>; + max-speed = <1000>; + phys = <&serdes 21>; + phy-handle = <&phy32>; + phy-mode = "qsgmii"; + }; + port33: port@33 { + reg = <33>; + max-speed = <1000>; + phys = <&serdes 21>; + phy-handle = <&phy33>; + phy-mode = "qsgmii"; + }; + port34: port@34 { + reg = <34>; + max-speed = <1000>; + phys = <&serdes 21>; + phy-handle = <&phy34>; + phy-mode = "qsgmii"; + }; + port35: port@35 { + reg = <35>; + max-speed = <1000>; + phys = <&serdes 21>; + phy-handle = <&phy35>; + phy-mode = "qsgmii"; + }; + port36: port@36 { + reg = <36>; + max-speed = <1000>; + phys = <&serdes 22>; + phy-handle = <&phy36>; + phy-mode = "qsgmii"; + }; + port37: port@37 { + reg = <37>; + max-speed = <1000>; + phys = <&serdes 22>; + phy-handle = <&phy37>; + phy-mode = "qsgmii"; + }; + port38: port@38 { + reg = <38>; + max-speed = <1000>; + phys = <&serdes 22>; + phy-handle = <&phy38>; + phy-mode = "qsgmii"; + }; + port39: port@39 { + reg = <39>; + max-speed = <1000>; + phys = <&serdes 22>; + phy-handle = <&phy39>; + phy-mode = "qsgmii"; + }; + port40: port@40 { + reg = <40>; + max-speed = <1000>; + phys = <&serdes 23>; + phy-handle = <&phy40>; + phy-mode = "qsgmii"; + }; + port41: port@41 { + reg = <41>; + max-speed = <1000>; + phys = <&serdes 23>; + phy-handle = <&phy41>; + phy-mode = "qsgmii"; + }; + port42: port@42 { + reg = <42>; + max-speed = <1000>; + phys = <&serdes 23>; + phy-handle = <&phy42>; + phy-mode = "qsgmii"; + }; + port43: port@43 { + reg = <43>; + max-speed = <1000>; + phys = <&serdes 23>; + phy-handle = <&phy43>; + phy-mode = "qsgmii"; + }; + port44: port@44 { + reg = <44>; + max-speed = <1000>; + phys = <&serdes 24>; + phy-handle = <&phy44>; + phy-mode = "qsgmii"; + }; + port45: port@45 { + reg = <45>; + max-speed = <1000>; + phys = <&serdes 24>; + phy-handle = <&phy45>; + phy-mode = "qsgmii"; + }; + port46: port@46 { + reg = <46>; + max-speed = <1000>; + phys = <&serdes 24>; + phy-handle = <&phy46>; + phy-mode = "qsgmii"; + }; + port47: port@47 { + reg = <47>; + max-speed = <1000>; + phys = <&serdes 24>; + phy-handle = <&phy47>; + phy-mode = "qsgmii"; + }; + /* Then the 25G interfaces */ + port60: port@60 { + reg = <60>; + max-speed = <25000>; + phys = <&serdes 29>; + sfp = <&sfp_eth60>; + managed = "in-band-status"; + }; + port61: port@61 { + reg = <61>; + max-speed = <25000>; + phys = <&serdes 30>; + sfp = <&sfp_eth61>; + managed = "in-band-status"; + }; + port62: port@62 { + reg = <62>; + max-speed = <25000>; + phys = <&serdes 31>; + sfp = <&sfp_eth62>; + managed = "in-band-status"; + }; + port63: port@63 { + reg = <63>; + max-speed = <25000>; + phys = <&serdes 32>; + sfp = <&sfp_eth63>; + managed = "in-band-status"; + }; + /* Finally the Management interface */ + port64: port@64 { + reg = <64>; + max-speed = <1000>; + phys = <&serdes 0>; + phy-handle = <&phy64>; + phy-mode = "sgmii"; + }; + }; +};