Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3719346pxb; Mon, 24 Jan 2022 16:15:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJziNe6D0GkTLVfZIUD9w4yDL24wuAOGiNhhSZ04LWrhdzUltpsCRAIlEft1V0fCWjbOQpqz X-Received: by 2002:a05:6a00:1a94:b0:4c3:a8f8:1e46 with SMTP id e20-20020a056a001a9400b004c3a8f81e46mr16522674pfv.2.1643069717993; Mon, 24 Jan 2022 16:15:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643069717; cv=none; d=google.com; s=arc-20160816; b=xm/91Ul0LrvG1ssS848ua+lGZ79TiDzNdGHCzOA9i4cWv6mQBPTHkigJ/dokpiVOBh OBvrB0ZvmFeppUCahrgh9yw7AiRY0XDno8nrB5+u4el9fN+u8v/H00gf3IoKQrxMIIwa UwmWZdgqTQTUejiAx03Yfjw7SRZadOZb1/ArlM4txD/XqB2CLKFAjegXLqcQzPaXy2+m ddbrKx7Lb21z580KbOqSJsovljwWms1zNpCNm99uhY92uWPB1y4/rh+BhSYdH2StRsau RYE1vWd7kshrE6XVENViBrD+QFdWxDHWQvfrAHVvBV+qztXblBcSgVZcHPFPqEEyXhWL b/WA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=x9OheLk3jZIo9i+IOiMGnHKQykEnXyFS3VE8q5kkge0=; b=af3h4MIuV0aXZAqVqDtuF4EV4a9W/kvik1SFldnq0V/54vTsOVrB0UH/DFDgd5JwAD 55Ka8QJKuHKcnFdshUdIupdahXkZV0o651spizl52kDTFbZ2FPgDjZWSC/pyWQPwGIcn M8gMfw7eaSA8loZx4ElO59G4p0MCv0HxY417wDHR4TMj0Q5+KBDwKQ7av5r16Tq1GbNZ qUGJCQhSjj4Dfc3w/MdI5B1FysfE0nc+YM1yMRwUknqCi7YOglaLzvIpf5S3IDwtEJO5 GEGr+2F0ii8xMKsSMHXfsDsTm3v9aita6kjyJ1b/3Nm9uKNxBTNLcyOeq5GaOL/UO9j/ lDzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wOraCk+M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 5si4016849pga.591.2022.01.24.16.15.05; Mon, 24 Jan 2022 16:15:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wOraCk+M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2372745AbiAYAM0 (ORCPT + 99 others); Mon, 24 Jan 2022 19:12:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1849660AbiAXX0Z (ORCPT ); Mon, 24 Jan 2022 18:26:25 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 417DEC061252; Mon, 24 Jan 2022 11:11:00 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id F175AB81233; Mon, 24 Jan 2022 19:10:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22005C340E8; Mon, 24 Jan 2022 19:10:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643051457; bh=eGU5BZn9pv3lxR8n0x8YyiDNk3dQsF9nkslcgbj7S0M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wOraCk+MmLLUhAParTb3Qaf/Tv3dV6kIKZoeMnsQ8snOk8kdx8ixeCvkuOG5Or3dM 9B01ewuPbTmx2rjIP6MxNa2gueE8daw9ds+Zcg868WDxWlplHQZhSAEAZHU6N7IWMv csy+IxlyfoGnJn/Pqnohu+SY0eQFAkWUd3FnetFA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Robert Hancock , Andrew Lunn , "David S. Miller" Subject: [PATCH 4.14 168/186] net: axienet: Wait for PhyRstCmplt after core reset Date: Mon, 24 Jan 2022 19:44:03 +0100 Message-Id: <20220124183942.523248605@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124183937.101330125@linuxfoundation.org> References: <20220124183937.101330125@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Robert Hancock commit b400c2f4f4c53c86594dd57098970d97d488bfde upstream. When resetting the device, wait for the PhyRstCmplt bit to be set in the interrupt status register before continuing initialization, to ensure that the core is actually ready. When using an external PHY, this also ensures we do not start trying to access the PHY while it is still in reset. The PHY reset is initiated by the core reset which is triggered just above, but remains asserted for 5ms after the core is reset according to the documentation. The MgtRdy bit could also be waited for, but unfortunately when using 7-series devices, the bit does not appear to work as documented (it seems to behave as some sort of link state indication and not just an indication the transceiver is ready) so it can't really be relied on for this purpose. Fixes: 8a3b7a252dca9 ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver") Signed-off-by: Robert Hancock Reviewed-by: Andrew Lunn Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 10 ++++++++++ 1 file changed, 10 insertions(+) --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c @@ -279,6 +279,16 @@ static int axienet_dma_bd_init(struct ne axienet_dma_out32(lp, XAXIDMA_TX_CR_OFFSET, cr | XAXIDMA_CR_RUNSTOP_MASK); + /* Wait for PhyRstCmplt bit to be set, indicating the PHY reset has finished */ + ret = read_poll_timeout(axienet_ior, value, + value & XAE_INT_PHYRSTCMPLT_MASK, + DELAY_OF_ONE_MILLISEC, 50000, false, lp, + XAE_IS_OFFSET); + if (ret) { + dev_err(lp->dev, "%s: timeout waiting for PhyRstCmplt\n", __func__); + return ret; + } + return 0; out: axienet_dma_bd_release(ndev);