Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp3500083pxb; Mon, 4 Apr 2022 18:59:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJySMdwiI/E8Pq0P5FrVcQxzNmOLgBdbVaGwL29pVa0VzsVul/4O7amNlcMmVWlxzFXLFdno X-Received: by 2002:a05:6a00:1d27:b0:4fb:66bd:f3b6 with SMTP id a39-20020a056a001d2700b004fb66bdf3b6mr1189406pfx.40.1649123961984; Mon, 04 Apr 2022 18:59:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649123961; cv=none; d=google.com; s=arc-20160816; b=jW795tWXgnnFhtcjmD1X6aD/IwgWT//cRW2ibUHdpRctxxTgJojxMl1o5VepiWGXcz HNtHgtOwsyDhu/L4JdetmtzXjZ1op+LDdrrH8Lh4XEUO0fOZkR16DVse/2csfhwKlhxY LwMvspBZkRBVu2d1ZeHnILSZ7nxwNTvPLCGBS9BONfLiFfsdQqNVtljpJ69WIvB3ArbO jasmCCW6032S63uLN4kBNEot7iKNXJSGrI3A4g2jc5q3lLijhtoAMeTHptty3fV43X4b iPw1lD2UlO/zuvCCn+aFgD3KXI8JXHejolc0Vsoc9fjwlPeLpJpZXg0sOX1fBXcfoAwi nlnQ== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=xvi+F1h1/VSrbvIdxzcAxL5AU5PBy17xl3d/7Zm2bGk=; b=sMHEkduDPCijDZeSuiMRo5kzKab5prNJHB7EAB5Ba8bYAiDIatD7hdOuv6hSwoS0J0 Juc0KiB2ZYlorZS5BXsofOJ8N+nggGStkiSBsC2mkGk5rvjWK8MyFovvQLbznju/BnQ5 9L9d2bmkalUMDNQ90CUfidVU4FHj9gIC3CXl8EfbZQ/TtQm8qTTGNnMumo/NTMt2MF8Z ysKCjHmAPiIzjTxhblX4n+BvHnVEpEjlV/EQt1Nn52APJcic7TZjGjjNyh56m77uYLrh 097P3PN6dbuFlTVeLbDaoCObv7SLxIQLvvp1cZ2iLQp/61GMJ24EB0PC/WZimgHIJrqC jC+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=jcyi3iee; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id v12-20020a65460c000000b003821688f7b8si9789016pgq.748.2022.04.04.18.59.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Apr 2022 18:59:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=jcyi3iee; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 044063A4FAC; Mon, 4 Apr 2022 18:05:03 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347994AbiDDOvr (ORCPT + 99 others); Mon, 4 Apr 2022 10:51:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45008 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378340AbiDDOvX (ORCPT ); Mon, 4 Apr 2022 10:51:23 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 711C01FCD0; Mon, 4 Apr 2022 07:49:05 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: kholk11) with ESMTPSA id 2DE141F44AAF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1649083743; bh=gqGXxJTgo2QFByPlVeChgiuVrlRNuS1ZqugUAimLnDE=; h=From:To:Cc:Subject:Date:From; b=jcyi3ieeRTjx/TdSizLK3y7evsfkq7a7xC3FvBhuFTx2x+b7kVS446Fprm0R/mAoU zN37Pr2DLQw/YLDqdp9zQuPItVJVXNxLiK+OGeN5zw9sRSww8pSiL6pk6AnoA/2TtS XwBlOD8E0NmBHlUnZn2djZfHFu1cywvz+AG0uDauu0yd5Ov+qp04WUiGYdvdPUB3+e 5B/EtU1UW1YPHhIbN11kRC1gJp4gWaoIbL5weuuwD1wGsePQNMkrzpRh26+Vvo8V6y 6NXbUfvLmlVI6uGudg7raD0STAbijI4jgg2oAwomRywa3sXrYub1barMRAAot6jNN+ sgAzvMHjOiU8Q== From: AngeloGioacchino Del Regno To: ryder.lee@mediatek.com Cc: jianjun.wang@mediatek.com, lorenzo.pieralisi@arm.com, robh@kernel.org, kw@linux.com, bhelgaas@google.com, p.zabel@pengutronix.de, matthias.bgg@gmail.com, linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com, nfraprado@collabora.com, AngeloGioacchino Del Regno Subject: [PATCH] PCI: mediatek-gen3: Assert resets to ensure expected init state Date: Mon, 4 Apr 2022 16:48:58 +0200 Message-Id: <20220404144858.92390-1-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The controller may have been left out of reset by the bootloader, in which case, before the powerup sequence, the controller will be found preconfigured with values that were set before booting the kernel: this produces a controller failure, with the result of a failure during the mtk_pcie_startup_port() sequence as the PCIe link never gets up. To ensure that we get a clean start in an expected state, assert both the PHY and MAC resets before executing the controller power-up sequence. Fixes: d3bf75b579b9 ("PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192") Signed-off-by: AngeloGioacchino Del Regno --- drivers/pci/controller/pcie-mediatek-gen3.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c index f7048ea4c020..dccdfce12b1c 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -838,6 +838,14 @@ static int mtk_pcie_setup(struct mtk_gen3_pcie *pcie) if (err) return err; + /* + * The controller may have been left out of reset by the bootloader + * so make sure that we get a clean start by asserting resets here. + */ + reset_control_assert(pcie->phy_reset); + reset_control_assert(pcie->mac_reset); + usleep_range(10, 20); + /* Don't touch the hardware registers before power up */ err = mtk_pcie_power_up(pcie); if (err) -- 2.35.1