linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 0/5] DVFS support for Venus
@ 2020-09-01 14:20 Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 1/5] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Rajendra Nayak @ 2020-09-01 14:20 UTC (permalink / raw)
  To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
	Rajendra Nayak

Rob, can you pick PATCH 1 since its already reviewed by you.
Stan, Patch 2 and 3 will need to be picked by you and they both have your ACKs
Patch 4 and 5 will need to be merged via the qcom tree once we have them reviewed.

v6: No changes, rebased on 5.9-rc3

v5: Fixed the opp-tables (patch 4/5) to avoid -ERANGE from
dev_pm_opp_set_rate

v4: Moved code from probe/remove/runtime_suspend into
different pm_ops callbacks

v3: Renamed the optional power domain as cx

v2: Fixed up the labels of OPP nodes in patch 4
    Included the bindings update patch as part of this series,
    a resend of https://lore.kernel.org/patchwork/patch/1241077/

These patches add DVFS support for Venus

Rajendra Nayak (5):
  dt-bindings: media: venus: Add an optional power domain for perf
    voting
  media: venus: core: Fix error handling in probe
  media: venus: core: Add support for opp tables/perf voting
  arm64: dts: sdm845: Add OPP tables and power-domains for venus
  arm64: dts: sc7180: Add OPP tables and power-domains for venus

 .../bindings/media/qcom,sc7180-venus.yaml          |  6 +-
 .../bindings/media/qcom,sdm845-venus-v2.yaml       |  6 +-
 arch/arm64/boot/dts/qcom/sc7180.dtsi               | 35 +++++++-
 arch/arm64/boot/dts/qcom/sdm845.dtsi               | 40 +++++++++-
 drivers/media/platform/qcom/venus/core.c           | 17 ++--
 drivers/media/platform/qcom/venus/core.h           |  5 ++
 drivers/media/platform/qcom/venus/pm_helpers.c     | 92 ++++++++++++++++++++--
 7 files changed, 183 insertions(+), 18 deletions(-)

-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v6 1/5] dt-bindings: media: venus: Add an optional power domain for perf voting
  2020-09-01 14:20 [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
@ 2020-09-01 14:20 ` Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 2/5] media: venus: core: Fix error handling in probe Rajendra Nayak
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Rajendra Nayak @ 2020-09-01 14:20 UTC (permalink / raw)
  To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
	Rajendra Nayak

Venus needs to vote for the performance state of a power domain (cx)
to be able to support DVFS. This 'cx' power domain is controlled by
rpmh and is a common power domain (scalable) not specific to
venus alone. This is optional in the sense that, leaving this power
domain out does not really impact the functionality but just makes
the platform a little less power efficient.

Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 Documentation/devicetree/bindings/media/qcom,sc7180-venus.yaml    | 6 +++++-
 Documentation/devicetree/bindings/media/qcom,sdm845-venus-v2.yaml | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/qcom,sc7180-venus.yaml b/Documentation/devicetree/bindings/media/qcom,sc7180-venus.yaml
index 55f2d67..04e303b 100644
--- a/Documentation/devicetree/bindings/media/qcom,sc7180-venus.yaml
+++ b/Documentation/devicetree/bindings/media/qcom,sc7180-venus.yaml
@@ -25,12 +25,16 @@ properties:
     maxItems: 1
 
   power-domains:
-    maxItems: 2
+    minItems: 2
+    maxItems: 3
 
   power-domain-names:
+    minItems: 2
+    maxItems: 3
     items:
       - const: venus
       - const: vcodec0
+      - const: cx
 
   clocks:
     maxItems: 5
diff --git a/Documentation/devicetree/bindings/media/qcom,sdm845-venus-v2.yaml b/Documentation/devicetree/bindings/media/qcom,sdm845-venus-v2.yaml
index 157dff8..90013d4 100644
--- a/Documentation/devicetree/bindings/media/qcom,sdm845-venus-v2.yaml
+++ b/Documentation/devicetree/bindings/media/qcom,sdm845-venus-v2.yaml
@@ -25,13 +25,17 @@ properties:
     maxItems: 1
 
   power-domains:
-    maxItems: 3
+    minItems: 3
+    maxItems: 4
 
   power-domain-names:
+    minItems: 3
+    maxItems: 4
     items:
       - const: venus
       - const: vcodec0
       - const: vcodec1
+      - const: cx
 
   clocks:
     maxItems: 7
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v6 2/5] media: venus: core: Fix error handling in probe
  2020-09-01 14:20 [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 1/5] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
@ 2020-09-01 14:20 ` Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 3/5] media: venus: core: Add support for opp tables/perf voting Rajendra Nayak
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Rajendra Nayak @ 2020-09-01 14:20 UTC (permalink / raw)
  To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
	Rajendra Nayak

