2020-01-02 13:27:46

by Dikshita Agarwal

[permalink] [raw]
Subject: [PATCH V3 0/4] Enable video on sc7180

Hello,

Changes since v2:

- added changes to enable ICB in DT.

- addressed DT schema and resource struct review comments.

- added Venus firmware subnode for non-TZ platform.


v2 can be found at [1].
These changes depend on patch series [2] - [6].

Thanks,
Dikshita

[1] https://lkml.org/lkml/2019/12/20/126
[2] https://patchwork.kernel.org/project/linux-media/list/?series=219021
[3] https://patchwork.kernel.org/project/linux-media/list/?series=214797
[4] https://lkml.org/lkml/2019/12/27/73
[5] https://lore.kernel.org/patchwork/project/lkml/list/?series=418681
[6] https://lore.kernel.org/patchwork/project/lkml/list/?series=424054

Dikshita Agarwal (4):
arm64: dts: sc7180: Add Venus video codec DT node
dt-bindings: media: venus: Add sc7180 DT schema
venus: core: add sc7180 DT compatible and resource struct
arm64: dts: sc7180: Add Venus firmware subnode

.../bindings/media/qcom,venus-sc7180.yaml | 136 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/sc7180-idp.dts | 6 +
arch/arm64/boot/dts/qcom/sc7180.dtsi | 36 ++++++
drivers/media/platform/qcom/venus/core.c | 45 +++++++
4 files changed, 223 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml

--
1.9.1


2020-01-02 13:27:48

by Dikshita Agarwal

[permalink] [raw]
Subject: [PATCH V3 2/4] dt-bindings: media: venus: Add sc7180 DT schema

Add new qcom,sc7180-venus DT binding schema.

Signed-off-by: Dikshita Agarwal <[email protected]>
---
.../bindings/media/qcom,venus-sc7180.yaml | 136 +++++++++++++++++++++
1 file changed, 136 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml

diff --git a/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml b/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
new file mode 100644
index 0000000..b78952c
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
@@ -0,0 +1,136 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/media/qcom,venus-sc7180.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Qualcomm Venus video encode and decode accelerators
+
+maintainers:
+ - Stanimir Varbanov <[email protected]>
+
+description: |
+ The Venus IP is a video encode and decode accelerator present
+ on Qualcomm platforms
+
+properties:
+ compatible:
+ const: "qcom,sc7180-venus"
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ power-domains:
+ maxItems: 2
+
+ power-domain-names:
+ maxItems: 2
+ items:
+ - const: venus
+ - const: vcodec0
+
+ clocks:
+ maxItems: 5
+
+ clock-names:
+ items:
+ - const: core
+ - const: iface
+ - const: bus
+ - const: vcodec0_core
+ - const: vcodec0_bus
+
+ iommus:
+ minItems: 1
+ maxItems: 20
+
+ memory-region:
+ maxItems: 1
+
+ video-core0:
+ type: object
+
+ properties:
+ compatible:
+ const: "venus-decoder"
+
+ required:
+ - compatible
+
+ additionalProperties: false
+
+ video-core1:
+ type: object
+
+ properties:
+ compatible:
+ const: "venus-encoder"
+
+ required:
+ - compatible
+
+ additionalProperties: false
+
+ video-firmware:
+ type: object
+
+ description: |
+ Firmware subnode is needed when the platform does not
+ have TrustZone.
+
+ properties:
+ iommus:
+ minItems: 1
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - power-domains
+ - power-domain-names
+ - clocks
+ - clock-names
+ - iommus
+ - memory-region
+ - video-core0
+ - video-core1
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/clock/qcom,videocc-sc7180.h>
+
+ venus: video-codec@aa00000 {
+ compatible = "qcom,sc7180-venus";
+ 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";
+ clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
+ <&videocc VIDEO_CC_VENUS_AHB_CLK>,
+ <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
+ <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
+ <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
+ clock-names = "core", "iface", "bus",
+ "vcodec0_core", "vcodec0_bus";
+ iommus = <&apps_smmu 0x0c00 0x60>;
+ memory-region = <&venus_mem>;
+
+ interconnects = <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI1>,
+ <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_VENUS_CFG>;
+ interconnect-names = "video-mem", "cpu-cfg";
+
+ video-core0 {
+ compatible = "venus-decoder";
+ };
+
+ video-core1 {
+ compatible = "venus-encoder";
+ };
+
+ };
--
1.9.1

2020-01-02 13:27:48

by Dikshita Agarwal

