diff mbox series

[3/7] dt-bindings: media: Document STM32MP25 VENC video encoder

Message ID 20231004091552.3531659-4-hugues.fruchet@foss.st.com (mailing list archive)
State New, archived
Headers show
Series Add support for video hardware codec of STMicroelectronics STM32 SoC series | expand

Commit Message

Hugues FRUCHET Oct. 4, 2023, 9:15 a.m. UTC
Add STM32MP25 VENC video encoder bindings.

Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
---
 .../bindings/media/st,stm32mp25-venc.yaml     | 56 +++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml

Comments

Adam Ford Oct. 4, 2023, 11:41 p.m. UTC | #1
On Wed, Oct 4, 2023 at 4:16 AM Hugues Fruchet
<hugues.fruchet@foss.st.com> wrote:
>
> Add STM32MP25 VENC video encoder bindings.
>
> Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
> ---
>  .../bindings/media/st,stm32mp25-venc.yaml     | 56 +++++++++++++++++++
>  1 file changed, 56 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
>
> diff --git a/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
> new file mode 100644
> index 000000000000..c69e0a34f675
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
> @@ -0,0 +1,56 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/st,stm32mp25-venc.yaml#

Can this dt-binding be made more generic, like something like
hantro-h1 or VC8000NanoE?

I think there will be more boards that may incorporate the Hantro-H1
or a VC8000 in the future, because I don't think this IP is unique to
the STM32MP25.

adam

> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: STMicroelectronics STM32MP25 VENC video encoder
> +
> +maintainers:
> +  - Hugues Fruchet <hugues.fruchet@foss.st.com>
> +
> +description:
> +  The STMicroelectronics STM32MP25 SOCs embeds a VENC video hardware encoder
> +  peripheral based on Verisilicon VC8000NanoE IP (former Hantro H1).
> +
> +properties:
> +  compatible:
> +    const: st,stm32mp25-venc
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  interrupt-names:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 1
> +
> +  clock-names:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - interrupt-names
> +  - clocks
> +  - clock-names
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +    venc: venc@580e0000 {
> +        compatible = "st,stm32mp25-venc";
> +        reg = <0x580e0000 0x800>;
> +        interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
> +        interrupt-names = "venc";


Is the interrupt-names needed if there is only one?

> +        clocks = <&ck_icn_p_venc>;
> +        clock-names = "venc-clk";

Same thing for the clock.  if there is only one clock, doe they need names?

adam
> +    };
> --
> 2.25.1
>
Hugues FRUCHET Oct. 5, 2023, 7:44 a.m. UTC | #2
Hi Adam,

Thanks for review,

On 10/5/23 01:41, Adam Ford wrote:
> On Wed, Oct 4, 2023 at 4:16 AM Hugues Fruchet
> <hugues.fruchet@foss.st.com> wrote:
>>
>> Add STM32MP25 VENC video encoder bindings.
>>
>> Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
>> ---
>>   .../bindings/media/st,stm32mp25-venc.yaml     | 56 +++++++++++++++++++
>>   1 file changed, 56 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
>> new file mode 100644
>> index 000000000000..c69e0a34f675
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
>> @@ -0,0 +1,56 @@
>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>> +
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/media/st,stm32mp25-venc.yaml#
> 
> Can this dt-binding be made more generic, like something like
> hantro-h1 or VC8000NanoE?
> 
> I think there will be more boards that may incorporate the Hantro-H1
> or a VC8000 in the future, because I don't think this IP is unique to
> the STM32MP25.

This is already the case, check variants in hantro_drv.c.
Several SoCs are sharing this IP but each IP slightly differs because of
supported resolution, codec, preprocessing features, ...
There are also some differences on how clock, interrupt, reset are 
hardware mapped: shared or not by decoder and encoder for ex.

> 
> adam
> 
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: STMicroelectronics STM32MP25 VENC video encoder
>> +
>> +maintainers:
>> +  - Hugues Fruchet <hugues.fruchet@foss.st.com>
>> +
>> +description:
>> +  The STMicroelectronics STM32MP25 SOCs embeds a VENC video hardware encoder
>> +  peripheral based on Verisilicon VC8000NanoE IP (former Hantro H1).
>> +
>> +properties:
>> +  compatible:
>> +    const: st,stm32mp25-venc
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +
>> +  interrupt-names:
>> +    maxItems: 1
>> +
>> +  clocks:
>> +    maxItems: 1
>> +
>> +  clock-names:
>> +    maxItems: 1
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - interrupts
>> +  - interrupt-names
>> +  - clocks
>> +  - clock-names
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
>> +    venc: venc@580e0000 {
>> +        compatible = "st,stm32mp25-venc";
>> +        reg = <0x580e0000 0x800>;
>> +        interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
>> +        interrupt-names = "venc";
> 
> 
> Is the interrupt-names needed if there is only one?
> 

Not really, could be dropped.

>> +        clocks = <&ck_icn_p_venc>;
>> +        clock-names = "venc-clk";
> 
> Same thing for the clock.  if there is only one clock, doe they need names?
> 
Not really, could be dropped.

> adam
>> +    };
>> --
>> 2.25.1
>>

