From patchwork Tue Feb 19 06:04:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 158671 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp3297105jaa; Mon, 18 Feb 2019 22:04:28 -0800 (PST) X-Google-Smtp-Source: AHgI3IYwrwasVXML6bOCiP8ktWOHh94JxHmz9E0GR075ePlUFpGqTTDuoZBarmHo4fdKZ44nUbRV X-Received: by 2002:aa7:854d:: with SMTP id y13mr27815989pfn.175.1550556268201; Mon, 18 Feb 2019 22:04:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550556268; cv=none; d=google.com; s=arc-20160816; b=cCzI73sWTzbyJ3tJBnR/785WwnD4Am1YJbrdbZg2QUB55Q7NgqIpoz7wuqCqZB17RN pp0AaKKpHumHUOV3G7vkjOLwRDXWqYSl/LSJ0yYn2zAxMpArJzJx2ETlQowEESNWufl1 XrZzPRplfnCCgNMONVcpx+Oh7eGN86DncHnl9DqfxpuE55fMWv8T9a0zXlQYY9W9x4JF VQBFA1sK35bPo8+UqymK4RnsTBZCtyg8zinmun5fmybEhVD3wB1L6Tl+mpe8JZXnT7Y9 HP+wvTp8C3crZlMYLKgTGoWU79kI3T+r021q/OVWgJSlZb7Rha6fKs0+zVK2sN48kEq6 /Dtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=DS4uNOBDo1WB9KnSrcyr/O/ij9VFYUJ1ooQOz6eplho=; b=gRnLD3jv3sVNYvEEdcp90TGoVEyuvSyrU9Ost/biBGIATZSdqou2nxVjFF3mVf6mTR BfcEEYuEGVxZCDZr70loRgy8JRmiK1EN/2IDDgUKb0U5IVmwKu8IKgicOzMNQaXP6vc6 rI7GGUYygqlYWncozG7aT5pFDAYCZB+Uim0NM/T2wGvcLycTvuxlscULJFLIi/L7Gl4c zRQ1DTxsjizONrAPu0MHB3ptNFj+whRnSljzlA0kyEPYZ+QsSWzSSe/tZAHN6z28eFtc HAgmT/0KoPjh5e1VBjhk+zVNQQLA6hdjtBsw1EWpWxKiOSa1lPl5Vndnx+/+sXSpV2SB 8o6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="MK//UaIe"; spf=pass (google.com: best guess record for domain of linux-arm-msm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-arm-msm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f11si10045378plt.133.2019.02.18.22.04.27; Mon, 18 Feb 2019 22:04:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-arm-msm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="MK//UaIe"; spf=pass (google.com: best guess record for domain of linux-arm-msm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-arm-msm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726975AbfBSGE1 (ORCPT + 15 others); Tue, 19 Feb 2019 01:04:27 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:35423 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726455AbfBSGD5 (ORCPT ); Tue, 19 Feb 2019 01:03:57 -0500 Received: by mail-pl1-f194.google.com with SMTP id p8so9876774plo.2 for ; Mon, 18 Feb 2019 22:03:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DS4uNOBDo1WB9KnSrcyr/O/ij9VFYUJ1ooQOz6eplho=; b=MK//UaIe9fvR4Oi7QbwiXf6DH4NUISyH6nuVMXk8obRig92DIgm1Jt5B1XNfT7+++I oUnSCJpYA1mDIkOFbEHgGlT51LF5ZJYpzMznxEjqRLmUOG0HVtGSP1aOSZ1W0WEr/2ab rkjmcObQTWnUeAny72o5PCGK2NlQhEdxoVVYlcr5BQ5ktJfgVIul78OpgzRGeVe0qB4B uRCh7RfWwRG+yTQVB4TKiM4z0awNUQMk0RGvDcFDA1h2T5o+TGLWSWmtcKZ+jiFhY/Iq yP7a1p/rGtFszHO9E5Lk1qTrLpSuHBd/fSHIUd/bCl4Fm9/bxkqbaYpSwzJuuQVAeWXf oKWA== 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; bh=DS4uNOBDo1WB9KnSrcyr/O/ij9VFYUJ1ooQOz6eplho=; b=XxEqN4YKMukxGqmTa9nLxXeGPG1Lv2pTrYsNAbVzyTUBKcIVGa5RWWfozvbr2Upu6D J43Z3Iy5ePAF+nBHT6kKf+Y6rmQz6S+sQ1/52hUcm89shkrVmxbQIYezi2Dcc4iolEr0 kfr88+OiAvqjsdeEOYVDf4QHDgCJUBNIiGPqHYAVso8kEMX/hUjzAZHvnH5H2PuTFHrH d4bQg1AZx48ImhzFk4C5K65U6Cch9NivpWjzwUh08HmJHRxr5SC+Y24CV3socgRu9yWT E16Ao79E2LXUZPJs6BcE9/NkkXo7Uq9sW8pfE37JgQNfuqfqjOMT+zqln2CRYoSNVmMh 8TTw== X-Gm-Message-State: AHQUAubUuZ4Kr3z+AeZR1RpAC9fcl9z9ViNv+atNZb0rKlYG0R1PfE/R p1p4sxb0spY2ZqSlE5mTACs71Q== X-Received: by 2002:a17:902:20e2:: with SMTP id v31mr29499375plg.307.1550556236482; Mon, 18 Feb 2019 22:03:56 -0800 (PST) Received: from localhost.localdomain (104-188-17-28.lightspeed.sndgca.sbcglobal.net. [104.188.17.28]) by smtp.gmail.com with ESMTPSA id 86sm31914838pfk.157.2019.02.18.22.03.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 Feb 2019 22:03:55 -0800 (PST) From: Bjorn Andersson To: Bjorn Helgaas , Stanimir Varbanov , Lorenzo Pieralisi Cc: Andy Gross , David Brown , Rob Herring , Mark Rutland , Kishon Vijay Abraham I , Michael Turquette , Stephen Boyd , linux-arm-msm@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org Subject: [PATCH v2 4/7] PCI: qcom: Use clk_bulk API for 2.4.0 controllers Date: Mon, 18 Feb 2019 22:04:04 -0800 Message-Id: <20190219060407.15263-5-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20190219060407.15263-1-bjorn.andersson@linaro.org> References: <20190219060407.15263-1-bjorn.andersson@linaro.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Before introducing the QCS404 platform, which uses the same PCIe controller as IPQ4019, migrate this to use the bulk clock API, in order to make the error paths slighly cleaner. Reviewed-by: Niklas Cassel Signed-off-by: Bjorn Andersson --- drivers/pci/controller/dwc/pcie-qcom.c | 48 +++++++------------------- 1 file changed, 13 insertions(+), 35 deletions(-) -- 2.18.0 diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index d185ea5fe996..b4d8bcf6eb77 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -113,9 +113,8 @@ struct qcom_pcie_resources_2_3_2 { }; struct qcom_pcie_resources_2_4_0 { - struct clk *aux_clk; - struct clk *master_clk; - struct clk *slave_clk; + struct clk_bulk_data clks[3]; + int num_clks; struct reset_control *axi_m_reset; struct reset_control *axi_s_reset; struct reset_control *pipe_reset; @@ -638,18 +637,17 @@ static int qcom_pcie_get_resources_2_4_0(struct qcom_pcie *pcie) struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; struct dw_pcie *pci = pcie->pci; struct device *dev = pci->dev; + int ret; - res->aux_clk = devm_clk_get(dev, "aux"); - if (IS_ERR(res->aux_clk)) - return PTR_ERR(res->aux_clk); + res->clks[0].id = "aux"; + res->clks[1].id = "master_bus"; + res->clks[2].id = "slave_bus"; - res->master_clk = devm_clk_get(dev, "master_bus"); - if (IS_ERR(res->master_clk)) - return PTR_ERR(res->master_clk); + res->num_clks = 3; - res->slave_clk = devm_clk_get(dev, "slave_bus"); - if (IS_ERR(res->slave_clk)) - return PTR_ERR(res->slave_clk); + ret = devm_clk_bulk_get(dev, res->num_clks, res->clks); + if (ret < 0) + return ret; res->axi_m_reset = devm_reset_control_get_exclusive(dev, "axi_m"); if (IS_ERR(res->axi_m_reset)) @@ -719,9 +717,7 @@ static void qcom_pcie_deinit_2_4_0(struct qcom_pcie *pcie) reset_control_assert(res->axi_m_sticky_reset); reset_control_assert(res->pwr_reset); reset_control_assert(res->ahb_reset); - clk_disable_unprepare(res->aux_clk); - clk_disable_unprepare(res->master_clk); - clk_disable_unprepare(res->slave_clk); + clk_bulk_disable_unprepare(res->num_clks, res->clks); } static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie) @@ -850,23 +846,9 @@ static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie) usleep_range(10000, 12000); - ret = clk_prepare_enable(res->aux_clk); - if (ret) { - dev_err(dev, "cannot prepare/enable iface clock\n"); + ret = clk_bulk_prepare_enable(res->num_clks, res->clks); + if (ret) goto err_clk_aux; - } - - ret = clk_prepare_enable(res->master_clk); - if (ret) { - dev_err(dev, "cannot prepare/enable core clock\n"); - goto err_clk_axi_m; - } - - ret = clk_prepare_enable(res->slave_clk); - if (ret) { - dev_err(dev, "cannot prepare/enable phy clock\n"); - goto err_clk_axi_s; - } /* enable PCIe clocks and resets */ val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); @@ -891,10 +873,6 @@ static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie) return 0; -err_clk_axi_s: - clk_disable_unprepare(res->master_clk); -err_clk_axi_m: - clk_disable_unprepare(res->aux_clk); err_clk_aux: reset_control_assert(res->ahb_reset); err_rst_ahb: