* [PATCH v2 0/4] DVFS support for Venus
@ 2020-07-16 5:42 Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-16 5:42 UTC (permalink / raw)
To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
Rajendra Nayak
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
Patch 1 will need to be picked by Rob.
Patch 2 will need to be picked by Stan,
Patch 3 and 4 should land via the qcom tree.
Rajendra Nayak (4):
dt-bindings: media: venus: Add an optional power domain for perf
voting
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 | 43 ++++++++++++++---
drivers/media/platform/qcom/venus/core.h | 5 ++
drivers/media/platform/qcom/venus/pm_helpers.c | 54 ++++++++++++++++++++--
7 files changed, 173 insertions(+), 16 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] 11+ messages in thread
* [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting
2020-07-16 5:42 [PATCH v2 0/4] DVFS support for Venus Rajendra Nayak
@ 2020-07-16 5:42 ` Rajendra Nayak
2020-07-16 19:59 ` Rob Herring
2020-07-16 23:43 ` Bjorn Andersson
2020-07-16 5:42 ` [PATCH v2 2/4] media: venus: core: Add support for opp tables/perf voting Rajendra Nayak
` (2 subsequent siblings)
3 siblings, 2 replies; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-16 5:42 UTC (permalink / raw)
To: stanimir.varbanov, robh+dt, agross, bjorn.andersson
Cc: linux-arm-msm, linux-media, devicetree, linux-kernel, mka,
Rajendra Nayak
Add an optional power domain which when specified can be used for
setting the performance state of Venus.
Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
---
This is a resend of https://lore.kernel.org/patchwork/patch/1241077/
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..1e8675b 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: opp-pd
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..437286d 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: opp-pd
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] 11+ messages in thread
* [PATCH v2 2/4] media: venus: core: Add support for opp tables/perf voting
2020-07-16 5:42 [PATCH v2 0/4] DVFS support for Venus Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
@ 2020-07-16 5:42 ` Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 3/4] arm64: dts: sdm845: Add OPP tables and power-domains for venus Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 4/4] arm64: dts: sc7180: " Rajendra Nayak
3 siblings, 0 replies; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-16 5:42 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>
---
drivers/media/platform/qcom/venus/core.c | 43 +++++++++++++++++---
drivers/media/platform/qcom/venus/core.h | 5 +++
drivers/media/platform/qcom/venus/pm_helpers.c | 54 ++++++++++++++++++++++++--
3 files changed, 92 insertions(+), 10 deletions(-)
diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index 203c653..630f61b 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -12,6 +12,7 @@
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/types.h>
+#include <linux/pm_opp.h>
#include <linux/pm_runtime.h>
#include <media/videobuf2-v4l2.h>
#include <media/v4l2-mem2mem.h>
@@ -216,21 +217,37 @@ static int venus_probe(struct platform_device *pdev)
if (!core->pm_ops)
return -ENODEV;
+ 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");
+ return ret;
+ }
+ }
+
if (core->pm_ops->core_get) {
ret = core->pm_ops->core_get(dev);
if (ret)
- return ret;
+ goto err_opp_cleanup;
}
ret = dma_set_mask_and_coherent(dev, core->res->dma_mask);
if (ret)
- return ret;
+ goto err_opp_cleanup;
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_opp_cleanup;
+ }
}
dma_set_max_seg_size(dev, DMA_BIT_MASK(32));
@@ -242,11 +259,11 @@ static int venus_probe(struct platform_device *pdev)
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
"venus", core);
if (ret)
- return ret;
+ goto err_opp_cleanup;
ret = hfi_create(core, &venus_core_ops);
if (ret)
- return ret;
+ goto err_opp_cleanup;
pm_runtime_enable(dev);
@@ -302,6 +319,10 @@ static int venus_probe(struct platform_device *pdev)
pm_runtime_set_suspended(dev);
pm_runtime_disable(dev);
hfi_destroy(core);
+err_opp_cleanup:
+ if (core->has_opp_table)
+ dev_pm_opp_of_remove_table(dev);
+ dev_pm_opp_put_clkname(core->opp_table);
return ret;
}
@@ -326,6 +347,10 @@ static int venus_remove(struct platform_device *pdev)
pm_runtime_put_sync(dev);
pm_runtime_disable(dev);
+ if (core->has_opp_table)
+ dev_pm_opp_of_remove_table(dev);
+ dev_pm_opp_put_clkname(core->opp_table);
+
if (pm_ops->core_put)
pm_ops->core_put(dev);
@@ -355,6 +380,10 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)
if (ret)
return ret;
+ /* Drop the performance state vote */
+ if (core->opp_pmdomain)
+ dev_pm_opp_set_rate(dev, 0);
+
if (pm_ops->core_power)
ret = pm_ops->core_power(dev, POWER_OFF);
@@ -520,6 +549,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 *[]) { "opp-pd", NULL },
.vcodec_num = 2,
.max_load = 3110400, /* 4096x2160@90 */
.hfi_version = HFI_VERSION_4XX,
@@ -565,6 +595,7 @@ static const struct venus_resources sc7180_res = {
.vcodec_clks_num = 2,
.vcodec_pmdomains = { "venus", "vcodec0" },
.vcodec_pmdomains_num = 2,
+ .opp_pmdomain = (const char *[]) { "opp-pd", 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 abf9315..4149ab8 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;
@@ -740,13 +740,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,
@@ -763,7 +766,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)
@@ -773,7 +810,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);
@@ -783,6 +820,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)
--
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] 11+ messages in thread
* [PATCH v2 3/4] arm64: dts: sdm845: Add OPP tables and power-domains for venus
2020-07-16 5:42 [PATCH v2 0/4] DVFS support for Venus Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 2/4] media: venus: core: Add support for opp tables/perf voting Rajendra Nayak
@ 2020-07-16 5:42 ` Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 4/4] arm64: dts: sc7180: " Rajendra Nayak
3 siblings, 0 replies; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-16 5:42 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 759cdd0..d410cda 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -3631,8 +3631,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", "opp-pd";
+ 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>,
@@ -3654,6 +3656,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-533000000 {
+ opp-hz = /bits/ 64 <533000000>;
+ 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] 11+ messages in thread
* [PATCH v2 4/4] arm64: dts: sc7180: Add OPP tables and power-domains for venus
2020-07-16 5:42 [PATCH v2 0/4] DVFS support for Venus Rajendra Nayak
` (2 preceding siblings ...)
2020-07-16 5:42 ` [PATCH v2 3/4] arm64: dts: sdm845: Add OPP tables and power-domains for venus Rajendra Nayak
@ 2020-07-16 5:42 ` Rajendra Nayak
3 siblings, 0 replies; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-16 5:42 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 126e2fc..c560ad2 100644
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
@@ -2664,8 +2664,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", "opp-pd";
+ 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>,
@@ -2686,6 +2688,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-500000000 {
+ opp-hz = /bits/ 64 <500000000>;
+ 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] 11+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting
2020-07-16 5:42 ` [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
@ 2020-07-16 19:59 ` Rob Herring
2020-07-17 5:52 ` Rajendra Nayak
2020-07-16 23:43 ` Bjorn Andersson
1 sibling, 1 reply; 11+ messages in thread
From: Rob Herring @ 2020-07-16 19:59 UTC (permalink / raw)
To: Rajendra Nayak
Cc: stanimir.varbanov, agross, bjorn.andersson, linux-arm-msm,
linux-media, devicetree, linux-kernel, mka
On Thu, Jul 16, 2020 at 11:12:16AM +0530, Rajendra Nayak wrote:
> Add an optional power domain which when specified can be used for
> setting the performance state of Venus.
The h/w suddenly grew a new power island/domain? Seems like an abuse of
power-domains...
>
> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
> ---
> This is a resend of https://lore.kernel.org/patchwork/patch/1241077/
>
> 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..1e8675b 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: opp-pd
>
> 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..437286d 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: opp-pd
>
> 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 [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting
2020-07-16 5:42 ` [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
2020-07-16 19:59 ` Rob Herring
@ 2020-07-16 23:43 ` Bjorn Andersson
2020-07-17 5:13 ` Rajendra Nayak
1 sibling, 1 reply; 11+ messages in thread
From: Bjorn Andersson @ 2020-07-16 23:43 UTC (permalink / raw)
To: Rajendra Nayak
Cc: stanimir.varbanov, robh+dt, agross, linux-arm-msm, linux-media,
devicetree, linux-kernel, mka
On Wed 15 Jul 22:42 PDT 2020, Rajendra Nayak wrote:
> Add an optional power domain which when specified can be used for
> setting the performance state of Venus.
>
> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
> ---
> This is a resend of https://lore.kernel.org/patchwork/patch/1241077/
>
> 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..1e8675b 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: opp-pd
In line with Rob's question, the "opp power-domain" seems like a
software construct, wouldn't this be better named e.g. "cx"?
Regards,
Bjorn
>
> 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..437286d 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: opp-pd
>
> 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 [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting
2020-07-16 23:43 ` Bjorn Andersson
@ 2020-07-17 5:13 ` Rajendra Nayak
0 siblings, 0 replies; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-17 5:13 UTC (permalink / raw)
To: Bjorn Andersson
Cc: stanimir.varbanov, robh+dt, agross, linux-arm-msm, linux-media,
devicetree, linux-kernel, mka
On 7/17/2020 5:13 AM, Bjorn Andersson wrote:
> On Wed 15 Jul 22:42 PDT 2020, Rajendra Nayak wrote:
>
>> Add an optional power domain which when specified can be used for
>> setting the performance state of Venus.
>>
>> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
>> ---
>> This is a resend of https://lore.kernel.org/patchwork/patch/1241077/
>>
>> 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..1e8675b 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: opp-pd
>
> In line with Rob's question, the "opp power-domain" seems like a
> software construct, wouldn't this be better named e.g. "cx"?
The reason I chose to call it 'opp-pd' was to signify its the domain
that supports scaling (performance state) and not something that's just
turned on/off. I am fine calling it cx if that makes it look more 'real'
>
> Regards,
> Bjorn
>
>>
>> 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..437286d 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: opp-pd
>>
>> clocks:
>> maxItems: 7
>> --
>> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
>> of Code Aurora Forum, hosted by The Linux Foundation
>>
--
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] 11+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting
2020-07-16 19:59 ` Rob Herring
@ 2020-07-17 5:52 ` Rajendra Nayak
2020-07-17 18:56 ` Rob Herring
0 siblings, 1 reply; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-17 5:52 UTC (permalink / raw)
To: Rob Herring
Cc: stanimir.varbanov, agross, bjorn.andersson, linux-arm-msm,
linux-media, devicetree, linux-kernel, mka
On 7/17/2020 1:29 AM, Rob Herring wrote:
> On Thu, Jul 16, 2020 at 11:12:16AM +0530, Rajendra Nayak wrote:
>> Add an optional power domain which when specified can be used for
>> setting the performance state of Venus.
>
> The h/w suddenly grew a new power island/domain? Seems like an abuse of
> power-domains...
The power-domain always existed, we have just managed to survive without
having venus support DVFS and have the domain always be at a high performance
level (set statically by boot code)
Now, if we care to do DVFS and support better PM on the SoC, its important
for the devices to manage this additional power domain (and dynamically
scale it)
That said, if the name 'opp-pd' makes it look like a software construct,
like Bjorn mentioned, I am fine to give it a real name like 'cx-pd'
Does that sound good?
PS: Like I mentioned earlier [1], cx is a shared power island,
not a power island specific to this block, and definitely not a software
pm-domain construct.
[1] https://lore.kernel.org/patchwork/patch/1241077/
>
>>
>> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
>> ---
>> This is a resend of https://lore.kernel.org/patchwork/patch/1241077/
>>
>> 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..1e8675b 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: opp-pd
>>
>> 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..437286d 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: opp-pd
>>
>> clocks:
>> maxItems: 7
>> --
>> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
>> of Code Aurora Forum, hosted by The Linux Foundation
>>
--
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] 11+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting
2020-07-17 5:52 ` Rajendra Nayak
@ 2020-07-17 18:56 ` Rob Herring
2020-07-20 4:29 ` Rajendra Nayak
0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring @ 2020-07-17 18:56 UTC (permalink / raw)
To: Rajendra Nayak
Cc: Stanimir Varbanov, Andy Gross, Bjorn Andersson, linux-arm-msm,
Linux Media Mailing List, devicetree, linux-kernel,
Matthias Kaehlcke
On Thu, Jul 16, 2020 at 11:52 PM Rajendra Nayak <rnayak@codeaurora.org> wrote:
>
>
> On 7/17/2020 1:29 AM, Rob Herring wrote:
> > On Thu, Jul 16, 2020 at 11:12:16AM +0530, Rajendra Nayak wrote:
> >> Add an optional power domain which when specified can be used for
> >> setting the performance state of Venus.
> >
> > The h/w suddenly grew a new power island/domain? Seems like an abuse of
> > power-domains...
>
> The power-domain always existed, we have just managed to survive without
> having venus support DVFS and have the domain always be at a high performance
> level (set statically by boot code)
> Now, if we care to do DVFS and support better PM on the SoC, its important
> for the devices to manage this additional power domain (and dynamically
> scale it)
>
> That said, if the name 'opp-pd' makes it look like a software construct,
> like Bjorn mentioned, I am fine to give it a real name like 'cx-pd'
> Does that sound good?
He suggested 'cx' as '-pd' would be redundant. I have no idea what
'cx' means, but fine.
> PS: Like I mentioned earlier [1], cx is a shared power island,
> not a power island specific to this block, and definitely not a software
> pm-domain construct.
Put this context/detail into your patches. Assume I don't remember
what happened last week.
Unfortunately, gmail seems to have no way to filter on unread mails in
reply to my replies and doesn't move the thread up in 'Sent' filter,
so older threads get lost.
Rob
> [1] https://lore.kernel.org/patchwork/patch/1241077/
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting
2020-07-17 18:56 ` Rob Herring
@ 2020-07-20 4:29 ` Rajendra Nayak
0 siblings, 0 replies; 11+ messages in thread
From: Rajendra Nayak @ 2020-07-20 4:29 UTC (permalink / raw)
To: Rob Herring
Cc: Stanimir Varbanov, Andy Gross, Bjorn Andersson, linux-arm-msm,
Linux Media Mailing List, devicetree, linux-kernel,
Matthias Kaehlcke
On 7/18/2020 12:26 AM, Rob Herring wrote:
> On Thu, Jul 16, 2020 at 11:52 PM Rajendra Nayak <rnayak@codeaurora.org> wrote:
>>
>>
>> On 7/17/2020 1:29 AM, Rob Herring wrote:
>>> On Thu, Jul 16, 2020 at 11:12:16AM +0530, Rajendra Nayak wrote:
>>>> Add an optional power domain which when specified can be used for
>>>> setting the performance state of Venus.
>>>
>>> The h/w suddenly grew a new power island/domain? Seems like an abuse of
>>> power-domains...
>>
>> The power-domain always existed, we have just managed to survive without
>> having venus support DVFS and have the domain always be at a high performance
>> level (set statically by boot code)
>> Now, if we care to do DVFS and support better PM on the SoC, its important
>> for the devices to manage this additional power domain (and dynamically
>> scale it)
>>
>> That said, if the name 'opp-pd' makes it look like a software construct,
>> like Bjorn mentioned, I am fine to give it a real name like 'cx-pd'
>> Does that sound good?
>
> He suggested 'cx' as '-pd' would be redundant. I have no idea what
> 'cx' means, but fine.
>
>> PS: Like I mentioned earlier [1], cx is a shared power island,
>> not a power island specific to this block, and definitely not a software
>> pm-domain construct.
>
> Put this context/detail into your patches. Assume I don't remember
> what happened last week.
Thanks Rob, will do when I re-post shortly.
>
> Unfortunately, gmail seems to have no way to filter on unread mails in
> reply to my replies and doesn't move the thread up in 'Sent' filter,
> so older threads get lost.
>
> Rob
>
>> [1] https://lore.kernel.org/patchwork/patch/1241077/
--
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] 11+ messages in thread
end of thread, other threads:[~2020-07-20 4:29 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-16 5:42 [PATCH v2 0/4] DVFS support for Venus Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 1/4] dt-bindings: media: venus: Add an optional power domain for perf voting Rajendra Nayak
2020-07-16 19:59 ` Rob Herring
2020-07-17 5:52 ` Rajendra Nayak
2020-07-17 18:56 ` Rob Herring
2020-07-20 4:29 ` Rajendra Nayak
2020-07-16 23:43 ` Bjorn Andersson
2020-07-17 5:13 ` Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 2/4] media: venus: core: Add support for opp tables/perf voting Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 3/4] arm64: dts: sdm845: Add OPP tables and power-domains for venus Rajendra Nayak
2020-07-16 5:42 ` [PATCH v2 4/4] arm64: dts: sc7180: " Rajendra Nayak
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).