Post a successful pm_ops->core_get, an error in probe
should exit by doing a pm_ops->core_put which seems
to be missing. So fix it.

Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/media/platform/qcom/venus/core.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index 203c653..bfcaba3 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -224,13 +224,15 @@ static int venus_probe(struct platform_device *pdev)
 
 	ret = dma_set_mask_and_coherent(dev, core->res->dma_mask);
 	if (ret)
-		return ret;
+		goto err_core_put;
 
 	if (!dev->dma_parms) {
 		dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms),
 					      GFP_KERNEL);
-		if (!dev->dma_parms)
-			return -ENOMEM;
+		if (!dev->dma_parms) {
+			ret = -ENOMEM;
+			goto err_core_put;
+		}
 	}
 	dma_set_max_seg_size(dev, DMA_BIT_MASK(32));
 
@@ -242,11 +244,11 @@ static int venus_probe(struct platform_device *pdev)
 					IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
 					"venus", core);
 	if (ret)
-		return ret;
+		goto err_core_put;
 
 	ret = hfi_create(core, &venus_core_ops);
 	if (ret)
-		return ret;
+		goto err_core_put;
 
 	pm_runtime_enable(dev);
 
@@ -302,6 +304,9 @@ static int venus_probe(struct platform_device *pdev)
 	pm_runtime_set_suspended(dev);
 	pm_runtime_disable(dev);
 	hfi_destroy(core);
+err_core_put:
+	if (core->pm_ops->core_put)
+		core->pm_ops->core_put(dev);
 	return ret;
 }
 
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v6 3/5] media: venus: core: Add support for opp tables/perf voting
  2020-09-01 14:20 [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 1/5] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 2/5] media: venus: core: Fix error handling in probe Rajendra Nayak
