Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp977008ybt; Wed, 17 Jun 2020 19:41:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzoTwaucBLIbZg0moKRio8mHRftS+goP7gnf67tmYLkfV1KWUeLAYXitX5EtA9svWUAcAac X-Received: by 2002:aa7:c15a:: with SMTP id r26mr1936866edp.21.1592448117227; Wed, 17 Jun 2020 19:41:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592448117; cv=none; d=google.com; s=arc-20160816; b=eI3skEGWrbfYSkfEHPp2tI07fFR+yv4sqD1OBtz91Aq2pQBB1OvMBL/KTGt+1qojXO dtyXn/Z4+SaKrfYMPb0IGZdu92EI3daYVxzPVt3KN/ymA/sOAxbXis/FQ5NXZfiVhHJe IaIq6MaNztr6uftkV1yfS8fw+3W3k1+wKS2EK5cMUIr8u+EfmZgE1UykEJD37SJ8h9vS 84SO3OBCmXQsbhUt99Zc1gimzntgA7ofvUfTGGN9YZscwfvzMfdEGQ7I2awsjEbOLcJn BTKVRPBdAaMCJcyPoP2sbuRQTTTEwCS06CVhEOPrBSpeoS2ujxcF2t8u/2UbB6QsBifT 9ivA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MJ8FAelRDvBSLS85MtEvaF7NICQ9H7DM91e0yd+ezAU=; b=H+2vNLFqbbuuXNicjXyoie8kCyMiqqfAnGAtD+o2r/djZEzAYo1f40KiYwXP/9pFI/ f/ARm61+GnD2x58iQmCJ/GJZYsX7XAS64FkyXN0pKmN5HoaP4zNEIdM3NUR1BJ+eQHn3 C58qRc1HGIJP538VyPkVflPbn0VWIJbEl2oAOND1VSMOJmZs7fkbruNCKWzPEV5ABUnc c3KCYRL9W84V9HxgZ2RwBs7u5PVxLUHELZbMprywh5xrSAVirkXM8/jgyYzjEhLc0dni kvgI2HHrZuT6PCMOkr3gJd9fRYptoYUvOl33/0mdQqsbSfbNvwJ8Js8Zc2u5HmeCRt3Y POzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bdjCOut2; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v12si1000172eje.201.2020.06.17.19.41.35; Wed, 17 Jun 2020 19:41:57 -0700 (PDT) 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=@kernel.org header.s=default header.b=bdjCOut2; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387807AbgFRCjy (ORCPT + 99 others); Wed, 17 Jun 2020 22:39:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:41752 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729009AbgFRBMy (ORCPT ); Wed, 17 Jun 2020 21:12:54 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 33F0221974; Thu, 18 Jun 2020 01:12:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592442774; bh=s5tlMG5xYQEvcF25X+nwy3A9jSU1v8iqz8pZFmMrPIc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bdjCOut2ZjdBTpoS5bkod65IoM+ujhhLeI5X6KlQiR5Wcu7s6AvIKRTBIjpwRazgJ 0p3NoTcUDigD6MZqTTgg1B3jPwi5XmJ2lM8IFry60EKg1YR8qVEx6w8pxdGRaES1yH nQq6Ln8VP1Uv/RjQ4y02AnXV3EOZpU+w6XQwsMoQ= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: =?UTF-8?q?Pali=20Roh=C3=A1r?= , Tomasz Maciej Nowak , Lorenzo Pieralisi , Rob Herring , Thomas Petazzoni , Sasha Levin , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 5.7 221/388] PCI: aardvark: Train link immediately after enabling training Date: Wed, 17 Jun 2020 21:05:18 -0400 Message-Id: <20200618010805.600873-221-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200618010805.600873-1-sashal@kernel.org> References: <20200618010805.600873-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pali Rohár [ Upstream commit 6964494582f56a3882c2c53b0edbfe99eb32b2e1 ] Adding even 100ms (PCI_PM_D3COLD_WAIT) delay between enabling link training and starting link training causes detection issues with some buggy cards (such as Compex WLE900VX). Move the code which enables link training immediately before the one which starts link traning. This fixes detection issues of Compex WLE900VX card on Turris MOX after cold boot. Link: https://lore.kernel.org/r/20200430080625.26070-2-pali@kernel.org Fixes: f4c7d053d7f7 ("PCI: aardvark: Wait for endpoint to be ready...") Tested-by: Tomasz Maciej Nowak Signed-off-by: Pali Rohár Signed-off-by: Lorenzo Pieralisi Acked-by: Rob Herring Acked-by: Thomas Petazzoni Signed-off-by: Sasha Levin --- drivers/pci/controller/pci-aardvark.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index 3a6d07dc0a38..74b90940a9d4 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -300,11 +300,6 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie) reg |= LANE_COUNT_1; advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG); - /* Enable link training */ - reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG); - reg |= LINK_TRAINING_EN; - advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG); - /* Enable MSI */ reg = advk_readl(pcie, PCIE_CORE_CTRL2_REG); reg |= PCIE_CORE_CTRL2_MSI_ENABLE; @@ -346,7 +341,15 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie) */ msleep(PCI_PM_D3COLD_WAIT); - /* Start link training */ + /* Enable link training */ + reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG); + reg |= LINK_TRAINING_EN; + advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG); + + /* + * Start link training immediately after enabling it. + * This solves problems for some buggy cards. + */ reg = advk_readl(pcie, PCIE_CORE_LINK_CTRL_STAT_REG); reg |= PCIE_CORE_LINK_TRAINING; advk_writel(pcie, reg, PCIE_CORE_LINK_CTRL_STAT_REG); -- 2.25.1