2019-11-04 20:40:05

by Benoit Parrot

[permalink] [raw]
Subject: [Patch v2 0/5] ARM: dts: dra7: add vpe nodes

This patch series adds the needed clkctrl and ty-sysc nodes for VPE module.
We also document the VPE DT bindings.

Changes since v1:
- Added a patch to update the compatible in the driver
- Removed unnededed #cell #size properties
- Updated the compatible in dtsi to match binding
- Split off the clk code into its own patch
- Added device specific prefix
- Converted binding to dt schema

Benoit Parrot (5):
dt-bindings: media: ti-vpe: Document VPE driver
clk: ti: dra7: add vpe clkctrl data
ARM: dts: dra7: add vpe clkctrl node
ARM: dts: dra7: Add ti-sysc node for VPE
media: ti-vpe: vpe: fix compatible to match bindings

.../devicetree/bindings/media/ti,vpe.yaml | 64 +++++++++++++++++++
MAINTAINERS | 1 +
arch/arm/boot/dts/dra7-l4.dtsi | 28 +++++++-
arch/arm/boot/dts/dra7xx-clocks.dtsi | 18 +++++-
drivers/clk/ti/clk-7xx.c | 6 ++
drivers/media/platform/ti-vpe/vpe.c | 2 +-
include/dt-bindings/clock/dra7.h | 10 +++
7 files changed, 123 insertions(+), 6 deletions(-)
create mode 100644 Documentation/devicetree/bindings/media/ti,vpe.yaml

--
2.17.1


2019-11-04 20:40:06

by Benoit Parrot

[permalink] [raw]
Subject: [Patch v2 4/5] ARM: dts: dra7: Add ti-sysc node for VPE

Add VPE node as a child of l4 interconnect in order for it to probe
using ti-sysc.

Signed-off-by: Benoit Parrot <[email protected]>
---
arch/arm/boot/dts/dra7-l4.dtsi | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/dra7-l4.dtsi b/arch/arm/boot/dts/dra7-l4.dtsi
index ea0e7c19eb4e..0917231a20e2 100644
--- a/arch/arm/boot/dts/dra7-l4.dtsi
+++ b/arch/arm/boot/dts/dra7-l4.dtsi
@@ -4158,12 +4158,34 @@
ranges = <0x0 0x1b0000 0x10000>;
};

- target-module@1d0000 { /* 0x489d0000, ap 27 30.0 */
- compatible = "ti,sysc";
- status = "disabled";
+ target-module@1d0010 { /* 0x489d0000, ap 27 30.0 */
+ compatible = "ti,sysc-omap4", "ti,sysc";
+ reg = <0x1d0010 0x4>;
+ reg-names = "sysc";
+ ti,sysc-midle = <SYSC_IDLE_FORCE>,
+ <SYSC_IDLE_NO>,
+ <SYSC_IDLE_SMART>;
+ ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+ <SYSC_IDLE_NO>,
+ <SYSC_IDLE_SMART>;
+ clocks = <&vpe_clkctrl DRA7_VPE_VPE_CLKCTRL 0>;
+ clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x1d0000 0x10000>;
+
+ vpe: vpe@0 {
+ compatible = "ti,dra7-vpe";
+ reg = <0x0000 0x120>,
+ <0x0700 0x80>,
+ <0x5700 0x18>,
+ <0xd000 0x400>;
+ reg-names = "vpe_top",
+ "sc",
+ "csc",
+ "vpdma";
+ interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+ };
};
};
};
--
2.17.1

2019-11-04 20:40:11

by Benoit Parrot

[permalink] [raw]
Subject: [Patch v2 5/5] media: ti-vpe: vpe: fix compatible to match bindings

Update the compatible string to match the updated bindings.

Signed-off-by: Benoit Parrot <[email protected]>
---
drivers/media/platform/ti-vpe/vpe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c
index b54f637633a7..65c2c048b018 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -2644,7 +2644,7 @@ static int vpe_remove(struct platform_device *pdev)
#if defined(CONFIG_OF)
static const struct of_device_id vpe_of_match[] = {
{
- .compatible = "ti,vpe",
+ .compatible = "ti,dra7-vpe",
},
{},
};
--
2.17.1

