[v4,1/3] media: dt-bindings: Add Imagination E5010 JPEG Encoder

Message ID 20240205114239.924697-2-devarsht@ti.com (mailing list archive)
State Superseded
Delegated to: Sebastian Fricke
Headers
Series Add V4L2 M2M Driver for E5010 JPEG Encoder |

Commit Message

Devarsh Thakkar Feb. 5, 2024, 11:42 a.m. UTC
  Add dt-bindings for Imagination E5010 JPEG Encoder [1] which is implemented
as stateful V4L2 M2M driver.

The device supports baseline encoding with two different quantization
tables and compression ratio as demanded.

Minimum resolution supported is 64x64 and Maximum resolution supported is
8192x8192.

[1]:  AM62A TRM (Section 7.6 is for JPEG Encoder)
Link: https://www.ti.com/lit/pdf/spruj16

Co-developed-by: David Huang <d-huang@ti.com>
Signed-off-by: David Huang <d-huang@ti.com>
Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
---
V2: No change
V3:
- Add vendor specific compatible
- Update reg names
- Update clocks to 1
- Fix dts example with proper naming
V4:
 - Use ti-specific compatible ti,am62a-jpeg-enc as secondary one
 - Update commit message and title
 - Remove clock-names as only single clock

Link to previous commit:
https://lore.kernel.org/all/20230816152210.4080779-2-devarsht@ti.com/
---
 .../bindings/media/img,e5010-jpeg-enc.yaml    | 75 +++++++++++++++++++
 MAINTAINERS                                   |  5 ++
 2 files changed, 80 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
  

Comments

Rob Herring (Arm) Feb. 5, 2024, 8:09 p.m. UTC | #1
On Mon, 05 Feb 2024 17:12:37 +0530, Devarsh Thakkar wrote:
> Add dt-bindings for Imagination E5010 JPEG Encoder [1] which is implemented
> as stateful V4L2 M2M driver.
> 
> The device supports baseline encoding with two different quantization
> tables and compression ratio as demanded.
> 
> Minimum resolution supported is 64x64 and Maximum resolution supported is
> 8192x8192.
> 
> [1]:  AM62A TRM (Section 7.6 is for JPEG Encoder)
> Link: https://www.ti.com/lit/pdf/spruj16
> 
> Co-developed-by: David Huang <d-huang@ti.com>
> Signed-off-by: David Huang <d-huang@ti.com>
> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
> ---
> V2: No change
> V3:
> - Add vendor specific compatible
> - Update reg names
> - Update clocks to 1
> - Fix dts example with proper naming
> V4:
>  - Use ti-specific compatible ti,am62a-jpeg-enc as secondary one
>  - Update commit message and title
>  - Remove clock-names as only single clock
> 
> Link to previous commit:
> https://lore.kernel.org/all/20230816152210.4080779-2-devarsht@ti.com/
> ---
>  .../bindings/media/img,e5010-jpeg-enc.yaml    | 75 +++++++++++++++++++
>  MAINTAINERS                                   |  5 ++
>  2 files changed, 80 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
> 

Reviewed-by: Rob Herring <robh@kernel.org>
  
Andrew Davis Feb. 5, 2024, 9:52 p.m. UTC | #2
On 2/5/24 5:42 AM, Devarsh Thakkar wrote:
> Add dt-bindings for Imagination E5010 JPEG Encoder [1] which is implemented
> as stateful V4L2 M2M driver.
> 
> The device supports baseline encoding with two different quantization
> tables and compression ratio as demanded.
> 
> Minimum resolution supported is 64x64 and Maximum resolution supported is
> 8192x8192.
> 
> [1]:  AM62A TRM (Section 7.6 is for JPEG Encoder)
> Link: https://www.ti.com/lit/pdf/spruj16
> 
> Co-developed-by: David Huang <d-huang@ti.com>
> Signed-off-by: David Huang <d-huang@ti.com>
> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
> ---
> V2: No change
> V3:
> - Add vendor specific compatible
> - Update reg names
> - Update clocks to 1
> - Fix dts example with proper naming
> V4:
>   - Use ti-specific compatible ti,am62a-jpeg-enc as secondary one
>   - Update commit message and title
>   - Remove clock-names as only single clock
> 
> Link to previous commit:
> https://lore.kernel.org/all/20230816152210.4080779-2-devarsht@ti.com/
> ---
>   .../bindings/media/img,e5010-jpeg-enc.yaml    | 75 +++++++++++++++++++
>   MAINTAINERS                                   |  5 ++
>   2 files changed, 80 insertions(+)
>   create mode 100644 Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml b/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
> new file mode 100644
> index 000000000000..085020cb9e61
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
> @@ -0,0 +1,75 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/img,e5010-jpeg-enc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Imagination E5010 JPEG Encoder
> +
> +maintainers:
> +  - Devarsh Thakkar <devarsht@ti.com>
> +
> +description: |
> +  The E5010 is a JPEG encoder from Imagination Technologies implemented on
> +  TI's AM62A SoC. It is capable of real time encoding of YUV420 and YUV422
> +  inputs to JPEG and M-JPEG. It supports baseline JPEG Encoding up to
> +  8Kx8K resolution.
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - items:
> +          - const: ti,am62a-jpeg-enc
> +          - const: img,e5010-jpeg-enc
> +      - const: img,e5010-jpeg-enc
> +
> +  reg:
> +    items:
> +      - description: The E5010 core register region
> +      - description: The E5010 mmu register region
> +
> +  reg-names:
> +    items:
> +      - const: core
> +      - const: mmu
> +
> +  power-domains:
> +    maxItems: 1
> +
> +  resets:
> +    maxItems: 1

