mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	Refreshing the patches forfff07085fbmoved the b53_adjust_63xx_rgmii() call from b53_phylink_mac_link_up() to b53_phylink_mac_link_down(). In order to properly configure the RGMII ports we need to restore it to its correct place. Fixes:fff07085fb("kernel: add pending bmips patches") Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
		
			
				
	
	
		
			175 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From patchwork Sun Mar 19 22:08:05 2023
 | 
						|
Content-Type: text/plain; charset="utf-8"
 | 
						|
MIME-Version: 1.0
 | 
						|
Content-Transfer-Encoding: 8bit
 | 
						|
X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
 | 
						|
 <noltari@gmail.com>
 | 
						|
X-Patchwork-Id: 13180645
 | 
						|
X-Patchwork-Delegate: kuba@kernel.org
 | 
						|
Return-Path: <netdev-owner@vger.kernel.org>
 | 
						|
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
 | 
						|
	aws-us-west-2-korg-lkml-1.web.codeaurora.org
 | 
						|
Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
 | 
						|
	by smtp.lore.kernel.org (Postfix) with ESMTP id A7A46C6FD1F
 | 
						|
	for <netdev@archiver.kernel.org>; Sun, 19 Mar 2023 22:08:15 +0000 (UTC)
 | 
						|
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
 | 
						|
        id S230223AbjCSWIN (ORCPT <rfc822;netdev@archiver.kernel.org>);
 | 
						|
        Sun, 19 Mar 2023 18:08:13 -0400
 | 
						|
Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32878 "EHLO
 | 
						|
        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
 | 
						|
        with ESMTP id S229565AbjCSWIM (ORCPT
 | 
						|
        <rfc822;netdev@vger.kernel.org>); Sun, 19 Mar 2023 18:08:12 -0400
 | 
						|
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 | 
						|
 [IPv6:2a00:1450:4864:20::42e])
 | 
						|
        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 605D3E062;
 | 
						|
        Sun, 19 Mar 2023 15:08:10 -0700 (PDT)
 | 
						|
Received: by mail-wr1-x42e.google.com with SMTP id h17so8695188wrt.8;
 | 
						|
        Sun, 19 Mar 2023 15:08:10 -0700 (PDT)
 | 
						|
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 | 
						|
        d=gmail.com; s=20210112; t=1679263689;
 | 
						|
        h=content-transfer-encoding:mime-version:references:in-reply-to
 | 
						|
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
 | 
						|
         :message-id:reply-to;
 | 
						|
        bh=GmPK75Q9ZD3h3IYflWYuDwS99V2e532KgDlnNucAoJg=;
 | 
						|
        b=PSdrywW48P4Lq8z9wOSPXFB/ZdO/JfuyiGlw3Gz1Iriy+Smo/cBnJ0Ve9zKkX3AKTO
 | 
						|
         Tr7/g8xhSQX8sU5WAOEPC13uVjKpO4VZsamXHTmMKL4mmfII3K/piAsQcMQkkNpgouab
 | 
						|
         Ci9yr+7ASSmqEUHIbYTM6sl6a47rPwqk3b3DcTIE2CwJsPPNXnpQ/aSVbJAcEdhcZICc
 | 
						|
         X4rAmjrYjcsl8coFIGHHPlrMH9ShekQWxB84vEb6bO1nXOORNPizOHuY1vJ3wa3WgXsx
 | 
						|
         YwlvutMFVIUXfgL2ZwCmQAKWJPiAaFk+CCk3oxSeOYoAzkjcbMyapz9VnooStfvR2aV3
 | 
						|
         k+2g==
 | 
						|
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 | 
						|
        d=1e100.net; s=20210112; t=1679263689;
 | 
						|
        h=content-transfer-encoding:mime-version:references:in-reply-to
 | 
						|
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
 | 
						|
         :subject:date:message-id:reply-to;
 | 
						|
        bh=GmPK75Q9ZD3h3IYflWYuDwS99V2e532KgDlnNucAoJg=;
 | 
						|
        b=NGjqrGERyaxRwINtevHaY97h9X9W+1UY62YYwotqwv5+cfvB8myjBbD3WH2WzaqMes
 | 
						|
         o9MMER9RE8/arW3jIVlBv4ORDUuEZ7AeGgy5UbFyQZIPHlp+hJ/sxFrGvYUwamg4Qrr9
 | 
						|
         ojargh8ORsEiMeqaf+5AkmEagNhrrV3ax0pUuWDzbJ3vXGoHjfCetHz5xyNL46dvXBfb
 | 
						|
         l/OZqjv9IYob552uUoUmCy/TbEQDqvmjkFrROFK9gtBNxgxUJkwbyiWIOVsf6RR8OarP
 | 
						|
         f7bbvSJYkvTvzx2u/g0Up7NW5ZyihMGBmDs377M3yW6AnSxW6jlfl30QmMU1aEigYXvy
 | 
						|
         v3mA==
 | 
						|