2019-11-04 20:41:09

by Benoit Parrot

[permalink] [raw]
Subject: [Patch v2 1/5] dt-bindings: media: ti-vpe: Document VPE driver

Device Tree bindings for the Video Processing Engine (VPE).

Signed-off-by: Benoit Parrot <[email protected]>
---
.../devicetree/bindings/media/ti,vpe.yaml | 64 +++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 65 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/ti,vpe.yaml

diff --git a/Documentation/devicetree/bindings/media/ti,vpe.yaml b/Documentation/devicetree/bindings/media/ti,vpe.yaml
new file mode 100644
index 000000000000..eb9f3e1b7f5f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/ti,vpe.yaml
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: (GPL-2.0)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/ti,vpe.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments DRA7x Video Processing Engine (VPE) Device Tree Bindings
+
+maintainers:
+ - Benoit Parrot <[email protected]>
+
+description: |-
+ The Video Processing Engine (VPE) is a key component for image post
+ processing applications. VPE consist of a single memory to memory
+ path which can perform chroma up/down sampling, deinterlacing,
+ scaling and color space conversion.
+
+properties:
+ compatible:
+ const: ti,dra7-vpe
+
+ reg:
+ items:
+ - description: The VPE main register region
+ - description: Scaler (SC) register region
+ - description: Color Space Conversion (CSC) register region
+ - description: Video Port Direct Memory Access (VPDMA) register region
+
+ reg-names:
+ items:
+ - const: vpe_top
+ - const: sc
+ - const: csc
+ - const: vpdma
+
+ interrupts:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ vpe: vpe@489d0000 {
+ compatible = "ti,dra7-vpe";
+ reg = <0x489d0000 0x120>,
+ <0x489d0700 0x80>,
+ <0x489d5700 0x18>,
+ <0x489dd000 0x400>;
+ reg-names = "vpe_top",
+ "sc",
+ "csc",
+ "vpdma";
+ interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index d360df48f9f2..baf3aac1ab7c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -16316,6 +16316,7 @@ Q: http://patchwork.linuxtv.org/project/linux-media/list/
S: Maintained
F: drivers/media/platform/ti-vpe/
F: Documentation/devicetree/bindings/media/ti,cal.yaml
+F: Documentation/devicetree/bindings/media/ti,vpe.yaml

TI WILINK WIRELESS DRIVERS
L: [email protected]
--
2.17.1

2019-11-04 20:41:10

by Benoit Parrot

[permalink] [raw]
Subject: [Patch v2 3/5] ARM: dts: dra7: add vpe clkctrl node

Add clkctrl nodes for VPE module.

Signed-off-by: Benoit Parrot <[email protected]>
---
arch/arm/boot/dts/dra7xx-clocks.dtsi | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index 93e1eb83bed9..d1c2406ec71c 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -1591,10 +1591,10 @@

rtc_cm: rtc-cm@700 {
compatible = "ti,omap4-cm";
- reg = <0x700 0x100>;
+ reg = <0x700 0x60>;
#address-cells = <1>;
#size-cells = <1>;
- ranges = <0 0x700 0x100>;
+ ranges = <0 0x700 0x60>;

rtc_clkctrl: rtc-clkctrl@20 {
compatible = "ti,clkctrl";
@@ -1603,6 +1603,20 @@
};
};

+ vpe_cm: vpe-cm@760 {
+ compatible = "ti,omap4-cm";
+ reg = <0x760 0xc>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0 0x760 0xc>;
+
+ vpe_clkctrl: vpe-clkctrl@0 {
+ compatible = "ti,clkctrl";
+ reg = <0x0 0xc>;
+ #clock-cells = <2>;
+ };
+ };
+
};