[permalink] [raw]
Subject: [PATCH V3 3/4] venus: core: add sc7180 DT compatible and resource struct

This add DT compatible string and resource structure for sc7180.

Signed-off-by: Dikshita Agarwal <[email protected]>
---
drivers/media/platform/qcom/venus/core.c | 45 ++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index c7525d9..194b10b9 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -521,11 +521,56 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)
.fwname = "qcom/venus-5.2/venus.mdt",
};

+static const struct freq_tbl sc7180_freq_table[] = {
+ { 0, 500000000 },
+ { 0, 434000000 },
+ { 0, 340000000 },
+ { 0, 270000000 },
+ { 0, 150000000 },
+};
+
+static const struct bw_tbl sc7180_bw_table_enc[] = {
+ { 972000, 750000, 0, 0, 0 }, /* 3840x2160@30 */
+ { 489600, 451000, 0, 0, 0 }, /* 1920x1080@60 */
+ { 244800, 234000, 0, 0, 0 }, /* 1920x1080@30 */
+};
+
+static const struct bw_tbl sc7180_bw_table_dec[] = {
+ { 1036800, 1386000, 0, 1875000, 0 }, /* 4096x2160@30 */
+ { 489600, 865000, 0, 1146000, 0 }, /* 1920x1080@60 */
+ { 244800, 530000, 0, 583000, 0 }, /* 1920x1080@30 */
+};
+
+static const struct venus_resources sc7180_res = {
+ .freq_tbl = sc7180_freq_table,
+ .freq_tbl_size = ARRAY_SIZE(sc7180_freq_table),
+ .bw_tbl_enc = sc7180_bw_table_enc,
+ .bw_tbl_enc_size = ARRAY_SIZE(sc7180_bw_table_enc),
+ .bw_tbl_dec = sc7180_bw_table_dec,
+ .bw_tbl_dec_size = ARRAY_SIZE(sc7180_bw_table_dec),
+ .codec_freq_data = sdm845_codec_freq_data,
+ .codec_freq_data_size = ARRAY_SIZE(sdm845_codec_freq_data),
+ .clks = {"core", "iface", "bus" },
+ .clks_num = 3,
+ .vcodec0_clks = { "vcodec0_core", "vcodec0_bus" },
+ .vcodec_clks_num = 2,
+ .vcodec_pmdomains = { "venus", "vcodec0" },
+ .vcodec_pmdomains_num = 2,
+ .vcodec_num = 1,
+ .hfi_version = HFI_VERSION_4XX,
+ .vmem_id = VIDC_RESOURCE_NONE,
+ .vmem_size = 0,
+ .vmem_addr = 0,
+ .dma_mask = 0xe0000000 - 1,
+ .fwname = "qcom/venus-5.4/venus.mdt",
+};
+
static const struct of_device_id venus_dt_match[] = {
{ .compatible = "qcom,msm8916-venus", .data = &msm8916_res, },
{ .compatible = "qcom,msm8996-venus", .data = &msm8996_res, },
{ .compatible = "qcom,sdm845-venus", .data = &sdm845_res, },
{ .compatible = "qcom,sdm845-venus-v2", .data = &sdm845_res_v2, },
+ { .compatible = "qcom,sc7180-venus", .data = &sc7180_res, },
{ }
};
MODULE_DEVICE_TABLE(of, venus_dt_match);
--
1.9.1

2020-01-02 13:27:56

by Dikshita Agarwal

[permalink] [raw]
Subject: [PATCH V3 1/4] arm64: dts: sc7180: Add Venus video codec DT node

This adds Venus video codec DT node for sc7180.

Signed-off-by: Dikshita Agarwal <[email protected]>
---
arch/arm64/boot/dts/qcom/sc7180.dtsi | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
index 3676bfd..fa849de 100644
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
@@ -10,6 +10,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/phy/phy-qcom-qusb2.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/clock/qcom,videocc-sc7180.h>

/ {
interrupt-parent = <&intc>;
@@ -66,6 +67,11 @@
compatible = "qcom,cmd-db";
no-map;
};
+
+ venus_mem: memory@8f600000 {
+ reg = <0 0x8f600000 0 0x500000>;
+ no-map;
+ };
};

cpus {
@@ -1043,6 +1049,36 @@
};
};

