Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3229611imu; Sat, 24 Nov 2018 00:36:55 -0800 (PST) X-Google-Smtp-Source: AFSGD/Uyp65ahWtP9pC5CFW1bqKz/kLEayZXzYlQLEp8/xSmNK0l9X2lF4KS/nSiZnphnwUHlm8I X-Received: by 2002:a63:441e:: with SMTP id r30mr17405745pga.128.1543048615281; Sat, 24 Nov 2018 00:36:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543048615; cv=none; d=google.com; s=arc-20160816; b=TQ9/WgN7wCCRdHavsk+hnXAIP34P10R0Kfq3w38MmiZqUVUnGYDyEFFmT8MqlK2q+O CHzN2DRwfsb7DN1NvO6niUpWz11tepguydCfBMvfI+ecQvhV5N7NLohVwJBeNCmdBf1J JuQoLVzbdZ5mXiU3vosX2/JGaiF0ZqcycsvWeBlcN+o+nMK7WPTydZMYlgGNHzFbkZwN v3nPbXQQB63J5PxwozLosimxZxbdVQTX1PIRwvmKyBOa3WANjX7S7SdLPpqWZV0550Df XsdGYm73sbgNZYSWtdz3aTG34zelD9JcAeoH3TyBRfVfhTOjEWr1R4x1Zj4K5ELfJfqO WvhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=OIZMvgujAxYr+TjY3QxPeKNA2CeX9WR7lcIX52lBkhM=; b=bXRBJ5zWBkJ+C6UNs/1AZyLsfaiuO7fvyxLR8YH4L9Z4CqU+xcz0VkVnPeO/5tVeVE HgLfuhUdkDQKc57s6Gq0g5zws2Km4HwNdwidVApIHcKo6Z4VVApUyTA6cQLC0cSnOvcE NRyEnFQ1Cfg3H3qSPOX/jGOe9Us//0vZrDiTYcEBg/vB2R29Qc28ONKd+Bk1P7NxvhF2 n9i+yqlh4NS1zYVUP704PVF4N7cjsKufTiTn6AP+Eh1nVe3dCxlhCHZzoXRcwFezxafe RuV81hEHf+VgjnF0LovTa0mLVNwQuJrgwzCXiDoVn4zkhdjpAxdmA4G1xGDWO/cduy91 /gxg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d17si38263710pfm.40.2018.11.24.00.36.41; Sat, 24 Nov 2018 00:36:55 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2439890AbeKXBDC (ORCPT + 99 others); Fri, 23 Nov 2018 20:03:02 -0500 Received: from mail.bootlin.com ([62.4.15.54]:33949 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731702AbeKXBC7 (ORCPT ); Fri, 23 Nov 2018 20:02:59 -0500 Received: by mail.bootlin.com (Postfix, from userid 110) id 09F1020D92; Fri, 23 Nov 2018 15:18:36 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.2 Received: from localhost.localdomain (aaubervilliers-681-1-94-205.w90-88.abo.wanadoo.fr [90.88.35.205]) by mail.bootlin.com (Postfix) with ESMTPSA id 9636620741; Fri, 23 Nov 2018 15:18:35 +0100 (CET) From: Miquel Raynal To: Gregory Clement , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Thomas Petazzoni , Bjorn Helgaas Cc: , Rob Herring , Mark Rutland , Lorenzo Pieralisi , linux-pci@vger.kernel.org, , , Antoine Tenart , Maxime Chevallier , Nadav Haklai , Miquel Raynal Subject: [PATCH 04/12] PCI: aardvark: add clock support Date: Fri, 23 Nov 2018 15:18:23 +0100 Message-Id: <20181123141831.8214-5-miquel.raynal@bootlin.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181123141831.8214-1-miquel.raynal@bootlin.com> References: <20181123141831.8214-1-miquel.raynal@bootlin.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The IP relies on a gated clock. When we will add S2RAM support, this clock will need to be resumed before any PCIe registers are accessed. Add support for this clock. Signed-off-by: Miquel Raynal --- drivers/pci/controller/pci-aardvark.c | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index da695572a2ed..108b3f15c410 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -8,6 +8,7 @@ * Author: Hezi Shahmoon */ +#include #include #include #include @@ -190,6 +191,7 @@ struct advk_pcie { struct platform_device *pdev; + struct clk *clk; void __iomem *base; struct list_head resources; struct irq_domain *irq_domain; @@ -1083,6 +1085,29 @@ static int advk_pcie_setup_phy(struct advk_pcie *pcie) return ret; } +static int advk_pcie_setup_clk(struct advk_pcie *pcie) +{ + struct device *dev = &pcie->pdev->dev; + int ret; + + pcie->clk = devm_clk_get(dev, NULL); + if (IS_ERR(pcie->clk) && (PTR_ERR(pcie->clk) == -EPROBE_DEFER)) + return PTR_ERR(pcie->clk); + + /* Old bindings miss the clock handle */ + if (IS_ERR(pcie->clk)) { + dev_warn(dev, "Clock unavailable (%ld)\n", PTR_ERR(pcie->clk)); + pcie->clk = NULL; + return 0; + } + + ret = clk_prepare_enable(pcie->clk); + if (ret) + dev_err(dev, "Clock initialization failed (%d)\n", ret); + + return ret; +} + static int advk_pcie_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -1118,6 +1143,10 @@ static int advk_pcie_probe(struct platform_device *pdev) return ret; } + ret = advk_pcie_setup_clk(pcie); + if (ret) + return ret; + ret = advk_pcie_setup_phy(pcie); if (ret) return ret; -- 2.19.1