@ 2020-09-01 14:20 ` Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 4/5] arm64: dts: sdm845: Add OPP tables and power-domains for venus Rajendra Nayak
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Rajendra Nayak @ 2020-09-01 14:20 UTC (permalink / raw)
  To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
	Rajendra Nayak

Add support to add OPP tables and perf voting on the OPP powerdomain.
This is needed so venus votes on the corresponding performance state
for the OPP powerdomain along with setting the core clock rate.

Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/media/platform/qcom/venus/core.c       |  2 +
 drivers/media/platform/qcom/venus/core.h       |  5 ++
 drivers/media/platform/qcom/venus/pm_helpers.c | 92 ++++++++++++++++++++++++--
 3 files changed, 92 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index bfcaba3..a3e98a5 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -525,6 +525,7 @@ static const struct venus_resources sdm845_res_v2 = {
 	.vcodec_clks_num = 2,
 	.vcodec_pmdomains = { "venus", "vcodec0", "vcodec1" },
 	.vcodec_pmdomains_num = 3,
+	.opp_pmdomain = (const char *[]) { "cx", NULL },
 	.vcodec_num = 2,
 	.max_load = 3110400,	/* 4096x2160@90 */
 	.hfi_version = HFI_VERSION_4XX,
@@ -570,6 +571,7 @@ static const struct venus_resources sc7180_res = {
 	.vcodec_clks_num = 2,
 	.vcodec_pmdomains = { "venus", "vcodec0" },
 	.vcodec_pmdomains_num = 2,
+	.opp_pmdomain = (const char *[]) { "cx", NULL },
 	.vcodec_num = 1,
 	.hfi_version = HFI_VERSION_4XX,
 	.vmem_id = VIDC_RESOURCE_NONE,
diff --git a/drivers/media/platform/qcom/venus/core.h b/drivers/media/platform/qcom/venus/core.h
index 7118612..b0cc544 100644
--- a/drivers/media/platform/qcom/venus/core.h
+++ b/drivers/media/platform/qcom/venus/core.h
@@ -62,6 +62,7 @@ struct venus_resources {
 	unsigned int vcodec_clks_num;
 	const char * const vcodec_pmdomains[VIDC_PMDOMAINS_NUM_MAX];
 	unsigned int vcodec_pmdomains_num;
+	const char **opp_pmdomain;
 	unsigned int vcodec_num;
 	enum hfi_version hfi_version;
 	u32 max_load;
@@ -145,8 +146,12 @@ struct venus_core {
 	struct clk *vcodec1_clks[VIDC_VCODEC_CLKS_NUM_MAX];
 	struct icc_path *video_path;
 	struct icc_path *cpucfg_path;
+	struct opp_table *opp_table;
+	bool has_opp_table;
 	struct device_link *pd_dl_venus;
 	struct device *pmdomains[VIDC_PMDOMAINS_NUM_MAX];
+	struct device_link *opp_dl_venus;
+	struct device *opp_pmdomain;
 	struct video_device *vdev_dec;
 	struct video_device *vdev_enc;
 	struct v4l2_device v4l2_dev;
diff --git a/drivers/media/platform/qcom/venus/pm_helpers.c b/drivers/media/platform/qcom/venus/pm_helpers.c
index 531e7a4..3127af8 100644
--- a/drivers/media/platform/qcom/venus/pm_helpers.c
+++ b/drivers/media/platform/qcom/venus/pm_helpers.c
@@ -9,6 +9,7 @@
 #include <linux/iopoll.h>
 #include <linux/kernel.h>
 #include <linux/pm_domain.h>
+#include <linux/pm_opp.h>
 #include <linux/pm_runtime.h>
 #include <linux/types.h>
 #include <media/v4l2-mem2mem.h>
@@ -66,10 +67,9 @@ static void core_clks_disable(struct venus_core *core)
 
 static int core_clks_set_rate(struct venus_core *core, unsigned long freq)
 {
-	struct clk *clk = core->clks[0];
 	int ret;
 
-	ret = clk_set_rate(clk, freq);
+	ret = dev_pm_opp_set_rate(core->dev, freq);
 	if (ret)
 		return ret;
 
@@ -744,13 +744,16 @@ static int venc_power_v4(struct device *dev, int on)
 
 static int vcodec_domains_get(struct device *dev)
 {
+	int ret;
+	struct opp_table *opp_table;
+	struct device **opp_virt_dev;
 	struct venus_core *core = dev_get_drvdata(dev);
 	const struct venus_resources *res = core->res;
 	struct device *pd;
 	unsigned int i;
 
 	if (!res->vcodec_pmdomains_num)
-		return -ENODEV;
+		goto skip_pmdomains;
 
 	for (i = 0; i < res->vcodec_pmdomains_num; i++) {
 		pd = dev_pm_domain_attach_by_name(dev,
@@ -767,7 +770,41 @@ static int vcodec_domains_get(struct device *dev)
 	if (!core->pd_dl_venus)
 		return -ENODEV;
 
+skip_pmdomains:
+	if (!core->has_opp_table)
+		return 0;
+
+	/* Attach the power domain for setting performance state */
+	opp_table = dev_pm_opp_attach_genpd(dev, res->opp_pmdomain, &opp_virt_dev);
+	if (IS_ERR(opp_table)) {
+		ret = PTR_ERR(opp_table);
+		goto opp_attach_err;
+	}
+
+	core->opp_pmdomain = *opp_virt_dev;
+	core->opp_dl_venus = device_link_add(dev, core->opp_pmdomain,
+					     DL_FLAG_RPM_ACTIVE |
+					     DL_FLAG_PM_RUNTIME |
+					     DL_FLAG_STATELESS);
+	if (!core->opp_dl_venus) {
+		ret = -ENODEV;
+		goto opp_dl_add_err;
+	}
+
 	return 0;
+
+opp_dl_add_err:
+	dev_pm_domain_detach(core->opp_pmdomain, true);
+opp_attach_err:
+	if (core->pd_dl_venus) {
+		device_link_del(core->pd_dl_venus);
+		for (i = 0; i < res->vcodec_pmdomains_num; i++) {
+			if (IS_ERR_OR_NULL(core->pmdomains[i]))
+				continue;
+			dev_pm_domain_detach(core->pmdomains[i], true);
+		}
+	}
+	return ret;
 }
 
 static void vcodec_domains_put(struct device *dev)
@@ -777,7 +814,7 @@ static void vcodec_domains_put(struct device *dev)
 	unsigned int i;
 
 	if (!res->vcodec_pmdomains_num)
-		return;
+		goto skip_pmdomains;
 
 	if (core->pd_dl_venus)
 		device_link_del(core->pd_dl_venus);
@@ -787,6 +824,15 @@ static void vcodec_domains_put(struct device *dev)
 			continue;
 		dev_pm_domain_detach(core->pmdomains[i], true);
 	}
+
+skip_pmdomains:
+	if (!core->has_opp_table)
+		return;
+
+	if (core->opp_dl_venus)
+		device_link_del(core->opp_dl_venus);
+
+	dev_pm_domain_detach(core->opp_pmdomain, true);
 }
 
 static int core_get_v4(struct device *dev)
@@ -815,19 +861,46 @@ static int core_get_v4(struct device *dev)
 	if (legacy_binding)
 		return 0;
 
+	core->opp_table = dev_pm_opp_set_clkname(dev, "core");
+	if (IS_ERR(core->opp_table))
+		return PTR_ERR(core->opp_table);
+
+	if (core->res->opp_pmdomain) {
+		ret = dev_pm_opp_of_add_table(dev);
+		if (!ret) {
+			core->has_opp_table = true;
+		} else if (ret != -ENODEV) {
+			dev_err(dev, "invalid OPP table in device tree\n");
+			dev_pm_opp_put_clkname(core->opp_table);
+			return ret;
+		}
+	}
+
 	ret = vcodec_domains_get(dev);
-	if (ret)
+	if (ret) {
+		if (core->has_opp_table)
+			dev_pm_opp_of_remove_table(dev);
+		dev_pm_opp_put_clkname(core->opp_table);
 		return ret;
+	}
 
 	return 0;
 }
 
 static void core_put_v4(struct device *dev)
 {
+	struct venus_core *core = dev_get_drvdata(dev);
+
 	if (legacy_binding)
 		return;
 
 	vcodec_domains_put(dev);
+
+	if (core->has_opp_table)
+		dev_pm_opp_of_remove_table(dev);
+	if (core->opp_table)
+		dev_pm_opp_put_clkname(core->opp_table);
+
 }
 
 static int core_power_v4(struct device *dev, int on)
@@ -835,10 +908,15 @@ static int core_power_v4(struct device *dev, int on)
 	struct venus_core *core = dev_get_drvdata(dev);
 	int ret = 0;
 
-	if (on == POWER_ON)
+	if (on == POWER_ON) {
 		ret = core_clks_enable(core);
-	else
+	} else {
+		/* Drop the performance state vote */
+		if (core->opp_pmdomain)
+			dev_pm_opp_set_rate(dev, 0);
+
 		core_clks_disable(core);
+	}
 
 	return ret;
 }
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v6 4/5] arm64: dts: sdm845: Add OPP tables and power-domains for venus
  2020-09-01 14:20 [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
                   ` (2 preceding siblings ...)
  2020-09-01 14:20 ` [PATCH v6 3/5] media: venus: core: Add support for opp tables/perf voting Rajendra Nayak
@ 2020-09-01 14:20 ` Rajendra Nayak
  2020-09-01 14:20 ` [PATCH v6 5/5] arm64: dts: sc7180: " Rajendra Nayak
  2020-09-16  5:33 ` [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
  5 siblings, 0 replies; 10+ messages in thread
From: Rajendra Nayak @ 2020-09-01 14:20 UTC (permalink / raw)
  To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
	Rajendra Nayak

Add the OPP tables in order to be able to vote on the performance state of
a power-domain.

Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
---
 arch/arm64/boot/dts/qcom/sdm845.dtsi | 40 ++++++++++++++++++++++++++++++++++--
 1 file changed, 38 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 2884577..86457d9b 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -3639,8 +3639,10 @@
 			interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
 			power-domains = <&videocc VENUS_GDSC>,
 					<&videocc VCODEC0_GDSC>,
-					<&videocc VCODEC1_GDSC>;
-			power-domain-names = "venus", "vcodec0", "vcodec1";
+					<&videocc VCODEC1_GDSC>,
+					<&rpmhpd SDM845_CX>;
+			power-domain-names = "venus", "vcodec0", "vcodec1", "cx";
+			operating-points-v2 = <&venus_opp_table>;
 			clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
 				 <&videocc VIDEO_CC_VENUS_AHB_CLK>,
 				 <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
@@ -3662,6 +3664,40 @@
 			video-core1 {
 				compatible = "venus-encoder";
 			};
+
+			venus_opp_table: venus-opp-table {
+				compatible = "operating-points-v2";
+
+				opp-100000000 {
+					opp-hz = /bits/ 64 <100000000>;
+					required-opps = <&rpmhpd_opp_min_svs>;
+				};
+
+				opp-200000000 {
+					opp-hz = /bits/ 64 <200000000>;
+					required-opps = <&rpmhpd_opp_low_svs>;
+				};
+
+				opp-320000000 {
+					opp-hz = /bits/ 64 <320000000>;
+					required-opps = <&rpmhpd_opp_svs>;
+				};
+
+				opp-380000000 {
+					opp-hz = /bits/ 64 <380000000>;
+					required-opps = <&rpmhpd_opp_svs_l1>;
+				};
+
+				opp-444000000 {
+					opp-hz = /bits/ 64 <444000000>;
+					required-opps = <&rpmhpd_opp_nom>;
+				};
+
+				opp-533000097 {
+					opp-hz = /bits/ 64 <533000097>;
+					required-opps = <&rpmhpd_opp_turbo>;
+				};
+			};
 		};
 
 		videocc: clock-controller@ab00000 {
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v6 5/5] arm64: dts: sc7180: Add OPP tables and power-domains for venus
  2020-09-01 14:20 [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
                   ` (3 preceding siblings ...)
  2020-09-01 14:20 ` [PATCH v6 4/5] arm64: dts: sdm845: Add OPP tables and power-domains for venus Rajendra Nayak
@ 2020-09-01 14:20 ` Rajendra Nayak
  2020-09-16  5:33 ` [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
  5 siblings, 0 replies; 10+ messages in thread
From: Rajendra Nayak @ 2020-09-01 14:20 UTC (permalink / raw)
  To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
	Rajendra Nayak

Add the OPP tables in order to be able to vote on the performance state
of a power-domain

Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
---
 arch/arm64/boot/dts/qcom/sc7180.dtsi | 35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
index d46b383..94a0ec4 100644
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
@@ -2691,8 +2691,10 @@
 			reg = <0 0x0aa00000 0 0xff000>;
 			interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
 			power-domains = <&videocc VENUS_GDSC>,
-					<&videocc VCODEC0_GDSC>;
-			power-domain-names = "venus", "vcodec0";
+					<&videocc VCODEC0_GDSC>,
+					<&rpmhpd SC7180_CX>;
+			power-domain-names = "venus", "vcodec0", "cx";
+			operating-points-v2 = <&venus_opp_table>;
 			clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
 				 <&videocc VIDEO_CC_VENUS_AHB_CLK>,
 				 <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
@@ -2713,6 +2715,35 @@
 			video-encoder {
 				compatible = "venus-encoder";
 			};
+
+			venus_opp_table: venus-opp-table {
+				compatible = "operating-points-v2";
+
+				opp-150000000 {
+					opp-hz = /bits/ 64 <150000000>;
+					required-opps = <&rpmhpd_opp_low_svs>;
+				};
+
+				opp-270000000 {
+					opp-hz = /bits/ 64 <270000000>;
+					required-opps = <&rpmhpd_opp_svs>;
+				};
+
+				opp-340000000 {
+					opp-hz = /bits/ 64 <340000000>;
+					required-opps = <&rpmhpd_opp_svs_l1>;
+				};
+
+				opp-434000000 {
+					opp-hz = /bits/ 64 <434000000>;
+					required-opps = <&rpmhpd_opp_nom>;
+				};
+
+				opp-500000097 {
+					opp-hz = /bits/ 64 <500000097>;
+					required-opps = <&rpmhpd_opp_turbo>;
+				};
+			};
 		};
 
 		videocc: clock-controller@ab00000 {
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v6 0/5] DVFS support for Venus
  2020-09-01 14:20 [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
                   ` (4 preceding siblings ...)
  2020-09-01 14:20 ` [PATCH v6 5/5] arm64: dts: sc7180: " Rajendra Nayak
@ 2020-09-16  5:33 ` Rajendra Nayak
  2020-09-16  7:26   ` Stanimir Varbanov
  5 siblings, 1 reply; 10+ messages in thread
From: Rajendra Nayak @ 2020-09-16  5:33 UTC (permalink / raw)
  To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka


On 9/1/2020 7:50 PM, Rajendra Nayak wrote:
> Rob, can you pick PATCH 1 since its already reviewed by you.
> Stan, Patch 2 and 3 will need to be picked by you and they both have your ACKs

Rob/Stan, any plans to get the patches merged for 5.10?

> Patch 4 and 5 will need to be merged via the qcom tree once we have them reviewed.
> 
> v6: No changes, rebased on 5.9-rc3
> 
> v5: Fixed the opp-tables (patch 4/5) to avoid -ERANGE from
> dev_pm_opp_set_rate
> 
> v4: Moved code from probe/remove/runtime_suspend into
> different pm_ops callbacks
> 
> v3: Renamed the optional power domain as cx
> 
> v2: Fixed up the labels of OPP nodes in patch 4
>      Included the bindings update patch as part of this series,
>      a resend of https://lore.kernel.org/patchwork/patch/1241077/
> 
> These patches add DVFS support for Venus
> 
> Rajendra Nayak (5):
>    dt-bindings: media: venus: Add an optional power domain for perf
>      voting
>    media: venus: core: Fix error handling in probe
>    media: venus: core: Add support for opp tables/perf voting
>    arm64: dts: sdm845: Add OPP tables and power-domains for venus
>    arm64: dts: sc7180: Add OPP tables and power-domains for venus
> 
>   .../bindings/media/qcom,sc7180-venus.yaml          |  6 +-
>   .../bindings/media/qcom,sdm845-venus-v2.yaml       |  6 +-
>   arch/arm64/boot/dts/qcom/sc7180.dtsi               | 35 +++++++-
>   arch/arm64/boot/dts/qcom/sdm845.dtsi               | 40 +++++++++-
>   drivers/media/platform/qcom/venus/core.c           | 17 ++--
>   drivers/media/platform/qcom/venus/core.h           |  5 ++
>   drivers/media/platform/qcom/venus/pm_helpers.c     | 92 ++++++++++++++++++++--
>   7 files changed, 183 insertions(+), 18 deletions(-)
> 

-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v6 0/5] DVFS support for Venus
  2020-09-16  5:33 ` [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
@ 2020-09-16  7:26   ` Stanimir Varbanov
  2020-10-01 20:40     ` Doug Anderson
  0 siblings, 1 reply; 10+ messages in thread
From: Stanimir Varbanov @ 2020-09-16  7:26 UTC (permalink / raw)
  To: Rajendra Nayak, robh+dt, agross, bjorn.andersson
  Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka

Hi,

On 9/16/20 8:33 AM, Rajendra Nayak wrote:
> 
> On 9/1/2020 7:50 PM, Rajendra Nayak wrote:
>> Rob, can you pick PATCH 1 since its already reviewed by you.
>> Stan, Patch 2 and 3 will need to be picked by you and they both have
>> your ACKs
> 
> Rob/Stan, any plans to get the patches merged for 5.10?

2/5 and 3/5 are queued up for v5.10 through media tree.

> 
>> Patch 4 and 5 will need to be merged via the qcom tree once we have
>> them reviewed.
>>
>> v6: No changes, rebased on 5.9-rc3
>>
>> v5: Fixed the opp-tables (patch 4/5) to avoid -ERANGE from
>> dev_pm_opp_set_rate
>>
>> v4: Moved code from probe/remove/runtime_suspend into
>> different pm_ops callbacks
>>
>> v3: Renamed the optional power domain as cx
>>
>> v2: Fixed up the labels of OPP nodes in patch 4
>>      Included the bindings update patch as part of this series,
>>      a resend of https://lore.kernel.org/patchwork/patch/1241077/
>>
>> These patches add DVFS support for Venus
>>
>> Rajendra Nayak (5):
>>    dt-bindings: media: venus: Add an optional power domain for perf
>>      voting
>>    media: venus: core: Fix error handling in probe
>>    media: venus: core: Add support for opp tables/perf voting
>>    arm64: dts: sdm845: Add OPP tables and power-domains for venus
>>    arm64: dts: sc7180: Add OPP tables and power-domains for venus
>>
>>   .../bindings/media/qcom,sc7180-venus.yaml          |  6 +-
>>   .../bindings/media/qcom,sdm845-venus-v2.yaml       |  6 +-
>>   arch/arm64/boot/dts/qcom/sc7180.dtsi               | 35 +++++++-
>>   arch/arm64/boot/dts/qcom/sdm845.dtsi               | 40 +++++++++-
>>   drivers/media/platform/qcom/venus/core.c           | 17 ++--
>>   drivers/media/platform/qcom/venus/core.h           |  5 ++
>>   drivers/media/platform/qcom/venus/pm_helpers.c     | 92
>> ++++++++++++++++++++--
>>   7 files changed, 183 insertions(+), 18 deletions(-)
>>
> 

-- 
regards,
Stan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v6 0/5] DVFS support for Venus
  2020-09-16  7:26   ` Stanimir Varbanov
@ 2020-10-01 20:40     ` Doug Anderson
  2020-10-01 23:17       ` Stanimir Varbanov
  0 siblings, 1 reply; 10+ messages in thread
From: Doug Anderson @ 2020-10-01 20:40 UTC (permalink / raw)
  To: Stanimir Varbanov
  Cc: Rajendra Nayak, Rob Herring, Andy Gross, Bjorn Andersson,
	linux-arm-msm, Linux Media Mailing List,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, LKML,
	Matthias Kaehlcke

Hi,

On Wed, Sep 16, 2020 at 12:26 AM Stanimir Varbanov
<stanimir.varbanov@linaro.org> wrote:
>
> Hi,
>
> On 9/16/20 8:33 AM, Rajendra Nayak wrote:
> >
> > On 9/1/2020 7:50 PM, Rajendra Nayak wrote:
> >> Rob, can you pick PATCH 1 since its already reviewed by you.
> >> Stan, Patch 2 and 3 will need to be picked by you and they both have
> >> your ACKs
> >
> > Rob/Stan, any plans to get the patches merged for 5.10?
>
> 2/5 and 3/5 are queued up for v5.10 through media tree.

Normally I'd expect device tree bindings (patch #1) to go through the
same tree as the driver changes.  Does the media tree work
differently?  If you're expecting Rob Herring to land the device tree
binding change, is he aware?


-Doug

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v6 0/5] DVFS support for Venus
  2020-10-01 20:40     ` Doug Anderson
@ 2020-10-01 23:17       ` Stanimir Varbanov
  0 siblings, 0 replies; 10+ messages in thread