+ venus: video-codec@aa00000 {
+ compatible = "qcom,sc7180-venus";
+ 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";
+ clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
+ <&videocc VIDEO_CC_VENUS_AHB_CLK>,
+ <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
+ <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
+ <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
+ clock-names = "core", "iface", "bus",
+ "vcodec0_core", "vcodec0_bus";
+ iommus = <&apps_smmu 0x0c00 0x60>;
+ memory-region = <&venus_mem>;
+
+ interconnects = <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI1>,
+ <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_VENUS_CFG>;
+ interconnect-names = "video-mem", "cpu-cfg";
+
+ video-core0 {
+ compatible = "venus-decoder";
+ };
+
+ video-core1 {
+ compatible = "venus-encoder";
+ };
+ };
+
pdc: interrupt-controller@b220000 {
compatible = "qcom,sc7180-pdc", "qcom,pdc";
reg = <0 0x0b220000 0 0x30000>;
--
1.9.1

2020-01-04 00:44:56

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH V3 2/4] dt-bindings: media: venus: Add sc7180 DT schema

On Thu, Jan 02, 2020 at 06:54:59PM +0530, Dikshita Agarwal wrote:
> Add new qcom,sc7180-venus DT binding schema.
>
> Signed-off-by: Dikshita Agarwal <[email protected]>
> ---
> .../bindings/media/qcom,venus-sc7180.yaml | 136 +++++++++++++++++++++
> 1 file changed, 136 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
>
> diff --git a/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml b/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
> new file mode 100644
> index 0000000..b78952c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
> @@ -0,0 +1,136 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/media/qcom,venus-sc7180.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Qualcomm Venus video encode and decode accelerators
> +
> +maintainers:
> + - Stanimir Varbanov <[email protected]>
> +
> +description: |
> + The Venus IP is a video encode and decode accelerator present
> + on Qualcomm platforms
> +
> +properties:
> + compatible:
> + const: "qcom,sc7180-venus"

No need for quotes.

> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + power-domains:
> + maxItems: 2
> +
> + power-domain-names:
> + maxItems: 2

You can drop maxItems. Implied by size of 'items'.

> + items:
> + - const: venus
> + - const: vcodec0
> +
> + clocks:
> + maxItems: 5
> +
> + clock-names:
> + items:
> + - const: core
> + - const: iface
> + - const: bus
> + - const: vcodec0_core
> + - const: vcodec0_bus
> +
> + iommus:
> + minItems: 1
> + maxItems: 20

As I said on the other Venus schemas, can you really have 20 IOMMUs
attached? This is a single SoC, you should know how many are attached.

Rob

> +
> + memory-region:
> + maxItems: 1
> +
> + video-core0:
> + type: object
> +
> + properties:
> + compatible:
> + const: "venus-decoder"
> +
> + required:
> + - compatible
> +
> + additionalProperties: false
> +
> + video-core1:
> + type: object
> +
> + properties:
> + compatible:
> + const: "venus-encoder"
> +
> + required:
> + - compatible
> +
> + additionalProperties: false
> +
> + video-firmware:
> + type: object
> +
> + description: |
> + Firmware subnode is needed when the platform does not
> + have TrustZone.
> +
> + properties:
> + iommus:
> + minItems: 1
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - power-domains
> + - power-domain-names
> + - clocks
> + - clock-names
> + - iommus
> + - memory-region
> + - video-core0
> + - video-core1
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/clock/qcom,videocc-sc7180.h>
> +
> + venus: video-codec@aa00000 {
> + compatible = "qcom,sc7180-venus";
> + 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";
> + clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
> + <&videocc VIDEO_CC_VENUS_AHB_CLK>,
> + <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
> + <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
> + <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
> + clock-names = "core", "iface", "bus",
> + "vcodec0_core", "vcodec0_bus";
> + iommus = <&apps_smmu 0x0c00 0x60>;
> + memory-region = <&venus_mem>;
> +

> + interconnects = <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI1>,
> + <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_VENUS_CFG>;
> + interconnect-names = "video-mem", "cpu-cfg";

Not documented.

> +
> + video-core0 {
> + compatible = "venus-decoder";
> + };
> +
> + video-core1 {
> + compatible = "venus-encoder";
> + };
> +
> + };
> --
> 1.9.1
>

2020-01-07 13:54:04

by Stanimir Varbanov

[permalink] [raw]
Subject: Re: [PATCH V3 1/4] arm64: dts: sc7180: Add Venus video codec DT node

Hi,