"resets" seems unused.

Andrew

> +
> +  clocks:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - reg-names
> +  - interrupts
> +  - clocks
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/soc/ti,sci_pm_domain.h>
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +
> +    soc {
> +      #address-cells = <2>;
> +      #size-cells = <2>;
> +      jpeg-encoder@fd20000 {
> +          compatible = "img,e5010-jpeg-enc";
> +          reg = <0x00 0xfd20000 0x00 0x100>,
> +                <0x00 0xfd20200 0x00 0x200>;
> +          reg-names = "core", "mmu";
> +          clocks = <&k3_clks 201 0>;
> +          power-domains = <&k3_pds 201 TI_SCI_PD_EXCLUSIVE>;
> +          interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +      };
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 8999497011a2..d0f8c46d3ce9 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -10461,6 +10461,11 @@ S:	Maintained
>   F:	Documentation/devicetree/bindings/auxdisplay/img,ascii-lcd.yaml
>   F:	drivers/auxdisplay/img-ascii-lcd.c
>   
> +IMGTEC JPEG ENCODER DRIVER
> +M:	Devarsh Thakkar <devarsht@ti.com>
> +S:	Supported
> +F:	Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
> +
>   IMGTEC IR DECODER DRIVER
>   S:	Orphan
>   F:	drivers/media/rc/img-ir/
  
Devarsh Thakkar Feb. 7, 2024, 6:28 a.m. UTC | #3
Hi Andrew,

Thanks for the review.

On 06/02/24 03:22, Andrew Davis wrote:
> On 2/5/24 5:42 AM, Devarsh Thakkar wrote:
>> Add dt-bindings for Imagination E5010 JPEG Encoder [1] which is 
>> implemented
>> as stateful V4L2 M2M driver.
>>
>> The device supports baseline encoding with two different quantization
>> tables and compression ratio as demanded.
>>
>> Minimum resolution supported is 64x64 and Maximum resolution supported is
>> 8192x8192.
>>
>> [1]:  AM62A TRM (Section 7.6 is for JPEG Encoder)
>> Link: https://www.ti.com/lit/pdf/spruj16
>>
>> Co-developed-by: David Huang <d-huang@ti.com>
>> Signed-off-by: David Huang <d-huang@ti.com>
>> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
>> ---
>> V2: No change
>> V3:
>> - Add vendor specific compatible
>> - Update reg names
>> - Update clocks to 1
>> - Fix dts example with proper naming
>> V4:
>>   - Use ti-specific compatible ti,am62a-jpeg-enc as secondary one
>>   - Update commit message and title
>>   - Remove clock-names as only single clock
>>
>> Link to previous commit:
>> https://lore.kernel.org/all/20230816152210.4080779-2-devarsht@ti.com/
>> ---
>>   .../bindings/media/img,e5010-jpeg-enc.yaml    | 75 +++++++++++++++++++
>>   MAINTAINERS                                   |  5 ++
>>   2 files changed, 80 insertions(+)
>>   create mode 100644 
>> Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
>>
>> diff --git 
>> a/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml 
>> b/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
>> new file mode 100644
>> index 000000000000..085020cb9e61
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
>> @@ -0,0 +1,75 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/media/img,e5010-jpeg-enc.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Imagination E5010 JPEG Encoder
>> +
>> +maintainers:
>> +  - Devarsh Thakkar <devarsht@ti.com>
>> +
>> +description: |
>> +  The E5010 is a JPEG encoder from Imagination Technologies 
>> implemented on
>> +  TI's AM62A SoC. It is capable of real time encoding of YUV420 and 
>> YUV422
>> +  inputs to JPEG and M-JPEG. It supports baseline JPEG Encoding up to
>> +  8Kx8K resolution.
>> +
>> +properties:
>> +  compatible:
>> +    oneOf:
>> +      - items:
>> +          - const: ti,am62a-jpeg-enc
>> +          - const: img,e5010-jpeg-enc
>> +      - const: img,e5010-jpeg-enc
>> +
>> +  reg:
>> +    items:
>> +      - description: The E5010 core register region
>> +      - description: The E5010 mmu register region
>> +
>> +  reg-names:
>> +    items:
>> +      - const: core
>> +      - const: mmu
>> +
>> +  power-domains:
>> +    maxItems: 1
>> +
>> +  resets:
>> +    maxItems: 1
> 
> "resets" seems unused.
> 

resets is an optional property. The E5010 IP as such supports reset 
signal interface, but it is not mandatory to use it as IP also supports 
register based reset too.

Regards
Devarsh

> Andrew
> 
>> +
>> +  clocks:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - reg-names
>> +  - interrupts
>> +  - clocks
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/soc/ti,sci_pm_domain.h>
>> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
>> +    #include <dt-bindings/interrupt-controller/irq.h>
>> +
>> +    soc {
>> +      #address-cells = <2>;
>> +      #size-cells = <2>;
>> +      jpeg-encoder@fd20000 {
>> +          compatible = "img,e5010-jpeg-enc";
>> +          reg = <0x00 0xfd20000 0x00 0x100>,
>> +                <0x00 0xfd20200 0x00 0x200>;
>> +          reg-names = "core", "mmu";
>> +          clocks = <&k3_clks 201 0>;
>> +          power-domains = <&k3_pds 201 TI_SCI_PD_EXCLUSIVE>;
>> +          interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
>> +      };
>> +    };
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 8999497011a2..d0f8c46d3ce9 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -10461,6 +10461,11 @@ S:    Maintained
>>   F:    Documentation/devicetree/bindings/auxdisplay/img,ascii-lcd.yaml
>>   F:    drivers/auxdisplay/img-ascii-lcd.c
>> +IMGTEC JPEG ENCODER DRIVER
>> +M:    Devarsh Thakkar <devarsht@ti.com>
>> +S:    Supported
>> +F:    Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
>> +
>>   IMGTEC IR DECODER DRIVER
>>   S:    Orphan
>>   F:    drivers/media/rc/img-ir/
>
  

Patch

diff --git a/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml b/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
new file mode 100644
index 000000000000..085020cb9e61
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
@@ -0,0 +1,75 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/img,e5010-jpeg-enc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Imagination E5010 JPEG Encoder
+
+maintainers:
+  - Devarsh Thakkar <devarsht@ti.com>
+
+description: |
+  The E5010 is a JPEG encoder from Imagination Technologies implemented on
+  TI's AM62A SoC. It is capable of real time encoding of YUV420 and YUV422
+  inputs to JPEG and M-JPEG. It supports baseline JPEG Encoding up to
+  8Kx8K resolution.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: ti,am62a-jpeg-enc
+          - const: img,e5010-jpeg-enc
+      - const: img,e5010-jpeg-enc
+
+  reg:
+    items:
+      - description: The E5010 core register region
+      - description: The E5010 mmu register region
+
+  reg-names:
+    items:
+      - const: core
+      - const: mmu
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/soc/ti,sci_pm_domain.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+      jpeg-encoder@fd20000 {
+          compatible = "img,e5010-jpeg-enc";
+          reg = <0x00 0xfd20000 0x00 0x100>,
+                <0x00 0xfd20200 0x00 0x200>;
+          reg-names = "core", "mmu";
+          clocks = <&k3_clks 201 0>;
+          power-domains = <&k3_pds 201 TI_SCI_PD_EXCLUSIVE>;
+          interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+      };
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index 8999497011a2..d0f8c46d3ce9 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -10461,6 +10461,11 @@  S:	Maintained
 F:	Documentation/devicetree/bindings/auxdisplay/img,ascii-lcd.yaml
 F:	drivers/auxdisplay/img-ascii-lcd.c
 
+IMGTEC JPEG ENCODER DRIVER
+M:	Devarsh Thakkar <devarsht@ti.com>
+S:	Supported
+F:	Documentation/devicetree/bindings/media/img,e5010-jpeg-enc.yaml
+
 IMGTEC IR DECODER DRIVER
 S:	Orphan
 F:	drivers/media/rc/img-ir/