From: Stanimir Varbanov @ 2020-10-01 23:17 UTC (permalink / raw)
  To: Doug Anderson
  Cc: Rajendra Nayak, Rob Herring, Andy Gross, Bjorn Andersson,
	linux-arm-msm, Linux Media Mailing List,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, LKML,
	Matthias Kaehlcke

Hi,

On 10/1/20 11:40 PM, Doug Anderson wrote:
> Hi,
> 
> On Wed, Sep 16, 2020 at 12:26 AM Stanimir Varbanov
> <stanimir.varbanov@linaro.org> wrote:
>>
>> Hi,
>>
>> On 9/16/20 8:33 AM, Rajendra Nayak wrote:
>>>
>>> On 9/1/2020 7:50 PM, Rajendra Nayak wrote:
>>>> Rob, can you pick PATCH 1 since its already reviewed by you.
>>>> Stan, Patch 2 and 3 will need to be picked by you and they both have
>>>> your ACKs
>>>
>>> Rob/Stan, any plans to get the patches merged for 5.10?
>>
>> 2/5 and 3/5 are queued up for v5.10 through media tree.
> 
> Normally I'd expect device tree bindings (patch #1) to go through the
> same tree as the driver changes.  Does the media tree work
> differently?  If you're expecting Rob Herring to land the device tree
> binding change, is he aware?

I sent pull request to Mauro with 1/5 included.
Thanks for spotting.

> 
> 
> -Doug
> 

-- 
regards,
Stan

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-10-01 23:17 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-01 14:20 [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
2020-09-01 14:20 ` [PATCH v6 1/5] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
2020-09-01 14:20 ` [PATCH v6 2/5] media: venus: core: Fix error handling in probe Rajendra Nayak
2020-09-01 14:20 ` [PATCH v6 3/5] media: venus: core: Add support for opp tables/perf voting Rajendra Nayak
2020-09-01 14:20 ` [PATCH v6 4/5] arm64: dts: sdm845: Add OPP tables and power-domains for venus Rajendra Nayak
2020-09-01 14:20 ` [PATCH v6 5/5] arm64: dts: sc7180: " Rajendra Nayak
2020-09-16  5:33 ` [PATCH v6 0/5] DVFS support for Venus Rajendra Nayak
2020-09-16  7:26   ` Stanimir Varbanov
2020-10-01 20:40     ` Doug Anderson
2020-10-01 23:17       ` Stanimir Varbanov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).