On 1/2/20 3:24 PM, Dikshita Agarwal wrote:
> This adds Venus video codec DT node for sc7180.
>
> Signed-off-by: Dikshita Agarwal <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/sc7180.dtsi | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> index 3676bfd..fa849de 100644
> --- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> @@ -10,6 +10,7 @@
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/phy/phy-qcom-qusb2.h>
> #include <dt-bindings/soc/qcom,rpmh-rsc.h>
> +#include <dt-bindings/clock/qcom,videocc-sc7180.h>
>
> / {
> interrupt-parent = <&intc>;
> @@ -66,6 +67,11 @@
> compatible = "qcom,cmd-db";
> no-map;
> };
> +
> + venus_mem: memory@8f600000 {
> + reg = <0 0x8f600000 0 0x500000>;
> + no-map;
> + };
> };
>
> cpus {
> @@ -1043,6 +1049,36 @@
> };
> };
>
> + venus: video-codec@aa00000 {
> + compatible = "qcom,sc7180-venus";
> + 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";
> + clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
> + <&videocc VIDEO_CC_VENUS_AHB_CLK>,
> + <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
> + <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
> + <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
> + clock-names = "core", "iface", "bus",
> + "vcodec0_core", "vcodec0_bus";

Please, align this as you made it for clocks.

> + iommus = <&apps_smmu 0x0c00 0x60>;
> + memory-region = <&venus_mem>;
> +
> + interconnects = <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI1>,
> + <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_VENUS_CFG>;
> + interconnect-names = "video-mem", "cpu-cfg";
> +
> + video-core0 {

The subnode name isn't correct because we have only one core. Could you
rename it to video-decoder.

> + compatible = "venus-decoder";
> + };
> +
> + video-core1 {

rename to video-encoder

> + compatible = "venus-encoder";
> + };
> + };
> +
> pdc: interrupt-controller@b220000 {
> compatible = "qcom,sc7180-pdc", "qcom,pdc";
> reg = <0 0x0b220000 0 0x30000>;
>

--
regards,
Stan

2020-01-07 13:57:55

by Stanimir Varbanov

[permalink] [raw]
Subject: Re: [PATCH V3 2/4] dt-bindings: media: venus: Add sc7180 DT schema

Hi,

On 1/2/20 3:24 PM, Dikshita Agarwal wrote:
> Add new qcom,sc7180-venus DT binding schema.
>
> Signed-off-by: Dikshita Agarwal <[email protected]>
> ---
> .../bindings/media/qcom,venus-sc7180.yaml | 136 +++++++++++++++++++++
> 1 file changed, 136 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
>
> diff --git a/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml b/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
> new file mode 100644
> index 0000000..b78952c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/qcom,venus-sc7180.yaml
> @@ -0,0 +1,136 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/media/qcom,venus-sc7180.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Qualcomm Venus video encode and decode accelerators
> +
> +maintainers:
> + - Stanimir Varbanov <[email protected]>
> +
> +description: |
> + The Venus IP is a video encode and decode accelerator present
> + on Qualcomm platforms
> +
> +properties:
> + compatible:
> + const: "qcom,sc7180-venus"
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + power-domains:
> + maxItems: 2
> +
> + power-domain-names:
> + maxItems: 2
> + items:
> + - const: venus
> + - const: vcodec0
> +
> + clocks:
> + maxItems: 5
> +
> + clock-names:
> + items:
> + - const: core
> + - const: iface
> + - const: bus
> + - const: vcodec0_core
> + - const: vcodec0_bus
> +
> + iommus:
> + minItems: 1
> + maxItems: 20
> +
> + memory-region:
> + maxItems: 1
> +
> + video-core0:
> + type: object
> +
> + properties:
> + compatible:
> + const: "venus-decoder"
> +
> + required:
> + - compatible
> +
> + additionalProperties: false
> +
> + video-core1:
> + type: object
> +
> + properties:
> + compatible:
> + const: "venus-encoder"
> +
> + required:
> + - compatible
> +
> + additionalProperties: false
> +
> + video-firmware:
> + type: object
> +
> + description: |
> + Firmware subnode is needed when the platform does not
> + have TrustZone.
> +
> + properties:
> + iommus:
> + minItems: 1

please add

required:
- iommus
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - power-domains
> + - power-domain-names
> + - clocks
> + - clock-names
> + - iommus
> + - memory-region
> + - video-core0
> + - video-core1
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/clock/qcom,videocc-sc7180.h>
> +
> + venus: video-codec@aa00000 {
> + compatible = "qcom,sc7180-venus";
> + 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";
> + clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
> + <&videocc VIDEO_CC_VENUS_AHB_CLK>,
> + <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
> + <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
> + <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
> + clock-names = "core", "iface", "bus",
> + "vcodec0_core", "vcodec0_bus";
> + iommus = <&apps_smmu 0x0c00 0x60>;
> + memory-region = <&venus_mem>;
> +
> + interconnects = <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI1>,
> + <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_VENUS_CFG>;
> + interconnect-names = "video-mem", "cpu-cfg";
> +
> + video-core0 {
> + compatible = "venus-decoder";
> + };
> +
> + video-core1 {
> + compatible = "venus-encoder";
> + };
> +
> + };
>

--
regards,
Stan

2020-01-07 14:06:50

by Stanimir Varbanov

[permalink] [raw]
Subject: Re: [PATCH V3 3/4] venus: core: add sc7180 DT compatible and resource struct

Hi Dikshita,

Thanks for the patch.

On 1/2/20 3:25 PM, Dikshita Agarwal wrote:
> This add DT compatible string and resource structure for sc7180.
>
> Signed-off-by: Dikshita Agarwal <[email protected]>
> ---
> drivers/media/platform/qcom/venus/core.c | 45 ++++++++++++++++++++++++++++++++
> 1 file changed, 45 insertions(+)

Acked-by: Stanimir Varbanov <[email protected]>

>
> diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
> index c7525d9..194b10b9 100644
> --- a/drivers/media/platform/qcom/venus/core.c
> +++ b/drivers/media/platform/qcom/venus/core.c
> @@ -521,11 +521,56 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)
> .fwname = "qcom/venus-5.2/venus.mdt",
> };
>
> +static const struct freq_tbl sc7180_freq_table[] = {
> + { 0, 500000000 },
> + { 0, 434000000 },
> + { 0, 340000000 },
> + { 0, 270000000 },
> + { 0, 150000000 },
> +};
> +
> +static const struct bw_tbl sc7180_bw_table_enc[] = {
> + { 972000, 750000, 0, 0, 0 }, /* 3840x2160@30 */
> + { 489600, 451000, 0, 0, 0 }, /* 1920x1080@60 */
> + { 244800, 234000, 0, 0, 0 }, /* 1920x1080@30 */
> +};
> +
> +static const struct bw_tbl sc7180_bw_table_dec[] = {
> + { 1036800, 1386000, 0, 1875000, 0 }, /* 4096x2160@30 */
> + { 489600, 865000, 0, 1146000, 0 }, /* 1920x1080@60 */
> + { 244800, 530000, 0, 583000, 0 }, /* 1920x1080@30 */
> +};
> +
> +static const struct venus_resources sc7180_res = {
> + .freq_tbl = sc7180_freq_table,
> + .freq_tbl_size = ARRAY_SIZE(sc7180_freq_table),
> + .bw_tbl_enc = sc7180_bw_table_enc,
> + .bw_tbl_enc_size = ARRAY_SIZE(sc7180_bw_table_enc),
> + .bw_tbl_dec = sc7180_bw_table_dec,
> + .bw_tbl_dec_size = ARRAY_SIZE(sc7180_bw_table_dec),
> + .codec_freq_data = sdm845_codec_freq_data,
> + .codec_freq_data_size = ARRAY_SIZE(sdm845_codec_freq_data),
> + .clks = {"core", "iface", "bus" },
> + .clks_num = 3,
> + .vcodec0_clks = { "vcodec0_core", "vcodec0_bus" },
> + .vcodec_clks_num = 2,
> + .vcodec_pmdomains = { "venus", "vcodec0" },
> + .vcodec_pmdomains_num = 2,
> + .vcodec_num = 1,
> + .hfi_version = HFI_VERSION_4XX,
> + .vmem_id = VIDC_RESOURCE_NONE,
> + .vmem_size = 0,
> + .vmem_addr = 0,
> + .dma_mask = 0xe0000000 - 1,
> + .fwname = "qcom/venus-5.4/venus.mdt",
> +};
> +
> static const struct of_device_id venus_dt_match[] = {
> { .compatible = "qcom,msm8916-venus", .data = &msm8916_res, },
> { .compatible = "qcom,msm8996-venus", .data = &msm8996_res, },
> { .compatible = "qcom,sdm845-venus", .data = &sdm845_res, },
> { .compatible = "qcom,sdm845-venus-v2", .data = &sdm845_res_v2, },
> + { .compatible = "qcom,sc7180-venus", .data = &sc7180_res, },
> { }
> };
> MODULE_DEVICE_TABLE(of, venus_dt_match);
>

--
regards,
Stan