Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp6028800ybc; Wed, 27 Nov 2019 13:41:09 -0800 (PST) X-Google-Smtp-Source: APXvYqyPHujPo3jD/bmHtgQw/8FxT7cWraU4UNwpRebWw1XhNwdmXw+NO8hzueGiJwfXRjxKFj0H X-Received: by 2002:a05:6402:12d1:: with SMTP id k17mr34575077edx.188.1574890869722; Wed, 27 Nov 2019 13:41:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574890869; cv=none; d=google.com; s=arc-20160816; b=x9QpemW+fttBs4e2kGbpbV9aSs1iDyuOn4/+N52X3ln8ukHPX6fAhK/1jD0BgB+eCK eYS8YwW3X5FgyQ24bujsvsvsahBJl5BFjaprvUP/9Pi56B7idcniqts44bV6yVKZTPbM 7t4EQAM40DNBY369y6q87JVtlqrDi+dHBpkm0Ky7iigJtTcDUC4n7zDB0QtweqOS1Cfm yVx0CzcehuLAmJ/gcq6/ZYuJ1RQ0HrMiJlgmpartwpmxQdJFbMV+jMFQuF9Q0F34lzJu bXh3I4818OFyenTdCgMdp0eUNBUMtlpFke+jTgZBKCSvW5RJMeOiKnE/947axlfLZnm+ 2srg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=KAqWp+TYYweucSlSTPwzXlXyDzyJOHBk9ENVg/iPqQI=; b=1InZstdUj16rcBhuw2V/q1j1PxjdoCmh/q0iNxZCp2l8s2LzK4t5M+KgfoFGaH1KSL Mm2hpegUs1DKl43RgoixealBlGZoeHMPg6iZEO4QNIkQWT9dnGdxuTJj5eMQwme+2PV8 gsvkd+C30bNStnDgzzJpWU8G7QZ1D2pDkKsmxgkFIaoPVPJOtUtyuogmeQfQY/YYrMws AMebsV/jiMY0I+MVOxi4ukmNfWeeCxGW0/g/POYTUp9j9iq4Az3Wlhh/Zy71UymRQKIH D8Ksd79/XeZni8pH/a4C7IwNob/wCj8OKcJXzVPj26OB25CBhtRFVSAlWRebs6GKz8Va MfBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=anTAsQy9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l15si10082596ejd.187.2019.11.27.13.40.45; Wed, 27 Nov 2019 13:41:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=anTAsQy9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730082AbfK0UsL (ORCPT + 99 others); Wed, 27 Nov 2019 15:48:11 -0500 Received: from mail.kernel.org ([198.145.29.99]:33162 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728987AbfK0UsH (ORCPT ); Wed, 27 Nov 2019 15:48:07 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B6F58217C3; Wed, 27 Nov 2019 20:48:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574887686; bh=iXfACO8Pm8LpVXh1BTAos9wmSTAnSHOJJbxnjyM1o1k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=anTAsQy9JbBTDwy99ekre2/I5PDYbnUV4+kMy6ZiQwO12ArsMYsdSE5PfsEhiZylV hRpfnGIfH91yEMZypE7/uDgHF29hEs5FooQDGYhaaC52q9fAuHZNdt8oIqu0Gf8M5s EEOLwLQpXUQ6+u+/R/cEtfVXsWziiwxnfb7XAlxQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Marek=20Beh=C3=BAn?= , "David S. Miller" , Sasha Levin Subject: [PATCH 4.14 056/211] net: dsa: mv88e6xxx: Fix 88E6141/6341 2500mbps SERDES speed Date: Wed, 27 Nov 2019 21:29:49 +0100 Message-Id: <20191127203059.426620349@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191127203049.431810767@linuxfoundation.org> References: <20191127203049.431810767@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marek BehĂșn [ Upstream commit 26422340da467538cd65eaa9c65538039ee99c8c ] This is a fix for the port_set_speed method for the Topaz family. Currently the same method is used as for the Peridot family, but this is wrong for the SERDES port. On Topaz, the SERDES port is port 5, not 9 and 10 as in Peridot. Moreover setting alt_bit on Topaz only makes sense for port 0 (for (differentiating 100mbps vs 200mbps). The SERDES port does not support more than 2500mbps, so alt_bit does not make any difference. Signed-off-by: Marek BehĂșn Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/mv88e6xxx/chip.c | 4 ++-- drivers/net/dsa/mv88e6xxx/port.c | 25 +++++++++++++++++++++++-- drivers/net/dsa/mv88e6xxx/port.h | 1 + 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 0fff1502267a4..be17194487c68 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -2527,7 +2527,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = { .port_set_link = mv88e6xxx_port_set_link, .port_set_duplex = mv88e6xxx_port_set_duplex, .port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay, - .port_set_speed = mv88e6390_port_set_speed, + .port_set_speed = mv88e6341_port_set_speed, .port_tag_remap = mv88e6095_port_tag_remap, .port_set_frame_mode = mv88e6351_port_set_frame_mode, .port_set_egress_floods = mv88e6352_port_set_egress_floods, @@ -3029,7 +3029,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = { .port_set_link = mv88e6xxx_port_set_link, .port_set_duplex = mv88e6xxx_port_set_duplex, .port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay, - .port_set_speed = mv88e6390_port_set_speed, + .port_set_speed = mv88e6341_port_set_speed, .port_tag_remap = mv88e6095_port_tag_remap, .port_set_frame_mode = mv88e6351_port_set_frame_mode, .port_set_egress_floods = mv88e6352_port_set_egress_floods, diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c index 2cffecfe86e3b..fd0a88c56031a 100644 --- a/drivers/net/dsa/mv88e6xxx/port.c +++ b/drivers/net/dsa/mv88e6xxx/port.c @@ -203,8 +203,11 @@ static int mv88e6xxx_port_set_speed(struct mv88e6xxx_chip *chip, int port, ctrl = MV88E6XXX_PORT_MAC_CTL_SPEED_1000; break; case 2500: - ctrl = MV88E6390_PORT_MAC_CTL_SPEED_10000 | - MV88E6390_PORT_MAC_CTL_ALTSPEED; + if (alt_bit) + ctrl = MV88E6390_PORT_MAC_CTL_SPEED_10000 | + MV88E6390_PORT_MAC_CTL_ALTSPEED; + else + ctrl = MV88E6390_PORT_MAC_CTL_SPEED_10000; break; case 10000: /* all bits set, fall through... */ @@ -266,6 +269,24 @@ int mv88e6185_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed) return mv88e6xxx_port_set_speed(chip, port, speed, false, false); } +/* Support 10, 100, 200, 1000, 2500 Mbps (e.g. 88E6341) */ +int mv88e6341_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed) +{ + if (speed == SPEED_MAX) + speed = port < 5 ? 1000 : 2500; + + if (speed > 2500) + return -EOPNOTSUPP; + + if (speed == 200 && port != 0) + return -EOPNOTSUPP; + + if (speed == 2500 && port < 5) + return -EOPNOTSUPP; + + return mv88e6xxx_port_set_speed(chip, port, speed, !port, true); +} + /* Support 10, 100, 200, 1000 Mbps (e.g. 88E6352 family) */ int mv88e6352_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed) { diff --git a/drivers/net/dsa/mv88e6xxx/port.h b/drivers/net/dsa/mv88e6xxx/port.h index ccdc67fe90799..8a645683cf6b1 100644 --- a/drivers/net/dsa/mv88e6xxx/port.h +++ b/drivers/net/dsa/mv88e6xxx/port.h @@ -262,6 +262,7 @@ int mv88e6xxx_port_set_duplex(struct mv88e6xxx_chip *chip, int port, int dup); int mv88e6065_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); int mv88e6185_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); +int mv88e6341_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); int mv88e6352_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); int mv88e6390_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); int mv88e6390x_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); -- 2.20.1