From patchwork Tue Mar 20 11:40:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Russkikh X-Patchwork-Id: 888171 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=aquantia.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=AQUANTIA1COM.onmicrosoft.com header.i=@AQUANTIA1COM.onmicrosoft.com header.b="ViKJi0C4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4059xN3z5Vz9sW8 for ; Tue, 20 Mar 2018 22:41:12 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752813AbeCTLlK (ORCPT ); Tue, 20 Mar 2018 07:41:10 -0400 Received: from mail-by2nam03on0054.outbound.protection.outlook.com ([104.47.42.54]:60648 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752781AbeCTLlF (ORCPT ); Tue, 20 Mar 2018 07:41:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=LIFeSqIkkIya6QVjlykrwjuHPTkLRahHjVYjQoM6ES4=; b=ViKJi0C4Fqn+Mq5gCtYLG/9jsfbUUIqqWytaMmHKKIi5p3SWrJyLLYFpZTcU64hN9ISC42I6zUSQRpzkRqThzEiwMWkAazYV3vLTOwzgC8SonSOlvZnNSSrQev0OE4VI9pro5e9DF7tPlv6BSLllY0WHL2GbXZRqAlSy2nq+Tig= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Igor.Russkikh@aquantia.com; Received: from ubuntubox.rdc.aquantia.com (95.79.108.179) by BY1PR0701MB1660.namprd07.prod.outlook.com (2a01:111:e400:522a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.588.14; Tue, 20 Mar 2018 11:41:01 +0000 From: Igor Russkikh To: "David S . Miller" Cc: netdev@vger.kernel.org, David Arcari , Pavel Belous , Igor Russkikh Subject: [PATCH v2 net 1/7] net: aquantia: Fix hardware reset when SPI may rarely hangup Date: Tue, 20 Mar 2018 14:40:31 +0300 Message-Id: <48b166b41a93e03d084ab017c72c9aa34f3bddf5.1521544563.git.igor.russkikh@aquantia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [95.79.108.179] X-ClientProxiedBy: AM0PR05CA0017.eurprd05.prod.outlook.com (2603:10a6:208:55::30) To BY1PR0701MB1660.namprd07.prod.outlook.com (2a01:111:e400:522a::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 224522c5-70ca-4e1c-75e2-08d58e5775dd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(5600026)(4604075)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(7193020); SRVR:BY1PR0701MB1660; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1660; 3:L4StwgaMKu+S0n4Ksh3tJi5QtNojfdiqKGtkol/noBzDm9fv87SecLyaBzzkCiZVkueToAYzsmjVUW8xG3FYiLetDGkQOq0amQianaWI5iMZmMNF8ghwUCDOP7aw0RvHiWlBHewMd2lOD/RyLnBDDfXdRHqm11bDQ4WTm+vstZmyblx0Xy/lhRk37oiHqEUBs9lva8Mv71GSt7xns2ffojyDeVHug5kxtgZiinyI1whAYxnFWaoJsL3R9Dtb5LR1; 25:WJmw5T0v0SN6HvsDWGuLl1UV3sZKrH08IcAps8Oz63wJAZ4ESg7SzlFWWW0pZnSveY5rL+PmRV8B9hH/9IKl/GoPCVDyCc5p+CpnN3cfI4aAKwkH0KYPqBmkFoUYLrasWbLDNxYxG8KWW+qv1R2IF2adXPGesqy4UgRGEmqM/A50H2CzvHQgSV071n03oUyNuxG0sP3WJtrYxrlWFTxISW4Snr2d5wl57HitWlus4HeReY9MwIMxgBZNBcUlwt//wl2bO/jinzZyPTGKVo+X1022xkEO4dwO3TR2aGIs5M+6FsS5xp0V89Zon6Voablxqjwv4HLKR8DZ/AmBfTlyDQ==; 31:xb3ryyDOz/fRDGR2Xz9wNxc5RymPeNSOr9be848eM/IA+uqC7jBbJxU296VVXRaLCc48jyEHoJ6Czvy7eZ6Yob+wUqH7P87O65R+uhGI0nl8z6E9ZGfgeHB+9kKYWVKiRqPTFEJCfX5TcELZQQ7/+tMi5hjKIfdKPDZ+i91VeFZamUKlmYkuE7MJpECGhwmK3ZjXTXjsZLG27BCsWRJRv4hTOpglOmYjS2LUacZahDo= X-MS-TrafficTypeDiagnostic: BY1PR0701MB1660: X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1660; 20:RjD+O33iEWSzzDIXtqk248zxtSB/Cgwya6zxaX/3nTvPMkB20HpMgXRseJcuywC0JGnqwD6meNI7VeiR5GH7Uo38H/AI37defy6IGoKPDkqXFPCn3Co3nc9pHpqrfD3Ge/a6QHqXKU9rxHqHaK5ZT68+wZWZ+Yccmgt+e9kchSI6EF2daqsFxt10TjpnyTdqsutL99fRSeyjn3KjeR9VM3n0USZ7Zrze+cMlru2X9ebrsDm6j5ksh3Vf0Cn+SM4/E5tYkZkXhlDbTs5GN1/Bdjb+tROvYRmojj7qkOgAzd7D1CQnatD5T73wBYyzxWPV767UawGgwtoxASv/pIb/EAfSW7g/DOP2F0ri/OlKqGVNG7z4KyiqZMJHETy92ggAoMfn1qFytRW29XypRUP6/nOA2atbhvlS1uk41nz33gvFBgCH8rb0oSwIBrwzjgpSN04r7Gvbk6EPXM0ahELBG2eJuvpl/MrhStWDr1xdmGtvDTCmrm3LSec1C7CNXLyi; 4:r51ebx03ZyCHaEx/nL4HwtC0V84Q8VGUmFOxwEDvi1o55hYu43b0jebNAxfxCAcsE/1uDqvkqEC2pDeVDfk+vsVEJue/HSTNJuxTsJpNj/hq3nyUtpn0nlwMtsr+5MhdwxCJBsdOCQU/jdAKYxX/y3LIWmIudXwsWwf5DyaF94so/Gz0BoLq9CCCq0Cly1pWlKqkGxUPwkvHULsF60UaCTs36zvnFKDib6MWm4urjFfR6ANedlHArckwHdec/GOfihIMWZc+TCZTVI8l5TlXWA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3231221)(944501310)(52105095)(3002001)(93006095)(93001095)(10201501046)(6041310)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(2016111802025)(6072148)(6043046)(201708071742011); SRVR:BY1PR0701MB1660; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1660; X-Forefront-PRVS: 061725F016 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(366004)(39850400004)(376002)(396003)(346002)(39380400002)(199004)(189003)(16586007)(106356001)(551934003)(6116002)(3846002)(186003)(76176011)(6486002)(316002)(26005)(52116002)(16526019)(25786009)(118296001)(7696005)(51416003)(68736007)(54906003)(6916009)(6666003)(81156014)(72206003)(2950100002)(47776003)(50466002)(48376002)(4326008)(7736002)(50226002)(305945005)(478600001)(386003)(97736004)(81166006)(2906002)(105586002)(8936002)(36756003)(86362001)(66066001)(575784001)(53936002)(8676002)(5660300001)(107886003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1660; H:ubuntubox.rdc.aquantia.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1660; 23:y/i8fej9WC96UG0TfVHgHR9/+eGA7o2FgwsImEPJTnZNQDNeWmZ4z06ZvtoMzRzVkYyAGEEZn1KN3oZLKUMft/Fzn2kgS1HO9xDzbPvpnMAXpw0257cAfvKomkehFg+Zz0lHgdUxjS27cDEEvaYYkRXNGFJDbdJ0IHIv+07mKq02DcB2vNd+h4EM31txhmU5yckcGhWgcTfkt9l4A+BnL+1UQVPO94FX3njC4/AXPcNGcWfd/3eacmAVOXgTxayuDMQa7D3S0PhpX2Ckd0YLZXqpc9kWWCgjLUtlE4LV14G/or4STzK61E9DaWl5pyfSfMkJ+jQZmZPhty7WdOs8P22F9l96e2vF3X4xG9N2ziO1KOUgIJnpDD3HglzI2xfimQIUoBVV7BR58WZ6WWKj/9C+b/PmKKjxtbfELzuKvVZiIuHyPbXzksz+1pNiMNvTxrEt4bLpXJxfS/7+g4O+afgF+5qDA4hfVhBqrGsZlKJXq2tD6RWViFSxCQeQ3AfZj1PT25Y3lHWmb94cw15EbeU6nmgVjkYYMOvdW/sHnVAEkj7YvZLq+Ws7hlJY6EA2+LD8umctlpe61cjHNWMopih/ybtbM0Dw56dXgoxu7uWgkm0m1B/x1yfMPl13upEQzso+31qxuZPv9XsGxshW+uwOZ23MkCNGm2+RkTqJZgyu2HV51XDuWWOJIbcAzX3R8uuwzYWyTHG4Bd36A+ElLcmJZrBDu9ApLEOn5Cv6rXlrKF2CRORPafZgCCiS5v+Mo6Ep0M32+/RHiKGxepK4qMjAxj0dMfAZaUaVFxtS7mVTB7dUitRoneqKgLdySga250fQB3SvA642kvvlkTblV3uLr0bToyVonOOLjsfRBVHHxippJXX3ETHGKHLV3FFc9bqLDYWB9YJ3tnXYzeumUyFdmlHCVA4G439SimQFy+aoXqGA7F8BZuBrznx9CTaenn/hpFNClsYgdLvHGmMQX/zc9nlLClP47U+mXzmnP3Axy5vkYWsQsIj1sx165ZhX4m6/366m/n3FkciEOQbKe6Z+ZkNKVc+b1OvuURme6vfnYVK75nH5er0J4tyCWafMnzchubsxpkYIwt99bzIwqwZBDBbSPBw3OqE7bwdUt4rbeIMn3oDZFWLTHpPLTNKaMdp1uJTLAMxYshcY8R0U7pSdUA6QtXRGOGPqlWC+s68eZ/AmSICg+WVgvXxlOAwBRzWLoxWry7ThpjxeL7BhFsWkqMmDJyRUdBTZZ/f5CHCn3csgt14adGQg0t6MvgSteDWqGsX/91pSfH9MnkafHIugS3Lalt00uYo53xq1Ua8= X-Microsoft-Antispam-Message-Info: Ta5w3bLCfs95vLFmeP42hcaL/CYb1ZfbO9BXcXFuSTQtqRWl5YRcTHMR6rBzmoKRRZdQ/P60ZfYfjluT4Pg47AVzc24cp82frA9R/IpeQEAuzJkZFmiW1lP24iylp6+W2d5/TsTUbpjigeRN/0WGRrLbQhj4T5l5EZ9SJDoaR7HR4RGlcXtu6ssCOIFzLDBf X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1660; 6:T8Pd56ebrNYjbEcy9NGsagQW3thhaiW0FGqMqvF7UQUs5Kruxh/Q8c6JCh+vnwtR5VsqTI82fqKy1gcbH1qwBIm84WVGfUx07gwktGwpwfk3k5t1m8Iz4Nj6CsYuMTWd4l26TTuTZyy24zNrYu0/grpujOZvuum+MYSBkZBC0Oz8KQTtociNsN4Xa1YMR2a706aPGZepdUau0lU0ANFbV3+K2VhWQH02VC08fWncT12bQQP6jwFyu+lTKAbhzB2MocQ+uP5YDSol+4M+AnkExVsNirRfPZTi3MpOCxHHzt81mXtt6uvz9GDaQdTiDm6t7R9Hlwehof359LwsnZEfEI0HSEw9c0bZiaPsjHpUzt0=; 5:OPh5ab1PmvbSVw6Ns43NWSfAPs+8ok5LNCIz5v5awLZyV5VO7eqy243eX48HNh91zKzYjLp0qTtO/D3nRkdiyNOS3H8kxnh+4VlbOEcZEkQIQgHJRD6jIluqP3Pbe4hcqB/1h8TL7kwGFMfdVw8/I55cUKSxhxoDAHmzaCld8PU=; 24:976Lu+quEQH8XQ0KgzCRgMNBrUXnQVDmDljE0MUMMb12Sojd+KWQ3YKtYVDMNqYHcyyFC3kbDzBXfE8v1jL5vF5RpT0ZS5mYhs1+XTA7f54=; 7:NC91iLTn+kiESEQl01srPIL9SKoSNBqJyJaj3ch0LmkevWn5ijKjSadkgZFEpyh52/oGMIyVf6T53UdXghwGBghfJ5tZKfLoj8fnSW6XHRwmdfi2wawaA6F5erLb8pyehEa43m++9MSO7DLCKC3WkD4zWH8XDD8ra2HXV098U/0IFX55haidJJVXZ9rrB11X/zUq6n8LK8nR6RPpFiwFBQiBIQhkcjQ+BKLlUIjBP5Y7tgRIEo+uQJJGJmRqqzMM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2018 11:41:01.8538 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 224522c5-70ca-4e1c-75e2-08d58e5775dd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1660 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Under some circumstances (notably using thunderbolt interface) SPI on chip reset may be in active transaction. Here we forcibly cleanup SPI to prevent possible hangups. Signed-off-by: Igor Russkikh --- .../ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c index 967f0fd..fcb3279 100644 --- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c +++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c @@ -79,16 +79,15 @@ int hw_atl_utils_initfw(struct aq_hw_s *self, const struct aq_fw_ops **fw_ops) static int hw_atl_utils_soft_reset_flb(struct aq_hw_s *self) { + u32 gsr, val; int k = 0; - u32 gsr; aq_hw_write_reg(self, 0x404, 0x40e1); AQ_HW_SLEEP(50); /* Cleanup SPI */ - aq_hw_write_reg(self, 0x534, 0xA0); - aq_hw_write_reg(self, 0x100, 0x9F); - aq_hw_write_reg(self, 0x100, 0x809F); + val = aq_hw_read_reg(self, 0x53C); + aq_hw_write_reg(self, 0x53C, val | 0x10); gsr = aq_hw_read_reg(self, HW_ATL_GLB_SOFT_RES_ADR); aq_hw_write_reg(self, HW_ATL_GLB_SOFT_RES_ADR, (gsr & 0xBFFF) | 0x8000); @@ -97,7 +96,14 @@ static int hw_atl_utils_soft_reset_flb(struct aq_hw_s *self) aq_hw_write_reg(self, 0x404, 0x80e0); aq_hw_write_reg(self, 0x32a8, 0x0); aq_hw_write_reg(self, 0x520, 0x1); + + /* Reset SPI again because of possible interrupted SPI burst */ + val = aq_hw_read_reg(self, 0x53C); + aq_hw_write_reg(self, 0x53C, val | 0x10); AQ_HW_SLEEP(10); + /* Clear SPI reset state */ + aq_hw_write_reg(self, 0x53C, val & ~0x10); + aq_hw_write_reg(self, 0x404, 0x180e0); for (k = 0; k < 1000; k++) { @@ -147,7 +153,7 @@ static int hw_atl_utils_soft_reset_flb(struct aq_hw_s *self) static int hw_atl_utils_soft_reset_rbl(struct aq_hw_s *self) { - u32 gsr, rbl_status; + u32 gsr, val, rbl_status; int k; aq_hw_write_reg(self, 0x404, 0x40e1); @@ -157,6 +163,10 @@ static int hw_atl_utils_soft_reset_rbl(struct aq_hw_s *self) /* Alter RBL status */ aq_hw_write_reg(self, 0x388, 0xDEAD); + /* Cleanup SPI */ + val = aq_hw_read_reg(self, 0x53C); + aq_hw_write_reg(self, 0x53C, val | 0x10); + /* Global software reset*/ hw_atl_rx_rx_reg_res_dis_set(self, 0U); hw_atl_tx_tx_reg_res_dis_set(self, 0U);