&cm_core {
--
2.17.1

2019-11-04 20:41:21

by Benoit Parrot

[permalink] [raw]
Subject: [Patch v2 2/5] clk: ti: dra7: add vpe clkctrl data

Add clkctrl data for VPE.

Signed-off-by: Benoit Parrot <[email protected]>
---
drivers/clk/ti/clk-7xx.c | 6 ++++++
include/dt-bindings/clock/dra7.h | 10 ++++++++++
2 files changed, 16 insertions(+)

diff --git a/drivers/clk/ti/clk-7xx.c b/drivers/clk/ti/clk-7xx.c
index b57fe09b428b..5dd9cad07542 100644
--- a/drivers/clk/ti/clk-7xx.c
+++ b/drivers/clk/ti/clk-7xx.c
@@ -146,6 +146,11 @@ static const struct omap_clkctrl_reg_data dra7_rtc_clkctrl_regs[] __initconst =
{ 0 },
};

+static const struct omap_clkctrl_reg_data dra7_vpe_clkctrl_regs[] __initconst = {
+ { DRA7_VPE_VPE_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h23x2_ck" },
+ { 0 },
+};
+
static const struct omap_clkctrl_reg_data dra7_coreaon_clkctrl_regs[] __initconst = {
{ DRA7_COREAON_SMARTREFLEX_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "wkupaon_iclk_mux" },
{ DRA7_COREAON_SMARTREFLEX_CORE_CLKCTRL, NULL, CLKF_SW_SUP, "wkupaon_iclk_mux" },
@@ -769,6 +774,7 @@ const struct omap_clkctrl_data dra7_clkctrl_data[] __initconst = {
{ 0x4a005550, dra7_ipu_clkctrl_regs },
{ 0x4a005620, dra7_dsp2_clkctrl_regs },
{ 0x4a005720, dra7_rtc_clkctrl_regs },
+ { 0x4a005760, dra7_vpe_clkctrl_regs },
{ 0x4a008620, dra7_coreaon_clkctrl_regs },
{ 0x4a008720, dra7_l3main1_clkctrl_regs },
{ 0x4a008920, dra7_ipu2_clkctrl_regs },
diff --git a/include/dt-bindings/clock/dra7.h b/include/dt-bindings/clock/dra7.h
index 72f2e8411523..2b765e579b2a 100644
--- a/include/dt-bindings/clock/dra7.h
+++ b/include/dt-bindings/clock/dra7.h
@@ -29,6 +29,11 @@
#define DRA7_RTC_CLKCTRL_INDEX(offset) ((offset) - DRA7_RTC_CLKCTRL_OFFSET)
#define DRA7_RTCSS_CLKCTRL DRA7_RTC_CLKCTRL_INDEX(0x44)

+/* vpe clocks */
+#define DRA7_VPE_CLKCTRL_OFFSET 0x60
+#define DRA7_VPE_CLKCTRL_INDEX(offset) ((offset) - DRA7_VPE_CLKCTRL_OFFSET)
+#define DRA7_VPE_CLKCTRL DRA7_VPE_CLKCTRL_INDEX(0x64)
+
/* coreaon clocks */
#define DRA7_SMARTREFLEX_MPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
#define DRA7_SMARTREFLEX_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x38)
@@ -192,6 +197,11 @@
/* rtc clocks */
#define DRA7_RTC_RTCSS_CLKCTRL DRA7_CLKCTRL_INDEX(0x44)

+/* vpe clocks */
+#define DRA7_VPE_CLKCTRL_OFFSET 0x60
+#define DRA7_VPE_CLKCTRL_INDEX(offset) ((offset) - DRA7_VPE_CLKCTRL_OFFSET)
+#define DRA7_VPE_VPE_CLKCTRL DRA7_VPE_CLKCTRL_INDEX(0x64)
+
/* coreaon clocks */
#define DRA7_COREAON_SMARTREFLEX_MPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
#define DRA7_COREAON_SMARTREFLEX_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x38)
--
2.17.1

2019-11-05 23:07:13

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [Patch v2 1/5] dt-bindings: media: ti-vpe: Document VPE driver

On Mon, Nov 04, 2019 at 02:38:37PM -0600, Benoit Parrot wrote:
> Device Tree bindings for the Video Processing Engine (VPE).
>
> Signed-off-by: Benoit Parrot <[email protected]>
> ---
> .../devicetree/bindings/media/ti,vpe.yaml | 64 +++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 65 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/media/ti,vpe.yaml
>
> diff --git a/Documentation/devicetree/bindings/media/ti,vpe.yaml b/Documentation/devicetree/bindings/media/ti,vpe.yaml
> new file mode 100644
> index 000000000000..eb9f3e1b7f5f
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/ti,vpe.yaml
> @@ -0,0 +1,64 @@
> +# SPDX-License-Identifier: (GPL-2.0)

For new bindings:

# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

With that,

Reviewed-by: Rob Herring <[email protected]>

> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/ti,vpe.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments DRA7x Video Processing Engine (VPE) Device Tree Bindings
> +
> +maintainers:
> + - Benoit Parrot <[email protected]>
> +
> +description: |-
> + The Video Processing Engine (VPE) is a key component for image post
> + processing applications. VPE consist of a single memory to memory
> + path which can perform chroma up/down sampling, deinterlacing,
> + scaling and color space conversion.
> +
> +properties:
> + compatible:
> + const: ti,dra7-vpe
> +
> + reg:
> + items:
> + - description: The VPE main register region
> + - description: Scaler (SC) register region
> + - description: Color Space Conversion (CSC) register region
> + - description: Video Port Direct Memory Access (VPDMA) register region
> +
> + reg-names:
> + items:
> + - const: vpe_top
> + - const: sc
> + - const: csc
> + - const: vpdma
> +
> + interrupts:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - interrupts
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> + vpe: vpe@489d0000 {
> + compatible = "ti,dra7-vpe";
> + reg = <0x489d0000 0x120>,
> + <0x489d0700 0x80>,
> + <0x489d5700 0x18>,
> + <0x489dd000 0x400>;
> + reg-names = "vpe_top",
> + "sc",
> + "csc",
> + "vpdma";
> + interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
> + };
> +
> +...
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d360df48f9f2..baf3aac1ab7c 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -16316,6 +16316,7 @@ Q: http://patchwork.linuxtv.org/project/linux-media/list/
> S: Maintained
> F: drivers/media/platform/ti-vpe/
> F: Documentation/devicetree/bindings/media/ti,cal.yaml
> +F: Documentation/devicetree/bindings/media/ti,vpe.yaml
>
> TI WILINK WIRELESS DRIVERS
> L: [email protected]
> --
> 2.17.1
>

2019-11-08 16:59:19

by Tony Lindgren

[permalink] [raw]
Subject: Re: [Patch v2 3/5] ARM: dts: dra7: add vpe clkctrl node

Hi,

* Benoit Parrot <[email protected]> [191104 20:39]:
> Add clkctrl nodes for VPE module.

Can you please add a comment describing that we currently need to
use custom node names here instead of the standard naming?

I can queue this and other dts change once I have an immutable clock
changes branch from Tero.

Or if Tero wants to also pick up the clock node dtsi patch I can ack it,
up to Tero.

Regards,

Tony


> Signed-off-by: Benoit Parrot <[email protected]>
> ---
> arch/arm/boot/dts/dra7xx-clocks.dtsi | 18 ++++++++++++++++--
> 1 file changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi
> index 93e1eb83bed9..d1c2406ec71c 100644
> --- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
> +++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
> @@ -1591,10 +1591,10 @@
>
> rtc_cm: rtc-cm@700 {
> compatible = "ti,omap4-cm";
> - reg = <0x700 0x100>;
> + reg = <0x700 0x60>;
> #address-cells = <1>;
> #size-cells = <1>;
> - ranges = <0 0x700 0x100>;
> + ranges = <0 0x700 0x60>;
>
> rtc_clkctrl: rtc-clkctrl@20 {
> compatible = "ti,clkctrl";
> @@ -1603,6 +1603,20 @@
> };
> };
>
> + vpe_cm: vpe-cm@760 {
> + compatible = "ti,omap4-cm";
> + reg = <0x760 0xc>;
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges = <0 0x760 0xc>;
> +
> + vpe_clkctrl: vpe-clkctrl@0 {
> + compatible = "ti,clkctrl";
> + reg = <0x0 0xc>;
> + #clock-cells = <2>;
> + };
> + };
> +
> };
>
> &cm_core {
> --
> 2.17.1
>

2019-11-08 17:01:19

by Benoit Parrot

[permalink] [raw]
Subject: Re: [Patch v2 3/5] ARM: dts: dra7: add vpe clkctrl node

Tony Lindgren <[email protected]> wrote on Fri [2019-Nov-08 08:55:54 -0800]:
> Hi,
>
> * Benoit Parrot <[email protected]> [191104 20:39]:
> > Add clkctrl nodes for VPE module.
>
> Can you please add a comment describing that we currently need to
> use custom node names here instead of the standard naming?

Tony, what do you mean "custom node name" here?
I followed the exact same syntax that was already there... confused..

Benoit

>
> I can queue this and other dts change once I have an immutable clock
> changes branch from Tero.
>
> Or if Tero wants to also pick up the clock node dtsi patch I can ack it,
> up to Tero.
>
> Regards,
>
> Tony
>
>
> > Signed-off-by: Benoit Parrot <[email protected]>
> > ---
> > arch/arm/boot/dts/dra7xx-clocks.dtsi | 18 ++++++++++++++++--
> > 1 file changed, 16 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi
> > index 93e1eb83bed9..d1c2406ec71c 100644
> > --- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
> > +++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
> > @@ -1591,10 +1591,10 @@
> >
> > rtc_cm: rtc-cm@700 {
> > compatible = "ti,omap4-cm";
> > - reg = <0x700 0x100>;
> > + reg = <0x700 0x60>;
> > #address-cells = <1>;
> > #size-cells = <1>;
> > - ranges = <0 0x700 0x100>;
> > + ranges = <0 0x700 0x60>;
> >
> > rtc_clkctrl: rtc-clkctrl@20 {
> > compatible = "ti,clkctrl";
> > @@ -1603,6 +1603,20 @@
> > };
> > };
> >
> > + vpe_cm: vpe-cm@760 {
> > + compatible = "ti,omap4-cm";
> > + reg = <0x760 0xc>;
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > + ranges = <0 0x760 0xc>;
> > +
> > + vpe_clkctrl: vpe-clkctrl@0 {
> > + compatible = "ti,clkctrl";
> > + reg = <0x0 0xc>;
> > + #clock-cells = <2>;
> > + };
> > + };
> > +
> > };
> >
> > &cm_core {
> > --
> > 2.17.1
> >

2019-11-08 17:07:39

by Tony Lindgren

[permalink] [raw]
Subject: Re: [Patch v2 3/5] ARM: dts: dra7: add vpe clkctrl node

* Benoit Parrot <[email protected]> [191108 17:00]:
> Tony Lindgren <[email protected]> wrote on Fri [2019-Nov-08 08:55:54 -0800]:
> > Hi,
> >
> > * Benoit Parrot <[email protected]> [191104 20:39]:
> > > Add clkctrl nodes for VPE module.
> >
> > Can you please add a comment describing that we currently need to
> > use custom node names here instead of the standard naming?
>
> Tony, what do you mean "custom node name" here?
> I followed the exact same syntax that was already there... confused..

Oh sorry for being unclear. Yeah so the conclusion of the discussion was
that we still need custom node names for now.

And for patch "[PATCH] clk: ti: add clkctrl data dra7 sgx" I added you to
Cc, and it has this in the patch description:

"Note that because of the current dts node name dependency for mapping to
clock domain, we must still use "gpu-clkctrl@" naming instead of generic
"clock@" naming for the node. And because of this, it's probably best to
apply the dts node addition together along with the other clock changes."

So can you please add something similar to your clock node patches too
to explain why we cannot use standard node names there?

Regards,

Tony