* [PATCH 0/3] media: meson: vdec: add sm1 platform @ 2019-11-21 10:14 Neil Armstrong 2019-11-21 10:14 ` [PATCH 1/3] dt-bindings: media: amlogic, gx-vdec: add bindings for SM1 family Neil Armstrong ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Neil Armstrong @ 2019-11-21 10:14 UTC (permalink / raw) To: mjourdan Cc: linux-amlogic, linux-media, linux-kernel, linux-arm-kernel, Neil Armstrong This patchset adds support for the current Amlogic Video Decoder driver for the Amlogic SM1 & compatible SoCs. Then support is added for the currently supported MPEG1 & MPEG2 decoders like for G12A support. This patchset depends on G12A support patchset at [1]. M2M Decoder compliance is handled in a separate patchset at [2]. # v4l2-compliance v4l2-compliance SHA: 7ead0e1856b89f2e19369af452bb03fd0cd16793, 64 bits Compliance test for meson-vdec device /dev/video0: Driver Info: Driver name : meson-vdec Card type : Amlogic Video Decoder Bus info : platform:meson-vdec Driver version : 5.4.0 Capabilities : 0x84204000 Video Memory-to-Memory Multiplanar Streaming Extended Pix Format Device Capabilities Device Caps : 0x04204000 Video Memory-to-Memory Multiplanar Streaming Extended Pix Format Detected Stateful Decoder Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video0 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 2 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Total for meson-vdec device /dev/video0: 44, Succeeded: 44, Failed: 0, Warnings: 0 [1] https://lore.kernel.org/linux-media/20191120111430.29552-1-narmstrong@baylibre.com [2] https://lore.kernel.org/linux-media/20191007145909.29979-1-mjourdan@baylibre.com Neil Armstrong (3): dt-bindings: media: amlogic,gx-vdec: add bindings for SM1 family media: meson: vdec: add sm1 platform arm64: dts: meson-sm1: add video decoder compatible .../bindings/media/amlogic,gx-vdec.yaml | 2 ++ arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 4 +++ drivers/staging/media/meson/vdec/vdec.c | 5 +++- drivers/staging/media/meson/vdec/vdec_1.c | 29 ++++++++++++++---- .../staging/media/meson/vdec/vdec_platform.c | 30 +++++++++++++++++++ .../staging/media/meson/vdec/vdec_platform.h | 2 ++ 6 files changed, 65 insertions(+), 7 deletions(-) -- 2.22.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] dt-bindings: media: amlogic, gx-vdec: add bindings for SM1 family 2019-11-21 10:14 [PATCH 0/3] media: meson: vdec: add sm1 platform Neil Armstrong @ 2019-11-21 10:14 ` Neil Armstrong 2019-12-04 19:27 ` [PATCH 1/3] dt-bindings: media: amlogic,gx-vdec: " Rob Herring 2019-11-21 10:14 ` [PATCH 2/3] media: meson: vdec: add sm1 platform Neil Armstrong 2019-11-21 10:14 ` [PATCH 3/3] arm64: dts: meson-sm1: add video decoder compatible Neil Armstrong 2 siblings, 1 reply; 6+ messages in thread From: Neil Armstrong @ 2019-11-21 10:14 UTC (permalink / raw) To: mjourdan, devicetree Cc: linux-amlogic, linux-media, linux-kernel, linux-arm-kernel, Neil Armstrong Add bindings to support the Amlogic Video Decoder on the Amlogic SM1 family. SM1 has a slightly different power management handling, thus needing a separate compatible. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml b/Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml index 8ea979bb97e6..a7ef69d02336 100644 --- a/Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml +++ b/Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml @@ -36,6 +36,7 @@ properties: - const: amlogic,gx-vdec - enum: - amlogic,g12a-vdec # G12A (S905X2, S905D2) + - amlogic,sm1-vdec # SM1 (S905X3, S905D3) interrupts: minItems: 2 @@ -100,6 +101,7 @@ allOf: contains: enum: - amlogic,g12a-vdec + - amlogic,sm1-vdec then: properties: -- 2.22.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] dt-bindings: media: amlogic,gx-vdec: add bindings for SM1 family 2019-11-21 10:14 ` [PATCH 1/3] dt-bindings: media: amlogic, gx-vdec: add bindings for SM1 family Neil Armstrong @ 2019-12-04 19:27 ` Rob Herring 0 siblings, 0 replies; 6+ messages in thread From: Rob Herring @ 2019-12-04 19:27 UTC (permalink / raw) To: Neil Armstrong Cc: mjourdan, devicetree, Neil Armstrong, linux-kernel, linux-amlogic, linux-arm-kernel, linux-media On Thu, 21 Nov 2019 11:14:27 +0100, Neil Armstrong wrote: > Add bindings to support the Amlogic Video Decoder on the Amlogic SM1 family. > > SM1 has a slightly different power management handling, thus needing a > separate compatible. > > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> > --- > Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml | 2 ++ > 1 file changed, 2 insertions(+) > Acked-by: Rob Herring <robh@kernel.org> _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/3] media: meson: vdec: add sm1 platform 2019-11-21 10:14 [PATCH 0/3] media: meson: vdec: add sm1 platform Neil Armstrong 2019-11-21 10:14 ` [PATCH 1/3] dt-bindings: media: amlogic, gx-vdec: add bindings for SM1 family Neil Armstrong @ 2019-11-21 10:14 ` Neil Armstrong 2019-11-21 10:14 ` [PATCH 3/3] arm64: dts: meson-sm1: add video decoder compatible Neil Armstrong 2 siblings, 0 replies; 6+ messages in thread From: Neil Armstrong @ 2019-11-21 10:14 UTC (permalink / raw) To: mjourdan Cc: linux-amlogic, linux-media, linux-kernel, linux-arm-kernel, Neil Armstrong Add support for the Amlogic SM1 platform for the current MPEG1 & MPEG2 support. The SM1 family, very close to the G12A SoCs, has a slighly different power management control, thus needing a separate compatible and family id. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- drivers/staging/media/meson/vdec/vdec.c | 5 +++- drivers/staging/media/meson/vdec/vdec_1.c | 29 ++++++++++++++---- .../staging/media/meson/vdec/vdec_platform.c | 30 +++++++++++++++++++ .../staging/media/meson/vdec/vdec_platform.h | 2 ++ 4 files changed, 59 insertions(+), 7 deletions(-) diff --git a/drivers/staging/media/meson/vdec/vdec.c b/drivers/staging/media/meson/vdec/vdec.c index 875a12be9c9e..a8a4c380ccc9 100644 --- a/drivers/staging/media/meson/vdec/vdec.c +++ b/drivers/staging/media/meson/vdec/vdec.c @@ -958,6 +958,8 @@ static const struct of_device_id vdec_dt_match[] = { .data = &vdec_platform_gxl }, { .compatible = "amlogic,g12a-vdec", .data = &vdec_platform_g12a }, + { .compatible = "amlogic,sm1-vdec", + .data = &vdec_platform_sm1 }, {} }; MODULE_DEVICE_TABLE(of, vdec_dt_match); @@ -1008,7 +1010,8 @@ static int vdec_probe(struct platform_device *pdev) of_id = of_match_node(vdec_dt_match, dev->of_node); core->platform = of_id->data; - if (core->platform->revision == VDEC_REVISION_G12A) { + if (core->platform->revision == VDEC_REVISION_G12A || + core->platform->revision == VDEC_REVISION_SM1) { core->vdec_hevcf_clk = devm_clk_get(dev, "vdec_hevcf"); if (IS_ERR(core->vdec_hevcf_clk)) return -EPROBE_DEFER; diff --git a/drivers/staging/media/meson/vdec/vdec_1.c b/drivers/staging/media/meson/vdec/vdec_1.c index 3a15c6fc0567..3fe2de0c9331 100644 --- a/drivers/staging/media/meson/vdec/vdec_1.c +++ b/drivers/staging/media/meson/vdec/vdec_1.c @@ -18,6 +18,7 @@ #define AO_RTI_GEN_PWR_SLEEP0 0xe8 #define AO_RTI_GEN_PWR_ISO0 0xec #define GEN_PWR_VDEC_1 (BIT(3) | BIT(2)) + #define GEN_PWR_VDEC_1_SM1 (BIT(1)) #define MC_SIZE (4096 * 4) @@ -142,12 +143,20 @@ static int vdec_1_stop(struct amvdec_session *sess) amvdec_read_dos(core, DOS_SW_RESET0); /* enable vdec1 isolation */ - regmap_write(core->regmap_ao, AO_RTI_GEN_PWR_ISO0, 0xc0); + if (core->platform->revision == VDEC_REVISION_SM1) + regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_ISO0, + GEN_PWR_VDEC_1_SM1, GEN_PWR_VDEC_1_SM1); + else + regmap_write(core->regmap_ao, AO_RTI_GEN_PWR_ISO0, 0xc0); /* power off vdec1 memories */ amvdec_write_dos(core, DOS_MEM_PD_VDEC, 0xffffffff); /* power off vdec1 */ - regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_SLEEP0, - GEN_PWR_VDEC_1, GEN_PWR_VDEC_1); + if (core->platform->revision == VDEC_REVISION_SM1) + regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_SLEEP0, + GEN_PWR_VDEC_1_SM1, GEN_PWR_VDEC_1_SM1); + else + regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_SLEEP0, + GEN_PWR_VDEC_1, GEN_PWR_VDEC_1); clk_disable_unprepare(core->vdec_1_clk); @@ -170,8 +179,12 @@ static int vdec_1_start(struct amvdec_session *sess) return ret; /* Enable power for VDEC_1 */ - regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_SLEEP0, - GEN_PWR_VDEC_1, 0); + if (core->platform->revision == VDEC_REVISION_SM1) + regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_SLEEP0, + GEN_PWR_VDEC_1_SM1, 0); + else + regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_SLEEP0, + GEN_PWR_VDEC_1, 0); usleep_range(10, 20); /* Reset VDEC1 */ @@ -183,7 +196,11 @@ static int vdec_1_start(struct amvdec_session *sess) /* enable VDEC Memories */ amvdec_write_dos(core, DOS_MEM_PD_VDEC, 0); /* Remove VDEC1 Isolation */ - regmap_write(core->regmap_ao, AO_RTI_GEN_PWR_ISO0, 0); + if (core->platform->revision == VDEC_REVISION_SM1) + regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_ISO0, + GEN_PWR_VDEC_1_SM1, 0); + else + regmap_write(core->regmap_ao, AO_RTI_GEN_PWR_ISO0, 0); /* Reset DOS top registers */ amvdec_write_dos(core, DOS_VDEC_MCRCC_STALL_CTRL, 0); diff --git a/drivers/staging/media/meson/vdec/vdec_platform.c b/drivers/staging/media/meson/vdec/vdec_platform.c index 7845a889ce24..ea39f8209ec7 100644 --- a/drivers/staging/media/meson/vdec/vdec_platform.c +++ b/drivers/staging/media/meson/vdec/vdec_platform.c @@ -106,6 +106,30 @@ static const struct amvdec_format vdec_formats_g12a[] = { }, }; +static const struct amvdec_format vdec_formats_sm1[] = { + { + .pixfmt = V4L2_PIX_FMT_MPEG1, + .min_buffers = 8, + .max_buffers = 8, + .max_width = 1920, + .max_height = 1080, + .vdec_ops = &vdec_1_ops, + .codec_ops = &codec_mpeg12_ops, + .firmware_path = "meson/vdec/gxl_mpeg12.bin", + .pixfmts_cap = { V4L2_PIX_FMT_NV12M, V4L2_PIX_FMT_YUV420M, 0 }, + }, { + .pixfmt = V4L2_PIX_FMT_MPEG2, + .min_buffers = 8, + .max_buffers = 8, + .max_width = 1920, + .max_height = 1080, + .vdec_ops = &vdec_1_ops, + .codec_ops = &codec_mpeg12_ops, + .firmware_path = "meson/vdec/gxl_mpeg12.bin", + .pixfmts_cap = { V4L2_PIX_FMT_NV12M, V4L2_PIX_FMT_YUV420M, 0 }, + }, +}; + const struct vdec_platform vdec_platform_gxbb = { .formats = vdec_formats_gxbb, .num_formats = ARRAY_SIZE(vdec_formats_gxbb), @@ -129,3 +153,9 @@ const struct vdec_platform vdec_platform_g12a = { .num_formats = ARRAY_SIZE(vdec_formats_g12a), .revision = VDEC_REVISION_G12A, }; + +const struct vdec_platform vdec_platform_sm1 = { + .formats = vdec_formats_sm1, + .num_formats = ARRAY_SIZE(vdec_formats_sm1), + .revision = VDEC_REVISION_SM1, +}; diff --git a/drivers/staging/media/meson/vdec/vdec_platform.h b/drivers/staging/media/meson/vdec/vdec_platform.h index 7c61b941b39f..731877a771f4 100644 --- a/drivers/staging/media/meson/vdec/vdec_platform.h +++ b/drivers/staging/media/meson/vdec/vdec_platform.h @@ -16,6 +16,7 @@ enum vdec_revision { VDEC_REVISION_GXL, VDEC_REVISION_GXM, VDEC_REVISION_G12A, + VDEC_REVISION_SM1, }; struct vdec_platform { @@ -28,5 +29,6 @@ extern const struct vdec_platform vdec_platform_gxbb; extern const struct vdec_platform vdec_platform_gxm; extern const struct vdec_platform vdec_platform_gxl; extern const struct vdec_platform vdec_platform_g12a; +extern const struct vdec_platform vdec_platform_sm1; #endif -- 2.22.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] arm64: dts: meson-sm1: add video decoder compatible 2019-11-21 10:14 [PATCH 0/3] media: meson: vdec: add sm1 platform Neil Armstrong 2019-11-21 10:14 ` [PATCH 1/3] dt-bindings: media: amlogic, gx-vdec: add bindings for SM1 family Neil Armstrong 2019-11-21 10:14 ` [PATCH 2/3] media: meson: vdec: add sm1 platform Neil Armstrong @ 2019-11-21 10:14 ` Neil Armstrong 2019-12-13 16:53 ` Kevin Hilman 2 siblings, 1 reply; 6+ messages in thread From: Neil Armstrong @ 2019-11-21 10:14 UTC (permalink / raw) To: mjourdan Cc: linux-amlogic, linux-media, linux-kernel, linux-arm-kernel, Neil Armstrong Add the video decoder specific compatible for Amlogic SM1 SoC. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi index 521573f3a5ba..b94a4eae973f 100644 --- a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi @@ -138,6 +138,10 @@ compatible = "amlogic,meson-sm1-pwrc"; }; +&vdec { + compatible = "amlogic,sm1-vdec"; +}; + &vpu { power-domains = <&pwrc PWRC_SM1_VPU_ID>; }; -- 2.22.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] arm64: dts: meson-sm1: add video decoder compatible 2019-11-21 10:14 ` [PATCH 3/3] arm64: dts: meson-sm1: add video decoder compatible Neil Armstrong @ 2019-12-13 16:53 ` Kevin Hilman 0 siblings, 0 replies; 6+ messages in thread From: Kevin Hilman @ 2019-12-13 16:53 UTC (permalink / raw) To: Neil Armstrong, mjourdan Cc: linux-amlogic, linux-media, linux-kernel, linux-arm-kernel, Neil Armstrong Neil Armstrong <narmstrong@baylibre.com> writes: > Add the video decoder specific compatible for Amlogic SM1 SoC. > > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Queued for v5.6, Kevin _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-12-13 22:23 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-11-21 10:14 [PATCH 0/3] media: meson: vdec: add sm1 platform Neil Armstrong 2019-11-21 10:14 ` [PATCH 1/3] dt-bindings: media: amlogic, gx-vdec: add bindings for SM1 family Neil Armstrong 2019-12-04 19:27 ` [PATCH 1/3] dt-bindings: media: amlogic,gx-vdec: " Rob Herring 2019-11-21 10:14 ` [PATCH 2/3] media: meson: vdec: add sm1 platform Neil Armstrong 2019-11-21 10:14 ` [PATCH 3/3] arm64: dts: meson-sm1: add video decoder compatible Neil Armstrong 2019-12-13 16:53 ` Kevin Hilman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).