Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp938746ybj; Thu, 7 May 2020 10:58:04 -0700 (PDT) X-Google-Smtp-Source: APiQypJmWDDumSasbAvjAj0MY3snms+vItsZXhWTLfvI/8KjIYWOEO8GtRGLQZOkwa2rWbcBSOjY X-Received: by 2002:a17:906:da1b:: with SMTP id fi27mr13137109ejb.194.1588874284685; Thu, 07 May 2020 10:58:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588874284; cv=none; d=google.com; s=arc-20160816; b=sUV00Y+wEdA+nfPFYmQhNXbAKt1J9zMNQUp7NhS5/RSgVOhLWbTLNCx/4btJLrl24W A8Ped4h+zq7U8ZUQi4XceOJoSGeRPTwDlpcveDzmHjcEQFV7AHgUbXIDcV4xXlNy2m2F dRc/30gIIQ+8kd/A15d3FwUIYPzsHWvsW43usrkbX1p9PwNXJPW+naXQpOXDxnECSAGG QDVNmMyw8WAMAxNiIULEGaQbj5JzVNcKjSSzMjh8o0rcQF7oTHbDaOieIjx2yJ0TF+zo sor5IGQC0ZjS76iCeLFgD30IEmOx+aWEmwdqSp9KSc14sl0u3hnPjmTYf0YFJ5VsWG0X YyyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=g8REV0kLr+byzHuvO4ibHyw5i1CzypXIkPjjQmmKtfU=; b=cxHmimp1byGFYij9nnSCn9sCFP8GhQLLCbz1Tdjo1c229KPIFEdZz+aS98kLaG1bBj IEPmEEPn0/RXLnmMSKPpq1ThKOdB2SzMk+0dzfE4RoCaxs11xbTzw+TugZmeJB7Blain TAXt886n0r8QptkrsiCWqCOg0eSq7fhr4tXC7znU+JoQpUxrqDE5dTZoI5vBL6wnRa7j CWx1A7cRpd1c4InSrV0Ey7/glXyxYmKM5PLrVlrJt5q8d+LuBlgtsnRsr1AeBXhRVqcz +5eN348Wk/gdsmMKoEbjR2n4kqYHYKTh1XZurVV+DJOmA74dvR5RaSeCXahCoa/59kFo fa8Q== ARC-Authentication-Results: i=1; mx.google.com; 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 p18si1580410ejb.16.2020.05.07.10.57.40; Thu, 07 May 2020 10:58:04 -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; 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 S1727092AbgEGRyL (ORCPT + 99 others); Thu, 7 May 2020 13:54:11 -0400 Received: from mail-oi1-f194.google.com ([209.85.167.194]:35619 "EHLO mail-oi1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726367AbgEGRyL (ORCPT ); Thu, 7 May 2020 13:54:11 -0400 Received: by mail-oi1-f194.google.com with SMTP id o7so6022320oif.2; Thu, 07 May 2020 10:54:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=g8REV0kLr+byzHuvO4ibHyw5i1CzypXIkPjjQmmKtfU=; b=J8nxmyPzy/4gmrLgDtoh/l0QVEYmY7JAyOusSmf/eOMZIJkDjnD8UkPdoWeFBokjOF lNzxXBbxk11hZKmPVHtwy2cZvqwBj1yd25lVTV6QWpnKIRfDXiSwq3i3QhA/mnSgGtGW 70kwvz+FoZXjyJQdp+eeEbCW1gERRhJcgHI8Y+cL8Kn+zik8BnT2dCzZuI5Rh8j5An4s uGX12T47duLKsJ9f/4I8diDMhOsGNNtKg5n4E/AHwObGuEziOQ20uEIBtYfgiAVTbeUE y1u/Y2GjfRof+Ct24b4Pa0IA79YCos5b2e5lypILK8ewqKDmIt069Dy6PwV/fFKQAoHw zrsQ== X-Gm-Message-State: AGi0PuYSFYhHpUR8kGxSEt37vd3Kx4csTq8+By5kFfXHSo2lD1oVkAeY oGt6AqTnMAcvrjFG9h9UTw== X-Received: by 2002:aca:57c4:: with SMTP id l187mr7744976oib.155.1588874050050; Thu, 07 May 2020 10:54:10 -0700 (PDT) Received: from rob-hp-laptop (24-155-109-49.dyn.grandenetworks.net. [24.155.109.49]) by smtp.gmail.com with ESMTPSA id q3sm1637241oom.12.2020.05.07.10.54.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2020 10:54:09 -0700 (PDT) Received: (nullmailer pid 18070 invoked by uid 1000); Thu, 07 May 2020 17:54:08 -0000 Date: Thu, 7 May 2020 12:54:08 -0500 From: Rob Herring To: Ansuel Smith Cc: Bjorn Andersson , Sham Muthayyan , stable@vger.kernel.org, Andy Gross , Bjorn Helgaas , Mark Rutland , Stanimir Varbanov , Lorenzo Pieralisi , Andrew Murray , Philipp Zabel , linux-arm-msm@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 01/11] PCI: qcom: add missing ipq806x clocks in PCIe driver Message-ID: <20200507175408.GA2029@bogus> References: <20200430220619.3169-1-ansuelsmth@gmail.com> <20200430220619.3169-2-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200430220619.3169-2-ansuelsmth@gmail.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 01, 2020 at 12:06:08AM +0200, Ansuel Smith wrote: > Aux and Ref clk are missing in PCIe qcom driver. > Add support in the driver to fix PCIe initialization in ipq806x. > > Fixes: 82a823833f4e PCI: qcom: Add Qualcomm PCIe controller driver > Signed-off-by: Sham Muthayyan > Signed-off-by: Ansuel Smith > Cc: stable@vger.kernel.org # v4.5+ Doesn't strike me as stable material. Looks like new h/w enablement. > --- > drivers/pci/controller/dwc/pcie-qcom.c | 44 ++++++++++++++++++++++---- > 1 file changed, 38 insertions(+), 6 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c > index 5ea527a6bd9f..2a39dfdccfc8 100644 > --- a/drivers/pci/controller/dwc/pcie-qcom.c > +++ b/drivers/pci/controller/dwc/pcie-qcom.c > @@ -88,6 +88,8 @@ struct qcom_pcie_resources_2_1_0 { > struct clk *iface_clk; > struct clk *core_clk; > struct clk *phy_clk; > + struct clk *aux_clk; > + struct clk *ref_clk; > struct reset_control *pci_reset; > struct reset_control *axi_reset; > struct reset_control *ahb_reset; > @@ -246,6 +248,14 @@ static int qcom_pcie_get_resources_2_1_0(struct qcom_pcie *pcie) > if (IS_ERR(res->phy_clk)) > return PTR_ERR(res->phy_clk); > > + res->aux_clk = devm_clk_get_optional(dev, "aux"); > + if (IS_ERR(res->aux_clk)) > + return PTR_ERR(res->aux_clk); > + > + res->ref_clk = devm_clk_get_optional(dev, "ref"); > + if (IS_ERR(res->ref_clk)) > + return PTR_ERR(res->ref_clk); Seems like you'd want to report an error for ipq608x? Based on the commit msg, they aren't optional. > + > res->pci_reset = devm_reset_control_get_exclusive(dev, "pci"); > if (IS_ERR(res->pci_reset)) > return PTR_ERR(res->pci_reset); > @@ -278,6 +288,8 @@ static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie) > clk_disable_unprepare(res->iface_clk); > clk_disable_unprepare(res->core_clk); > clk_disable_unprepare(res->phy_clk); > + clk_disable_unprepare(res->aux_clk); > + clk_disable_unprepare(res->ref_clk); > regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); > } > > @@ -307,16 +319,32 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) > goto err_assert_ahb; > } > > + ret = clk_prepare_enable(res->core_clk); Perhaps use the bulk api. > + if (ret) { > + dev_err(dev, "cannot prepare/enable core clock\n"); > + goto err_clk_core; > + } > + > ret = clk_prepare_enable(res->phy_clk); > if (ret) { > dev_err(dev, "cannot prepare/enable phy clock\n"); > goto err_clk_phy; > } > > - ret = clk_prepare_enable(res->core_clk); > - if (ret) { > - dev_err(dev, "cannot prepare/enable core clock\n"); > - goto err_clk_core; > + if (res->aux_clk) { > + ret = clk_prepare_enable(res->aux_clk); > + if (ret) { > + dev_err(dev, "cannot prepare/enable aux clock\n"); > + goto err_clk_aux; > + } > + } > + > + if (res->ref_clk) { > + ret = clk_prepare_enable(res->ref_clk); > + if (ret) { > + dev_err(dev, "cannot prepare/enable ref clock\n"); > + goto err_clk_ref; > + } > } > > ret = reset_control_deassert(res->ahb_reset); > @@ -372,10 +400,14 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) > return 0; > > err_deassert_ahb: > - clk_disable_unprepare(res->core_clk); > -err_clk_core: > + clk_disable_unprepare(res->ref_clk); > +err_clk_ref: > + clk_disable_unprepare(res->aux_clk); > +err_clk_aux: > clk_disable_unprepare(res->phy_clk); > err_clk_phy: > + clk_disable_unprepare(res->core_clk); > +err_clk_core: > clk_disable_unprepare(res->iface_clk); > err_assert_ahb: > regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); > -- > 2.25.1 >