X-Gm-Message-State: AO0yUKUm1PYmYa4xlHuVD23mZcZm83a+xbhcbs0Xryi3yF/+UnjM4Cho
 | 
						|
        GAfqSh5MZ/rlOAm3Vnpn//9hOG5Lc8vLYg==
 | 
						|
X-Google-Smtp-Source: 
 | 
						|
 AK7set+5pTahGGgk1hF/mHGkGBhsMf0//oQjZd4QFHx+HaeSgP5f6q7g0bRUcTX8kRtgHH0T7l1/hQ==
 | 
						|
X-Received: by 2002:a5d:474f:0:b0:2d6:2ae8:70d with SMTP id
 | 
						|
 o15-20020a5d474f000000b002d62ae8070dmr2382593wrs.39.1679263688549;
 | 
						|
        Sun, 19 Mar 2023 15:08:08 -0700 (PDT)
 | 
						|
Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
 | 
						|
 [79.146.124.255])
 | 
						|
        by smtp.gmail.com with ESMTPSA id
 | 
						|
 d6-20020a5d6dc6000000b002c53f6c7599sm7354727wrz.29.2023.03.19.15.08.07
 | 
						|
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 | 
						|
        Sun, 19 Mar 2023 15:08:07 -0700 (PDT)
 | 
						|
From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari@gmail.com>
 | 
						|
To: f.fainelli@gmail.com, jonas.gorski@gmail.com, andrew@lunn.ch,
 | 
						|
        olteanv@gmail.com, davem@davemloft.net, edumazet@google.com,
 | 
						|
        kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
 | 
						|
        linux-kernel@vger.kernel.org
 | 
						|
Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari@gmail.com>
 | 
						|
Subject: [PATCH v2] net: dsa: b53: add support for BCM63xx RGMIIs
 | 
						|
Date: Sun, 19 Mar 2023 23:08:05 +0100
 | 
						|
Message-Id: <20230319220805.124024-1-noltari@gmail.com>
 | 
						|
X-Mailer: git-send-email 2.30.2
 | 
						|
In-Reply-To: <20230319183330.761251-1-noltari@gmail.com>
 | 
						|
References: <20230319183330.761251-1-noltari@gmail.com>
 | 
						|
MIME-Version: 1.0
 | 
						|
Precedence: bulk
 | 
						|
List-ID: <netdev.vger.kernel.org>
 | 
						|
X-Mailing-List: netdev@vger.kernel.org
 | 
						|
X-Patchwork-Delegate: kuba@kernel.org
 | 
						|
 | 
						|
BCM63xx RGMII ports require additional configuration in order to work.
 | 
						|
 | 
						|
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
 | 
						|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
 | 
						|
---
 | 
						|
 v2: add changes suggested by Andrew:
 | 
						|
  - Use a switch statement.
 | 
						|
  - Use dev_dbg() instead of dev_info().
 | 
						|
 | 
						|
 drivers/net/dsa/b53/b53_common.c | 46 ++++++++++++++++++++++++++++++++
 | 
						|
 drivers/net/dsa/b53/b53_priv.h   |  1 +
 | 
						|
 2 files changed, 47 insertions(+)
 | 
						|
 | 
						|
--- a/drivers/net/dsa/b53/b53_common.c
 | 
						|
+++ b/drivers/net/dsa/b53/b53_common.c
 | 
						|
