Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp4109413iog; Tue, 21 Jun 2022 12:12:54 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v5DwaAtRgrzV9EqlLheXSdZ4d0zJIcm2x4ILyDRcyzTUQ7jTiTcJtsX8qEAeXbZzJ9jejk X-Received: by 2002:a17:906:f17:b0:6fe:94f6:cb8a with SMTP id z23-20020a1709060f1700b006fe94f6cb8amr26958246eji.456.1655838774687; Tue, 21 Jun 2022 12:12:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655838774; cv=none; d=google.com; s=arc-20160816; b=ZTfTKhgiZP7F8F3o5OKJYQgkTdfahqwJuLZkhqsgko2BacBzhu8cfCC4HquPYB78D8 Nd2W3njG7SiHBHNBKS1NlQdCjJsl7JuZR+ZDdcAvRTqX2AEjSlqyys2ZNacFogdglIm1 RYstGH8D7hg421Q4VLYUaZ5HCNeOoPVIY3k+9IQQFIkxaioFpuV1SPtDo1KfxN6AnV6r KzHU1n+widGSzrc0sWhTB8sUwaMAg1HXVPPdA/QhcrfXKj4ScUtCXAME8rGajL9v63sO I+snvEvP/XGg3NxTd5GlaGp4HCLrV0cgfmy020c5yH0aw4jAPGAEPRpz2MLMoOGxd6IB xOBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=jhBWONv0sRk0PO6NOho0MICFxLYjmPHqytEaDgbHoM0=; b=pTA0T+H9mEBXhtgy33Z81RzT12J0mMv3BVNphFAnfU7WETwRanUHio9SLBnDVoP/0R hIFliKtoYfy418IbUktmOBDPphKeCZGnl8DAFcfBSWx0fzB7sipbLCmII2XPFPhpN6yM U1KZKaOjTY9ZWD874PQIcIvSoAnuGxZHrjL/tGZt1+EQuVuivUU9ZivMJV5Zao64c7jw bGjAF0kXskwf5z2AghwP62Y+a/0N9MTs4BBshxmYsGCdSMWIPxkZ1QSZm58BAKV8o0iA 3w3zxGfSPfvXZXO9lYHO4rq4nCRZB6WeHk9Voke7G67ylqrEgxNun2RdxwbyNXnFbugV JC2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=d1P+wZRs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l22-20020a170906795600b0071d7fe5f8bbsi15073788ejo.584.2022.06.21.12.12.05; Tue, 21 Jun 2022 12:12:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=d1P+wZRs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351310AbiFUSxl (ORCPT + 99 others); Tue, 21 Jun 2022 14:53:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233766AbiFUSxg (ORCPT ); Tue, 21 Jun 2022 14:53:36 -0400 Received: from mail-qk1-x730.google.com (mail-qk1-x730.google.com [IPv6:2607:f8b0:4864:20::730]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 404211180E; Tue, 21 Jun 2022 11:53:35 -0700 (PDT) Received: by mail-qk1-x730.google.com with SMTP id x75so10818916qkb.12; Tue, 21 Jun 2022 11:53:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jhBWONv0sRk0PO6NOho0MICFxLYjmPHqytEaDgbHoM0=; b=d1P+wZRsxn/ODj3bCIwRGZIvpv1YLgkrDLwtKc4SdcAkb90TBay3UmcRk1vnvOmt1O uQ0z3AhP5gu+zxvJneezJ/x27evsDfWwHq8TEwrGkukKhgM3Did1e4BDFAHwJOtYw1hO W83VTz0RKF+ri1D955w7vGzyEiCBMcpw6n3wkj4mm8vB96vhDkUWWz9JUJKGPl7qltQw bij56P0l/gzY52GEbIIZP3nasnAIoQJU1pQadU8irOxYw6x75DxsnKKryTDpUMlnL8Pn GvGyHyCeX5BozYk6XFJM9bQSaqqZAdwvE/ECbCIQ5CiEUjQmsdcSuyIWoe1o+HRyUkK2 7R3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jhBWONv0sRk0PO6NOho0MICFxLYjmPHqytEaDgbHoM0=; b=v+2Lv1RApt67hRSgcujuA/ClaCmZERioZkrVqHOMFWzHAaeyon8CDdi/PA3NHFLeCK n5CtPUu98y1jkThx6kQNNrVYpPkLptiufdRSh7/v4NxNFw8HGGxEOuPwGseVS/Km4KrI rvTsNrmGdVZcOFQrmXfZp5YYWRAcCO5PxZo4M7dRjBb4xxBo2y9X1SLu/V6hSuQ9VxjK G31kbDzjghdmmZtx+V4qLpvac29PgzuJxaXrJhOlEHfFDcmOatCsSM/ThtvLxZvr31W1 2QwznYAwdmpKx/bW+IeSoH6Z2bGFVkcTvSExTVR2regB+I3GdhSdc8aO4cJhARMQsFqm CtwQ== X-Gm-Message-State: AJIora8uRyxNPVKyWV2954AUd53Kh5S6gk0Nlzejvlc/U/1xPgJOL8S1 hPSE2ntX6fED0cwKLxRU2fStq84m+2SHhwb1veKAwRbRyYGbPw== X-Received: by 2002:a05:620a:2450:b0:6a6:d264:2b88 with SMTP id h16-20020a05620a245000b006a6d2642b88mr20725040qkn.25.1655837614432; Tue, 21 Jun 2022 11:53:34 -0700 (PDT) MIME-Version: 1.0 References: <20220621112330.448754-1-robimarko@gmail.com> In-Reply-To: From: Robert Marko Date: Tue, 21 Jun 2022 20:53:23 +0200 Message-ID: Subject: Re: [PATCH v2] PCI: qcom: fix IPQ8074 Gen2 support To: Dmitry Baryshkov Cc: svarbanov@mm-sol.com, Andy Gross , Bjorn Andersson , lpieralisi@kernel.org, Rob Herring , kw@linux.com, Bjorn Helgaas , p.zabel@pengutronix.de, jingoohan1@gmail.com, linux-pci@vger.kernel.org, linux-arm-msm , open list , johan+linaro@kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 On Tue, 21 Jun 2022 at 19:29, Dmitry Baryshkov wrote: > > On Tue, 21 Jun 2022 at 14:23, Robert Marko wrote: > > > > IPQ8074 has one Gen2 and one Gen3 port, currently the Gen2 port will > > cause the system to hang as its using DBI registers in the .init > > and those are only accesible after phy_power_on(). > > > > So solve this by splitting the DBI read/writes to .post_init. > > > > Fixes: a0fd361db8e5 ("PCI: dwc: Move "dbi", "dbi2", and "addr_space" resource setup into common code") > > Any elaboration for the Fixes tag? I think the follow one is more > logical, isn't it? > > Fixes: 5d76117f070d ("PCI: qcom: Add support for IPQ8074 PCIe controller") Hi, My logic was that it was working before the commit a0fd361db8e5 as it moved PHY init later and indirectly broke IPQ8074 gen2. Regards, Robert > > > Signed-off-by: Robert Marko > > --- > > Changes in v2: > > * Rebase onto next-20220621 > > --- > > drivers/pci/controller/dwc/pcie-qcom.c | 48 +++++++++++++++----------- > > 1 file changed, 28 insertions(+), 20 deletions(-) > > > > diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c > > index 51fed83484af..da6d79d61397 100644 > > --- a/drivers/pci/controller/dwc/pcie-qcom.c > > +++ b/drivers/pci/controller/dwc/pcie-qcom.c > > @@ -1061,9 +1061,7 @@ static int qcom_pcie_init_2_3_3(struct qcom_pcie *pcie) > > struct qcom_pcie_resources_2_3_3 *res = &pcie->res.v2_3_3; > > struct dw_pcie *pci = pcie->pci; > > struct device *dev = pci->dev; > > - u16 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); > > int i, ret; > > - u32 val; > > > > for (i = 0; i < ARRAY_SIZE(res->rst); i++) { > > ret = reset_control_assert(res->rst[i]); > > @@ -1120,6 +1118,33 @@ static int qcom_pcie_init_2_3_3(struct qcom_pcie *pcie) > > goto err_clk_aux; > > } > > > > + return 0; > > + > > +err_clk_aux: > > + clk_disable_unprepare(res->ahb_clk); > > +err_clk_ahb: > > + clk_disable_unprepare(res->axi_s_clk); > > +err_clk_axi_s: > > + clk_disable_unprepare(res->axi_m_clk); > > +err_clk_axi_m: > > + clk_disable_unprepare(res->iface); > > +err_clk_iface: > > + /* > > + * Not checking for failure, will anyway return > > + * the original failure in 'ret'. > > + */ > > + for (i = 0; i < ARRAY_SIZE(res->rst); i++) > > + reset_control_assert(res->rst[i]); > > + > > + return ret; > > +} > > + > > +static int qcom_pcie_post_init_2_3_3(struct qcom_pcie *pcie) > > +{ > > + struct dw_pcie *pci = pcie->pci; > > + u16 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); > > + u32 val; > > + > > writel(SLV_ADDR_SPACE_SZ, > > pcie->parf + PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE); > > > > @@ -1147,24 +1172,6 @@ static int qcom_pcie_init_2_3_3(struct qcom_pcie *pcie) > > PCI_EXP_DEVCTL2); > > > > return 0; > > - > > -err_clk_aux: > > - clk_disable_unprepare(res->ahb_clk); > > -err_clk_ahb: > > - clk_disable_unprepare(res->axi_s_clk); > > -err_clk_axi_s: > > - clk_disable_unprepare(res->axi_m_clk); > > -err_clk_axi_m: > > - clk_disable_unprepare(res->iface); > > -err_clk_iface: > > - /* > > - * Not checking for failure, will anyway return > > - * the original failure in 'ret'. > > - */ > > - for (i = 0; i < ARRAY_SIZE(res->rst); i++) > > - reset_control_assert(res->rst[i]); > > - > > - return ret; > > } > > > > static int qcom_pcie_get_resources_2_7_0(struct qcom_pcie *pcie) > > @@ -1598,6 +1605,7 @@ static const struct qcom_pcie_ops ops_2_4_0 = { > > static const struct qcom_pcie_ops ops_2_3_3 = { > > .get_resources = qcom_pcie_get_resources_2_3_3, > > .init = qcom_pcie_init_2_3_3, > > + .post_init = qcom_pcie_post_init_2_3_3, > > .deinit = qcom_pcie_deinit_2_3_3, > > .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable, > > }; > > -- > > 2.36.1 > > > > > -- > With best wishes > Dmitry