From patchwork Wed Apr 3 10:48:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Diogo Ivo X-Patchwork-Id: 13615831 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 86212CD1288 for ; Wed, 3 Apr 2024 10:48:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=zGlpmw7Gf2gIc/SAGhfQSPnlxGlM/qsnznzoVkvfdvo=; b=gnQGUnfmlzi6Mb RiuOg33BUW6daIVo8auS4hrgq61UKDc+g5Xj3WbGndMXLXE9+oUK/9yuYnaoTDq0Xn4O0TBKXOz8H h8UJ9XKmxyBUZyLI1BJYWPFpprrYb3RJpw8TqI0LARzbiNUIk3RLVHtD/iqnj8nVJJVtjCeDGjrMa 3lyUlDcwzq4Qb5MSovLgYGjO4odxf7QhH73+hmJuRgM92CoDXofhXiHUM8j8UFOMNwysQ7z1CCkMF ZRa7ILVMyWQqBKMeyVsNPQegZJYhknKxUJN0H3e82xgFa9MajyI5B7Oa1iHSSJIkl7HAV2RBg7C2U hA9FYgqTjkBj24nX6PnA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rryAa-0000000Fcz6-3HWb; Wed, 03 Apr 2024 10:48:40 +0000 Received: from mta-65-227.siemens.flowmailer.net ([185.136.65.227]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rryAS-0000000Fctq-49OM for linux-arm-kernel@lists.infradead.org; Wed, 03 Apr 2024 10:48:35 +0000 Received: by mta-65-227.siemens.flowmailer.net with ESMTPSA id 20240403104824d4f2364ed3f02b2820 for ; Wed, 03 Apr 2024 12:48:24 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=diogo.ivo@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc; bh=jRg086Vx0yZWY899vC3nZcYOQfv8NwtEVA69O5cqklY=; b=nS8MXJNYwET3Wu2YEPWDJbPyass0VuQm2Kt+x/HbIYJ3Cs0B20xZlp7VzrY3QCMbmLh2/j md8wMSOQQdGqGcNG5hSPrp5YI4Qk4QVYz23J4QH5l+j9TqxPOMigQO5RqB9KGDVCnGL6ujnH 2lWwPYhAJYyfqNljUkcUtdBoV/bG0=; From: Diogo Ivo To: danishanwar@ti.com, rogerq@kernel.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew@lunn.ch, dan.carpenter@linaro.org, jacob.e.keller@intel.com, robh@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, vigneshr@ti.com, wsa+renesas@sang-engineering.com, hkallweit1@gmail.com, arnd@arndb.de, vladimir.oltean@nxp.com, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org Cc: Diogo Ivo , jan.kiszka@siemens.com Subject: [PATCH net-next v6 00/10] Support ICSSG-based Ethernet on AM65x SR1.0 devices Date: Wed, 3 Apr 2024 11:48:10 +0100 Message-ID: <20240403104821.283832-1-diogo.ivo@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-1320519:519-21489:flowmailer X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240403_034833_539812_6034D573 X-CRM114-Status: GOOD ( 13.57 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hello, This series extends the current ICSSG-based Ethernet driver to support AM65x Silicon Revision 1.0 devices. Notable differences between the Silicon Revisions are that there is no TX core in SR1.0 with this being handled by the firmware, requiring extra DMA channels to manage communication with the firmware (with the firmware being different as well) and in the packet classifier. The motivation behind it is that a significant number of Siemens devices containing SR1.0 silicon have been deployed in the field and need to be supported and updated to newer kernel versions without losing functionality. This series is based on TI's 5.10 SDK [1]. The fifth version of this patch series can be found in [2]. Compared to the last version of the patch set there are only changes in patch 05/10, where the fields of a struct are now explicitly declared as __le32 so that we can properly interpret them. Both of the problems mentioned in v4 have been addressed by disabling those functionalities, meaning that this driver currently only supports one TX queue and does not support a 100Mbit/s half-duplex connection. The removal of these features has been commented in the appropriate locations in the code. [1]: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/?h=ti-linux-5.10.y [2]: https://lore.kernel.org/netdev/20240326110709.26165-1-diogo.ivo@siemens.com/ Diogo Ivo (10): dt-bindings: net: Add support for AM65x SR1.0 in ICSSG eth: Move IPv4/IPv6 multicast address bases to their own symbols net: ti: icssg-prueth: Move common functions into a separate file net: ti: icssg-prueth: Add SR1.0-specific configuration bits net: ti: icssg-prueth: Add SR1.0-specific description bits net: ti: icssg-prueth: Adjust IPG configuration for SR1.0 net: ti: icssg-prueth: Adjust the number of TX channels for SR1.0 net: ti: icssg-prueth: Add functions to configure SR1.0 packet classifier net: ti: icssg-prueth: Modify common functions for SR1.0 net: ti: icssg-prueth: Add ICSSG Ethernet driver for AM65x SR1.0 platforms .../bindings/net/ti,icssg-prueth.yaml | 35 +- drivers/net/ethernet/ti/Kconfig | 15 + drivers/net/ethernet/ti/Makefile | 9 + .../net/ethernet/ti/icssg/icssg_classifier.c | 113 +- drivers/net/ethernet/ti/icssg/icssg_common.c | 1221 +++++++++++++++++ drivers/net/ethernet/ti/icssg/icssg_config.c | 14 +- drivers/net/ethernet/ti/icssg/icssg_config.h | 56 + drivers/net/ethernet/ti/icssg/icssg_ethtool.c | 12 + drivers/net/ethernet/ti/icssg/icssg_prueth.c | 1189 +--------------- drivers/net/ethernet/ti/icssg/icssg_prueth.h | 79 +- .../net/ethernet/ti/icssg/icssg_prueth_sr1.c | 1181 ++++++++++++++++ include/linux/etherdevice.h | 12 +- 12 files changed, 2726 insertions(+), 1210 deletions(-) create mode 100644 drivers/net/ethernet/ti/icssg/icssg_common.c create mode 100644 drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c