@@ -1209,6 +1209,46 @@ static void b53_force_port_config(struct
 | 
						|
 	b53_write8(dev, B53_CTRL_PAGE, off, reg);
 | 
						|
 }
 | 
						|
 
 | 
						|
+static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
 | 
						|
+				  phy_interface_t interface)
 | 
						|
+{
 | 
						|
+	struct b53_device *dev = ds->priv;
 | 
						|
+	u8 rgmii_ctrl = 0, off;
 | 
						|
+
 | 
						|
+	if (port == dev->imp_port)
 | 
						|
+		off = B53_RGMII_CTRL_IMP;
 | 
						|
+	else
 | 
						|
+		off = B53_RGMII_CTRL_P(port);
 | 
						|
+
 | 
						|
+	b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl);
 | 
						|
+
 | 
						|
+	switch (interface) {
 | 
						|
+	case PHY_INTERFACE_MODE_RGMII_ID:
 | 
						|
+		rgmii_ctrl |= (RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
 | 
						|
+		break;
 | 
						|
+	case PHY_INTERFACE_MODE_RGMII_RXID:
 | 
						|
+		rgmii_ctrl &= ~(RGMII_CTRL_DLL_TXC);
 | 
						|
+		rgmii_ctrl |= RGMII_CTRL_DLL_RXC;
 | 
						|
+		break;
 | 
						|
+	case PHY_INTERFACE_MODE_RGMII_TXID:
 | 
						|
+		rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC);
 | 
						|
+		rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
 | 
						|
+		break;
 | 
						|
+	case PHY_INTERFACE_MODE_RGMII:
 | 
						|
+	default:
 | 
						|
+		rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
 | 
						|
+		break;
 | 
						|
+	}
 | 
						|
+
 | 
						|
+	if (port != dev->imp_port)
 | 
						|
+		rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
 | 
						|
+
 | 
						|
+	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
 | 
						|
+
 | 
						|
+	dev_dbg(ds->dev, "Configured port %d for %s\n", port,
 | 
						|
+		phy_modes(interface));
 | 
						|
+}
 | 
						|
+
 | 
						|
 static void b53_adjust_link(struct dsa_switch *ds, int port,
 | 
						|
 			    struct phy_device *phydev)
 | 
						|
 {
 | 
						|
@@ -1235,6 +1275,9 @@ static void b53_adjust_link(struct dsa_s
 | 
						|
 			      tx_pause, rx_pause);
 | 
						|
 	b53_force_link(dev, port, phydev->link);
 | 
						|
 
 | 
						|
+	if (is63xx(dev) && port >= B53_63XX_RGMII0)
 | 
						|
+		b53_adjust_63xx_rgmii(ds, port, phydev->interface);
 | 
						|
+
 | 
						|
 	if (is531x5(dev) && phy_interface_is_rgmii(phydev)) {
 | 
						|
 		if (port == dev->imp_port)
 | 
						|
 			off = B53_RGMII_CTRL_IMP;
 | 
						|
@@ -1419,6 +1462,9 @@ void b53_phylink_mac_link_up(struct dsa_
 | 
						|
 {
 | 
						|
 	struct b53_device *dev = ds->priv;
 | 
						|
 
 | 
						|
+	if (is63xx(dev) && port >= B53_63XX_RGMII0)
 | 
						|
+		b53_adjust_63xx_rgmii(ds, port, interface);
 | 
						|
+
 | 
						|
 	if (mode == MLO_AN_PHY)
 | 
						|
 		return;
 | 
						|
 
 | 
						|
--- a/drivers/net/dsa/b53/b53_priv.h
 | 
						|
+++ b/drivers/net/dsa/b53/b53_priv.h
 | 
						|
@@ -206,6 +206,7 @@ static inline int is58xx(struct b53_devi
 | 
						|
 		dev->chip_id == BCM7278_DEVICE_ID;
 | 
						|
 }
 | 
						|
 
 | 
						|
+#define B53_63XX_RGMII0	4
 | 
						|
 #define B53_CPU_PORT_25	5
 | 
						|
 #define B53_CPU_PORT	8
 | 
						|
 
 |