All of lore.kernel.org
 help / color / mirror / Atom feed
From: thor.thayer@linux.intel.com
To: dinguyen@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com,
	will.deacon@arm.com, robin.murphy@arm.com, joro@8bytes.org,
	aisheng.dong@nxp.com, sboyd@kernel.org
Cc: vivek.gautam@codeaurora.org, linux-clk@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	iommu@lists.linux-foundation.org,
	Thor Thayer <thor.thayer@linux.intel.com>
Subject: [PATCHv3 2/2] iommu/arm-smmu: Add SMMU clock
Date: Wed,  3 Oct 2018 17:28:13 -0500	[thread overview]
Message-ID: <1538605693-22073-3-git-send-email-thor.thayer@linux.intel.com> (raw)
In-Reply-To: <1538605693-22073-1-git-send-email-thor.thayer@linux.intel.com>

From: Thor Thayer <thor.thayer@linux.intel.com>

Add a clock to the SMMU structure. In the device tree case,
check for a clock node and enable the clock if found.

This patch is dependent upon the following patches that add
a device tree bulk clock function.
"[V6, 1/4] clk: bulk: add of_clk_bulk_get()"
https://patchwork.kernel.org/patch/10583133/
"[V6, 2/4] clk: add new APIs to operation on all available
clocks"
https://patchwork.kernel.org/patch/10583131/
"[V6, 3/4] clk: add managerged version of clk_bulk_get_all"
https://patchwork.kernel.org/patch/10583139/

Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
---
 drivers/iommu/arm-smmu.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 5a28ae892504..0f4596b42ca7 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -213,6 +213,8 @@ struct arm_smmu_device {
 
 	/* IOMMU core code handle */
 	struct iommu_device		iommu;
+	int				num_clks;
+	struct clk_bulk_data		*clks;
 };
 
 enum arm_smmu_context_fmt {
@@ -2038,6 +2040,17 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev,
 	const struct arm_smmu_match_data *data;
 	struct device *dev = &pdev->dev;
 	bool legacy_binding;
+	int ret;
+
+	/* If a clock is declared, enable it */
+	ret = devm_clk_bulk_get_all(smmu->dev, &smmu->clks);
+	if (IS_ERR(ret)) {
+		smmu->clks = NULL;
+		dev_dbg(dev, "cannot get smmu clock\n");
+	} else {
+		smmu->num_clks = ret;
+		clk_bulk_prepare_enable(smmu->num_clks, smmu->clks);
+	}
 
 	if (of_property_read_u32(dev->of_node, "#global-interrupts",
 				 &smmu->num_global_irqs)) {
@@ -2236,6 +2249,10 @@ static int arm_smmu_device_remove(struct platform_device *pdev)
 
 	/* Turn the thing off */
 	writel(sCR0_CLIENTPD, ARM_SMMU_GR0_NS(smmu) + ARM_SMMU_GR0_sCR0);
+
+	if (smmu->clks)
+		clk_bulk_disable_unprepare(smmu->num_clks, smmu->clks);
+
 	return 0;
 }
 
@@ -2248,6 +2265,9 @@ static int __maybe_unused arm_smmu_pm_resume(struct device *dev)
 {
 	struct arm_smmu_device *smmu = dev_get_drvdata(dev);
 
+	if (smmu->clks)
+		clk_bulk_prepare_enable(smmu->num_clks, smmu->clks);
+
 	arm_smmu_device_reset(smmu);
 	return 0;
 }
-- 
2.7.4


WARNING: multiple messages have this Message-ID (diff)
From: thor.thayer@linux.intel.com (thor.thayer at linux.intel.com)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 2/2] iommu/arm-smmu: Add SMMU clock
Date: Wed,  3 Oct 2018 17:28:13 -0500	[thread overview]
Message-ID: <1538605693-22073-3-git-send-email-thor.thayer@linux.intel.com> (raw)
In-Reply-To: <1538605693-22073-1-git-send-email-thor.thayer@linux.intel.com>

