From patchwork Tue Mar 28 15:42:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 9650033 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 73EE360113 for ; Tue, 28 Mar 2017 15:50:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6659928387 for ; Tue, 28 Mar 2017 15:50:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 597D728403; Tue, 28 Mar 2017 15:50:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0001928387 for ; Tue, 28 Mar 2017 15:50:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LWGxcUqzgJUIHUXd9Hfp9IEgLTqN+JIrb5i1a+ZawUY=; b=U+d5KHOcpTKrf0 2aHwgoBKpxVs6fNu0LBGixr+M4nfKalheeox7KAtCyHamFYVCAQLeGZIipAPIbcfxSJIhS3W1dlqP +Yz2IzpmW1h6XsVHia0lO2IIRagBtEiddufeQRYVnIzrmNU3DSO55BWktf96vOd0fH4znZ7etMln/ vH5MZE2IUc2H0rYFJ/lCILVS9+IPcpgoO8OlE39eMEpMt0s7h0w4osKiCWBoE1jC2ZpHMBhPJUqAf xYgOHEUzfUIlkNpcVF9hInvscDBm6UJ6+jf/0VZcIaoCvWilUsqsl2GkLquRnAVqVzZUU0WoEqT8X x2ex3OcqKmAFTaikDrXw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cstOL-0000zc-0x; Tue, 28 Mar 2017 15:50:41 +0000 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cstHK-0004Zr-VB for linux-arm-kernel@lists.infradead.org; Tue, 28 Mar 2017 15:43:31 +0000 Received: by mail-pg0-x242.google.com with SMTP id 81so22243606pgh.3 for ; Tue, 28 Mar 2017 08:43:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=M76BqbGt9Mi8P8y5GUJLCCXZu/QWE1AouLLhSBROFIM=; b=CuUh+YZhGKbwbwO7jNOx4Xu/g1MC8QHZltzXC1HRYs53CBvY5xaiHFmrG1jZOn2Rnk 1oPwcZRfJTjMK5l08Ak9zPTudfk+/qh/WMYUfctW4/8qZo0/dWD+KZXlhhMBqAPJ3ZEV 4KrHISjkE4Qx5+++bEB6wwnMadjN+Kv6rLSTdXrSwGMs2aSsP07fFQLsvTE1M6UDpm7H nP1xsdNLxWtaihKsyobX86tiPqTca4PfMgGeRgRF/g2tUHgj/UVkJGrcxRBYN5SIYtkW cdBz8J5GGSsLm41tlW/IialBMetzfcXvdnveslo56T5z+vQxXOqqwzqrIE8Z+MwIPmJy cJiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=M76BqbGt9Mi8P8y5GUJLCCXZu/QWE1AouLLhSBROFIM=; b=fjq8mKjwl0ocgQHaDJALPr5/AA2yqri9YpKa0zrkOz4uYU8s62EKYTv4U9S15VSi1T kBf3hr2DTFLlynAnSKBskskkaRiwlQSdlXD31ilGeaLTOeuC5OGGBAF0h03bZ24NHyGu sWiIYAT6hE/aK4+KrdIUQR8XlOzv5MWB+gMPvFMMCjZwXHRMqBoX5zDIVLt/028Mlf8g sfvgC9azBwiygPZTx5jW8YKbAINsqI6jgJQYSqMmNqNxSVJRGYm3eOowuBdka16j/FHm Mi05QtlfGAz+Sbqgb7JZm9kk/qWrPEPKDNLMBOPkku/0Qf1r0tv9ik5+O6yiE5RwY+vk OAbQ== X-Gm-Message-State: AFeK/H1dnMBZZq5t/D/5NrMMEUCsYaaUopJ0H6JsY8jC1I4TJDxGyRkzL9AHg3VK3yE7JQ== X-Received: by 10.84.218.130 with SMTP id r2mr36832115pli.79.1490715787342; Tue, 28 Mar 2017 08:43:07 -0700 (PDT) Received: from squirtle.lan (c-73-19-0-61.hsd1.wa.comcast.net. [73.19.0.61]) by smtp.gmail.com with ESMTPSA id e16sm8238865pfb.102.2017.03.28.08.43.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Mar 2017 08:43:06 -0700 (PDT) From: Andrey Smirnov To: Bjorn Helgaas Subject: [PATCH v8 3/4] PCI: imx6: Do not wait for speed change on i.MX7 Date: Tue, 28 Mar 2017 08:42:51 -0700 Message-Id: <20170328154252.6902-4-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170328154252.6902-1-andrew.smirnov@gmail.com> References: <20170328154252.6902-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170328_084327_162190_EF6F5281 X-CRM114-Status: GOOD ( 16.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dong Aisheng , Andrey Smirnov , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Fabio Estevam , yurovsky@gmail.com, linux-arm-kernel@lists.infradead.org, Lucas Stach Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP As can be seen from [1]: "...the different behavior between iMX6Q PCIe and iMX7D PCIe maybe caused by the different controller version. Regarding to the DOC description, the DIRECT_SPEED_CHANGE should be cleared after the speed change from GEN1 to GEN2. Unfortunately, when GEN1 device is used, the behavior is not documented. So, IC design guys run the simulation and find out the following behaviors: 1. DIRECT_SPEED_CHANGE will be cleared in 7D after speed change from GEN1 to GEN2. This matches doc’s description 2. set MAX link speed(PCIE_CAP_TARGET_LINK_SPEED=0x01) as GEN1 and re-run the simulation, DIRECT_SPEED_CHANGE will not be cleared; remain as 1, this matches your result, but function test is passed, so this bit should not affect the normal PCIe function. ..." imx6_pcie_wait_for_speed_change will report false failures for Gen1 -> Gen1 speed transition, so avoid doing that check and just rely on imx6_pcie_wait_for_link only. [1] https://community.nxp.com/message/867943 Cc: yurovsky@gmail.com Cc: Lucas Stach Cc: Fabio Estevam Cc: Dong Aisheng Cc: linux-pci@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Reviewed-by: Lucas Stach Signed-off-by: Andrey Smirnov --- drivers/pci/dwc/pci-imx6.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/pci/dwc/pci-imx6.c b/drivers/pci/dwc/pci-imx6.c index 64de9bb..c731e41 100644 --- a/drivers/pci/dwc/pci-imx6.c +++ b/drivers/pci/dwc/pci-imx6.c @@ -545,10 +545,21 @@ static int imx6_pcie_establish_link(struct imx6_pcie *imx6_pcie) tmp |= PORT_LOGIC_SPEED_CHANGE; dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, tmp); - ret = imx6_pcie_wait_for_speed_change(imx6_pcie); - if (ret) { - dev_err(dev, "Failed to bring link up!\n"); - goto err_reset_phy; + if (imx6_pcie->variant != IMX7D) { + /* + * On i.MX7, DIRECT_SPEED_CHANGE behaves differently + * from i.MX6 family when no link speed transition + * occurs and we go Gen1 -> yep, Gen1. The difference + * is that, in such case, it will not be cleared by HW + * which will cause the following code to report false + * failure. + */ + + ret = imx6_pcie_wait_for_speed_change(imx6_pcie); + if (ret) { + dev_err(dev, "Failed to bring link up!\n"); + goto err_reset_phy; + } } /* Make sure link training is finished as well! */