Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp965648pxy; Thu, 22 Apr 2021 18:51:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzwzr2kkroB0E7jG7jF7Uuc70EaXvE08/n5TinOu4S+dhbJMvLX8RGcK2rv3f5SN66yETxs X-Received: by 2002:a17:906:3949:: with SMTP id g9mr1581349eje.7.1619142695553; Thu, 22 Apr 2021 18:51:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619142695; cv=none; d=google.com; s=arc-20160816; b=fFyE4TIDldhqdJqQtepF5OdFtftfCtKkW+SKzUJ3yM0bvfTM3ltn/vYvAsHyXHOkoZ TPlh4ItIAYFUnqlPdMFhv+EXseW4J2e2ls5xtTSMiYOfC3xhvIHd466PX5RqP7NBR4zD kh4VG4cjTyDf47XDxh4nk2RN3giwFxOnpJPNZw5LZlcehOvnjptDEd0jsd25PY/NRNdm xPGNys8WclzcgZnrqvnyEn3TSpQ9Y1jVJ/93vxHpPVwqCW0BAdPVtnSc7nVWEMdWV76Q Zav6SG3Ig6oOGz+udgQYBYXpwjjpRIclul+f3XZLesuBiKYc2o2jGPzXuEcKj/gsLj/x 7+AA== 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=uhLbsqsD1UeBHl9g3+cRO5/yYo+Kk02FCDPrTgf7heY=; b=ylslA2QC+7FBykT/ZlFYc1qrn+7PmouDfqzFkGovq8W/9c3bB9O/fvBGZAk6rF5p7L 3U6AWDNP1OJOeZV4c3REZJ9hPzFyAKrEZ3YT1KsXb81++4s7R4PrjjKRxwZp+fEja9h/ B0q/YxN/WjP/HrBr+QwdZrC5XEImiSYfeFVKa69Q6x4dLZFmu9UQKLWJN9RHup17OjzW fvgrmvPm02nmZgUEW8/M7PJSN4lQCL2fbnPqOZd439ynoNNx4FEF27W+AHrghXOGh9Zv BZ5aDJOjgqvScdePzx/mSPJbZo2p8T3Js21Pwh9UqULmAGgTrDATYrKjrHPiwmMuu+5d 09Ig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=gfOqBa4V; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v17si3876999edr.447.2021.04.22.18.51.12; Thu, 22 Apr 2021 18:51:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=gfOqBa4V; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240436AbhDWBtF (ORCPT + 99 others); Thu, 22 Apr 2021 21:49:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44668 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240298AbhDWBso (ORCPT ); Thu, 22 Apr 2021 21:48:44 -0400 Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6AB1C061346; Thu, 22 Apr 2021 18:48:03 -0700 (PDT) Received: by mail-ed1-x536.google.com with SMTP id y3so19423484eds.5; Thu, 22 Apr 2021 18:48:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uhLbsqsD1UeBHl9g3+cRO5/yYo+Kk02FCDPrTgf7heY=; b=gfOqBa4VU57XUrhMExIO4kzxF0q76b9VjVo5c0m9+3PkoQG4lW/dfPOWOMxXoEG4Rl rLRjMrt6YoMr/UGZRkfSzs/ZIXRsYnjTvRGnnpI8uvs8M94nXTbgZFljDdxb9aVENmyV GzUOnZ20++UKybTLVQLpt4L7b8jmc96L5L1sYISGZMTewEn+q+htKqfpAsXxEfraH53x dm+6+v/iXdpgBhKBfW0irqG4FdAbPmyfxL4JoPYAxdY5j+42xI08KOliMSlii7gNGeq+ l5lNcrnNsybIKSCPENm2Pir4M+Bx0mRe92fE/vLHk9xRMnfpwSjiXtQwe+eC4NUSilpw CVFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uhLbsqsD1UeBHl9g3+cRO5/yYo+Kk02FCDPrTgf7heY=; b=mSBFWAwfhnNtXqHOJMbYoiJp8FUmYqzcC0Ejw7c8zgk2oI+6h3qWBIqx6kxfNQaBIc fAvxzHTcODXQCtKZahRTl9AIHzWGHY2/uzQ1jeEHiv0A3HXkViNO7vH9qr5HwhkbME8F nYkRoQDy5xOnXCSCiJco3+cgyZ4rnmqo8JC686QnYS9UBHIr341YOSa+zdiP35RTKeF7 2rSWUw0YrNrN9lV0D6iOjaEk7dzYEfgjP2s47UmrJPGpU9CUsABrJW53dFPFZURX1FKU ZGfKYV3rcMHlL/bXzTrhmNTgi0lGK+mPrWt0sEJfZItfU1fiIDktYk/H+jAKtEdEIHY9 eucQ== X-Gm-Message-State: AOAM531NkeHSu0vMCC1OHArduuwCevd/ZEC85XAX0eG05h+TmgnlAr9b 38ogBycwl68DugNKbCVrxYI= X-Received: by 2002:a05:6402:5189:: with SMTP id q9mr1574997edd.168.1619142482566; Thu, 22 Apr 2021 18:48:02 -0700 (PDT) Received: from Ansuel-xps.localdomain (93-35-189-2.ip56.fastwebnet.it. [93.35.189.2]) by smtp.googlemail.com with ESMTPSA id t4sm3408635edd.6.2021.04.22.18.48.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Apr 2021 18:48:02 -0700 (PDT) From: Ansuel Smith To: Florian Fainelli Cc: Ansuel Smith , Andrew Lunn , Vivien Didelot , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , Rob Herring , Heiner Kallweit , Russell King , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 07/14] drivers: net: dsa: qca8k: limit priority tweak to qca8337 switch Date: Fri, 23 Apr 2021 03:47:33 +0200 Message-Id: <20210423014741.11858-8-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210423014741.11858-1-ansuelsmth@gmail.com> References: <20210423014741.11858-1-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The packet priority tweak and the rx delay is specific to qca8337. Limit this changes to qca8337 as now we also support 8327 switch. Signed-off-by: Ansuel Smith --- drivers/net/dsa/qca8k.c | 84 +++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index ca12394c2ff7..19bb3754d9ec 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -700,9 +700,13 @@ static int qca8k_setup(struct dsa_switch *ds) { struct qca8k_priv *priv = (struct qca8k_priv *)ds->priv; + const struct qca8k_match_data *data; int ret, i; u32 mask; + /* get the switches ID from the compatible */ + data = of_device_get_match_data(priv->dev); + /* Make sure that port 0 is the cpu port */ if (!dsa_is_cpu_port(ds, 0)) { pr_err("port 0 is not the CPU port\n"); @@ -790,41 +794,43 @@ qca8k_setup(struct dsa_switch *ds) * To fix this the original code has some specific priority values * suggested by the QCA switch team. */ - for (i = 0; i < QCA8K_NUM_PORTS; i++) { - switch (i) { - /* The 2 CPU port and port 5 requires some different - * priority than any other ports. - */ - case 0: - case 5: - case 6: - mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | - QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI4(0x6) | - QCA8K_PORT_HOL_CTRL0_EG_PRI5(0x8) | - QCA8K_PORT_HOL_CTRL0_EG_PORT(0x1e); - break; - default: - mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | - QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | - QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x6) | - QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x8) | - QCA8K_PORT_HOL_CTRL0_EG_PORT(0x19); + if (data->id == QCA8K_ID_QCA8337) { + for (i = 0; i < QCA8K_NUM_PORTS; i++) { + switch (i) { + /* The 2 CPU port and port 5 requires some different + * priority than any other ports. + */ + case 0: + case 5: + case 6: + mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | + QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI4(0x6) | + QCA8K_PORT_HOL_CTRL0_EG_PRI5(0x8) | + QCA8K_PORT_HOL_CTRL0_EG_PORT(0x1e); + break; + default: + mask = QCA8K_PORT_HOL_CTRL0_EG_PRI0(0x3) | + QCA8K_PORT_HOL_CTRL0_EG_PRI1(0x4) | + QCA8K_PORT_HOL_CTRL0_EG_PRI2(0x6) | + QCA8K_PORT_HOL_CTRL0_EG_PRI3(0x8) | + QCA8K_PORT_HOL_CTRL0_EG_PORT(0x19); + } + qca8k_write(priv, QCA8K_REG_PORT_HOL_CTRL0(i), mask); + + mask = QCA8K_PORT_HOL_CTRL1_ING(0x6) | + QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | + QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | + QCA8K_PORT_HOL_CTRL1_WRED_EN; + qca8k_rmw(priv, QCA8K_REG_PORT_HOL_CTRL1(i), + QCA8K_PORT_HOL_CTRL1_ING_BUF | + QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | + QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | + QCA8K_PORT_HOL_CTRL1_WRED_EN, + mask); } - qca8k_write(priv, QCA8K_REG_PORT_HOL_CTRL0(i), mask); - - mask = QCA8K_PORT_HOL_CTRL1_ING(0x6) | - QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | - QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | - QCA8K_PORT_HOL_CTRL1_WRED_EN; - qca8k_rmw(priv, QCA8K_REG_PORT_HOL_CTRL1(i), - QCA8K_PORT_HOL_CTRL1_ING_BUF | - QCA8K_PORT_HOL_CTRL1_EG_PRI_BUF_EN | - QCA8K_PORT_HOL_CTRL1_EG_PORT_BUF_EN | - QCA8K_PORT_HOL_CTRL1_WRED_EN, - mask); } /* Flush the FDB table */ @@ -840,9 +846,13 @@ static void qca8k_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode, const struct phylink_link_state *state) { + const struct qca8k_match_data *data; struct qca8k_priv *priv = ds->priv; u32 reg, val; + /* get the switches ID from the compatible */ + data = of_device_get_match_data(priv->dev); + switch (port) { case 0: /* 1st CPU port */ if (state->interface != PHY_INTERFACE_MODE_RGMII && @@ -895,8 +905,10 @@ qca8k_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode, QCA8K_PORT_PAD_RGMII_RX_DELAY(2) | QCA8K_PORT_PAD_RGMII_TX_DELAY_EN | QCA8K_PORT_PAD_RGMII_RX_DELAY_EN); - qca8k_write(priv, QCA8K_REG_PORT5_PAD_CTRL, - QCA8K_PORT_PAD_RGMII_RX_DELAY_EN); + /* QCA8337 requires to set rgmii rx delay */ + if (data->id == QCA8K_ID_QCA8337) + qca8k_write(priv, QCA8K_REG_PORT5_PAD_CTRL, + QCA8K_PORT_PAD_RGMII_RX_DELAY_EN); break; case PHY_INTERFACE_MODE_SGMII: case PHY_INTERFACE_MODE_1000BASEX: -- 2.30.2