This patchset adds support for s5pv210 soc, into Samsung DRM Rotator driver. Currently only NV12 and XRGB8888 formats are supported.
It was tested by using simple tool from https://www.spinics.net/lists/linux-samsung-soc/msg60498.html
Changes from v1: - fixed order of chipsets in documentation and removed ordering from it
Paweł Chmiel (3): drm/exynos: rotator: Add support for s5pv210 dt-bindings: gpu: samsung-rotator: Document s5pv210 support ARM: dts: s5pv210: Add node for exynos-rotator
.../bindings/gpu/samsung-rotator.txt | 7 +++--- arch/arm/boot/dts/s5pv210.dtsi | 9 ++++++++ drivers/gpu/drm/exynos/exynos_drm_rotator.c | 23 +++++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-)
This commit adds support for s5pv210. Currently only NV12 and XRGB8888 formats are supported. It was tested by using tool from https://www.spinics.net/lists/linux-samsung-soc/msg60498.html
Signed-off-by: Paweł Chmiel pawel.mikolaj.chmiel@gmail.com --- drivers/gpu/drm/exynos/exynos_drm_rotator.c | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_rotator.c b/drivers/gpu/drm/exynos/exynos_drm_rotator.c index 8d67b2a54be3..05abfed6f7f8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_rotator.c +++ b/drivers/gpu/drm/exynos/exynos_drm_rotator.c @@ -356,6 +356,11 @@ static int rotator_runtime_resume(struct device *dev) } #endif
+static const struct drm_exynos_ipp_limit rotator_s5pv210_rbg888_limits[] = { + { IPP_SIZE_LIMIT(BUFFER, .h = { 8, SZ_16K }, .v = { 8, SZ_16K }) }, + { IPP_SIZE_LIMIT(AREA, .h.align = 2, .v.align = 2) }, +}; + static const struct drm_exynos_ipp_limit rotator_4210_rbg888_limits[] = { { IPP_SIZE_LIMIT(BUFFER, .h = { 8, SZ_16K }, .v = { 8, SZ_16K }) }, { IPP_SIZE_LIMIT(AREA, .h.align = 4, .v.align = 4) }, @@ -371,6 +376,11 @@ static const struct drm_exynos_ipp_limit rotator_5250_rbg888_limits[] = { { IPP_SIZE_LIMIT(AREA, .h.align = 2, .v.align = 2) }, };
+static const struct drm_exynos_ipp_limit rotator_s5pv210_yuv_limits[] = { + { IPP_SIZE_LIMIT(BUFFER, .h = { 32, SZ_64K }, .v = { 32, SZ_64K }) }, + { IPP_SIZE_LIMIT(AREA, .h.align = 8, .v.align = 8) }, +}; + static const struct drm_exynos_ipp_limit rotator_4210_yuv_limits[] = { { IPP_SIZE_LIMIT(BUFFER, .h = { 32, SZ_64K }, .v = { 32, SZ_64K }) }, { IPP_SIZE_LIMIT(AREA, .h.align = 8, .v.align = 8) }, @@ -381,6 +391,11 @@ static const struct drm_exynos_ipp_limit rotator_4412_yuv_limits[] = { { IPP_SIZE_LIMIT(AREA, .h.align = 8, .v.align = 8) }, };
+static const struct exynos_drm_ipp_formats rotator_s5pv210_formats[] = { + { IPP_SRCDST_FORMAT(XRGB8888, rotator_s5pv210_rbg888_limits) }, + { IPP_SRCDST_FORMAT(NV12, rotator_s5pv210_yuv_limits) }, +}; + static const struct exynos_drm_ipp_formats rotator_4210_formats[] = { { IPP_SRCDST_FORMAT(XRGB8888, rotator_4210_rbg888_limits) }, { IPP_SRCDST_FORMAT(NV12, rotator_4210_yuv_limits) }, @@ -396,6 +411,11 @@ static const struct exynos_drm_ipp_formats rotator_5250_formats[] = { { IPP_SRCDST_FORMAT(NV12, rotator_4412_yuv_limits) }, };
+static const struct rot_variant rotator_s5pv210_data = { + .formats = rotator_s5pv210_formats, + .num_formats = ARRAY_SIZE(rotator_s5pv210_formats), +}; + static const struct rot_variant rotator_4210_data = { .formats = rotator_4210_formats, .num_formats = ARRAY_SIZE(rotator_4210_formats), @@ -413,6 +433,9 @@ static const struct rot_variant rotator_5250_data = {
static const struct of_device_id exynos_rotator_match[] = { { + .compatible = "samsung,s5pv210-rotator", + .data = &rotator_s5pv210_data, + }, { .compatible = "samsung,exynos4210-rotator", .data = &rotator_4210_data, }, {
This commit documents new compatible for s5pv210 soc, which will be also supported by this driver.
Signed-off-by: Paweł Chmiel pawel.mikolaj.chmiel@gmail.com --- Changes from v1: - Removed list enumeration - Placed s5pv210 at beginning of list (it's the oldest chipset) --- Documentation/devicetree/bindings/gpu/samsung-rotator.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/gpu/samsung-rotator.txt b/Documentation/devicetree/bindings/gpu/samsung-rotator.txt index 82cd1ed0be93..3aca2578da0b 100644 --- a/Documentation/devicetree/bindings/gpu/samsung-rotator.txt +++ b/Documentation/devicetree/bindings/gpu/samsung-rotator.txt @@ -2,9 +2,10 @@
Required properties: - compatible : value should be one of the following: - (a) "samsung,exynos4210-rotator" for Rotator IP in Exynos4210 - (b) "samsung,exynos4212-rotator" for Rotator IP in Exynos4212/4412 - (c) "samsung,exynos5250-rotator" for Rotator IP in Exynos5250 + * "samsung,s5pv210-rotator" for Rotator IP in S5PV210 + * "samsung,exynos4210-rotator" for Rotator IP in Exynos4210 + * "samsung,exynos4212-rotator" for Rotator IP in Exynos4212/4412 + * "samsung,exynos5250-rotator" for Rotator IP in Exynos5250
- reg : Physical base address of the IP registers and length of memory mapped region.
On Fri, 28 Dec 2018 16:19:03 +0100, =?UTF-8?q?Pawe=C5=82=20Chmiel?= wrote:
This commit documents new compatible for s5pv210 soc, which will be also supported by this driver.
Signed-off-by: Paweł Chmiel pawel.mikolaj.chmiel@gmail.com
Changes from v1:
- Removed list enumeration
- Placed s5pv210 at beginning of list (it's the oldest chipset)
Documentation/devicetree/bindings/gpu/samsung-rotator.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
Reviewed-by: Rob Herring robh@kernel.org
On Fri, 28 Dec 2018 at 16:19, Paweł Chmiel pawel.mikolaj.chmiel@gmail.com wrote:
This commit documents new compatible for s5pv210 soc, which will be also supported by this driver.
Signed-off-by: Paweł Chmiel pawel.mikolaj.chmiel@gmail.com
Changes from v1:
- Removed list enumeration
- Placed s5pv210 at beginning of list (it's the oldest chipset)
Documentation/devicetree/bindings/gpu/samsung-rotator.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
Acked-by: Krzysztof Kozlowski krzk@kernel.org
Best regards, Krzysztof
This commit adds node for Exynos Rorator device, so it can be used on all s5pv210 based devices.
Signed-off-by: Paweł Chmiel pawel.mikolaj.chmiel@gmail.com --- arch/arm/boot/dts/s5pv210.dtsi | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi index 75f454a210d6..a5463003c7f6 100644 --- a/arch/arm/boot/dts/s5pv210.dtsi +++ b/arch/arm/boot/dts/s5pv210.dtsi @@ -542,6 +542,15 @@ #dma-requests = <1>; };
+ rotator: rotator@fa300000 { + compatible = "samsung,s5pv210-rotator"; + reg = <0xfa300000 0x1000>; + interrupt-parent = <&vic2>; + interrupts = <4>; + clocks = <&clocks CLK_ROTATOR>; + clock-names = "rotator"; + }; + i2c1: i2c@fab00000 { compatible = "samsung,s3c2440-i2c"; reg = <0xfab00000 0x1000>;
On Fri, Dec 28, 2018 at 04:19:04PM +0100, Paweł Chmiel wrote:
This commit adds node for Exynos Rorator device, so it can be used on all s5pv210 based devices.
Signed-off-by: Paweł Chmiel pawel.mikolaj.chmiel@gmail.com
arch/arm/boot/dts/s5pv210.dtsi | 9 +++++++++
Thanks, applied.
Best regards, Krzysztof
dri-devel@lists.freedesktop.org