BR,
Hugues.
Krzysztof Kozlowski Oct. 5, 2023, 7:45 p.m. UTC | #3
On 04/10/2023 11:15, Hugues Fruchet wrote:
> Add STM32MP25 VENC video encoder bindings.
> 

I don't understand why this binding is separate from video decoder.
Merge them.

Best regards,
Krzysztof
Rob Herring (Arm) Oct. 6, 2023, 4:27 p.m. UTC | #4
On Wed, Oct 04, 2023 at 06:41:09PM -0500, Adam Ford wrote:
> On Wed, Oct 4, 2023 at 4:16 AM Hugues Fruchet
> <hugues.fruchet@foss.st.com> wrote:
> >
> > Add STM32MP25 VENC video encoder bindings.
> >
> > Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
> > ---
> >  .../bindings/media/st,stm32mp25-venc.yaml     | 56 +++++++++++++++++++
> >  1 file changed, 56 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
> > new file mode 100644
> > index 000000000000..c69e0a34f675
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
> > @@ -0,0 +1,56 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/media/st,stm32mp25-venc.yaml#
> 
> Can this dt-binding be made more generic, like something like
> hantro-h1 or VC8000NanoE?
> 
> I think there will be more boards that may incorporate the Hantro-H1
> or a VC8000 in the future, because I don't think this IP is unique to
> the STM32MP25.

Unless the underlying IP is well documented (i.e. public), then it's 
kind of pointless. Everyone will just invent their own numbers and names 
of clocks, resets, etc. unless someone can enforce not doing that.

Rob
Hugues FRUCHET Oct. 9, 2023, 1:06 p.m. UTC | #5
Hi Rob,

On 10/6/23 18:27, Rob Herring wrote:
> On Wed, Oct 04, 2023 at 06:41:09PM -0500, Adam Ford wrote:
>> On Wed, Oct 4, 2023 at 4:16 AM Hugues Fruchet
>> <hugues.fruchet@foss.st.com> wrote:
>>>
>>> Add STM32MP25 VENC video encoder bindings.
>>>
>>> Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
>>> ---
>>>   .../bindings/media/st,stm32mp25-venc.yaml     | 56 +++++++++++++++++++
>>>   1 file changed, 56 insertions(+)
>>>   create mode 100644 Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
>>>
>>> diff --git a/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
>>> new file mode 100644
>>> index 000000000000..c69e0a34f675
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
>>> @@ -0,0 +1,56 @@
>>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>>> +
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/media/st,stm32mp25-venc.yaml#
>>
>> Can this dt-binding be made more generic, like something like
>> hantro-h1 or VC8000NanoE?
>>
>> I think there will be more boards that may incorporate the Hantro-H1
>> or a VC8000 in the future, because I don't think this IP is unique to
>> the STM32MP25.
> 
> Unless the underlying IP is well documented (i.e. public), then it's
> kind of pointless. Everyone will just invent their own numbers and names
> of clocks, resets, etc. unless someone can enforce not doing that.

Unfortunately the IP documentation is not public, there are no documents 
provided publicly by Verisilicon for the time being.

> 
> Rob

BR,
Hugues
Hugues FRUCHET Oct. 9, 2023, 1:49 p.m. UTC | #6
Hi Krzysztof,

On 10/5/23 21:45, Krzysztof Kozlowski wrote:
> On 04/10/2023 11:15, Hugues Fruchet wrote:
>> Add STM32MP25 VENC video encoder bindings.
>>
> 
> I don't understand why this binding is separate from video decoder.
> Merge them.
VDEC and VENC are two independent IPs with their own clock, reset, 
interrupt & register set, they have their own access to APB/AXI bus.
Moreover future chipsets may embed only VENC or VDEC.

Hoping that this clarifies the reason of two different bindings.

> 
> Best regards,
> Krzysztof
> 


Br,
Hugues.
Krzysztof Kozlowski Oct. 9, 2023, 1:56 p.m. UTC | #7
On 09/10/2023 15:49, Hugues FRUCHET wrote:
> Hi Krzysztof,
> 
> On 10/5/23 21:45, Krzysztof Kozlowski wrote:
>> On 04/10/2023 11:15, Hugues Fruchet wrote:
>>> Add STM32MP25 VENC video encoder bindings.
>>>
>>
>> I don't understand why this binding is separate from video decoder.
>> Merge them.
> VDEC and VENC are two independent IPs with their own clock, reset, 
> interrupt & register set, they have their own access to APB/AXI bus.
> Moreover future chipsets may embed only VENC or VDEC.
> 
> Hoping that this clarifies the reason of two different bindings.

No, it does not. These are no reasons to have independent bindings,
except when having actual impact on the bindings. The bindings look
identical. What are the differences?

Best regards,
Krzysztof
Hugues FRUCHET Oct. 9, 2023, 2:24 p.m. UTC | #8
Hi Krzysztof,

