dt-bindings: media: s5p-mfc: convert bindings to json-schema

Convert s5p-mfc bindings to DT schema format using json-schema.

Signed-off-by: Aakarsh Jain <aakarsh.jain@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230328114729.61436-1-aakarsh.jain@samsung.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
This commit is contained in:
Aakarsh Jain 2023-03-28 17:17:29 +05:30 committed by Krzysztof Kozlowski
parent 514a935fd0
commit 538af6e585
2 changed files with 184 additions and 78 deletions

View file

@ -1,78 +0,0 @@
* Samsung Multi Format Codec (MFC)
Multi Format Codec (MFC) is the IP present in Samsung SoCs which
supports high resolution decoding and encoding functionalities.
The MFC device driver is a v4l2 driver which can encode/decode
video raw/elementary streams and has support for all popular
video codecs.
Required properties:
- compatible : value should be either one among the following
(a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs
(b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs
(c) "samsung,exynos3250-mfc", "samsung,mfc-v7" for MFC v7
present in Exynos3250 SoC
(d) "samsung,mfc-v7" for MFC v7 present in Exynos5420 SoC
(e) "samsung,mfc-v8" for MFC v8 present in Exynos5800 SoC
(f) "samsung,exynos5433-mfc" for MFC v8 present in Exynos5433 SoC
(g) "samsung,mfc-v10" for MFC v10 present in Exynos7880 SoC
- reg : Physical base address of the IP registers and length of memory
mapped region.
- interrupts : MFC interrupt number to the CPU.
- clocks : from common clock binding: handle to mfc clock.
- clock-names : from common clock binding: must contain "mfc",
corresponding to entry in the clocks property.
Optional properties:
- power-domains : power-domain property defined with a phandle
to respective power domain.
- memory-region : from reserved memory binding: phandles to two reserved
memory regions, first is for "left" mfc memory bus interfaces,
second if for the "right" mfc memory bus, used when no SYSMMU
support is available; used only by MFC v5 present in Exynos4 SoCs
Obsolete properties:
- samsung,mfc-r, samsung,mfc-l : support removed, please use memory-region
property instead
Example:
SoC specific DT entry:
mfc: codec@13400000 {
compatible = "samsung,mfc-v5";
reg = <0x13400000 0x10000>;
interrupts = <0 94 0>;
power-domains = <&pd_mfc>;
clocks = <&clock 273>;
clock-names = "mfc";
};
Reserved memory specific DT entry for given board (see reserved memory binding
for more information):
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
mfc_left: region@51000000 {
compatible = "shared-dma-pool";
no-map;
reg = <0x51000000 0x800000>;
};
mfc_right: region@43000000 {
compatible = "shared-dma-pool";
no-map;
reg = <0x43000000 0x800000>;
};
};
Board specific DT entry:
codec@13400000 {
memory-region = <&mfc_left>, <&mfc_right>;
};

View file

@ -0,0 +1,184 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/samsung,s5p-mfc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung Exynos Multi Format Codec (MFC)
maintainers:
- Marek Szyprowski <m.szyprowski@samsung.com>
- Aakarsh Jain <aakarsh.jain@samsung.com>
description:
Multi Format Codec (MFC) is the IP present in Samsung SoCs which
supports high resolution decoding and encoding functionalities.
properties:
compatible:
oneOf:
- enum:
- samsung,exynos5433-mfc # Exynos5433
- samsung,mfc-v5 # Exynos4
- samsung,mfc-v6 # Exynos5
- samsung,mfc-v7 # Exynos5420
- samsung,mfc-v8 # Exynos5800
- samsung,mfc-v10 # Exynos7880
- items:
- enum:
- samsung,exynos3250-mfc # Exynos3250
- const: samsung,mfc-v7 # Fall back for Exynos3250
reg:
maxItems: 1
clocks:
minItems: 1
maxItems: 3
clock-names:
minItems: 1
maxItems: 3
interrupts:
maxItems: 1
iommus:
minItems: 1
maxItems: 2
iommu-names:
minItems: 1
maxItems: 2
power-domains:
maxItems: 1
memory-region:
minItems: 1
maxItems: 2
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
additionalProperties: false
allOf:
- if:
properties:
compatible:
contains:
enum:
- samsung,exynos3250-mfc
then:
properties:
clocks:
maxItems: 2
clock-names:
items:
- const: mfc
- const: sclk_mfc
iommus:
maxItems: 1
iommus-names: false
- if:
properties:
compatible:
contains:
enum:
- samsung,exynos5433-mfc
then:
properties:
clocks:
maxItems: 3
clock-names:
items:
- const: pclk
- const: aclk
- const: aclk_xiu
iommus:
maxItems: 2
iommus-names:
items:
- const: left
- const: right
- if:
properties:
compatible:
contains:
enum:
- samsung,mfc-v5
then:
properties:
clocks:
maxItems: 2
clock-names:
items:
- const: mfc
- const: sclk_mfc
iommus:
maxItems: 2
iommus-names:
items:
- const: left
- const: right
- if:
properties:
compatible:
contains:
enum:
- samsung,mfc-v6
- samsung,mfc-v8
then:
properties:
clocks:
maxItems: 1
clock-names:
items:
- const: mfc
iommus:
maxItems: 2
iommus-names:
items:
- const: left
- const: right
- if:
properties:
compatible:
contains:
enum:
- samsung,mfc-v7
then:
properties:
clocks:
minItems: 1
maxItems: 2
iommus:
minItems: 1
maxItems: 2
examples:
- |
#include <dt-bindings/clock/exynos4.h>
#include <dt-bindings/clock/exynos-audss-clk.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
codec@13400000 {
compatible = "samsung,mfc-v5";
reg = <0x13400000 0x10000>;
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&pd_mfc>;
clocks = <&clock CLK_MFC>, <&clock CLK_SCLK_MFC>;
clock-names = "mfc", "sclk_mfc";
iommus = <&sysmmu_mfc_l>, <&sysmmu_mfc_r>;
iommu-names = "left", "right";
};