From patchwork Thu Jul 4 14:04:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= X-Patchwork-Id: 13723790 X-Patchwork-Delegate: kuba@kernel.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2051.outbound.protection.outlook.com [40.107.105.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8EC491ABC25; Thu, 4 Jul 2024 14:04:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.105.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101894; cv=fail; b=lW6WXKDCh/Cd+wmJmSG3kEoUQ/Hc6TBGwbitwvFd+4tWf39qxcu5gq0KJBxT1dmSOnSZ9sQCoiNvpJEEHtd7X3Kk1w9DBHsPUOJkauIUXfYUQXKGmOwXBC79Qh0D6HdBld2+MBmyN1IKwBtpbiFKZFvNXkMi2YF+OwJTxzEren0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101894; c=relaxed/simple; bh=rY2yN9ZhJccZa678cRD8YoBWUIqI4x8dUEU6EmR2Ye0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GEqKjjK5c89W558mqw83szswlfOzXdFFjjH4K4M5NtxrYdLjMRJZSUEBCHcn7nss1ZQFBER8EQwD9ACoY2NM241NC/U7Wp+tGqpRjdw12CwjaTquiyMQgVbPeDs4Sc7bY4UtJ3rAnsS5FLlQ5DyOGwPc13wIPbp2u9IzI1VpzEw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=2n.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=XWwn3CiF; arc=fail smtp.client-ip=40.107.105.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=2n.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="XWwn3CiF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f5w27ohzZZuVDjfdQ0JH4QXpoKAlUB8NrzacRLDsWHkJfX9WJucEWyu2t+TCPm+vERDNFdxoclqg1mzB2BUQRjAcckaeUskHJiHZygKSad8/LsxnYsqrT0EXklRk4m92y4IOMgdvrcI67RdkfNKOCnM4CoL4G261fIcDpcYRZPHAKjYdkg7y6vOJrGKa4hWaRtHgX+qW3i77jLjJdyit7PY3r0Y0rUtx52AKqterH3rLpJzWzdYBdUeaw6AVxkuYbqujrGQNHq27LamC8vsgkPPSwmJuEjYxPQjH8gKdZ5KUgTKHdDrbVb3jFPPocQkBQije67OqbZAvD5t9fUfDLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VrzxF+efmd49eXzkBexWj4ZUsr9TZMniEw4M8z6Onpc=; b=fHleo9iFDvz0iSEV1WeJjhRQSLrkrLsJ9WYZ1ff+Jy+OW3l258TKZBJUqxCIAT+bR5kg4SrEaNC6giR+H65pnu8eBR5uh+rhZTRwBHlzbw6OOiDdOjtovVUGNnvBxGcZ9u4BSI9B3FucH6fuN7fCd8kkysKerSbJr01cBpt/+YrEl+xt8SQNVyp2cC/s1iPy4Nmg75VhdkLGMoRMV9cXUlAl+K1DbrG6JehNWHNZBucYJJqpdn6W7LF/CNhGx8JycVLgRz05lD7OREEMEfdPQV+naXOiz0KfKfFZEBQyOisBughkGbNeQ5Y80aYmsxGllwfnRmn9BNWbLUI8/9mLZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=broadcom.com smtp.mailfrom=2n.com; dmarc=fail (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VrzxF+efmd49eXzkBexWj4ZUsr9TZMniEw4M8z6Onpc=; b=XWwn3CiF+68lM+l9yDv+P8acgVreRNy6PsXmrTqzke55w7l3VpY6yvIzpEpIUHNNR9O4/fK62j2fwnXz9x31AE33w+JN0OzNxUaS/jFN58h1r9/sTDgCm87clVKou+mPdzwbmCVVu3OMBXmaCGcWvOFERfh4Fcd8/TFeDCCs+Ag= Received: from DB9PR06CA0024.eurprd06.prod.outlook.com (2603:10a6:10:1db::29) by DB9PR02MB6874.eurprd02.prod.outlook.com (2603:10a6:10:213::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.29; Thu, 4 Jul 2024 14:04:49 +0000 Received: from DB1PEPF000509E4.eurprd03.prod.outlook.com (2603:10a6:10:1db:cafe::bf) by DB9PR06CA0024.outlook.office365.com (2603:10a6:10:1db::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.29 via Frontend Transport; Thu, 4 Jul 2024 14:04:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=2n.com; dkim=none (message not signed) header.d=none;dmarc=fail action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of 2n.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by DB1PEPF000509E4.mail.protection.outlook.com (10.167.242.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7741.18 via Frontend Transport; Thu, 4 Jul 2024 14:04:48 +0000 Received: from pcczc3457tyd.2n.cz.axis.com (10.0.5.60) by se-mail01w.axis.com (10.20.40.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 4 Jul 2024 16:04:47 +0200 From: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= To: , , , , , , , , , , , CC: , , , Subject: [PATCH v10 1/4] net: phy: bcm54811: New link mode for BroadR-Reach Date: Thu, 4 Jul 2024 16:04:10 +0200 Message-ID: <20240704140413.2797199-2-kamilh@axis.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240704140413.2797199-1-kamilh@axis.com> References: <20240704140413.2797199-1-kamilh@axis.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail01w.axis.com (10.20.40.7) To se-mail01w.axis.com (10.20.40.7) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB1PEPF000509E4:EE_|DB9PR02MB6874:EE_ X-MS-Office365-Filtering-Correlation-Id: e2e2b649-bd0b-472d-9414-08dc9c3243e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700013|82310400026|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?lkcTeT5CJ5PMSvxAk475XlrG2ZXemUH?= =?utf-8?q?M+CESqhRmQ5f0y+klLG4Hjd4+AtCXVCAYXh1IRRK/AktBBT/Qty93Q1TO+IuuE28k?= =?utf-8?q?BnHSZMa6CPVwu/ceD6717V9Fz5roO8zQekwrowU4MwMSUs9O64rbp+Dsqk4VYAR+v?= =?utf-8?q?GyeF8votgXx3YLCA6UaG30vClk3n0Vmu+u2WTq96++UaDw+AlYnvBT0o06ie1pNUR?= =?utf-8?q?e0+pWlO9W/kgdSGy8mUo5eKiWZDsMdU/khUf6WEub3Q6+hvO52dIn31AfOx01CG4V?= =?utf-8?q?C5aobJbhU4HhfbkAlqOQaeQFNoQWK2he2noEb3/UzopF1NXFphFGcFhcHalJe+HmW?= =?utf-8?q?xyW1sA/h/cyZWHh+XzTK3OzevbJ4w+B+c9iduLaVJWIL8Tngbafw92lnjb5RoGlWh?= =?utf-8?q?Yzv92VG3HDjBbrRd5gkPZJW3x6h1ZSAd7ozlXzrSHgU6b7xSzd1FSFj/k1VFCj7Sd?= =?utf-8?q?hjmWBvAGonqofu5wFiLbZroaBNJbLe1/4BUA8o3V3aqP5A/LMCzSNWzwedk2omR5B?= =?utf-8?q?zxxp7+qC6vdInHkGryJnIgPptQ/30Jd3lNAAD3ZSjOP7Sg88CSfD/mUb2hqGupWnF?= =?utf-8?q?XO85X2kWLy/dP8gey4plPti9KOYF22wh9Mw4JCNf980JtQswE+IAf8cVaXwuNX5Mz?= =?utf-8?q?XDmlN+LdDvqcJp1wiixSvkywba7qeFpETyaiwP1i9m9QjEaQusq2WVNPImwmDbiJr?= =?utf-8?q?At1W12I5Xo13wcUtqy0lghM8jesPjeo3PyXhMHcKOmgJ6lHnSueVqq9za89C5r2bB?= =?utf-8?q?gJwDi/l/LsizYz0+xaxq03qv57K/S41aNBzFB8ppdKEmzTw8i0hdbxXdKckPFpw2C?= =?utf-8?q?1c6PL/xW1OoF+oMrp6rcC4BTEqGngiDhR3Q6pd7XVBfJANIhqOShMI16U8O+hjU7p?= =?utf-8?q?O2eTvcrrZpVh6aNnk9sRtVDDWgULTknsPU5+tU4doOmHCQI2tNt6UpanpXrFCXop8?= =?utf-8?q?yWUyPDrmy9Vxn7bBr0u6MugZ413Ai6VPsmmsi2HdFv91GLSVRzTAntcw6zyNWji0B?= =?utf-8?q?MapXMOwDU3ZKbmoiBuX65Vercw9NqMpp5inVhGjQGl8RBZcK4pb8j1J9n1DszTrCW?= =?utf-8?q?y5wMgDN6a5XW1gu18RZh2ouUqEiqkdqr8Z3wkCUKa0XphKBVrG6xL/KIzRsOeE/qW?= =?utf-8?q?pX/RfbV1vdtRPtnDKGZ+m+lwMbr1QGwU+j0X/hS8GHUCPGdKp763R5o32AsBl6JJq?= =?utf-8?q?NaFrfd5KX/6SWlv37blxK/Jk9WjoF4h4Tlv+q6+yFSMR3X5rlnE3yGbdigvmB76Es?= =?utf-8?q?CbQffPgPCL09Lq4VlvG0+fgDvy6e3wK8PFSS+MiXTJz1Lv4zxSDdiMoe51IbFOazL?= =?utf-8?q?58p9PRQL2bH5O+fNog4vL56Y+aDVqb1zLpQCGUhVrErko7BBCoE/N+x5Zq6J0IQuO?= =?utf-8?q?bbptt7GIqjdxk68fSgp9XmWgD5yMklbyQ=3D=3D?= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(36860700013)(82310400026)(921020);DIR:OUT;SFP:1101; X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2024 14:04:48.0600 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e2e2b649-bd0b-472d-9414-08dc9c3243e8 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509E4.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR02MB6874 X-Patchwork-Delegate: kuba@kernel.org Introduce a new link mode necessary for 10 MBit single-pair connection in BroadR-Reach mode on bcm5481x PHY by Broadcom. This new link mode, 10baseT1BRR, is known as 1BR10 in the Broadcom terminology. Another link mode to be used is 1BR100 and it is already present as 100baseT1, because Broadcom's 1BR100 became 100baseT1 (IEEE 802.3bw). Signed-off-by: Kamil Horák (2N) Reviewed-by: Florian Fainelli --- drivers/net/phy/phy-core.c | 3 ++- include/uapi/linux/ethtool.h | 1 + net/ethtool/common.c | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c index a235ea2264a7..1f98b6a96c15 100644 --- a/drivers/net/phy/phy-core.c +++ b/drivers/net/phy/phy-core.c @@ -13,7 +13,7 @@ */ const char *phy_speed_to_str(int speed) { - BUILD_BUG_ON_MSG(__ETHTOOL_LINK_MODE_MASK_NBITS != 102, + BUILD_BUG_ON_MSG(__ETHTOOL_LINK_MODE_MASK_NBITS != 103, "Enum ethtool_link_mode_bit_indices and phylib are out of sync. " "If a speed or mode has been added please update phy_speed_to_str " "and the PHY settings array.\n"); @@ -266,6 +266,7 @@ static const struct phy_setting settings[] = { PHY_SETTING( 10, FULL, 10baseT1S_Full ), PHY_SETTING( 10, HALF, 10baseT1S_Half ), PHY_SETTING( 10, HALF, 10baseT1S_P2MP_Half ), + PHY_SETTING( 10, FULL, 10baseT1BRR_Full ), }; #undef PHY_SETTING diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h index e011384c915c..54b31344961d 100644 --- a/include/uapi/linux/ethtool.h +++ b/include/uapi/linux/ethtool.h @@ -1863,6 +1863,7 @@ enum ethtool_link_mode_bit_indices { ETHTOOL_LINK_MODE_10baseT1S_Full_BIT = 99, ETHTOOL_LINK_MODE_10baseT1S_Half_BIT = 100, ETHTOOL_LINK_MODE_10baseT1S_P2MP_Half_BIT = 101, + ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT = 102, /* must be last entry */ __ETHTOOL_LINK_MODE_MASK_NBITS diff --git a/net/ethtool/common.c b/net/ethtool/common.c index 6b2a360dcdf0..82ba2ca98d4c 100644 --- a/net/ethtool/common.c +++ b/net/ethtool/common.c @@ -211,6 +211,7 @@ const char link_mode_names[][ETH_GSTRING_LEN] = { __DEFINE_LINK_MODE_NAME(10, T1S, Full), __DEFINE_LINK_MODE_NAME(10, T1S, Half), __DEFINE_LINK_MODE_NAME(10, T1S_P2MP, Half), + __DEFINE_LINK_MODE_NAME(10, T1BRR, Full), }; static_assert(ARRAY_SIZE(link_mode_names) == __ETHTOOL_LINK_MODE_MASK_NBITS); @@ -251,6 +252,7 @@ static_assert(ARRAY_SIZE(link_mode_names) == __ETHTOOL_LINK_MODE_MASK_NBITS); #define __LINK_MODE_LANES_T1S_P2MP 1 #define __LINK_MODE_LANES_VR8 8 #define __LINK_MODE_LANES_DR8_2 8 +#define __LINK_MODE_LANES_T1BRR 1 #define __DEFINE_LINK_MODE_PARAMS(_speed, _type, _duplex) \ [ETHTOOL_LINK_MODE(_speed, _type, _duplex)] = { \ @@ -374,6 +376,7 @@ const struct link_mode_info link_mode_params[] = { __DEFINE_LINK_MODE_PARAMS(10, T1S, Full), __DEFINE_LINK_MODE_PARAMS(10, T1S, Half), __DEFINE_LINK_MODE_PARAMS(10, T1S_P2MP, Half), + __DEFINE_LINK_MODE_PARAMS(10, T1BRR, Full), }; static_assert(ARRAY_SIZE(link_mode_params) == __ETHTOOL_LINK_MODE_MASK_NBITS); From patchwork Thu Jul 4 14:04:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= X-Patchwork-Id: 13723792 X-Patchwork-Delegate: kuba@kernel.org Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011049.outbound.protection.outlook.com [52.101.70.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E70441B0100; Thu, 4 Jul 2024 14:04:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101899; cv=fail; b=jrR9cfE7QtBmnVtdy99qECl+QZgd1V4m4JKt3TtT3Z158H3iJ9jhUHuv5OBj6UVKVsKd0TH6ZulB6WRPuUms+FSEYElypo2NR9ED8fA7uiZqbWKUx7M7be/V+Tmyx6EDdXY8ZhTynMJXNWRFSFBx8f3QA4PcSsXmsWCGCwA7j68= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101899; c=relaxed/simple; bh=nW5o9jacrjPWOuxhoPe08F5HjFKbOisKW55vInEX5jc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=aG4wm9hEnN5y5KZOSN1H8uryHipyM7LpmTydqHVWT9f1e5DAOFjTlOWnfJq6/y4lcgMt0ndm0RYuaWdq8+He8m9ypW8N8rcr3fevzk9e8509mCjtxRthwp5O8ImgjWt3fH3e4gXn9cEASY7nRfebX+Ox3SsVk0kNMyc5+yLqevc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=2n.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=Uci2rd/b; arc=fail smtp.client-ip=52.101.70.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=2n.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="Uci2rd/b" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KZJLORXRP7Bm3+5NjkMEGVCTIVc2aJfER/4xlJoHpsO4cpX12MO5k4HSadmdmD0hSGtyZW2uycaP0RoM6KnZYvjH0F9h3kl8QOBpykruLYdbU77QDtpEiMnIQpYeQIFOg3DUXNK/XNmnACkTwDP9ssxd0Y08Lb0L1DfwLOb/bFh8tnRoU2vOXwao7blTgnH6c8DKr/9+VJ6KZUOtBLtvV+VQ4cXLZBnjc3qFuwp+szkMkhbet1VCuvCWMnA7cGJiXrRU5E47nNr2iq1K08E14QVKS6oSmUgHwJhAKuCKU5PCbg68aLeo+WDTfDf4UK8/yD69agaWFCNVamFpz6Cn7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8ggROmr7pEozEH/Ekc4IbP5so+Dk1/2A8pLpDjNwcBs=; b=bNF4xiJBw0/+aZubC/RXmf6yZW/ef+YNCrq3i6rEEbQEA3JDupdj9sWRggMxsjWCzsunEhJoDVlTBxuwueQIK4pqo6luxgzgVx0E/fm9U6EESkMkKucZTYwdwr+tiGe2HgjnVMwwk+HULVoHSANcnbVMRDVzoa+F8HJ7PcwErzPx5mcb33MTQ3qLtrsbKYAO0ayfJkJJKc9fObix6M0xPJ0nFkHkr0yPaCp3tpdU5dzyxMeDYeBzhGgoA6obnZIBLmvOgl1i/MNfX22CClWi+5CGCSxQKXpwX1XZRtxzwbCbxLQ+g3lphcvFtjw3VQ+jzdKzWv0LiYidn8MEk5tmOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=broadcom.com smtp.mailfrom=2n.com; dmarc=fail (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8ggROmr7pEozEH/Ekc4IbP5so+Dk1/2A8pLpDjNwcBs=; b=Uci2rd/bYTJTyEhaY+NcPQq4Nhv28FhTJp88Jt1vUyaSSvu/EkWE1HGaES03OI1lG8klDKTNV11FDqdmViW4JChIxnkuszsvkbAg/pHWydjLvEOhhuN9vfbN9vyoA7f/p5de4Jxcz96NtyFKWUqq3tFPIbLvDQhXizjgzm0bV/c= Received: from DBBPR09CA0025.eurprd09.prod.outlook.com (2603:10a6:10:d4::13) by AS1PR02MB7845.eurprd02.prod.outlook.com (2603:10a6:20b:4ad::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.34; Thu, 4 Jul 2024 14:04:54 +0000 Received: from DB1PEPF000509E9.eurprd03.prod.outlook.com (2603:10a6:10:d4:cafe::1a) by DBBPR09CA0025.outlook.office365.com (2603:10a6:10:d4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.27 via Frontend Transport; Thu, 4 Jul 2024 14:04:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=2n.com; dkim=none (message not signed) header.d=none;dmarc=fail action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of 2n.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by DB1PEPF000509E9.mail.protection.outlook.com (10.167.242.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7741.18 via Frontend Transport; Thu, 4 Jul 2024 14:04:53 +0000 Received: from pcczc3457tyd.2n.cz.axis.com (10.0.5.60) by se-mail01w.axis.com (10.20.40.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 4 Jul 2024 16:04:52 +0200 From: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= To: , , , , , , , , , , , CC: , , , Subject: [PATCH v10 2/4] net: phy: bcm54811: Add LRE registers definitions Date: Thu, 4 Jul 2024 16:04:11 +0200 Message-ID: <20240704140413.2797199-3-kamilh@axis.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240704140413.2797199-1-kamilh@axis.com> References: <20240704140413.2797199-1-kamilh@axis.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail01w.axis.com (10.20.40.7) To se-mail01w.axis.com (10.20.40.7) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB1PEPF000509E9:EE_|AS1PR02MB7845:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d04e630-b0c4-4a08-c4c9-08dc9c324746 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?f+zdxFSkB/SpzXQa2uR+O4oLWmhVHHR?= =?utf-8?q?adJdICRfPCy1OgPOEIRB4+bE27owCQZnfUYkA0dDOv8FPQddbyB7tWPmtlq3Zr+SK?= =?utf-8?q?5ZuL5BRLB2A3ZMfbIp34C4W3ZmwPzRStEipQm0erksw/iLJ24ZlGU2AfqJFhyZZGi?= =?utf-8?q?xrqQN+9v8IzE5ySVOsM/qZeIO8YOyE8iFX4HFZ5oJ7rb7Zl5H38go5KdawBZlZ5Y8?= =?utf-8?q?sbbpH96OfWgZrYtducBdk4e0f7M0IYLilS7jjGvkVnPe988z2SK3bspLZKW6/Yrco?= =?utf-8?q?ukj1p3M5AeK5EfysEWspoStW220uCb5gxRQMZlapqBfB2wDu9HwzS4S8NG5YGijfn?= =?utf-8?q?AizfU6Gy5ImT5QOnOYzX7Z648/IN0TJZ2TcTAUTT2iC07wv3yXjAUjI2NLch5m81y?= =?utf-8?q?0MFON6WFNUm6lqRmuxQnE9wd3M3eOBk9SbExuPhPGR+8C8b0PBtF0WWkFSbnUxFbz?= =?utf-8?q?WDiLujHxOHIazu2AutSnxUJCY/eBehLgPb63HCUNB118fvpLUMP12XAsAfGHeN8wz?= =?utf-8?q?2K5/esvjrXbBs3tobOikPwU17tK4sx7OFRYsxYuIGNW3/ZDRv0/9gcorU5ye28ucI?= =?utf-8?q?Wst8c2od9SPbTeDXMIatTOoGgc3F2IBHO0viCbn9tzi5G7ZBBJTkRxItOPsmFT1hJ?= =?utf-8?q?NLgalUwiVhT6JEhG64oPoI7fuszvxVLAws9VIRkYj0hbY5rYFT5FXMa+0Qq2cGRfW?= =?utf-8?q?FlsLdkRwGCK1VuxstobFY6STAlT3QCBiXV7hooEsbdxI/brhkLdP7ghnmVlxdoZya?= =?utf-8?q?hAomkGhxM/ViSnugCErcwheHyO1DTTlL1+9gpNbmkWZQPw3I2fLQRgWIWhzJLh+mk?= =?utf-8?q?MpT2Vp+5pHHwr8S/AJ56g3WH70M2ds8iTU4IGCmQUshGpOs+gD6x0PMrXlMwsGlfN?= =?utf-8?q?1RtFLYRU/az0T8ma7hYeigJfIGhnDrky+IbTXztxToQ3gUILB1orEzs6ixeJxrMkd?= =?utf-8?q?fe0BTQZg4rmEIWuGK8oJ7pgocEBBGziUWATSKbu+74IaYawmI1j3i+e1bw5paGTyf?= =?utf-8?q?0BuDs23oe7HEX9GAQHZOg/EAo65+g5a7BwDlRcBmmabAFkLipCWEhw0RxDMUfVU3t?= =?utf-8?q?eUi6QluzZUzbqunYAxHIXy/daA6LnL7w+qk84rPhc+p5wHaSCDTDc1p1K8ZEvbMdQ?= =?utf-8?q?r3shgWdCDVXrEvpB8WimSSj7Dcxpbts7Nbo9E6GXz1HDWGENCDdxZifzUJzDP9kub?= =?utf-8?q?FuqQSjUaS3RaeJYrWHo0VpsGHcjQTnboIM1PRCk0m+ebdxsWiTmYPNMyQtphjdaPg?= =?utf-8?q?mbC93BDNM9zEKxhYJYTfds/DjuMp9d9QqbL8hcClonl2DEhejDsHygn49e3+ccrET?= =?utf-8?q?kMtkWClxHzCzTGnVSmia3rhj+HgpVjBXGfYkn+uWTwMRm77XCkgHknqVpTNPYm8e6?= =?utf-8?q?nQBUIInrEAvsiDd6MLJ69Qh94rA2R1moQ=3D=3D?= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2024 14:04:53.6948 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d04e630-b0c4-4a08-c4c9-08dc9c324746 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509E9.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR02MB7845 Add the definitions of LRE registers for Broadcom BCM5481x PHY Signed-off-by: Kamil Horák (2N) --- include/linux/brcmphy.h | 88 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h index 1394ba302367..028b3e00378e 100644 --- a/include/linux/brcmphy.h +++ b/include/linux/brcmphy.h @@ -271,12 +271,100 @@ #define BCM5482_SSD_SGMII_SLAVE_EN 0x0002 /* Slave mode enable */ #define BCM5482_SSD_SGMII_SLAVE_AD 0x0001 /* Slave auto-detection */ +/* BroadR-Reach LRE Registers. */ +#define MII_BCM54XX_LRECR 0x00 /* LRE Control Register */ +#define MII_BCM54XX_LRESR 0x01 /* LRE Status Register */ +#define MII_BCM54XX_LREPHYSID1 0x02 /* LRE PHYS ID 1 */ +#define MII_BCM54XX_LREPHYSID2 0x03 /* LRE PHYS ID 2 */ +#define MII_BCM54XX_LREANAA 0x04 /* LDS Auto-Negotiation Advertised Ability */ +#define MII_BCM54XX_LREANAC 0x05 /* LDS Auto-Negotiation Advertised Control */ +#define MII_BCM54XX_LREANPT 0x06 /* LDS Ability Next Page Transmit */ +#define MII_BCM54XX_LRELPA 0x07 /* LDS Link Partner Ability */ +#define MII_BCM54XX_LRELPNPM 0x08 /* LDS Link Partner Next Page Message */ +#define MII_BCM54XX_LRELPNPC 0x09 /* LDS Link Partner Next Page Control */ +#define MII_BCM54XX_LRELDSE 0x0a /* LDS Expansion Register */ +#define MII_BCM54XX_LREES 0x0f /* LRE Extended Status */ + +/* LRE control register. */ +#define LRECR_RESET 0x8000 /* Reset to default state */ +#define LRECR_LOOPBACK 0x4000 /* Internal Loopback */ +#define LRECR_LDSRES 0x2000 /* Restart LDS Process */ +#define LRECR_LDSEN 0x1000 /* LDS Enable */ +#define LRECR_PDOWN 0x0800 /* Enable low power state */ +#define LRECR_ISOLATE 0x0400 /* Isolate data paths from MII */ +#define LRECR_SPEED100 0x0200 /* Select 100 Mbps */ +#define LRECR_SPEED10 0x0000 /* Select 10 Mbps */ +#define LRECR_4PAIRS 0x0020 /* Select 4 Pairs */ +#define LRECR_2PAIRS 0x0010 /* Select 2 Pairs */ +#define LRECR_1PAIR 0x0000 /* Select 1 Pair */ +#define LRECR_MASTER 0x0008 /* Force Master when LDS disabled */ +#define LRECR_SLAVE 0x0000 /* Force Slave when LDS disabled */ + +/* LRE status register. */ +#define LRESR_100_1PAIR 0x2000 /* Can do 100Mbps 1 Pair */ +#define LRESR_100_4PAIR 0x1000 /* Can do 100Mbps 4 Pairs */ +#define LRESR_100_2PAIR 0x0800 /* Can do 100Mbps 2 Pairs */ +#define LRESR_10_2PAIR 0x0400 /* Can do 10Mbps 2 Pairs */ +#define LRESR_10_1PAIR 0x0200 /* Can do 10Mbps 1 Pair */ +#define LRESR_ESTATEN 0x0100 /* Extended Status in R15 */ +#define LRESR_RESV 0x0080 /* Unused... */ +#define LRESR_MFPS 0x0040 /* Can suppress Management Frames Preamble */ +#define LRESR_LDSCOMPLETE 0x0020 /* LDS Auto-negotiation complete */ +#define LRESR_8023 0x0010 /* Has IEEE 802.3 Support */ +#define LRESR_LDSABILITY 0x0008 /* LDS auto-negotiation capable */ +#define LRESR_LSTATUS 0x0004 /* Link status */ +#define LRESR_JCD 0x0002 /* Jabber detected */ +#define LRESR_ERCAP 0x0001 /* Ext-reg capability */ + +/* LDS Auto-Negotiation Advertised Ability. */ +#define LREANAA_PAUSE_ASYM 0x8000 /* Can pause asymmetrically */ +#define LREANAA_PAUSE 0x4000 /* Can pause */ +#define LREANAA_100_1PAIR 0x0020 /* Can do 100Mbps 1 Pair */ +#define LREANAA_100_4PAIR 0x0010 /* Can do 100Mbps 4 Pair */ +#define LREANAA_100_2PAIR 0x0008 /* Can do 100Mbps 2 Pair */ +#define LREANAA_10_2PAIR 0x0004 /* Can do 10Mbps 2 Pair */ +#define LREANAA_10_1PAIR 0x0002 /* Can do 10Mbps 1 Pair */ + +#define LRE_ADVERTISE_FULL (LREANAA_100_1PAIR | LREANAA_100_4PAIR | \ + LREANAA_100_2PAIR | LREANAA_10_2PAIR | \ + LREANAA_10_1PAIR) + +#define LRE_ADVERTISE_ALL LRE_ADVERTISE_FULL + +/* LDS Link Partner Ability. */ +#define LRELPA_PAUSE_ASYM 0x8000 /* Supports asymmetric pause */ +#define LRELPA_PAUSE 0x4000 /* Supports pause capability */ +#define LRELPA_100_1PAIR 0x0020 /* 100Mbps 1 Pair capable */ +#define LRELPA_100_4PAIR 0x0010 /* 100Mbps 4 Pair capable */ +#define LRELPA_100_2PAIR 0x0008 /* 100Mbps 2 Pair capable */ +#define LRELPA_10_2PAIR 0x0004 /* 10Mbps 2 Pair capable */ +#define LRELPA_10_1PAIR 0x0002 /* 10Mbps 1 Pair capable */ + +/* LDS Expansion register. */ +#define LDSE_DOWNGRADE 0x8000 /* Can do LDS Speed Downgrade */ +#define LDSE_MASTER 0x4000 /* Master / Slave */ +#define LDSE_PAIRS_MASK 0x3000 /* Pair Count Mask */ +#define LDSE_PAIRS_SHIFT 12 +#define LDSE_4PAIRS (2 << LDSE_PAIRS_SHIFT) /* 4 Pairs Connection */ +#define LDSE_2PAIRS (1 << LDSE_PAIRS_SHIFT) /* 2 Pairs Connection */ +#define LDSE_1PAIR (0 << LDSE_PAIRS_SHIFT) /* 1 Pair Connection */ +#define LDSE_CABLEN_MASK 0x0FFF /* Cable Length Mask */ + /* BCM54810 Registers */ #define BCM54810_EXP_BROADREACH_LRE_MISC_CTL (MII_BCM54XX_EXP_SEL_ER + 0x90) #define BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN (1 << 0) #define BCM54810_SHD_CLK_CTL 0x3 #define BCM54810_SHD_CLK_CTL_GTXCLK_EN (1 << 9) +/* BCM54811 Registers */ +#define BCM54811_EXP_BROADREACH_LRE_OVERLAY_CTL (MII_BCM54XX_EXP_SEL_ER + 0x9A) +/* Access Control Override Enable */ +#define BCM54811_EXP_BROADREACH_LRE_OVERLAY_CTL_EN BIT(15) +/* Access Control Override Value */ +#define BCM54811_EXP_BROADREACH_LRE_OVERLAY_CTL_OVERRIDE_VAL BIT(14) +/* Access Control Value */ +#define BCM54811_EXP_BROADREACH_LRE_OVERLAY_CTL_VAL BIT(13) + /* BCM54612E Registers */ #define BCM54612E_EXP_SPARE0 (MII_BCM54XX_EXP_SEL_ETC + 0x34) #define BCM54612E_LED4_CLK125OUT_EN (1 << 1) From patchwork Thu Jul 4 14:04:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= X-Patchwork-Id: 13723791 X-Patchwork-Delegate: kuba@kernel.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2048.outbound.protection.outlook.com [40.107.20.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 829CC1B0120; Thu, 4 Jul 2024 14:04:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.20.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101899; cv=fail; b=TAQ6N8qK/LGyrMfGu8TABPSmiNVcdrndsfKo9sik8gk3lGLRMHtIvdZ/tciFgZeEiM8DDtwNzDYx+Vj7aKSJSewnOhRIXd+XLegS2264r34vrGs6dfrCxKr8g4rsoReASKNI8IziPqiNrr+q2xLEnx52DtjJAoLz6wuvB2H4rD8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101899; c=relaxed/simple; bh=nhxOlAxVrR/YC86FBUfnYUdAo6Uu17uCqIUTuMEMcs0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GmnbrcRC3egf5OcJ0gU8SfmSS1yVyceFpGJl2754KCevVlIbi9Lf5QlV5MUR0aCclB5XZVHxvdSGm4JzAjHWf2mAMFFWyzpnrulNyAW/smXQd7Swi+lzVjanN+D/+7Y6Zg9672ZcLfWF6dVij9DfbEQ3jGzcKmJ8nya/Gntj42s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=2n.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=W8x3sjMO; arc=fail smtp.client-ip=40.107.20.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=2n.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="W8x3sjMO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U5A6kXCaGWjdF9O5X34jP93VhDPvuvjCRod1GJ0oiXUMLEzYtVCaH+31p/hsI6047OPxEc0+9A3wyz+A8xp3vmGdkAcBYnuQgdgoVP5LEA0tJBhrMAMEgVhslUdMl6Nc7zivPB4omCteqAndtqqe8p6uc5HYLRf4D5kJHdel4Gm7dLX72usoreoPHp4XjcYSObazkmXz0Hyv97/arqUPnrf2E5UuNOimc3buDUiVD6X1EIhNBd3c8THe5CAE5CNWe9PEMAERhN5MOGjA1dlg8uS6jXO/1E47Oq0/yXxkl23kl3MAfE01Uh676WiMCkr8k3A5zY6a9EgsGQkQr7yx0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nf+rrrbUXJPQsenI5ofcGoaayi7umJe4YFsoavQ6Xag=; b=FlnCVZkO1BmrGmuCAtg13QqHuoohoshhWshyVtdgmcJETE0i3FnHn5i2R/lcmBC7QKGi7ZibJyzDGyh0V6D4RLTBRgCa94d55pYUvXlEvhJ+mLRT1477Seh6/MRAsn522oRALtkS6tUYJFmM28v05F6kwLED5dOP5ed1na7052BothD//08bsWkUL3EYGFUkQ3TBBzeszeDtU78Zs6ZCUqeCXE/6Itcxpaw6XTTRqKJFiAl6qp3gdpnoiaW2aI1al2eLqa9mBP2C+ldZirum1QSktOX7DEb935dhpT7lHxp6LH4aSsuKVU0qmanQkGwEb+7JK7TlhjliNoTzUiaqQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=broadcom.com smtp.mailfrom=2n.com; dmarc=fail (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nf+rrrbUXJPQsenI5ofcGoaayi7umJe4YFsoavQ6Xag=; b=W8x3sjMOn3CGXV9P5mo+GraevqDstX2reRfUKnem8yhLSatZOiG1rk5MEXlK0XuvhFrLgjbgh6bWfbf57ae3d5xKM/JGRHQrpt0gWTT87Aqopc1QjboYl3uT8RxXAuGHo4qa6lyuJvHVXUCBUsKTuhbxawKg13Ji6WG0g2GMbpo= Received: from DBBPR09CA0046.eurprd09.prod.outlook.com (2603:10a6:10:d4::34) by PAXPR02MB7262.eurprd02.prod.outlook.com (2603:10a6:102:1c3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.29; Thu, 4 Jul 2024 14:04:54 +0000 Received: from DB1PEPF000509E9.eurprd03.prod.outlook.com (2603:10a6:10:d4:cafe::4d) by DBBPR09CA0046.outlook.office365.com (2603:10a6:10:d4::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.29 via Frontend Transport; Thu, 4 Jul 2024 14:04:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=2n.com; dkim=none (message not signed) header.d=none;dmarc=fail action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of 2n.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by DB1PEPF000509E9.mail.protection.outlook.com (10.167.242.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7741.18 via Frontend Transport; Thu, 4 Jul 2024 14:04:54 +0000 Received: from pcczc3457tyd.2n.cz.axis.com (10.0.5.60) by se-mail01w.axis.com (10.20.40.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 4 Jul 2024 16:04:53 +0200 From: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= To: , , , , , , , , , , , CC: , , , Subject: [PATCH v10 3/4] dt-bindings: ethernet-phy: add optional brr-mode flag Date: Thu, 4 Jul 2024 16:04:12 +0200 Message-ID: <20240704140413.2797199-4-kamilh@axis.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240704140413.2797199-1-kamilh@axis.com> References: <20240704140413.2797199-1-kamilh@axis.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail01w.axis.com (10.20.40.7) To se-mail01w.axis.com (10.20.40.7) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB1PEPF000509E9:EE_|PAXPR02MB7262:EE_ X-MS-Office365-Filtering-Correlation-Id: 1a595590-2c98-426e-5e28-08dc9c3247a1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700013|82310400026|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?mBfjm5mNEzNb652lvpl9LLtMzIwtau+?= =?utf-8?q?imyEYSe3HaavOFqhIrZmnSF9b1sP0MjKUPaT1dRJUC6Gdj6pxq1yk9b1DXj9hkjz7?= =?utf-8?q?CuAX5bbjbTxRIluaH244Vjp02tzqxgtOdb79kPAcN606hcBC5FPzmWjom0RvIlX13?= =?utf-8?q?v3e97s0eoZeLklAQzyUrf8l8x+I7+m+RfxVP9BG21XuAJSgOOs7gEs5eoENbthGwJ?= =?utf-8?q?HVmLIhaoL2wFJzB56UZE0i9D2jCh8gezhntu+RU7aFM/Z7j5447qQNf9hcqgJSCwq?= =?utf-8?q?dgH868l54imquTHLXrLn0l0dH+SL3MSsTkIF4fEjwzcgeXiEbSYWE5vTInX9Lna2/?= =?utf-8?q?mq7KNa3n9mVpJds+yfrA1F6zkDJkOVuxl9IxJmoxfUeuXqx1rjQUxc1XX8diSmh0W?= =?utf-8?q?eyAp2WfuVYFRc28J7FDbHvt7N3CftQmHJQJ1J4PdZySS/oWmyLIgKhQiLPiihqHNT?= =?utf-8?q?jieUpbAj2+2QiHBUB4qpvAqQd+114oENZ/6TYRdQzmiw81lBOaOaw44RIaPtTIm+C?= =?utf-8?q?+ZYM/GvXWgN2w3io3cWGoIxK6rfr4qiGiq7v9eOpsmUx868SFI3+7st4TDaWCzld0?= =?utf-8?q?CfZaSH2bNx8RaFz2nBjTCOdGgONFVxlwX6JVlqb7pLtfIRDv0EvgtpOW0jBDjvF9E?= =?utf-8?q?+bZElrc6brQLElzBg7bg8AX3Na3mNVTDWxGwvFsHktbUPRoFGDjpsbLp3TNclZo6I?= =?utf-8?q?YoLu5xs9b5qNWruKcTJQdNFh8C4JEL5dM+SnVr765xOGRJdwLYdSLYUrvpPoe79mM?= =?utf-8?q?WePQaHEO+djp7tXlmD88caLoPPK4TD+qqFutDpz6iyrnc+EVpj/Nhc/9Qt3XkPMip?= =?utf-8?q?9tKyPeuGEOmSG6+F/Z1lmquPWIyq0HkOewR1HvvEVK4q8xOoFzqqm00IYBe/gzFnQ?= =?utf-8?q?MxBkvQ1pqgO7M4q01XWtwl3B6RgU1jkOjT3w2InaRt/F9XZ1JvVGXb7oo2O235uh3?= =?utf-8?q?6FYrxf4pdZSEOm/MKMkROkHf54RuYgmc4VcUmun15Rh4NWkLaR1dHm8oydueRfXCJ?= =?utf-8?q?Bp2OJ4JXt6UEcTWkSvTJ53C504Kz+0visi3cjwvFRJGItm/llhBfF1BHqlsBLMXpU?= =?utf-8?q?3PArsnds8EGlv0YqaosILFZZ11n9wX+vaHhL8RwGjOMkzBgw6jMxTg1bxWRgPrQPB?= =?utf-8?q?n7txsSDQW/3ulloisdw7kCnmq1W5up47uhiH8J8ipXLHvLki3NckqgZnhAoFIF3F+?= =?utf-8?q?tsznUnhh8WErzSOo3avCOLXZUjp6kGPTEiOXqbLxlQt9QjMPVOgIpBIcLXeb6FPvL?= =?utf-8?q?wz9s64AUbnPKLSiI3hERtHtDDkKIGEUpeAT/7BR01o01Gk8K3XBTrTJk6urKnd8Kx?= =?utf-8?q?cXzFJSzoDHMvUouMItVf/hcBPfDDuTA77NH+N+yt8nwCjg4S3Y+WJUkCNMnLuLQrW?= =?utf-8?q?Daav+aeRE3eU02GrDyjhCuW7G5dpvYm1w=3D=3D?= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(36860700013)(82310400026)(921020);DIR:OUT;SFP:1101; X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2024 14:04:54.3042 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1a595590-2c98-426e-5e28-08dc9c3247a1 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509E9.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR02MB7262 X-Patchwork-Delegate: kuba@kernel.org There is a group of PHY chips supporting BroadR-Reach link modes in a manner allowing for more or less identical register usage as standard Clause 22 PHY. These chips support standard Ethernet link modes as well, however, the circuitry is mutually exclusive and cannot be auto-detected. The link modes in question are 100Base-T1 as defined in IEEE802.3bw, based on Broadcom's 1BR-100 link mode, and newly defined 10Base-T1BRR (1BR-10 in Broadcom documents). Add optional brr-mode flag to switch the PHY to BroadR-Reach mode. Signed-off-by: Kamil Horák (2N) Acked-by: Conor Dooley --- Documentation/devicetree/bindings/net/ethernet-phy.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Documentation/devicetree/bindings/net/ethernet-phy.yaml index 8fb2a6ee7e5b..349ae72ebf42 100644 --- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml +++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml @@ -93,6 +93,14 @@ properties: the turn around line low at end of the control phase of the MDIO transaction. + brr-mode: + $ref: /schemas/types.yaml#/definitions/flag + description: + If set, indicates the network cable interface is alternative one as + defined in the BroadR-Reach link mode specification under 1BR-100 and + 1BR-10 names. The driver needs to configure the PHY to operate in + BroadR-Reach mode. + clocks: maxItems: 1 description: From patchwork Thu Jul 4 14:04:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= X-Patchwork-Id: 13723793 X-Patchwork-Delegate: kuba@kernel.org Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11013044.outbound.protection.outlook.com [52.101.67.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E9EB61B0123; Thu, 4 Jul 2024 14:04:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.67.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101900; cv=fail; b=lOTRQcIgF4zHkXL+k53bEoufNOBD4XfmdG0Ju94bag43Q+IJqGekPRPuDiVB78U6Ju99gEArVhJuZJrn+I+MZZcoYLlNRnyi14ae4pflDpKHON60zMMfqEVilxSJOMBeZypFZPU54YOLblbRrxp0q5WprOKejePEwYX1qGTAjGo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720101900; c=relaxed/simple; bh=oFa6tEtN72nKtuIuVlVFIsXLZ6A/2PJ0IsvV+K4lNw4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jmvJhmvaN9HSz05LtAH/lSvBNx68m1ynKlKCc8/28zlj5mPlJd/y5WWTAxSyY3sGRGbGFhA6OLq2Vt+a5fxj2IjSuGKEgB6bsLM9uASRRrrlpIm8vTmBL9dcAaBb2yWdJNI76Ke+0zYZrjgj9nQvCRHp5NNYF/X3qcV7se3nm0c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=2n.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=naFWB5q3; arc=fail smtp.client-ip=52.101.67.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=2n.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="naFWB5q3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oc4PVS3dzK7ftqVT5x/BjKbg8hwIOKP5D4azn8kjMdhty8kHJak9397VKQIFCvR2TY9NMtlGV4dhn37ja8VItpHj7vpyAmhC/ul380DfAJ5WSZunYW+AxbiZuhzsg9sMKZuk82AP9LmEpWVQYYq1tsPaxCOc7Sg0MOkl1LoOEpERHlp0jHZaS7K0ZBeLmL2gcNFQm4DYx2Z/XndMUJO4wB9DeOcy8rn4pVDbHQyXoFmbDMsNLnhDjNsBRIXYm6HczbfVMbhxgwWdmO4ZCYR3IvXnLjLs72MKJAmJ7w7RGt7Ncz5S4P1K4OWYlRb28Nn0KWEkb5uKR9U8tU9PQkYuLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sXv8LCvY0wgtr9MminrtGUbRcLa8J+OJWxMUixNEWII=; b=LMlKCQeToQ1/yYavbGHm8ddwef9hwXahT/vveDn2dj5i6UIhMMeJ0WE9wQAT80G6kZWswJEEpzAZYTFPjBD+789gGB9l9Aj+6jqr7OHIFr1GHFG60hycTZ7f4V3Vvgunyk7/LUMrNltQA4H1aYFlQiHqBkrUOEHrCuHtK77aZyAZP5xE+U9iLuNGuv3pEAaTyls3BapEokTzs4tb24o44eIovMUPu0T+/Qd93VK+HRge/OJtQge3p3r8tQFsWRoU3Q0cgYlllsdPBTsGpaRegVuWbYMfpmljdfbTfnIR3c0dzzhfqzQDhZzPombdxj1EXGXXQk/kqtTkQRB1SFQNqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=broadcom.com smtp.mailfrom=2n.com; dmarc=fail (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sXv8LCvY0wgtr9MminrtGUbRcLa8J+OJWxMUixNEWII=; b=naFWB5q34Z/ScMTuYKwEXDDifS41jmdLiwqKUX7AKa/vpkfghlCdw604UExEaVcmlBPGSBcU83BvL7J8Uh3xSPK8b+QjaiyxXFVGh5oNwv/rbJkVGe/F9RkPKFe3N94j26dqoaL7O9XIN5myNFJfYrYRSPBmgXa+ZuIg/uS4mME= Received: from DBBPR09CA0029.eurprd09.prod.outlook.com (2603:10a6:10:d4::17) by AM7PR02MB6420.eurprd02.prod.outlook.com (2603:10a6:20b:1c1::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.29; Thu, 4 Jul 2024 14:04:54 +0000 Received: from DB1PEPF000509E9.eurprd03.prod.outlook.com (2603:10a6:10:d4:cafe::c) by DBBPR09CA0029.outlook.office365.com (2603:10a6:10:d4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.25 via Frontend Transport; Thu, 4 Jul 2024 14:04:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=2n.com; dkim=none (message not signed) header.d=none;dmarc=fail action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of 2n.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by DB1PEPF000509E9.mail.protection.outlook.com (10.167.242.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7741.18 via Frontend Transport; Thu, 4 Jul 2024 14:04:54 +0000 Received: from pcczc3457tyd.2n.cz.axis.com (10.0.5.60) by se-mail01w.axis.com (10.20.40.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 4 Jul 2024 16:04:53 +0200 From: =?utf-8?b?S2FtaWwgSG9yw6FrICgyTik=?= To: , , , , , , , , , , , CC: , , , Subject: [PATCH v10 4/4] net: phy: bcm-phy-lib: Implement BroadR-Reach link modes Date: Thu, 4 Jul 2024 16:04:13 +0200 Message-ID: <20240704140413.2797199-5-kamilh@axis.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240704140413.2797199-1-kamilh@axis.com> References: <20240704140413.2797199-1-kamilh@axis.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail01w.axis.com (10.20.40.7) To se-mail01w.axis.com (10.20.40.7) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB1PEPF000509E9:EE_|AM7PR02MB6420:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e636ee8-9b10-41d7-6f9f-08dc9c3247d3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|36860700013|82310400026|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?JhhX47eH+8LU5/j3ZkpsIauXm7BlvrO?= =?utf-8?q?d14+tGzbDmbj7PIMa4fm2jC8LQcgP1RK2ZGkdkXXX8MyRe/NaMV31xFHO/m226LHK?= =?utf-8?q?ZdJksA9dJtr8DbeybrLyr//juS/Kpx1tprPFT5L7jQ9jd+7nK46RAlBPObi2tJgxZ?= =?utf-8?q?MTn7vQGwmeDL1mPdUyC8bmT90CBckc+JQohr/6XIKldvtnujEnhu1N054uu3/6uko?= =?utf-8?q?jiS0ykOwm0AtYgDcyNmlmSZlN89p74PcDkc1JKx9BFmbHtbS/OWB5fybEzVAx59JD?= =?utf-8?q?ft6oS3HstrpQp4Qg1bEod7aH6t/zuAnbASvMnW00utUoreohZ9G0oI3nNGJhX2aLI?= =?utf-8?q?rGeU9D3R992HdXqVVA2qoMQaAVhAIEpCo0b+/sx7Y2o0U8SKlaEFH2fL/+i3zlneF?= =?utf-8?q?H7auIyt3zA2bqV7STwiarW1mZsinLkbAWI78FVlM0LmGh2Ai5HI8VzGqwqGHAIqZC?= =?utf-8?q?grYFornDxPb0MK46WjxgSvwmLhGY6uxSlNH8L1YqX0dEmXvigAZ/UQ1gk+J5B9Ndb?= =?utf-8?q?5uJDCqVtC93y0ugEHLM5d0H7kBX+zByevMk8PwHrWSyF6BSobAxG+qRK7iudw5cXA?= =?utf-8?q?8s3J5Go5JQ/Dp8v5gunSR4mjH9y22ih1JitYNq3K018ZB64Mx2f4uJ186Q8zA2ys2?= =?utf-8?q?FqQTaGATAo+YlXAeur8DsNG07MgBWsSl/zqK51WUe8ZuHKC6c7yd1E8py6MM/0vXm?= =?utf-8?q?Z9tDPwyDFzwXdPUImrQVmaeeF4UpTPRjbtXvYUmN5TtcmulfHuGMPzAhpeTyurPVD?= =?utf-8?q?RQrkuJO9DysTBcJ+GQuYGK2Cb8fzxcbTuprPiBK2pTPqiycEm+ah1PNKkissfEWqp?= =?utf-8?q?Y8fy7JhqBd5ElQjvINUSFqLSt6Vn2YbYk16zDFlR1xwOfMTCLQvZQoyisbpebqjJF?= =?utf-8?q?40BAlZpMuyzVRUjwzwGQFw4xhQGLCCLzTZifQ+y3mI4igi2lmCxA7yXUL+bLSAhqp?= =?utf-8?q?aSfTRY9t8h5yTauYGePlBw0Il3F9DNhbTGwVIW0vzECdKDNoL9CJrrNlqPyqdD+p9?= =?utf-8?q?rpcCNfbvuxyDuUP3qnNEbHmumCjNv0ZQzCYfhhX0v//dyBN4AD7g53oVupfrVUfpI?= =?utf-8?q?WgBNp4QuFrWcm1sAQ/3FWFnRzLQz1KsqhVDnoF0XroZPP0jGY/vedIVAMdvB008Ev?= =?utf-8?q?a2B20Q4ssrDtRWUcJEllYVGggVu8H1f2Z/bFUlVZ7WA2HGm+uzH/vkSnQv1tENBow?= =?utf-8?q?BgrYRiKkLPHEX5L3EdHWrXhYa8j3wkpKc2wSqqI1VXQqim3wF2sDQVYSWsN2BMz5i?= =?utf-8?q?CCRJyD/YnCCjp1T72uUW4qXrk+JKZCVaUyWaNzVE3BR4lB6ITuRkLU1/JvsYrbUgX?= =?utf-8?q?BhV0x72rY2u3/B9rz94Ptd4CmQT/C6rXZM6jLH77D6IQXSXP9Mh6KuwF5L49ASrwJ?= =?utf-8?q?URKH0CmZIV/yrCyRnxraBlfLstheHx4+w=3D=3D?= X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(36860700013)(82310400026)(921020);DIR:OUT;SFP:1101; X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2024 14:04:54.6323 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9e636ee8-9b10-41d7-6f9f-08dc9c3247d3 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509E9.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR02MB6420 X-Patchwork-Delegate: kuba@kernel.org Implement single-pair BroadR-Reach modes on bcm5481x PHY by Broadcom. Create set of functions alternative to IEEE 802.3 to handle configuration of these modes on compatible Broadcom PHYs. There is only subset of capabilities supported because of limited collection of hardware available for the development. For BroadR-Reach capable PHYs, the LRE (Long Reach Ethernet) alternative register set is handled. Only bcm54811 PHY is verified, for bcm54810, there is some support possible but untested. There is no auto-negotiation of the link parameters (called LDS in the Broadcom terminology, Long-Distance Signaling) for bcm54811. It should be possible to enable LDS for bcm54810. Signed-off-by: Kamil Horák (2N) --- drivers/net/phy/bcm-phy-lib.c | 115 ++++++++++ drivers/net/phy/bcm-phy-lib.h | 4 + drivers/net/phy/broadcom.c | 405 ++++++++++++++++++++++++++++++++-- 3 files changed, 506 insertions(+), 18 deletions(-) diff --git a/drivers/net/phy/bcm-phy-lib.c b/drivers/net/phy/bcm-phy-lib.c index 876f28fd8256..6c52f7dda514 100644 --- a/drivers/net/phy/bcm-phy-lib.c +++ b/drivers/net/phy/bcm-phy-lib.c @@ -794,6 +794,49 @@ static int _bcm_phy_cable_test_get_status(struct phy_device *phydev, return ret; } +static int bcm_setup_lre_forced(struct phy_device *phydev) +{ + u16 ctl = 0; + + phydev->pause = 0; + phydev->asym_pause = 0; + + if (phydev->speed == SPEED_100) + ctl |= LRECR_SPEED100; + + if (phydev->duplex != DUPLEX_FULL) + return -EOPNOTSUPP; + + return phy_modify(phydev, MII_BCM54XX_LRECR, LRECR_SPEED100, ctl); +} + +/** + * bcm_linkmode_adv_to_lre_adv_t - translate linkmode advertisement to LDS + * @advertising: the linkmode advertisement settings + * Return: LDS Auto-Negotiation Advertised Ability register value + * + * A small helper function that translates linkmode advertisement + * settings to phy LDS autonegotiation advertisements for the + * MII_BCM54XX_LREANAA register of Broadcom PHYs capable of LDS + */ +static u32 bcm_linkmode_adv_to_lre_adv_t(unsigned long *advertising) +{ + u32 result = 0; + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT, + advertising)) + result |= LREANAA_10_1PAIR; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_100baseT1_Full_BIT, + advertising)) + result |= LREANAA_100_1PAIR; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_Pause_BIT, advertising)) + result |= LRELPA_PAUSE; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, advertising)) + result |= LRELPA_PAUSE_ASYM; + + return result; +} + int bcm_phy_cable_test_start(struct phy_device *phydev) { return _bcm_phy_cable_test_start(phydev, false); @@ -1066,6 +1109,78 @@ int bcm_phy_led_brightness_set(struct phy_device *phydev, } EXPORT_SYMBOL_GPL(bcm_phy_led_brightness_set); +int bcm_setup_lre_master_slave(struct phy_device *phydev) +{ + u16 ctl = 0; + + switch (phydev->master_slave_set) { + case MASTER_SLAVE_CFG_MASTER_PREFERRED: + case MASTER_SLAVE_CFG_MASTER_FORCE: + ctl = LRECR_MASTER; + break; + case MASTER_SLAVE_CFG_SLAVE_PREFERRED: + case MASTER_SLAVE_CFG_SLAVE_FORCE: + break; + case MASTER_SLAVE_CFG_UNKNOWN: + case MASTER_SLAVE_CFG_UNSUPPORTED: + return 0; + default: + phydev_warn(phydev, "Unsupported Master/Slave mode\n"); + return -EOPNOTSUPP; + } + + return phy_modify_changed(phydev, MII_BCM54XX_LRECR, LRECR_MASTER, ctl); +} +EXPORT_SYMBOL_GPL(bcm_setup_lre_master_slave); + +int bcm_config_lre_aneg(struct phy_device *phydev, bool changed) +{ + int err; + + if (genphy_config_eee_advert(phydev)) + changed = true; + + err = bcm_setup_lre_master_slave(phydev); + if (err < 0) + return err; + else if (err) + changed = true; + + if (phydev->autoneg != AUTONEG_ENABLE) + return bcm_setup_lre_forced(phydev); + + err = bcm_config_lre_advert(phydev); + if (err < 0) + return err; + else if (err) + changed = true; + + return genphy_check_and_restart_aneg(phydev, changed); +} +EXPORT_SYMBOL_GPL(bcm_config_lre_aneg); + +/** + * bcm_config_lre_advert - sanitize and advertise Long-Distance Signaling + * auto-negotiation parameters + * @phydev: target phy_device struct + * Return: 0 if the PHY's advertisement hasn't changed, < 0 on error, + * > 0 if it has changed + * + * Writes MII_BCM54XX_LREANAA with the appropriate values. The values are to be + * sanitized before, to make sure we only advertise what is supported. + * The sanitization is done already in phy_ethtool_ksettings_set() + */ +int bcm_config_lre_advert(struct phy_device *phydev) +{ + u32 adv = bcm_linkmode_adv_to_lre_adv_t(phydev->advertising); + + /* Setup BroadR-Reach mode advertisement */ + return phy_modify_changed(phydev, MII_BCM54XX_LREANAA, + LRE_ADVERTISE_ALL | LREANAA_PAUSE | + LREANAA_PAUSE_ASYM, adv); +} +EXPORT_SYMBOL_GPL(bcm_config_lre_advert); + MODULE_DESCRIPTION("Broadcom PHY Library"); MODULE_LICENSE("GPL v2"); MODULE_AUTHOR("Broadcom Corporation"); diff --git a/drivers/net/phy/bcm-phy-lib.h b/drivers/net/phy/bcm-phy-lib.h index b52189e45a84..bceddbc860eb 100644 --- a/drivers/net/phy/bcm-phy-lib.h +++ b/drivers/net/phy/bcm-phy-lib.h @@ -121,4 +121,8 @@ irqreturn_t bcm_phy_wol_isr(int irq, void *dev_id); int bcm_phy_led_brightness_set(struct phy_device *phydev, u8 index, enum led_brightness value); +int bcm_setup_lre_master_slave(struct phy_device *phydev); +int bcm_config_lre_aneg(struct phy_device *phydev, bool changed); +int bcm_config_lre_advert(struct phy_device *phydev); + #endif /* _LINUX_BCM_PHY_LIB_H */ diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c index 370e4ed45098..304ed78315de 100644 --- a/drivers/net/phy/broadcom.c +++ b/drivers/net/phy/broadcom.c @@ -5,6 +5,8 @@ * Broadcom BCM5411, BCM5421 and BCM5461 Gigabit Ethernet * transceivers. * + * Broadcom BCM54810, BCM54811 BroadR-Reach transceivers. + * * Copyright (c) 2006 Maciej W. Rozycki * * Inspired by code written by Amy Fong. @@ -38,6 +40,28 @@ struct bcm54xx_phy_priv { bool wake_irq_enabled; }; +/* Link modes for BCM58411 PHY */ +static const int bcm54811_linkmodes[] = { + ETHTOOL_LINK_MODE_100baseT1_Full_BIT, + ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT, + ETHTOOL_LINK_MODE_1000baseT_Full_BIT, + ETHTOOL_LINK_MODE_1000baseX_Full_BIT, + ETHTOOL_LINK_MODE_1000baseT_Half_BIT, + ETHTOOL_LINK_MODE_100baseT_Full_BIT, + ETHTOOL_LINK_MODE_100baseT_Half_BIT, + ETHTOOL_LINK_MODE_10baseT_Full_BIT, + ETHTOOL_LINK_MODE_10baseT_Half_BIT +}; + +/* Long-Distance Signaling (BroadR-Reach mode aneg) relevant linkmode bits */ +static const int lds_br_bits[] = { + ETHTOOL_LINK_MODE_Autoneg_BIT, + ETHTOOL_LINK_MODE_Pause_BIT, + ETHTOOL_LINK_MODE_Asym_Pause_BIT, + ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT, + ETHTOOL_LINK_MODE_100baseT1_Full_BIT +}; + static bool bcm54xx_phy_can_wakeup(struct phy_device *phydev) { struct bcm54xx_phy_priv *priv = phydev->priv; @@ -553,18 +577,105 @@ static int bcm54810_write_mmd(struct phy_device *phydev, int devnum, u16 regnum, return -EOPNOTSUPP; } -static int bcm54811_config_init(struct phy_device *phydev) +static int bcm5481x_get_brrmode(struct phy_device *phydev, u8 *data) { - int err, reg; + int reg; - /* Disable BroadR-Reach function. */ reg = bcm_phy_read_exp(phydev, BCM54810_EXP_BROADREACH_LRE_MISC_CTL); - reg &= ~BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN; - err = bcm_phy_write_exp(phydev, BCM54810_EXP_BROADREACH_LRE_MISC_CTL, - reg); - if (err < 0) + + *data = (reg & BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN) ? 1 : 0; + + return 0; +} + +/** + * bcm5481x_read_abilities - read PHY abilities from LRESR or Clause 22 + * (BMSR) registers, based on whether the PHY is in BroadR-Reach or IEEE mode + * @phydev: target phy_device struct + * + * Description: Reads the PHY's abilities and populates + * phydev->supported accordingly. The register to read the abilities from is + * determined by current brr mode setting of the PHY. + * Note that the LRE and IEEE sets of abilities are disjunct. + * + * Returns: 0 on success, < 0 on failure + */ +static int bcm5481x_read_abilities(struct phy_device *phydev) +{ + int i, val, err; + u8 brr_mode; + + for (i = 0; i < ARRAY_SIZE(bcm54811_linkmodes); i++) + linkmode_clear_bit(bcm54811_linkmodes[i], phydev->supported); + + err = bcm5481x_get_brrmode(phydev, &brr_mode); + if (err) return err; + if (brr_mode) { + linkmode_set_bit_array(phy_basic_ports_array, + ARRAY_SIZE(phy_basic_ports_array), + phydev->supported); + + val = phy_read(phydev, MII_BCM54XX_LRESR); + if (val < 0) + return val; + + linkmode_mod_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, + phydev->supported, + val & LRESR_LDSABILITY); + linkmode_mod_bit(ETHTOOL_LINK_MODE_100baseT1_Full_BIT, + phydev->supported, + val & LRESR_100_1PAIR); + linkmode_mod_bit(ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT, + phydev->supported, + val & LRESR_10_1PAIR); + return 0; + } + + return genphy_read_abilities(phydev); +} + +static int bcm5481x_set_brrmode(struct phy_device *phydev, bool on) +{ + int reg; + int err; + u16 val; + + reg = bcm_phy_read_exp(phydev, BCM54810_EXP_BROADREACH_LRE_MISC_CTL); + + if (on) + reg |= BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN; + else + reg &= ~BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN; + + err = bcm_phy_write_exp(phydev, + BCM54810_EXP_BROADREACH_LRE_MISC_CTL, reg); + if (err) + return err; + + /* Update the abilities based on the current brr on/off setting */ + err = bcm5481x_read_abilities(phydev); + if (err) + return err; + + /* Ensure LRE or IEEE register set is accessed according to the brr + * on/off, thus set the override + */ + val = BCM54811_EXP_BROADREACH_LRE_OVERLAY_CTL_EN; + if (!on) + val |= BCM54811_EXP_BROADREACH_LRE_OVERLAY_CTL_OVERRIDE_VAL; + + return bcm_phy_write_exp(phydev, + BCM54811_EXP_BROADREACH_LRE_OVERLAY_CTL, val); +} + +static int bcm54811_config_init(struct phy_device *phydev) +{ + struct device_node *np = phydev->mdio.dev.of_node; + bool brr = false; + int err, reg; + err = bcm54xx_config_init(phydev); /* Enable CLK125 MUX on LED4 if ref clock is enabled. */ @@ -576,29 +687,80 @@ static int bcm54811_config_init(struct phy_device *phydev) return err; } - return err; + /* Configure BroadR-Reach function. */ + brr = of_property_read_bool(np, "brr-mode"); + + /* With BCM54811, BroadR-Reach implies no autoneg */ + if (brr) + phydev->autoneg = 0; + + return bcm5481x_set_brrmode(phydev, brr); } -static int bcm5481_config_aneg(struct phy_device *phydev) +static int bcm5481x_config_delay_swap(struct phy_device *phydev) { struct device_node *np = phydev->mdio.dev.of_node; - int ret; - /* Aneg firstly. */ - ret = genphy_config_aneg(phydev); - - /* Then we can set up the delay. */ + /* Set up the delay. */ bcm54xx_config_clock_delay(phydev); if (of_property_read_bool(np, "enet-phy-lane-swap")) { /* Lane Swap - Undocumented register...magic! */ - ret = bcm_phy_write_exp(phydev, MII_BCM54XX_EXP_SEL_ER + 0x9, - 0x11B); + int ret = bcm_phy_write_exp(phydev, + MII_BCM54XX_EXP_SEL_ER + 0x9, + 0x11B); if (ret < 0) return ret; } - return ret; + return 0; +} + +static int bcm5481_config_aneg(struct phy_device *phydev) +{ + u8 brr_mode; + int ret; + + ret = bcm5481x_get_brrmode(phydev, &brr_mode); + if (ret) + return ret; + + /* Aneg firstly. */ + if (brr_mode) + ret = bcm_config_lre_aneg(phydev, false); + else + ret = genphy_config_aneg(phydev); + + if (ret) + return ret; + + /* Then we can set up the delay and swap. */ + return bcm5481x_config_delay_swap(phydev); +} + +static int bcm54811_config_aneg(struct phy_device *phydev) +{ + u8 brr_mode; + int ret; + + /* Aneg firstly. */ + ret = bcm5481x_get_brrmode(phydev, &brr_mode); + if (ret) + return ret; + + if (brr_mode) { + /* BCM54811 is only capable of autonegotiation in IEEE mode */ + phydev->autoneg = 0; + ret = bcm_config_lre_aneg(phydev, false); + } else { + ret = genphy_config_aneg(phydev); + } + + if (ret) + return ret; + + /* Then we can set up the delay and swap. */ + return bcm5481x_config_delay_swap(phydev); } struct bcm54616s_phy_priv { @@ -1062,6 +1224,211 @@ static void bcm54xx_link_change_notify(struct phy_device *phydev) bcm_phy_write_exp(phydev, MII_BCM54XX_EXP_EXP08, ret); } +static int bcm_read_master_slave(struct phy_device *phydev) +{ + int cfg = MASTER_SLAVE_CFG_UNKNOWN, state; + int val; + + /* In BroadR-Reach mode we are always capable of master-slave + * and there is no preferred master or slave configuration + */ + phydev->master_slave_get = MASTER_SLAVE_CFG_UNKNOWN; + phydev->master_slave_state = MASTER_SLAVE_STATE_UNKNOWN; + + val = phy_read(phydev, MII_BCM54XX_LRECR); + if (val < 0) + return val; + + if ((val & LRECR_LDSEN) == 0) { + if (val & LRECR_MASTER) + cfg = MASTER_SLAVE_CFG_MASTER_FORCE; + else + cfg = MASTER_SLAVE_CFG_SLAVE_FORCE; + } + + val = phy_read(phydev, MII_BCM54XX_LRELDSE); + if (val < 0) + return val; + + if (val & LDSE_MASTER) + state = MASTER_SLAVE_STATE_MASTER; + else + state = MASTER_SLAVE_STATE_SLAVE; + + phydev->master_slave_get = cfg; + phydev->master_slave_state = state; + + return 0; +} + +/* Read LDS Link Partner Ability in BroadR-Reach mode */ +static int bcm_read_lpa(struct phy_device *phydev) +{ + int i, lrelpa; + + if (phydev->autoneg != AUTONEG_ENABLE) { + if (!phydev->autoneg_complete) { + /* aneg not yet done, reset all relevant bits */ + for (i = 0; i < ARRAY_SIZE(lds_br_bits); i++) + linkmode_clear_bit(lds_br_bits[i], + phydev->lp_advertising); + + return 0; + } + + /* Long-Distance Signaling Link Partner Ability */ + lrelpa = phy_read(phydev, MII_BCM54XX_LRELPA); + if (lrelpa < 0) + return lrelpa; + + linkmode_mod_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, + phydev->lp_advertising, + lrelpa & LRELPA_PAUSE_ASYM); + linkmode_mod_bit(ETHTOOL_LINK_MODE_Pause_BIT, + phydev->lp_advertising, + lrelpa & LRELPA_PAUSE); + linkmode_mod_bit(ETHTOOL_LINK_MODE_100baseT1_Full_BIT, + phydev->lp_advertising, + lrelpa & LRELPA_100_1PAIR); + linkmode_mod_bit(ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT, + phydev->lp_advertising, + lrelpa & LRELPA_10_1PAIR); + } else { + linkmode_zero(phydev->lp_advertising); + } + + return 0; +} + +static int bcm_read_status_fixed(struct phy_device *phydev) +{ + int lrecr = phy_read(phydev, MII_BCM54XX_LRECR); + + if (lrecr < 0) + return lrecr; + + phydev->duplex = DUPLEX_FULL; + + if (lrecr & LRECR_SPEED100) + phydev->speed = SPEED_100; + else + phydev->speed = SPEED_10; + + return 0; +} + +/** + * lre_update_link - update link status in @phydev + * @phydev: target phy_device struct + * Return: 0 on success, < 0 on error + * + * Description: Update the value in phydev->link to reflect the + * current link value. In order to do this, we need to read + * the status register twice, keeping the second value. + * This is a genphy_update_link modified to work on LRE registers + * of BroadR-Reach PHY + */ +static int lre_update_link(struct phy_device *phydev) +{ + int status = 0, lrecr; + + lrecr = phy_read(phydev, MII_BCM54XX_LRECR); + if (lrecr < 0) + return lrecr; + + /* Autoneg is being started, therefore disregard BMSR value and + * report link as down. + */ + if (lrecr & BMCR_ANRESTART) + goto done; + + /* The link state is latched low so that momentary link + * drops can be detected. Do not double-read the status + * in polling mode to detect such short link drops except + * the link was already down. + */ + if (!phy_polling_mode(phydev) || !phydev->link) { + status = phy_read(phydev, MII_BCM54XX_LRESR); + if (status < 0) + return status; + else if (status & LRESR_LSTATUS) + goto done; + } + + /* Read link and autonegotiation status */ + status = phy_read(phydev, MII_BCM54XX_LRESR); + if (status < 0) + return status; +done: + phydev->link = status & LRESR_LSTATUS ? 1 : 0; + phydev->autoneg_complete = status & LRESR_LDSCOMPLETE ? 1 : 0; + + /* Consider the case that autoneg was started and "aneg complete" + * bit has been reset, but "link up" bit not yet. + */ + if (phydev->autoneg == AUTONEG_ENABLE && !phydev->autoneg_complete) + phydev->link = 0; + + return 0; +} + +static int bcm54811_read_status(struct phy_device *phydev) +{ + u8 brr_mode; + int err; + + err = bcm5481x_get_brrmode(phydev, &brr_mode); + + if (err) + return err; + + if (brr_mode) { + /* Get the status in BroadRReach mode just like + * genphy_read_status does in normal mode + */ + + int err, old_link = phydev->link; + + /* Update the link, but return if there was an error */ + + err = lre_update_link(phydev); + if (err) + return err; + + /* why bother the PHY if nothing can have changed */ + if (phydev->autoneg == + AUTONEG_ENABLE && old_link && phydev->link) + return 0; + + phydev->speed = SPEED_UNKNOWN; + phydev->duplex = DUPLEX_UNKNOWN; + phydev->pause = 0; + phydev->asym_pause = 0; + + err = bcm_read_master_slave(phydev); + if (err < 0) + return err; + + /* Read LDS Link Partner Ability */ + err = bcm_read_lpa(phydev); + if (err < 0) + return err; + + if (phydev->autoneg == + AUTONEG_ENABLE && phydev->autoneg_complete) { + phy_resolve_aneg_linkmode(phydev); + } else if (phydev->autoneg == AUTONEG_DISABLE) { + err = bcm_read_status_fixed(phydev); + if (err < 0) + return err; + } + } else { + err = genphy_read_status(phydev); + } + + return err; +} + static struct phy_driver broadcom_drivers[] = { { .phy_id = PHY_ID_BCM5411, @@ -1212,9 +1579,11 @@ static struct phy_driver broadcom_drivers[] = { .get_stats = bcm54xx_get_stats, .probe = bcm54xx_phy_probe, .config_init = bcm54811_config_init, - .config_aneg = bcm5481_config_aneg, + .config_aneg = bcm54811_config_aneg, .config_intr = bcm_phy_config_intr, .handle_interrupt = bcm_phy_handle_interrupt, + .read_status = bcm54811_read_status, + .get_features = bcm5481x_read_abilities, .suspend = bcm54xx_suspend, .resume = bcm54xx_resume, .link_change_notify = bcm54xx_link_change_notify,