On 10/9/23 15:56, Krzysztof Kozlowski wrote:
> On 09/10/2023 15:49, Hugues FRUCHET wrote:
>> Hi Krzysztof,
>>
>> On 10/5/23 21:45, Krzysztof Kozlowski wrote:
>>> On 04/10/2023 11:15, Hugues Fruchet wrote:
>>>> Add STM32MP25 VENC video encoder bindings.
>>>>
>>>
>>> I don't understand why this binding is separate from video decoder.
>>> Merge them.
>> VDEC and VENC are two independent IPs with their own clock, reset,
>> interrupt & register set, they have their own access to APB/AXI bus.
>> Moreover future chipsets may embed only VENC or VDEC.
>>
>> Hoping that this clarifies the reason of two different bindings.
> 
> No, it does not. These are no reasons to have independent bindings,
> except when having actual impact on the bindings. The bindings look
> identical. What are the differences?
I'm sorry but I really don't understand your point, these are two 
different IPs with very different registers in it, so why should
I share that in a single binding ?

> 
> Best regards,
> Krzysztof
> 

BR,
Hugues.
Krzysztof Kozlowski Oct. 9, 2023, 2:28 p.m. UTC | #9
On 09/10/2023 16:24, Hugues FRUCHET wrote:
> Hi Krzysztof,
> 
> On 10/9/23 15:56, Krzysztof Kozlowski wrote:
>> On 09/10/2023 15:49, Hugues FRUCHET wrote:
>>> Hi Krzysztof,
>>>
>>> On 10/5/23 21:45, Krzysztof Kozlowski wrote:
>>>> On 04/10/2023 11:15, Hugues Fruchet wrote:
>>>>> Add STM32MP25 VENC video encoder bindings.
>>>>>
>>>>
>>>> I don't understand why this binding is separate from video decoder.
>>>> Merge them.
>>> VDEC and VENC are two independent IPs with their own clock, reset,
>>> interrupt & register set, they have their own access to APB/AXI bus.
>>> Moreover future chipsets may embed only VENC or VDEC.
>>>
>>> Hoping that this clarifies the reason of two different bindings.
>>
>> No, it does not. These are no reasons to have independent bindings,
>> except when having actual impact on the bindings. The bindings look
>> identical. What are the differences?
> I'm sorry but I really don't understand your point, these are two 
> different IPs with very different registers in it, so why should
> I share that in a single binding ?

Because the binding is identical. If not, maybe I missed something, so
please point me to differences in the binding.

Best regards,
Krzysztof
Hugues FRUCHET Oct. 9, 2023, 3:56 p.m. UTC | #10
Hi Krzysztof,

On 10/9/23 16:28, Krzysztof Kozlowski wrote:
> On 09/10/2023 16:24, Hugues FRUCHET wrote:
>> Hi Krzysztof,
>>
>> On 10/9/23 15:56, Krzysztof Kozlowski wrote:
>>> On 09/10/2023 15:49, Hugues FRUCHET wrote:
>>>> Hi Krzysztof,
>>>>
>>>> On 10/5/23 21:45, Krzysztof Kozlowski wrote:
>>>>> On 04/10/2023 11:15, Hugues Fruchet wrote:
>>>>>> Add STM32MP25 VENC video encoder bindings.
>>>>>>
>>>>>
>>>>> I don't understand why this binding is separate from video decoder.
>>>>> Merge them.
>>>> VDEC and VENC are two independent IPs with their own clock, reset,
>>>> interrupt & register set, they have their own access to APB/AXI bus.
>>>> Moreover future chipsets may embed only VENC or VDEC.
>>>>
>>>> Hoping that this clarifies the reason of two different bindings.
>>>
>>> No, it does not. These are no reasons to have independent bindings,
>>> except when having actual impact on the bindings. The bindings look
>>> identical. What are the differences?
>> I'm sorry but I really don't understand your point, these are two
>> different IPs with very different registers in it, so why should
>> I share that in a single binding ?
> 
> Because the binding is identical. If not, maybe I missed something, so
> please point me to differences in the binding.

OK, currently they are identical so I will merge into a single one
even if I disagree on that.
I hope that in future this will not change otherwise I'll need to 
revisit that and make separate bindings as initially proposed...
I'll so push a v2 with merged version proposal.

> 
> Best regards,
> Krzysztof
> 

BR,
Hugues.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
new file mode 100644
index 000000000000..c69e0a34f675
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/st,stm32mp25-venc.yaml
@@ -0,0 +1,56 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/st,stm32mp25-venc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics STM32MP25 VENC video encoder
+
+maintainers:
+  - Hugues Fruchet <hugues.fruchet@foss.st.com>
+
+description:
+  The STMicroelectronics STM32MP25 SOCs embeds a VENC video hardware encoder
+  peripheral based on Verisilicon VC8000NanoE IP (former Hantro H1).
+
+properties:
+  compatible:
+    const: st,stm32mp25-venc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    venc: venc@580e0000 {
+        compatible = "st,stm32mp25-venc";
+        reg = <0x580e0000 0x800>;
+        interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "venc";
+        clocks = <&ck_icn_p_venc>;
+        clock-names = "venc-clk";
+    };