From patchwork Fri Oct 14 11:40:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Raju Lakkaraju X-Patchwork-Id: 682222 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3swQg24YNRz9t0t for ; Fri, 14 Oct 2016 22:41:50 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=mscc365.onmicrosoft.com header.i=@mscc365.onmicrosoft.com header.b=Mb+8gO4D; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754648AbcJNLlc (ORCPT ); Fri, 14 Oct 2016 07:41:32 -0400 Received: from mail-bl2nam02on0066.outbound.protection.outlook.com ([104.47.38.66]:58511 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754574AbcJNLlO (ORCPT ); Fri, 14 Oct 2016 07:41:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mscc365.onmicrosoft.com; s=selector1-microsemi-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=CxZRZYgm+OjxbfqxWXSW6B/oRG+ACQWBNWKBq+m+zTA=; b=Mb+8gO4Dq7YM4FriOTeTqQttA0tJsLeKFqiQQ5MTa9u4dVTkTcfwIWl9De8oQfRhVil++3dTxY2L4+0v4ebArsOqCrNSLGUZkdInAY4giAc/9I5FZUCkKCmMQMLnkkqij8Tb/L8GmJtEjeVhteHMV477lno42AeeznNoeO9aus0= Received: from BN6PR02CA0063.namprd02.prod.outlook.com (10.175.94.153) by BL2PR02MB2004.namprd02.prod.outlook.com (10.167.96.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.659.11; Fri, 14 Oct 2016 11:41:12 +0000 Received: from BN1AFFO11FD013.protection.gbl (2a01:111:f400:7c10::198) by BN6PR02CA0063.outlook.office365.com (2603:10b6:404:f9::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.659.11 via Frontend Transport; Fri, 14 Oct 2016 11:41:12 +0000 Authentication-Results: spf=none (sender IP is 208.19.100.21) smtp.mailfrom=microsemi.com; gmail.com; dkim=none (message not signed) header.d=none; gmail.com; dmarc=none action=none header.from=microsemi.com; Received-SPF: None (protection.outlook.com: microsemi.com does not designate permitted sender hosts) Received: from avsrvexchhts1.microsemi.net (208.19.100.21) by BN1AFFO11FD013.mail.protection.outlook.com (10.58.52.73) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.629.5 via Frontend Transport; Fri, 14 Oct 2016 11:41:10 +0000 Received: from xrelay.vitesse.com (10.9.45.188) by avsrvexchhts1.microsemi.net (10.100.34.105) with Microsoft SMTP Server (TLS) id 14.3.301.0; Fri, 14 Oct 2016 04:40:53 -0700 Received: from localhost (swlab-raju.vitesse.com [10.9.60.119]) by xrelay.vitesse.com (8.13.8/8.13.8) with ESMTP id u9EBekxO023366; Fri, 14 Oct 2016 04:40:47 -0700 From: Raju Lakkaraju To: , CC: , , , Raju Lakkaraju , "Allan W . Nielsen" Subject: [PATCH net-next 2/2] net: phy: Add Fast Link Failure - 2 set driver for Microsemi PHYs. Date: Fri, 14 Oct 2016 17:10:33 +0530 Message-ID: <1476445233-26524-3-git-send-email-Raju.Lakkaraju@microsemi.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1476445233-26524-1-git-send-email-Raju.Lakkaraju@microsemi.com> References: <1476445233-26524-1-git-send-email-Raju.Lakkaraju@microsemi.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:208.19.100.21; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(428002)(189002)(199003)(6666003)(50226002)(626004)(4001430100002)(229853001)(76176999)(57986006)(7846002)(76506005)(81166006)(105586002)(50986999)(97736004)(47776003)(305945005)(81156014)(356003)(4326007)(11100500001)(50466002)(5001770100001)(68736007)(8676002)(101416001)(69596002)(107886002)(586003)(19580395003)(48376002)(106466001)(2906002)(36756003)(5003940100001)(19580405001)(8936002)(86362001)(77096005)(92566002)(5660300001)(87936001)(189998001)(2950100002); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR02MB2004; H:avsrvexchhts1.microsemi.net; FPR:; SPF:None; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD013; 1:HN6wno0MGIq8r6wgCBOcfrdjsqrjLOlE09y3dQsLTD6wgRqZaUbUgist5RWj8ATLNChavsKE7arT/pTYqjNVFMUcGrIFoOej8EMnkQhHfYK2Hvi1MxfMdka1jdvTQqjANJdB4ya222FwwLo4+9fgGolnQX0COnp69vp9lvmTkcHA/jGxOBXRKv7LFQyXz+OXkDtp5XT/P4bHT4zxKLGL19BroAlbXgRiAHh/5nl08TNvuLv+/OLEgBFaS5AcsxQ4zmtD3hQNWtrlZvbZvz6DIix212eeSZaT5Q7r89CAmAraYypsoBQGMJJwra2yxDT16dFGoegPvxM4pzCtkfASJ6tvYu+5FHJzhV8SEQ9CRPg+QAPFNEMOacFvrSmp6uRib5Vj6faJmAwNkust2ZpYq2XZ0vimEIci8AJ8zV3iimQRF3Z2wTaPhJEdSXlRD3esipjxm+VdW+FjY1Gdd6haHHH3V16XxvDqfNbvioQz9o5SDXQaVN2T9RN9MLToKd8gbdmaDmCiLxLAww+UuSIBro+edPitvZbT8DKpvQu7zptLIYdyzo7ynxjqaJjlCFMI X-MS-Office365-Filtering-Correlation-Id: 5e985dc5-308c-4166-70e4-08d3f426ff53 X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2004; 2:dPPQfsr/9Krpat5Ve4GBYO6SwlTsNqOZyuYCYR/k8RF97DTE51sQx7ylR4fwGISWhdsCVfMrLfBpnaY3tZ8ZnLUpej8EgM2tNPIkBDYIZGIOFt6K7tsa/PCgOWqNCXVGPSLvBodBpPhh8zFmt1we7qOlY8TyJwUFHXpWnuBrYmweVXULliOGgt71v9EILmtJ1xqyyzk1aPNNEDKeFdjy2w==; 3:q1ZKQ4485gAz+SY51lKkuVj3ZshxmM+1mj2GfO4uLTuUHb4kmijGev1slTILj4U5PsuPa/FXvW8DafidR4R5pXRA76lDH8ZLAL9r3nPYsE6Inb3uqA8wVLNqY5WfnVADzfGgyAj5aqGxmSCxlIuHUUZyoxSE0eqw/EM+O+WPBJAJCycSnqu45wsMtEO4HGqY1MKs+sB3THUvJbhCD3o13DDIBxAtqsO8qIWNdE/ERBF5ziJz5JJedrG14/CbHAFz X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR02MB2004; X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2004; 25:7dq5oKKGi9MI8hyh0FxfSMXn85m/PgO3M5J/PjKk/WZU4jr5o3F1o2Utlx4yOoKF6BvJE2Y983DSfffPZhHaLMFxoiG1RTtOKNZ7YO8awi4YTeBv3hUQWXw7xch9JiLMy/SA8no7M3GlxbnCqIKIB9iyK6GDNYhestGsotFsCxRvK960pNsNpkS6hYk18OBxmNHLvMlS8XCjclClc+BjYbGKwaZnR0NrV4Xp4hblxoNwaEOa+kpxYoAVRn/eFRqJoPScKOB9PTkoTDEzbf61IWzntjj/0zX0ugK/bUfy2eAsJtJj8uXvDDIRqxbJ617mme4+kGpxpGu4N+MMsG2KSWTNsVzo//Z3Xtde/ngymNSHR+U32B2y9WZ/a8N+FOKOAhkiBlJZZj5P3pMG19wi//61YaTLKnQeCWUT4xwJX+AJA5RFTTFqGGcHeC+jHj0GR+BgUu4JGWHIdwpeRcJvjv70fz/QTndq02MYjDpMiABUEKsGDICu2MaLWoWF+mHcptap8Qi0wnPrVVooU+ZEXSAEBXZETWhCmZk6jm316Fz4LzOFYOw5Zn7MfmFCr/eKAraXiY9v9zVmBqwnwtdNO/dp6SYZF7Z0zC9yjQnyRmWJ3ZDSDdwLT9YAyZstsCU0AVtwUykuLQCrsDYEm41jhIkZrVQL3rn3bRcnOt0GM6ZWbVMpy2FPwZFgKIKohXJR28Om1nBgoDkZwiuMz6gJHZlBUwHAJiGnEcX9VqC45iGzOI8K0n3oNNK5WzMOykuhwAUeg9rrgyEHUDnZVPS1BCFpZK37P1UkAJqtE2GI8Hw58+gKoxRah1LSAa3iG64O X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2004; 31:Sy9952A/itV3nv2cY2eb25SXkiKzfj0uqCKKQTCmXZI95O+Bos31CfV96ogLw/Nr3J7ViKzessS3hRt6qtvn2KbEcqRclXJMyQ3b3gtAxUkAat7NNyv1FyM4w0NWof27tDheUptnoONwcdE9Y9hWfNmfIX4DU3Iot+R4p/8uHiF92Hytac3AmwyPVOzBvYMjtakKZUC28LzFGfe8lbvGoXccNKGikzGoHH0EJ8V4yzjKIlr2u1hvrCvCahChIoXr; 20:uiJnb0MZRRoMGRmdZzrWefFAvG36bIbenRHN9iVIkydD909ZAlvzGxh2ikwOjWvxjHlDN0diwjgIChRiuEXQaXWdiQowNgl4e54ysIcSv2dEhH9lsBkeJIgW3RP/Ei7yCBNi9D24TYnPMh2FqJKKvVvRykN4BTXg9EUKJ0VQnZKFoyIqUarchEKCfel5KWFW2FGvQeihTFXYBhZlhDA91OxhX3Cen8BF3xM8KjOmgu2t5y4cXpAGnl94R+f3Dgi+/IP9U56X9ePsRoCoYDeHvINrjV6BHE6hY7mn9/99u/Pr4rDMzCzbe9634ZcbK9BPrauM4UNEhBmMfdYHHTlFbBpPF+0B+wuGzBdE6XvhgQtlxYgn6LXKo61oO7nMdkqIyiEuuM5mKvCuyJSi6zi5x8r/VUDL7wnuGUh9sCssaMc2PTC+dOWVJauyLivi3NQLSz4VwQ39IKBuWv8oajcn/Dcy1H7AZvi8cF/C5Yt24i+R+PyNyfDG55IaTY8seNhL X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(72170198267865); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(13018025)(13023025)(13024025)(13017025)(13015025)(10201501046)(3002001)(6055026); SRVR:BL2PR02MB2004; BCL:0; PCL:0; RULEID:; SRVR:BL2PR02MB2004; X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2004; 4:6gpJdsrC0QMGj7mfvnWfR2ZGyAokAMJUyAJxp3gcUIe4FRSDF6FZPjMFScSUZj1RLB56Rw/wmH//UMRHI200e76OTExQvkWDn96Qbhw50vMxPG6kxOz4BBs7iKAnkxcGwCvJkqBLssfzd8tg8MiJANpep+kkrfhmGaKCaGZKQYXYanH5/m8KTKvrRJrOecUiSgVhBatzMCkOOr9D/lO2yAYvd/NChoPA+05Y1UOGCgaaoFhIMK2WnlQi4iidWtBspBovcQNT5Y50JmeqaVrdwTFAswuW938L3qx9dkoT64TJH/CwanuncufaQy+/0G3OWYyWWtX5uKSV9OtZSNAEwiOwnWFABcoGTrXNu92ZhO1/9YQLTkXYet8ce+rAwkLA3foVFcajfdWkRLsfyqNc5o8MMhuxAYhr4FBtWUUE83U1nQL7bWZiAo1ImBy5dOaeI0U+WH+1+M3KUQhQWoQiEF/dcTx1gr+Z9mgQuU/BJF7j9Yv7sjJ75+WeI9EgeGDvWn5xWyzSDKh9fJ3hVB9/w3pgUPkMgOsA8XF5pauefhUqEMsZR7E0uJc7JxTxPuHB X-Forefront-PRVS: 0095BCF226 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR02MB2004; 23:cVLlqYeKK82mDe92a6lDSIjpaguWr+KKSqe/GoqX1?= =?us-ascii?Q?YawV4+Vk5upEDYyNIH7dcxU0r7XUH2cw69mMhwdtFmjgP8ZYiQpiPTi2dZc6?= =?us-ascii?Q?ace7isIf+C49KQCOigKW+02yas71Z1steTzEGhqbtE9ISPj2LGI5P0dV3zsC?= =?us-ascii?Q?BDxBTBGFXz1UF0W1ix1SzM9OXOwqFRFy9zjvHfv3kUcl5EVkT5Pwn2xbxvhn?= =?us-ascii?Q?p/8fJ4ZoX8tID1bQElzVS84F0TBEAMVC6eGB9Y09jvAEBjrhXt5nvFEXzoVn?= =?us-ascii?Q?4ErpRUfIKcpSKZ1lmeedp6gK7fchyIXZDV73ZFlBFIU8z0MdMUSoHDAH9Jwv?= =?us-ascii?Q?6GLtvLlc+05bVFGq0QlsdQLjwsDXEoTZlcW0dZp4x8qd/ibjoA35maFEmzY+?= =?us-ascii?Q?tQxwbKKFGeadlfQiMBG9CtKdDrFANEpKiXjY9+3HKsMosAXplR/52Twy93NG?= =?us-ascii?Q?EAD58KL69nx/KegYmAUYLKYDnXlPUo58ImFKFvYoeTwJInKy7at/FUaWzIns?= =?us-ascii?Q?C6FltRrC3vbl3hLsqZ1CUqQtJRqdnxPaSLsf397SvsbMphq2NCa1GhB8K02x?= =?us-ascii?Q?P32k6CE57m+gPDQ3beo9Y+6yfFDl+sa5cmifY+bk2h+QBpHe0NN8drFRMWTy?= =?us-ascii?Q?3IpXfCVL/gAR2dihUIr+8x7uSIaCAO8ElXYAI5S2MKtOfdTRCiO5r3alJ5qp?= =?us-ascii?Q?NislYE5rzLibN0fpgDHSuOIH2drK6Sqj9B/sbbEMPZgtc7h0N8mn01Iuymat?= =?us-ascii?Q?xw7euI6vjr7FilPiXZnUQDuTjLGGxyTpX6UdlqO+PuwbP2EXaY+IxY3PxFY4?= =?us-ascii?Q?cTDwAiU+FQPKkCubSCIp3lUUY58plhnR8+uPBlzE07KbAqDlObX4ci8jhUqF?= =?us-ascii?Q?H7nYtLKWHDy85GQWr1skY02jKUxApVDe30382oiC6TF8WrOc+2XBRyffmtn7?= =?us-ascii?Q?VM+JlIHJZH75g8fN0p9RZR7e92rGpUCYxCDB6qUcR3PiTRxu32F1I0Dquskz?= =?us-ascii?Q?QJoCCSmSZwDfcu5tUmHqiGvVRXU1g8LSFKeuowLnI9HKP6PJaZEDE3klhKLD?= =?us-ascii?Q?+5c+DiUzBlSkA7jLwu0RSLAZplnbykcHOL02RsKzmRQ4rt8BbhwKVfWZ81QU?= =?us-ascii?Q?y4Psa5YsU8Mnm2W2S3FDVtMXrpgZyBDtFesdTQWuN7fbDpR9WYXyYpfJHvcT?= =?us-ascii?Q?NX+t3WmUv4Zgv8=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2004; 6:WpgDzEAI7CT8HmWNmUWsvXnRsDvrirQlIiGOyLnWtw8XYKuSu+XAr+GLJpYNMV16kZUkQ9Zr37xQG+AFEWk4d7I6lE8SC3PVifpYJ/K/fQXp7vYK6Kqea/pai8FvbeAwXyT6azAGtuVFgqVjUZr6Oh5QEByi1Z3zOVUj45aqIcnJkBoEvJ/XZcExhiG8+jY8r7zGec8QqXEAyc0K3HKEmQgHRGV770Zqw/Ytmu2C2ttNvgo640B4n5BK4uEqY/wKyvdwc4xBCXBGfxcFrnXaTaSTYofWMe2iqQbK6KlxE1C1BhxRtrrybhB/dRFPCUp+/lv3ogBGDoGiDCQFeAf2Ow==; 5:qa5Xf/1tWyVxKKabFrDDFlJ6pkuc0dGa6kNbgPl89RVR1vhkC0q/lC4qabJQkEc6bF6mxtKfFg/PUbQN5U22MgQDOfUsGohndDbQLEnKkMbM/Wjjj5lpDZZz6o5jS3dY3O27kt4ReDBATiutJZDPAg==; 24:Eek3F7wX/Sp/L9BuD/2p1TaAPDHxBNAD8atsPEoE9adxsznY4BhsjzAqFXVDYLvHXuA6cDtqjee7yziULYKA3HEgBqaCodgAW2+i+zg+Tho= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2004; 7:JqUHs2tBqk6NBpnwXxGqlFksasxPsfCFlbS/EzfJq1X7dExo5NQdAnvhhVY8te5gQyWm2e7PsWOoT/CDxNNAnhrs9MyBOBMxffBdUDwaf3ymFohTMg8GAjrls8LlAEJQublkJQVFzDjkhyoC+QmUA4UhSNesj+3oAoDqIMAwYfuqwoSUNXLw4NEkmnaIyhPomJ8VGlKN6ju8gmWKzYDbe+EYCuP0RXP0BNBd25B2Kgx1qyQ339c3QVZrBxm0Hwj2c487ibo58aKXri1OLUNNycpcUJgju2ZHqLKE5dZJxiF4msbEcEJR4mV+uI5QHpiOpmKE83TRPuxPqwtq61od3ZlGLZnBtbU+kr5yj1sG76o= X-OriginatorOrg: microsemi.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2016 11:41:10.3833 (UTC) X-MS-Exchange-CrossTenant-Id: f267a5c8-86d8-4cc9-af71-1fd2c67c8fad X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f267a5c8-86d8-4cc9-af71-1fd2c67c8fad; Ip=[208.19.100.21]; Helo=[avsrvexchhts1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR02MB2004 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Raju Lakkaraju VSC8531 Fast Link Failure 2 feature enables the PHY to indicate the onset of a potential link failure in < 100 usec for 100BASE-TX operation. FLF2 is supported through the MDINT (active low) pin. Signed-off-by: Raju Lakkaraju Signed-off-by: Allan W. Nielsen --- .../devicetree/bindings/net/mscc-phy-vsc8531.txt | 6 +++ drivers/net/phy/mscc.c | 45 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/Documentation/devicetree/bindings/net/mscc-phy-vsc8531.txt b/Documentation/devicetree/bindings/net/mscc-phy-vsc8531.txt index 062d115..472fc68 100644 --- a/Documentation/devicetree/bindings/net/mscc-phy-vsc8531.txt +++ b/Documentation/devicetree/bindings/net/mscc-phy-vsc8531.txt @@ -32,6 +32,11 @@ Optional properties: after a 'downshift-cnt' of failed attempts at 1000BAST-T. Allowed values: 0, 2, 3, 4, 5. 0 is default and will disable downshifting. +- flf2 : Fast Link Failure 2 (FLF2) feature enables the PHY + to indicate the onset of a potential link failure in + < 100 usec for 100BASE-TX operation. FLF2 is + supported through the MDINT (active low) pin. + Default will be disable flf2. Table: 1 - Edge rate change ----------------------------------------------------------------| @@ -66,4 +71,5 @@ Example: vsc8531,vddmac = <3300>; vsc8531,edge-slowdown = <7>; vsc8531,downshift-cnt = <3>; + vsc8531,flf2; }; diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c index e87d9f0..57bd628 100644 --- a/drivers/net/phy/mscc.c +++ b/drivers/net/phy/mscc.c @@ -57,6 +57,7 @@ enum rgmii_rx_clock_delay { /* Extended Page 2 Registers */ #define MSCC_PHY_RGMII_CNTL 20 +#define FLF2_ENABLE 0x8000 #define RGMII_RX_CLK_DELAY_MASK 0x0070 #define RGMII_RX_CLK_DELAY_POS 4 @@ -83,6 +84,7 @@ enum rgmii_rx_clock_delay { struct vsc8531_private { int rate_magic; u8 downshift_magic; + bool flf2; /* Fast Link Failure-2 Enable/Disable */ }; #ifdef CONFIG_OF_MDIO @@ -107,6 +109,33 @@ static int vsc85xx_phy_page_set(struct phy_device *phydev, u8 page) return rc; } +static int vsc85xx_flf2_set(struct phy_device *phydev, bool op) +{ + int rc; + u16 reg_val; + + mutex_lock(&phydev->lock); + rc = vsc85xx_phy_page_set(phydev, MSCC_PHY_PAGE_EXTENDED_2); + if (rc != 0) + goto out_unlock; + + reg_val = phy_read(phydev, MSCC_PHY_RGMII_CNTL); + if (op) + reg_val |= FLF2_ENABLE; + else + reg_val &= ~FLF2_ENABLE; + rc = phy_write(phydev, MSCC_PHY_RGMII_CNTL, reg_val); + if (rc != 0) + goto out_unlock; + + rc = vsc85xx_phy_page_set(phydev, MSCC_PHY_PAGE_STANDARD); + +out_unlock: + mutex_unlock(&phydev->lock); + + return rc; +} + static int vsc85xx_downshift_set(struct phy_device *phydev, u8 magic) { int rc; @@ -412,6 +441,10 @@ static int vsc85xx_config_init(struct phy_device *phydev) if (rc) return rc; + rc = vsc85xx_flf2_set(phydev, vsc8531->flf2); + if (rc) + return rc; + rc = genphy_config_init(phydev); return rc; @@ -449,6 +482,11 @@ static int vsc85xx_probe(struct phy_device *phydev) int rate_magic; int downshift_magic; struct vsc8531_private *vsc8531; + struct device *dev = &phydev->mdio.dev; + struct device_node *of_node = dev->of_node; + + if (!of_node) + return -ENODEV; rate_magic = vsc85xx_edge_rate_magic_get(phydev); if (rate_magic < 0) @@ -466,6 +504,13 @@ static int vsc85xx_probe(struct phy_device *phydev) vsc8531->rate_magic = rate_magic; vsc8531->downshift_magic = downshift_magic; +#ifdef CONFIG_OF_MDIO + /* Fast Link Failure 2 */ + vsc8531->flf2 = of_property_read_bool(of_node, "vsc8531,flf2"); +#else + vsc8531->flf2 = 0; +#endif + return 0; }