From: Thor Thayer <thor.thayer@linux.intel.com>

Add a clock to the SMMU structure. In the device tree case,
check for a clock node and enable the clock if found.

This patch is dependent upon the following patches that add
a device tree bulk clock function.
"[V6, 1/4] clk: bulk: add of_clk_bulk_get()"
https://patchwork.kernel.org/patch/10583133/
"[V6, 2/4] clk: add new APIs to operation on all available
clocks"
https://patchwork.kernel.org/patch/10583131/
"[V6, 3/4] clk: add managerged version of clk_bulk_get_all"
https://patchwork.kernel.org/patch/10583139/

Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
---
 drivers/iommu/arm-smmu.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 5a28ae892504..0f4596b42ca7 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -213,6 +213,8 @@ struct arm_smmu_device {
 
 	/* IOMMU core code handle */
 	struct iommu_device		iommu;
+	int				num_clks;
+	struct clk_bulk_data		*clks;
 };
 
 enum arm_smmu_context_fmt {
@@ -2038,6 +2040,17 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev,
 	const struct arm_smmu_match_data *data;
 	struct device *dev = &pdev->dev;
 	bool legacy_binding;
+	int ret;
+
+	/* If a clock is declared, enable it */
+	ret = devm_clk_bulk_get_all(smmu->dev, &smmu->clks);
+	if (IS_ERR(ret)) {
+		smmu->clks = NULL;
+		dev_dbg(dev, "cannot get smmu clock\n");
+	} else {
+		smmu->num_clks = ret;
+		clk_bulk_prepare_enable(smmu->num_clks, smmu->clks);
+	}
 
 	if (of_property_read_u32(dev->of_node, "#global-interrupts",
 				 &smmu->num_global_irqs)) {
@@ -2236,6 +2249,10 @@ static int arm_smmu_device_remove(struct platform_device *pdev)
 
 	/* Turn the thing off */
 	writel(sCR0_CLIENTPD, ARM_SMMU_GR0_NS(smmu) + ARM_SMMU_GR0_sCR0);
+
+	if (smmu->clks)
+		clk_bulk_disable_unprepare(smmu->num_clks, smmu->clks);
+
 	return 0;
 }
 
@@ -2248,6 +2265,9 @@ static int __maybe_unused arm_smmu_pm_resume(struct device *dev)
 {
 	struct arm_smmu_device *smmu = dev_get_drvdata(dev);
 
+	if (smmu->clks)
+		clk_bulk_prepare_enable(smmu->num_clks, smmu->clks);
+
 	arm_smmu_device_reset(smmu);
 	return 0;
 }
-- 
2.7.4

  parent reply	other threads:[~2018-10-03 22:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-03 22:28 [PATCHv3 0/2] iommu/arm-smmu: Add Stratix10 SMMU Support thor.thayer
2018-10-03 22:28 ` thor.thayer at linux.intel.com
2018-10-03 22:28 ` thor.thayer-VuQAYsv1563Yd54FQh9/CA
2018-10-03 22:28 ` [PATCHv3 1/2] arm64: dts: stratix10: Add Stratix10 SMMU support thor.thayer
2018-10-03 22:28   ` thor.thayer at linux.intel.com
2018-10-03 22:28 ` thor.thayer [this message]
2018-10-03 22:28   ` [PATCHv3 2/2] iommu/arm-smmu: Add SMMU clock thor.thayer at linux.intel.com
2018-10-04 18:49   ` Vivek Gautam
2018-10-04 18:49     ` Vivek Gautam
2018-10-04 18:49     ` Vivek Gautam
2018-10-04 21:00     ` Thor Thayer
2018-10-04 21:00       ` Thor Thayer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1538605693-22073-3-git-send-email-thor.thayer@linux.intel.com \
    --to=thor.thayer@linux.intel.com \
    --cc=aisheng.dong@nxp.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dinguyen@kernel.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=sboyd@kernel.org \
    --cc=vivek.gautam@codeaurora.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.