Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp10222949rwb; Fri, 25 Nov 2022 02:25:46 -0800 (PST) X-Google-Smtp-Source: AA0mqf5cXuHoVJTgvm3e1jDe7jgJyZvo/ziNPDRYMU9KDReKNxXT9SfqjhPnm7IeDPgyGir5cO8P X-Received: by 2002:a17:907:a509:b0:7bb:12ec:c8cd with SMTP id vr9-20020a170907a50900b007bb12ecc8cdmr6573906ejc.618.1669371945940; Fri, 25 Nov 2022 02:25:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669371945; cv=none; d=google.com; s=arc-20160816; b=YHH2eqM0WPbP1Q2uZRmaY5VnWWFac86xO4R2N3baVoeG2mCuyhwPp9sGxoTVORvcfL DpWH4q9nhBRvJ5BvmU247Rj+3nsLNUykT+4sOuD/Hd6hYC1NEoeTUx+FHUtgjmzid6Bq NNE19Y1YZXndlK+fyVGj5rxW3e082IHkc+glihHBsMPy2JdEfTZ9up5nBgFW50pc5e4H qb5SmUo1bKMJBeiaT3RGV3Fo4OTET8ty64xCiPcThP0HpTk1UYSy0oquEYh4v7dEHNde jGsi6BJ18nqWRWGs9SHyIpGUVjVYaiJIHqZ2YNyVUkvPqkVze0BlCdSnrP0cOcq/y9nf +Ojw== 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=qX+g0+qp1rqcQFKS20H5RSbPB6RMbVXMWiF8WpiF5KQ=; b=hSt1Ke/s2lasOSWO/KuvhmndJ/z6QgqH8cWlf6mWO1h/XHlmMmde754+2cHe4J3q8y zJv14W6d0Tm+krMDDHS/2Bh6VROXqQb9sTNoqbHPaomwpjACcSNmSPLGOWFR9QR+84f4 ib/0s7KBqBjOMP7NYhzYtB0tOexNEc2dO6pB38cZw+OGCtoyFSd9EXgz57ZPFHELhQSv 7YZQ4ACEgkneHcf3b7tRdGfHgeNg6N3vNyFDue8Ar2lAzN4sFfm8yFaxMWZnGRKWxJIJ 5HnkcXNv/po0ctbgE1N+timcygb5gIj0FnTFXl+mDYR11Mp9R7wkAnVkUYwYc7lPFcre g2ug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=nPASSjlT; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cz11-20020a0564021cab00b0046178c62b6asi2676355edb.477.2022.11.25.02.25.23; Fri, 25 Nov 2022 02:25:45 -0800 (PST) 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=@microchip.com header.s=mchp header.b=nPASSjlT; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230074AbiKYJsh (ORCPT + 87 others); Fri, 25 Nov 2022 04:48:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229834AbiKYJru (ORCPT ); Fri, 25 Nov 2022 04:47:50 -0500 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B105D4299A; Fri, 25 Nov 2022 01:46:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1669369577; x=1700905577; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZOjXz2rkjGvtDluRgzS/T7XUws+UFXTfD9CLFVJfKYk=; b=nPASSjlTabza0iW+yAsX6ru+DrGStOPhWQ8myJ+6iFv2x1yHtkRknGym s755G0KptXj+Zhp6Z1D6IivxlS6//4wy6oPSeiU6nO8s2xoq99bGF22Wn oNWRlsPzFw+SNC7aGrLd/1lyYngI+M+TXS95hFtV3RE6OB6m+Ud4Xk7jJ vECDk/ZRCzQegS2Mu2lrBsxX3U7d59ds4oJTBa4WVA5jy9ZxpjKOGrpW5 6f6QbMRrhiekrQFCijWEu0eu+XMMhUkDhEXlVKmcolNxOdmKl1SqKzFRl knz57jJa5Jc1TQH82ymv4WFDDZVLsCWqDgqf6+Bj6JXq0BmqVBQSaSP8y Q==; X-IronPort-AV: E=Sophos;i="5.96,193,1665471600"; d="scan'208";a="188632118" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 25 Nov 2022 02:46:14 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) 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.2507.12; Fri, 25 Nov 2022 02:46:14 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Fri, 25 Nov 2022 02:46:11 -0700 From: Horatiu Vultur To: , , CC: , , , , , , , , Horatiu Vultur Subject: [PATCH net-next 3/9] net: lan966x: Add initial VCAP Date: Fri, 25 Nov 2022 10:50:04 +0100 Message-ID: <20221125095010.124458-4-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221125095010.124458-1-horatiu.vultur@microchip.com> References: <20221125095010.124458-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain 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_PASS,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 When lan966x driver is initialized, initialize also the VCAP module for lan966x. Signed-off-by: Horatiu Vultur --- .../net/ethernet/microchip/lan966x/Kconfig | 1 + .../net/ethernet/microchip/lan966x/Makefile | 5 +++- .../ethernet/microchip/lan966x/lan966x_main.c | 8 ++++++ .../ethernet/microchip/lan966x/lan966x_main.h | 6 ++++ .../microchip/lan966x/lan966x_vcap_impl.c | 28 +++++++++++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c diff --git a/drivers/net/ethernet/microchip/lan966x/Kconfig b/drivers/net/ethernet/microchip/lan966x/Kconfig index b7ae5ce7d3f7a..8bcd60f17d6d3 100644 --- a/drivers/net/ethernet/microchip/lan966x/Kconfig +++ b/drivers/net/ethernet/microchip/lan966x/Kconfig @@ -8,5 +8,6 @@ config LAN966X_SWITCH select PHYLINK select PACKING select PAGE_POOL + select VCAP help This driver supports the Lan966x network switch device. diff --git a/drivers/net/ethernet/microchip/lan966x/Makefile b/drivers/net/ethernet/microchip/lan966x/Makefile index 251a7d561d633..2c27784859014 100644 --- a/drivers/net/ethernet/microchip/lan966x/Makefile +++ b/drivers/net/ethernet/microchip/lan966x/Makefile @@ -12,4 +12,7 @@ lan966x-switch-objs := lan966x_main.o lan966x_phylink.o lan966x_port.o \ lan966x_tc.o lan966x_mqprio.o lan966x_taprio.o \ lan966x_tbf.o lan966x_cbs.o lan966x_ets.o \ lan966x_tc_matchall.o lan966x_police.o lan966x_mirror.o \ - lan966x_xdp.o + lan966x_xdp.o lan966x_vcap_impl.o + +# Provide include files +ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/vcap diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c index 42be5d0f1f015..546f3ad9f2951 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c @@ -1156,8 +1156,15 @@ static int lan966x_probe(struct platform_device *pdev) if (err) goto cleanup_ptp; + err = lan966x_vcap_init(lan966x); + if (err) + goto cleanup_fdma; + return 0; +cleanup_fdma: + lan966x_fdma_deinit(lan966x); + cleanup_ptp: lan966x_ptp_deinit(lan966x); @@ -1181,6 +1188,7 @@ static int lan966x_remove(struct platform_device *pdev) struct lan966x *lan966x = platform_get_drvdata(pdev); lan966x_taprio_deinit(lan966x); + lan966x_vcap_deinit(lan966x); lan966x_fdma_deinit(lan966x); lan966x_cleanup_ports(lan966x); diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h index bc93051aa0798..eecb1a2bf9a72 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h @@ -290,6 +290,9 @@ struct lan966x { struct lan966x_port *mirror_monitor; u32 mirror_mask[2]; u32 mirror_count; + + /* vcap */ + struct vcap_control *vcap_ctrl; }; struct lan966x_port_config { @@ -560,6 +563,9 @@ static inline bool lan966x_xdp_port_present(struct lan966x_port *port) return !!port->xdp_prog; } +int lan966x_vcap_init(struct lan966x *lan966x); +void lan966x_vcap_deinit(struct lan966x *lan966x); + static inline void __iomem *lan_addr(void __iomem *base[], int id, int tinst, int tcnt, int gbase, int ginst, diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c b/drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c new file mode 100644 index 0000000000000..8d89cfcb8502d --- /dev/null +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-2.0+ + +#include "lan966x_main.h" +#include "vcap_api.h" + +int lan966x_vcap_init(struct lan966x *lan966x) +{ + struct vcap_control *ctrl; + + ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL); + if (!ctrl) + return -ENOMEM; + + lan966x->vcap_ctrl = ctrl; + + return 0; +} + +void lan966x_vcap_deinit(struct lan966x *lan966x) +{ + struct vcap_control *ctrl; + + ctrl = lan966x->vcap_ctrl; + if (!ctrl) + return; + + kfree(ctrl); +} -- 2.38.0