Re: [PATCH] [media] vcodec: fix error return value from mtk_jpeg_clk_init()
On Fri, 2018-03-23 at 11:44 +0800, Ryder Lee wrote: > The error return value should be fixed as it may return EPROBE_DEFER. > > Cc: Rick Chang > Cc: Bin Liu > Signed-off-by: Ryder Lee > --- > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > index 226f908..af17aaa 100644 > --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > @@ -1081,11 +1081,11 @@ static int mtk_jpeg_clk_init(struct > mtk_jpeg_dev *jpeg) > > jpeg->clk_jdec = devm_clk_get(jpeg->dev, "jpgdec"); > if (IS_ERR(jpeg->clk_jdec)) > - return -EINVAL; > + return PTR_ERR(jpeg->clk_jdec); > > jpeg->clk_jdec_smi = devm_clk_get(jpeg->dev, "jpgdec-smi"); > if (IS_ERR(jpeg->clk_jdec_smi)) > - return -EINVAL; > + return PTR_ERR(jpeg->clk_jdec_smi); > > return 0; > } Acked-by: Rick Chang
Re: [PATCH 05/12] [media] vcodec: mediatek: constify v4l2_m2m_ops structures
On Sun, 2017-08-06 at 10:25 +0200, Julia Lawall wrote: > The v4l2_m2m_ops structures are only passed as the only > argument to v4l2_m2m_init, which is declared as const. > Thus the v4l2_m2m_ops structures themselves can be const. > > Done with the help of Coccinelle. > > // > @r disable optional_qualifier@ > identifier i; > position p; > @@ > static struct v4l2_m2m_ops i@p = { ... }; > > @ok1@ > identifier r.i; > position p; > @@ > v4l2_m2m_init(&i@p) > > @bad@ > position p != {r.p,ok1.p}; > identifier r.i; > struct v4l2_m2m_ops e; > @@ > e@i@p > > @depends on !bad disable optional_qualifier@ > identifier r.i; > @@ > static > +const > struct v4l2_m2m_ops i = { ... }; > // > > Signed-off-by: Julia Lawall > --- > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c |2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Acked-by: Rick Chang
Re: [PATCH 2/2] [media] vcodec: mediatek: mark pm functions as __maybe_unused
On Mon, 2017-03-20 at 10:47 +0100, Arnd Bergmann wrote: > When CONFIG_PM is disabled, we get a couple of unused functions: > > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:927:13: error: > 'mtk_jpeg_clk_off' defined but not used [-Werror=unused-function] > static void mtk_jpeg_clk_off(struct mtk_jpeg_dev *jpeg) > ^~~~ > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:916:13: error: > 'mtk_jpeg_clk_on' defined but not used [-Werror=unused-function] > static void mtk_jpeg_clk_on(struct mtk_jpeg_dev *jpeg) > > Rather than adding more error-prone #ifdefs around those, this patch > removes the existing #ifdef checks and marks the PM functions as > __maybe_unused > to let gcc do the right thing. > > Signed-off-by: Arnd Bergmann > --- > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 12 ++++---- > 1 file changed, 4 insertions(+), 8 deletions(-) Acked-by: Rick Chang
Re: [PATCH 1/2] [media] vcodec: mediatek: add missing linux/slab.h include
Hi Arnd, Thank you for the patch, but someone has fixed the same problem. Regards, Rick On Mon, 2017-03-20 at 10:47 +0100, Arnd Bergmann wrote: > With the newly added driver, I have run into randconfig failures like: > > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c: In function 'mtk_jpeg_open': > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:1017:8: error: implicit > declaration of function 'kzalloc';did you mean 'kvzalloc'? > [-Werror=implicit-function-declaration] > > Including the header with the declaration solves the problem. > > Signed-off-by: Arnd Bergmann > --- > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > index b10183f7942b..f9bd58ce7d32 100644 > --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > @@ -22,6 +22,7 @@ > #include > #include > #include > +#include > #include > #include > #include
Re: [PATCH] media: mtk-jpeg: fix continuous log "Context is NULL"
On Tue, 2017-03-14 at 22:21 +0800, Minghsiu Tsai wrote: > The symptom is continuous log "mtk-jpeg 18004000.jpegdec: Context is NULL" > in kernel log. It is becauese the error handling in irq doesn't clear > interrupt. > > The calling flow like as below when issue happen > mtk_jpeg_device_run() > mtk_jpeg_job_abort() > v4l2_m2m_job_finish() -> m2m_dev->curr_ctx = NULL; > mtk_jpeg_dec_irq() > v4l2_m2m_get_curr_priv() > -> m2m_dev->curr_ctx == NULL > -> return NULL > log "Context is NULL" > > There is race condition between job_abort() and irq. In order to simplify > code, don't want to add extra flag to maintain state, empty job_abort() and > clear interrupt before v4l2_m2m_get_curr_priv() in irq. > > Signed-off-by: Minghsiu Tsai > --- > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 14 ++ > 1 file changed, 2 insertions(+), 12 deletions(-) Acked-by: Rick Chang
Re: [PATCH] [media] vcodev: mediatek: add missing include in JPEG decoder driver
On Sun, 2017-03-12 at 16:13 -0400, Jérémy Lefaure wrote: > The driver uses kzalloc and kfree functions. So it should include > linux/slab.h. This header file is implicitly included by v4l2-common.h > if CONFIG_SPI is enabled. But when it is disabled, slab.h is not > included. In this case, the driver does not compile: > > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c: In function ‘mtk_jpeg_open’: > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:1017:8: error: implicit > declaration of function ‘kzalloc’ > [-Werror=implicit-function-declaration] > ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); > ^~~ > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:1017:6: warning: > assignment makes pointer from integer without a cast [-Wint-conversion] > ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); > ^ > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c:1047:2: error: implicit > declaration of function ‘kfree’ [-Werror=implicit-function-declaration] > kfree(ctx); > ^ > > This patch adds the missing include to fix this issue. > > Signed-off-by: Jérémy Lefaure > --- > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1 + > 1 file changed, 1 insertion(+) Acked-by: Rick Chang
Re: [PATCH v6 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Hi Hans, All the dependences of this patch have been merged into v4.10-next.Could you take v9 of this patch set? Matthias will help us to take the dts part. Best Regards, Rick On Fri, 2017-01-13 at 16:02 +0100, Matthias Brugger wrote: > Hi James, > > On 10/01/17 02:28, Eddie Huang wrote: > > Hi Matthias, > > > > On Mon, 2017-01-09 at 19:45 +0100, Matthias Brugger wrote: > >> > >> On 09/01/17 12:29, Hans Verkuil wrote: > >>> Hi Rick, > >>> > >>> On 01/06/2017 03:34 AM, Rick Chang wrote: > >>>> Hi Hans, > >>>> > >>>> The dependence on [1] has been merged in 4.10, but [2] has not.Do you > >>>> have > >>>> any idea about this patch series? Should we wait for [2] or we could > >>>> merge > >>>> the source code and dt-binding first? > >>> > >>> Looking at [2] I noticed that the last comment was July 4th. What is the > >>> reason > >>> it hasn't been merged yet? > >>> > >>> If I know [2] will be merged for 4.11, then I am fine with merging this > >>> media > >>> patch series. The dependency of this patch on [2] is something Mauro can > >>> handle. > >>> > >>> If [2] is not merged for 4.11, then I think it is better to wait until it > >>> is > >>> merged. > >>> > >> > >> I can't take [2] because there is no scpsys in the dts present. It seems > >> that it got never posted. > >> > >> Rick can you please follow-up with James and provide a patch which adds > >> a scpsys node to the mt2701.dtsi? > >> > > > > James sent three MT2701 dts patches [1] two weeks ago, these three > > patches include scpsys node. Please take a reference. And We will send > > new MT2701 ionmmu/smi dtsi node patch base on [1] later, thus you can > > accept and merge to 4.11. > > > > Thanks for the clarification. I pulled all this patches into > v4.10-next/dts32 > > Hans will you take v9 of this patch set? > Then I'll take the dts patch. > > Regards, > Matthias > > > [1] > > https://patchwork.kernel.org/patch/9489991/ > > https://patchwork.kernel.org/patch/9489985/ > > https://patchwork.kernel.org/patch/9489989/ > > > > Thanks, > > Eddie > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Hi Hans, The dependence on [1] has been merged in 4.10, but [2] has not.Do you have any idea about this patch series? Should we wait for [2] or we could merge the source code and dt-binding first? Best Regards, Rick On Wed, 2016-11-23 at 17:43 +0800, Rick Chang wrote: > On Wed, 2016-11-23 at 09:54 +0800, Rick Chang wrote: > > Hi Hans, > > > > On Tue, 2016-11-22 at 13:43 +0100, Hans Verkuil wrote: > > > On 22/11/16 04:21, Rick Chang wrote: > > > > Hi Hans, > > > > > > > > On Mon, 2016-11-21 at 15:51 +0100, Hans Verkuil wrote: > > > >> On 17/11/16 04:38, Rick Chang wrote: > > > >>> Signed-off-by: Rick Chang > > > >>> Signed-off-by: Minghsiu Tsai > > > >>> --- > > > >>> This patch depends on: > > > >>> CCF "Add clock support for Mediatek MT2701"[1] > > > >>> iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] > > > >>> > > > >>> [1] > > > >>> http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html > > > >>> [2] https://patchwork.kernel.org/patch/9164013/ > > > >> > > > >> I assume that 1 & 2 will appear in 4.10? So this patch needs to go in > > > >> after the > > > >> other two are merged in 4.10? > > > >> > > > >> Regards, > > > >> > > > >>Hans > > > > > > > > [1] will appear in 4.10, but [2] will appear latter than 4.10.So this > > > > patch needs to go in after [1] & [2] will be merged in 4.11. > > > > > > So what should I do? Merge the driver for 4.11 and wait with this patch > > > until [2] is merged in 4.11? Does that sound reasonable? > > > > > > Regards, > > > > > > Hans > > > > What do you think about this? You merge the driver first and I send this > > patch again after [1] & [2] is merged. > > BTW, to prevent merging conflict, the dtsi should be merged by mediatek > SoC maintainer, Matthias.I think we can only take care on the driver > part at this moment. > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v9 0/4] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG decoder for decoding JPEG image and Motion JPEG bitstream. changes since v8: - Fix state error in first bit stream when capture buffer has been stream on. This will trigger device run inadvertently. changes since v7: - Update MAINTAINERS changes since v6: - fix kbuild test fail - Add patch for MAINTAINERS changes since v5: - remove redundant name from struct mtk_jpeg_fmt - Set state of all buffers to VB2_BUF_STATE_QUEUED if fail in start streaming - Remove VB2_USERPTR - Add check for buffer index changes since v4: - Change file name of binding documentation - Revise DT binding documentation - Revise compatible string changes since v3: - Revise DT binding documentation - Revise compatible string changes since v2: - Revise DT binding documentation changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (4): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder vco
[PATCH v9 2/4] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1306 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 139 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2215 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..b10183f --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1306 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .fourcc = V4L2_PIX_FMT_YUV422M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 4, 4}, + .colplanes = 3, + .h_align= 5, + .v_align
[PATCH v9 3/4] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..4dd5048 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v9 1/4] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai Acked-by: Rob Herring --- .../bindings/media/mediatek-jpeg-decoder.txt | 37 ++ 1 file changed, 37 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt new file mode 100644 index 000..3813947 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt @@ -0,0 +1,37 @@ +* Mediatek JPEG Decoder + +Mediatek JPEG Decoder is the JPEG decode hardware present in Mediatek SoCs + +Required properties: +- compatible : must be one of the following string: + "mediatek,mt8173-jpgdec" + "mediatek,mt2701-jpgdec" +- reg : physical base address of the jpeg decoder registers and length of + memory mapped region. +- interrupts : interrupt number to the interrupt controller. +- clocks: device clocks, see + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. +- clock-names: must contain "jpgdec-smi" and "jpgdec". +- power-domains: a phandle to the power domain, see + Documentation/devicetree/bindings/power/power_domain.txt for details. +- mediatek,larb: must contain the local arbiters in the current Socs, see + Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt + for details. +- iommus: should point to the respective IOMMU block with master port as + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + for details. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v9 4/4] vcodec: mediatek: Add Maintainers entry for Mediatek JPEG driver
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai Signed-off-by: Bin Liu --- MAINTAINERS | 7 +++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 93e9f42..6f68fb6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7818,6 +7818,13 @@ L: net...@vger.kernel.org S: Maintained F: drivers/net/ethernet/mediatek/ +MEDIATEK JPEG DRIVER +M: Rick Chang +M: Bin Liu +S: Supported +F: drivers/media/platform/mtk-jpeg/ +F: Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt + MEDIATEK MEDIA DRIVER M: Tiffany Lin M: Andrew-CT Chen -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v8 2/4] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Hi Ricky, Thanks for your feedback. We will fix the problem in another patch. On Mon, 2016-12-12 at 12:34 +0800, Ricky Liang wrote: > Hi Rick, > > On Wed, Nov 30, 2016 at 11:08 AM, Rick Chang wrote: > > Add v4l2 driver for Mediatek JPEG Decoder > > > > Signed-off-by: Rick Chang > > Signed-off-by: Minghsiu Tsai > > > > > +static bool mtk_jpeg_check_resolution_change(struct mtk_jpeg_ctx *ctx, > > +struct mtk_jpeg_dec_param > > *param) > > +{ > > + struct mtk_jpeg_dev *jpeg = ctx->jpeg; > > + struct mtk_jpeg_q_data *q_data; > > + > > + q_data = &ctx->out_q; > > + if (q_data->w != param->pic_w || q_data->h != param->pic_h) { > > + v4l2_dbg(1, debug, &jpeg->v4l2_dev, "Picture size > > change\n"); > > + return true; > > + } > > + > > + q_data = &ctx->cap_q; > > + if (q_data->fmt != mtk_jpeg_find_format(ctx, param->dst_fourcc, > > + MTK_JPEG_FMT_TYPE_CAPTURE)) > > { > > + v4l2_dbg(1, debug, &jpeg->v4l2_dev, "format change\n"); > > + return true; > > + } > > + return false; > > > > > +static void mtk_jpeg_device_run(void *priv) > > +{ > > + struct mtk_jpeg_ctx *ctx = priv; > > + struct mtk_jpeg_dev *jpeg = ctx->jpeg; > > + struct vb2_buffer *src_buf, *dst_buf; > > + enum vb2_buffer_state buf_state = VB2_BUF_STATE_ERROR; > > + unsigned long flags; > > + struct mtk_jpeg_src_buf *jpeg_src_buf; > > + struct mtk_jpeg_bs bs; > > + struct mtk_jpeg_fb fb; > > + int i; > > + > > + src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx); > > + dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx); > > + jpeg_src_buf = mtk_jpeg_vb2_to_srcbuf(src_buf); > > + > > + if (jpeg_src_buf->flags & MTK_JPEG_BUF_FLAGS_LAST_FRAME) { > > + for (i = 0; i < dst_buf->num_planes; i++) > > + vb2_set_plane_payload(dst_buf, i, 0); > > + buf_state = VB2_BUF_STATE_DONE; > > + goto dec_end; > > + } > > + > > + if (mtk_jpeg_check_resolution_change(ctx, > > &jpeg_src_buf->dec_param)) { > > + mtk_jpeg_queue_src_chg_event(ctx); > > + ctx->state = MTK_JPEG_SOURCE_CHANGE; > > + v4l2_m2m_job_finish(jpeg->m2m_dev, ctx->fh.m2m_ctx); > > + return; > > + } > > This only detects source change if multiple OUPUT buffers are queued. > It does not catch the source change in the following scenario: > > - OUPUT buffers for jpeg1 enqueued > - OUTPUT queue STREAMON > - userspace creates CAPTURE buffers > - CAPTURE buffers enqueued > - CAPTURE queue STREAMON > - decode > - OUTPUT queue STREAMOFF > - userspace recreates OUTPUT buffers for jpeg2 > - OUTPUT buffers for jpeg2 enqueued > - OUTPUT queue STREAMON > > In the above sequence if jpeg2's decoded size is larger than jpeg1 the > function fails to detect that the existing CAPTURE buffers are not big > enough to hold the decoded data. > > A possible fix is to pass *dst_buf to > mtk_jpeg_check_resolution_change(), and check in the function that all > the dst_buf planes are large enough to hold the decoded data. > > > + > > + mtk_jpeg_set_dec_src(ctx, src_buf, &bs); > > + if (mtk_jpeg_set_dec_dst(ctx, &jpeg_src_buf->dec_param, dst_buf, > > &fb)) > > + goto dec_end; > > + > > + spin_lock_irqsave(&jpeg->hw_lock, flags); > > + mtk_jpeg_dec_reset(jpeg->dec_reg_base); > > + mtk_jpeg_dec_set_config(jpeg->dec_reg_base, > > + &jpeg_src_buf->dec_param, &bs, &fb); > > + > > + mtk_jpeg_dec_start(jpeg->dec_reg_base); > > + spin_unlock_irqrestore(&jpeg->hw_lock, flags); > > + return; > > + > > +dec_end: > > + v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx); > > + v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx); > > + v4l2_m2m_buf_done(to_vb2_v4l2_buffer(src_buf), buf_state); > > + v4l2_m2m_buf_done(to_vb2_v4l2_buffer(dst_buf), buf_state); > > + v4l2_m2m_job_finish(jpeg->m2m_dev, ctx->fh.m2m_ctx); > > +} > > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v8 4/4] vcodec: mediatek: Add Maintainers entry for Mediatek JPEG driver
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai Signed-off-by: Bin Liu --- MAINTAINERS | 7 +++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 93e9f42..6f68fb6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7818,6 +7818,13 @@ L: net...@vger.kernel.org S: Maintained F: drivers/net/ethernet/mediatek/ +MEDIATEK JPEG DRIVER +M: Rick Chang +M: Bin Liu +S: Supported +F: drivers/media/platform/mtk-jpeg/ +F: Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt + MEDIATEK MEDIA DRIVER M: Tiffany Lin M: Andrew-CT Chen -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v8 3/4] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..4dd5048 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v8 2/4] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1302 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 139 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2211 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..63a8994 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1302 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .fourcc = V4L2_PIX_FMT_YUV422M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 4, 4}, + .colplanes = 3, + .h_align= 5, + .v_align
[PATCH v8 1/4] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai Acked-by: Rob Herring --- .../bindings/media/mediatek-jpeg-decoder.txt | 37 ++ 1 file changed, 37 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt new file mode 100644 index 000..3813947 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt @@ -0,0 +1,37 @@ +* Mediatek JPEG Decoder + +Mediatek JPEG Decoder is the JPEG decode hardware present in Mediatek SoCs + +Required properties: +- compatible : must be one of the following string: + "mediatek,mt8173-jpgdec" + "mediatek,mt2701-jpgdec" +- reg : physical base address of the jpeg decoder registers and length of + memory mapped region. +- interrupts : interrupt number to the interrupt controller. +- clocks: device clocks, see + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. +- clock-names: must contain "jpgdec-smi" and "jpgdec". +- power-domains: a phandle to the power domain, see + Documentation/devicetree/bindings/power/power_domain.txt for details. +- mediatek,larb: must contain the local arbiters in the current Socs, see + Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt + for details. +- iommus: should point to the respective IOMMU block with master port as + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + for details. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v8 0/4] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG decoder for decoding JPEG image and Motion JPEG bitstream. changes since v7: - Update MAINTAINERS changes since v6: - fix kbuild test fail - Add patch for MAINTAINERS changes since v5: - remove redundant name from struct mtk_jpeg_fmt - Set state of all buffers to VB2_BUF_STATE_QUEUED if fail in start streaming - Remove VB2_USERPTR - Add check for buffer index changes since v4: - Change file name of binding documentation - Revise DT binding documentation - Revise compatible string changes since v3: - Revise DT binding documentation - Revise compatible string changes since v2: - Revise DT binding documentation changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (4): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder vcodec: mediatek: Add Maintainers entry for Mediatek JPEG driver .../bindings/media/mediatek-jpeg-decoder.t
Re: [PATCH v7 4/4] vcodec: mediatek: Add Maintainers entry for Mediatek JPEG driver
Hi Hans, Is it possible to update this patch? or I should create another new one. I may need to update it. Sorry for the inconvenience. On Tue, 2016-11-22 at 11:46 +0800, Rick Chang wrote: > Signed-off-by: Rick Chang > Signed-off-by: Minghsiu Tsai > --- > MAINTAINERS | 7 +++ > 1 file changed, 7 insertions(+) > > diff --git a/MAINTAINERS b/MAINTAINERS > index 93e9f42..a9e7ee0 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -7818,6 +7818,13 @@ L: net...@vger.kernel.org > S: Maintained > F: drivers/net/ethernet/mediatek/ > > +MEDIATEK JPEG DRIVER > +M: Rick Chang > +M: Minghsiu Tsai > +S: Supported > +F: drivers/media/platform/mtk-jpeg/ > +F: Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt > + > MEDIATEK MEDIA DRIVER > M: Tiffany Lin > M: Andrew-CT Chen -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
On Wed, 2016-11-23 at 09:54 +0800, Rick Chang wrote: > Hi Hans, > > On Tue, 2016-11-22 at 13:43 +0100, Hans Verkuil wrote: > > On 22/11/16 04:21, Rick Chang wrote: > > > Hi Hans, > > > > > > On Mon, 2016-11-21 at 15:51 +0100, Hans Verkuil wrote: > > >> On 17/11/16 04:38, Rick Chang wrote: > > >>> Signed-off-by: Rick Chang > > >>> Signed-off-by: Minghsiu Tsai > > >>> --- > > >>> This patch depends on: > > >>> CCF "Add clock support for Mediatek MT2701"[1] > > >>> iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] > > >>> > > >>> [1] > > >>> http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html > > >>> [2] https://patchwork.kernel.org/patch/9164013/ > > >> > > >> I assume that 1 & 2 will appear in 4.10? So this patch needs to go in > > >> after the > > >> other two are merged in 4.10? > > >> > > >> Regards, > > >> > > >> Hans > > > > > > [1] will appear in 4.10, but [2] will appear latter than 4.10.So this > > > patch needs to go in after [1] & [2] will be merged in 4.11. > > > > So what should I do? Merge the driver for 4.11 and wait with this patch > > until [2] is merged in 4.11? Does that sound reasonable? > > > > Regards, > > > > Hans > > What do you think about this? You merge the driver first and I send this > patch again after [1] & [2] is merged. BTW, to prevent merging conflict, the dtsi should be merged by mediatek SoC maintainer, Matthias.I think we can only take care on the driver part at this moment. -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Hi Hans, On Tue, 2016-11-22 at 13:43 +0100, Hans Verkuil wrote: > On 22/11/16 04:21, Rick Chang wrote: > > Hi Hans, > > > > On Mon, 2016-11-21 at 15:51 +0100, Hans Verkuil wrote: > >> On 17/11/16 04:38, Rick Chang wrote: > >>> Signed-off-by: Rick Chang > >>> Signed-off-by: Minghsiu Tsai > >>> --- > >>> This patch depends on: > >>> CCF "Add clock support for Mediatek MT2701"[1] > >>> iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] > >>> > >>> [1] > >>> http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html > >>> [2] https://patchwork.kernel.org/patch/9164013/ > >> > >> I assume that 1 & 2 will appear in 4.10? So this patch needs to go in > >> after the > >> other two are merged in 4.10? > >> > >> Regards, > >> > >>Hans > > > > [1] will appear in 4.10, but [2] will appear latter than 4.10.So this > > patch needs to go in after [1] & [2] will be merged in 4.11. > > So what should I do? Merge the driver for 4.11 and wait with this patch > until [2] is merged in 4.11? Does that sound reasonable? > > Regards, > > Hans What do you think about this? You merge the driver first and I send this patch again after [1] & [2] is merged. -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v7 4/4] vcodec: mediatek: Add Maintainers entry for Mediatek JPEG driver
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- MAINTAINERS | 7 +++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 93e9f42..a9e7ee0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7818,6 +7818,13 @@ L: net...@vger.kernel.org S: Maintained F: drivers/net/ethernet/mediatek/ +MEDIATEK JPEG DRIVER +M: Rick Chang +M: Minghsiu Tsai +S: Supported +F: drivers/media/platform/mtk-jpeg/ +F: Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt + MEDIATEK MEDIA DRIVER M: Tiffany Lin M: Andrew-CT Chen -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v7 3/4] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..4dd5048 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v7 2/4] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1302 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 139 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2211 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..63a8994 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1302 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .fourcc = V4L2_PIX_FMT_YUV422M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 4, 4}, + .colplanes = 3, + .h_align= 5, + .v_align
[PATCH v7 0/4] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG decoder for decoding JPEG image and Motion JPEG bitstream. changes since v6: - fix kbuild test fail - Add patch for MAINTAINERS changes since v5: - remove redundant name from struct mtk_jpeg_fmt - Set state of all buffers to VB2_BUF_STATE_QUEUED if fail in start streaming - Remove VB2_USERPTR - Add check for buffer index changes since v4: - Change file name of binding documentation - Revise DT binding documentation - Revise compatible string changes since v3: - Revise DT binding documentation - Revise compatible string changes since v2: - Revise DT binding documentation changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (4): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder vcodec: mediatek: Add Maintainers entry for Mediatek JPEG driver .../bindings/media/mediatek-jpeg-decoder.txt | 37 + MAINTAINERS|7 +
[PATCH v7 1/4] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai Acked-by: Rob Herring --- .../bindings/media/mediatek-jpeg-decoder.txt | 37 ++ 1 file changed, 37 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt new file mode 100644 index 000..3813947 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt @@ -0,0 +1,37 @@ +* Mediatek JPEG Decoder + +Mediatek JPEG Decoder is the JPEG decode hardware present in Mediatek SoCs + +Required properties: +- compatible : must be one of the following string: + "mediatek,mt8173-jpgdec" + "mediatek,mt2701-jpgdec" +- reg : physical base address of the jpeg decoder registers and length of + memory mapped region. +- interrupts : interrupt number to the interrupt controller. +- clocks: device clocks, see + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. +- clock-names: must contain "jpgdec-smi" and "jpgdec". +- power-domains: a phandle to the power domain, see + Documentation/devicetree/bindings/power/power_domain.txt for details. +- mediatek,larb: must contain the local arbiters in the current Socs, see + Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt + for details. +- iommus: should point to the respective IOMMU block with master port as + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + for details. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Hi Hans, On Mon, 2016-11-21 at 15:51 +0100, Hans Verkuil wrote: > On 17/11/16 04:38, Rick Chang wrote: > > Signed-off-by: Rick Chang > > Signed-off-by: Minghsiu Tsai > > --- > > This patch depends on: > > CCF "Add clock support for Mediatek MT2701"[1] > > iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] > > > > [1] > > http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html > > [2] https://patchwork.kernel.org/patch/9164013/ > > I assume that 1 & 2 will appear in 4.10? So this patch needs to go in > after the > other two are merged in 4.10? > > Regards, > > Hans [1] will appear in 4.10, but [2] will appear latter than 4.10.So this patch needs to go in after [1] & [2] will be merged in 4.11. > > --- > > arch/arm/boot/dts/mt2701.dtsi | 14 ++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi > > index 8f13c70..4dd5048 100644 > > --- a/arch/arm/boot/dts/mt2701.dtsi > > +++ b/arch/arm/boot/dts/mt2701.dtsi > > @@ -298,6 +298,20 @@ > > power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; > > }; > > > > + jpegdec: jpegdec@15004000 { > > + compatible = "mediatek,mt2701-jpgdec"; > > + reg = <0 0x15004000 0 0x1000>; > > + interrupts = ; > > + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, > > + <&imgsys CLK_IMG_JPGDEC>; > > + clock-names = "jpgdec-smi", > > + "jpgdec"; > > + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; > > + mediatek,larb = <&larb2>; > > + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, > > +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; > > + }; > > + > > vdecsys: syscon@1600 { > > compatible = "mediatek,mt2701-vdecsys", "syscon"; > > reg = <0 0x1600 0 0x1000>; > > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v6 0/3] Add Mediatek JPEG Decoder
Hi Hans, Ok, I will include it in patch v7. On Mon, 2016-11-21 at 15:53 +0100, Hans Verkuil wrote: > I'm missing a MAINTAINERS patch for this new driver. > > Can you post a patch for that? > > It's the only thing preventing this from being merged. > > Regards, > > Hans > > On 17/11/16 04:38, Rick Chang wrote: > > This series of patches provide a v4l2 driver to control Mediatek JPEG > > decoder > > for decoding JPEG image and Motion JPEG bitstream. > > > > changes since v5: > > - remove redundant name from struct mtk_jpeg_fmt > > - Set state of all buffers to VB2_BUF_STATE_QUEUED if fail in start > > streaming > > - Remove VB2_USERPTR > > - Add check for buffer index > > > > changes since v4: > > - Change file name of binding documentation > > - Revise DT binding documentation > > - Revise compatible string > > > > changes since v3: > > - Revise DT binding documentation > > - Revise compatible string > > > > changes since v2: > > - Revise DT binding documentation > > > > changes since v1: > > - Rebase for v4.9-rc1. > > - Update Compliance test version and result > > - Remove redundant path in Makefile > > - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP > > - Fix warnings from patch check and smatch check > > > > * Dependency > > The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: > > CCF "Add clock support for Mediatek MT2701"[1] > > iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] > > > > [1] > > http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html > > [2] https://patchwork.kernel.org/patch/9164013/ > > > > * Compliance test > > v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a > > > > Driver Info: > > Driver name : mtk-jpeg decode > > Card type : mtk-jpeg decoder > > Bus info : platform:15004000.jpegdec > > Driver version: 4.9.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 > > > > Compliance test for device /dev/video3 (not using libv4l2): > > > > Required ioctls: > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second video 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > >
[PATCH v6 0/3] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG decoder for decoding JPEG image and Motion JPEG bitstream. changes since v5: - remove redundant name from struct mtk_jpeg_fmt - Set state of all buffers to VB2_BUF_STATE_QUEUED if fail in start streaming - Remove VB2_USERPTR - Add check for buffer index changes since v4: - Change file name of binding documentation - Revise DT binding documentation - Revise compatible string changes since v3: - Revise DT binding documentation - Revise compatible string changes since v2: - Revise DT binding documentation changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (3): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder .../bindings/media/mediatek-jpeg-decoder.txt | 37 + arch/arm/boot/dts/mt2701.dtsi | 14 + drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile|2 + drivers/me
[PATCH v6 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..4dd5048 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v6 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai Acked-by: Rob Herring --- .../bindings/media/mediatek-jpeg-decoder.txt | 37 ++ 1 file changed, 37 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt new file mode 100644 index 000..3813947 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt @@ -0,0 +1,37 @@ +* Mediatek JPEG Decoder + +Mediatek JPEG Decoder is the JPEG decode hardware present in Mediatek SoCs + +Required properties: +- compatible : must be one of the following string: + "mediatek,mt8173-jpgdec" + "mediatek,mt2701-jpgdec" +- reg : physical base address of the jpeg decoder registers and length of + memory mapped region. +- interrupts : interrupt number to the interrupt controller. +- clocks: device clocks, see + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. +- clock-names: must contain "jpgdec-smi" and "jpgdec". +- power-domains: a phandle to the power domain, see + Documentation/devicetree/bindings/power/power_domain.txt for details. +- mediatek,larb: must contain the local arbiters in the current Socs, see + Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt + for details. +- iommus: should point to the respective IOMMU block with master port as + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + for details. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v6 2/3] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1303 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 139 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2212 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..1101da8 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1303 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .fourcc = V4L2_PIX_FMT_YUV422M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 4, 4}, + .colplanes = 3, + .h_ali
Re: [PATCH v5 2/3] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Hi Hans, Thank you for your review. I will fix those problems in patch v6. On Fri, 2016-11-11 at 16:10 +0100, Hans Verkuil wrote: > A quick review: > > On 11/08/2016 07:34 AM, Rick Chang wrote: > > Add v4l2 driver for Mediatek JPEG Decoder > > > > Signed-off-by: Rick Chang > > Signed-off-by: Minghsiu Tsai > > --- > > drivers/media/platform/Kconfig | 15 + > > drivers/media/platform/Makefile |2 + > > drivers/media/platform/mtk-jpeg/Makefile |2 + > > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1275 > > ++ > > drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 141 +++ > > drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ > > drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ > > drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ > > drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + > > drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + > > 10 files changed, 2186 insertions(+) > > create mode 100644 drivers/media/platform/mtk-jpeg/Makefile > > create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > > create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h > > create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c > > create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h > > create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c > > create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h > > create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h > > > > diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig > > index 754edbf1..96c9887 100644 > > --- a/drivers/media/platform/Kconfig > > +++ b/drivers/media/platform/Kconfig > > @@ -162,6 +162,21 @@ config VIDEO_CODA > >Coda is a range of video codec IPs that supports > >H.264, MPEG-4, and other video formats. > > > > +config VIDEO_MEDIATEK_JPEG > > + tristate "Mediatek JPEG Codec driver" > > + depends on MTK_IOMMU_V1 || COMPILE_TEST > > + depends on VIDEO_DEV && VIDEO_V4L2 > > + depends on ARCH_MEDIATEK || COMPILE_TEST > > + depends on HAS_DMA > > + select VIDEOBUF2_DMA_CONTIG > > + select V4L2_MEM2MEM_DEV > > + ---help--- > > + Mediatek jpeg codec driver provides HW capability to decode > > + JPEG format > > + > > + To compile this driver as a module, choose M here: the > > + module will be called mtk-jpeg > > + > > config VIDEO_MEDIATEK_VPU > > tristate "Mediatek Video Processor Unit" > > depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA > > diff --git a/drivers/media/platform/Makefile > > b/drivers/media/platform/Makefile > > index f842933..cf701e3 100644 > > --- a/drivers/media/platform/Makefile > > +++ b/drivers/media/platform/Makefile > > @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ > > obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ > > > > obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ > > + > > +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ > > diff --git a/drivers/media/platform/mtk-jpeg/Makefile > > b/drivers/media/platform/mtk-jpeg/Makefile > > new file mode 100644 > > index 000..b2e6069 > > --- /dev/null > > +++ b/drivers/media/platform/mtk-jpeg/Makefile > > @@ -0,0 +1,2 @@ > > +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o > > +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o > > diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > > b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > > new file mode 100644 > > index 000..33ddf79 > > --- /dev/null > > +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c > > @@ -0,0 +1,1275 @@ > > +/* > > + * Copyright (c) 2016 MediaTek Inc. > > + * Author: Ming Hsiu Tsai > > + * Rick Chang > > + * > > + * This program is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License version 2 as > > + * published by the Free Software Foundation. > > + * > > + * This program is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + */ > > + > >
[PATCH v5 0/3] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG decoder for decoding JPEG image and Motion JPEG bitstream. changes since v4: - Change file name of binding documentation - Revise DT binding documentation - Revise compatible string changes since v3: - Revise DT binding documentation - Revise compatible string changes since v2: - Revise DT binding documentation changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (3): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder .../bindings/media/mediatek-jpeg-decoder.txt | 37 + arch/arm/boot/dts/mt2701.dtsi | 14 + drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile|2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1275 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h| 141 +++ d
[PATCH v5 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..4dd5048 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v5 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- .../bindings/media/mediatek-jpeg-decoder.txt | 37 ++ 1 file changed, 37 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt new file mode 100644 index 000..3813947 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt @@ -0,0 +1,37 @@ +* Mediatek JPEG Decoder + +Mediatek JPEG Decoder is the JPEG decode hardware present in Mediatek SoCs + +Required properties: +- compatible : must be one of the following string: + "mediatek,mt8173-jpgdec" + "mediatek,mt2701-jpgdec" +- reg : physical base address of the jpeg decoder registers and length of + memory mapped region. +- interrupts : interrupt number to the interrupt controller. +- clocks: device clocks, see + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. +- clock-names: must contain "jpgdec-smi" and "jpgdec". +- power-domains: a phandle to the power domain, see + Documentation/devicetree/bindings/power/power_domain.txt for details. +- mediatek,larb: must contain the local arbiters in the current Socs, see + Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt + for details. +- iommus: should point to the respective IOMMU block with master port as + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + for details. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v5 2/3] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1275 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2186 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..33ddf79 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1275 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .name = "JPEG JFIF", + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .name = "YUV 4:2:0 non-contiguous 3-planar, Y/Cb/Cr", + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .name = "YUV 4:2:2 non-contiguous 3-planar, Y/Cb/Cr&q
Re: [PATCH v4 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Dear Matthias, Thank you for your review.I will include your advice in patch v5. On Mon, 2016-11-07 at 18:00 +0100, Matthias Brugger wrote: > > On 07/11/16 07:57, Rick Chang wrote: > > Add a DT binding documentation for Mediatek JPEG Decoder of > > MT2701 SoC. > > > > Signed-off-by: Rick Chang > > Signed-off-by: Minghsiu Tsai > > --- > > .../bindings/media/mediatek-jpeg-codec.txt | 35 > > ++ > > 1 file changed, 35 insertions(+) > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > > > diff --git > > a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > new file mode 100644 > > index 000..c7dbcc2 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > @@ -0,0 +1,35 @@ > > +* Mediatek JPEG Decoder > > + > > +Mediatek JPEG Decoder is the JPEG decode hardware present in Mediatek SoCs > > + > > +Required properties: > > +- compatible : "mediatek,jpgdec" > > Is this block in all arm SoCs from Mediatek? JPEG Decoder hardware is in most of Mediatek SoCs, but I can't guarantee that each of them has identical IP. > If not, then I would prefer to use "mediatek,mt-jpgdec" > where stands for the oldest model which has this block. > > In parallel to that the dts should have this compatible plus the one for > mt2701, for example: > compatible = "mediatek,mt2701-uart", "mediatek,mt6577-uart" The oldest model that I can make sure this patch series work on is mt8173.I will add it to the compatible string. > Thanks, > Matthias -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v4 0/3] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG decoder for decoding JPEG image and Motion JPEG bitstream. changes since v3: - Revise DT binding documentation - Revise compatible string changes since v2: - Revise DT binding documentation changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (3): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder .../bindings/media/mediatek-jpeg-codec.txt | 35 + arch/arm/boot/dts/mt2701.dtsi | 14 + drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile|2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1271 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h| 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c | 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h | 91 ++ d
[PATCH v4 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- .../bindings/media/mediatek-jpeg-codec.txt | 35 ++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt new file mode 100644 index 000..c7dbcc2 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt @@ -0,0 +1,35 @@ +* Mediatek JPEG Decoder + +Mediatek JPEG Decoder is the JPEG decode hardware present in Mediatek SoCs + +Required properties: +- compatible : "mediatek,jpgdec" +- reg : physical base address of the jpeg decoder registers and length of + memory mapped region. +- interrupts : interrupt number to the interrupt controller. +- clocks: device clocks, see + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. +- clock-names: must contain "jpgdec-smi" and "jpgdec". +- power-domains: a phandle to the power domain, see + Documentation/devicetree/bindings/power/power_domain.txt for details. +- mediatek,larb: must contain the local arbiters in the current Socs, see + Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt + for details. +- iommus: should point to the respective IOMMU block with master port as + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + for details. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v4 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..a929df2 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v4 2/3] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1271 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2182 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..808f175 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1271 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .name = "JPEG JFIF", + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .name = "YUV 4:2:0 non-contiguous 3-planar, Y/Cb/Cr", + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .name = "YUV 4:2:2 non-contiguous 3-planar, Y/Cb/Cr&q
Re: [PATCH v3 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Hi Laurent, Thanks for your prompt reply. I will fix them in patch v4. On Sat, 2016-11-05 at 01:32 +0200, Laurent Pinchart wrote: > Hi Rick, > > Thank you for the patch. > > On Friday 04 Nov 2016 13:51:18 Rick Chang wrote: > > Add a DT binding documentation for Mediatek JPEG Decoder of > > MT2701 SoC. > > This version looks much better ! I'm glad to hear that! > > Signed-off-by: Rick Chang > > Signed-off-by: Minghsiu Tsai > > --- > > .../bindings/media/mediatek-jpeg-codec.txt | 35 +++ > > 1 file changed, 35 insertions(+) > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > > > diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt new file > > mode 100644 > > index 000..b2b19ed > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > @@ -0,0 +1,35 @@ > > +* Mediatek JPEG Decoder > > + > > +Mediatek JPEG Decoder is the JPEG decode hw present in Mediatek SoCs > > Nitpicking, I'd write hardware instead of hw. OK. > > +Required properties: > > +- compatible : "mediatek,mt2701-jpgdec" > > As commented on the previous version, is this JPEG decoder unique to the > MT2701, or is it also used (possibly with different interrupts, clocks, ...) > in other SoCs ? In the latter case, if the JPEG decoder IP core is identical > in multiple SoCs, a more generic compatible string would be better. I understand your question. The essence of this patch series targeting is the JPEG decoder IP which is integrated in mt2701.I will check it with our hardware engineer and making a more generic compatible string if the IP is used in multiple SoCs. > > +- reg : physical base address of the jpeg decoder registers and length of > > + memory mapped region. > > +- interrupts : interrupt number to the interrupt controller. > > +- clocks: device clocks, see > > + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. > > +- clock-names: must contain "jpgdec-smi" and "jpgdec". > > +- power-domains: a phandle to the power domain, see > > + Documentation/devicetree/bindings/power/power_domain.txt for details. > > +- mediatek,larb: must contain the local arbiters in the current Socs, see > > + > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > + for details. > > +- iommus: should point to the respective IOMMU block with master port as > > + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt > > + for details. > > + > > +Example: > > + jpegdec: jpegdec@15004000 { > > + compatible = "mediatek,mt2701-jpgdec"; > > + reg = <0 0x15004000 0 0x1000>; > > + interrupts = ; > > + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, > > + <&imgsys CLK_IMG_JPGDEC>; > > + clock-names = "jpgdec-smi", > > + "jpgdec"; > > + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; > > + mediatek,larb = <&larb2>; > > + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, > > +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; > > + }; > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v3 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..4dd5048 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v3 0/3] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG decoder for decoding JPEG image and Motion JPEG bitstream. changes since v2: - Revise DT binding documentation changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (3): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder .../bindings/media/mediatek-jpeg-codec.txt | 35 + arch/arm/boot/dts/mt2701.dtsi | 14 + drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile|2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1271 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h| 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c | 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h | 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/plat
[PATCH v3 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- .../bindings/media/mediatek-jpeg-codec.txt | 35 ++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt new file mode 100644 index 000..b2b19ed --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt @@ -0,0 +1,35 @@ +* Mediatek JPEG Decoder + +Mediatek JPEG Decoder is the JPEG decode hw present in Mediatek SoCs + +Required properties: +- compatible : "mediatek,mt2701-jpgdec" +- reg : physical base address of the jpeg decoder registers and length of + memory mapped region. +- interrupts : interrupt number to the interrupt controller. +- clocks: device clocks, see + Documentation/devicetree/bindings/clock/clock-bindings.txt for details. +- clock-names: must contain "jpgdec-smi" and "jpgdec". +- power-domains: a phandle to the power domain, see + Documentation/devicetree/bindings/power/power_domain.txt for details. +- mediatek,larb: must contain the local arbiters in the current Socs, see + Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt + for details. +- iommus: should point to the respective IOMMU block with master port as + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + for details. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v3 2/3] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1271 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2182 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..64a2044 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1271 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .name = "JPEG JFIF", + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .name = "YUV 4:2:0 non-contiguous 3-planar, Y/Cb/Cr", + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .name = "YUV 4:2:2 non-contiguous 3-planar, Y/Cb/Cr&q
Re: [PATCH v2 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Hi Laurent, Thank you for the comments.I will fix them in the next patch (v3). On Thu, 2016-11-03 at 20:34 +0200, Laurent Pinchart wrote: > Hi Rick, > > A few more comments. > > On Thursday 03 Nov 2016 20:33:12 Laurent Pinchart wrote: > > On Monday 31 Oct 2016 15:16:55 Rick Chang wrote: > > > Add a DT binding documentation for Mediatek JPEG Decoder of > > > MT2701 SoC. > > > > > > Signed-off-by: Rick Chang > > > Signed-off-by: Minghsiu Tsai > > > --- > > > > > > .../bindings/media/mediatek-jpeg-codec.txt | 35 > > > 1 file changed, 35 insertions(+) > > > create mode 100644 > > > Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > > > > > diff --git > > > a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > > b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt new > > > file mode 100644 > > > index 000..514e656 > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > > @@ -0,0 +1,35 @@ > > > +* Mediatek JPEG Codec > > > > Is it a codec or a decoder only ? > > > > > +Mediatek JPEG Codec device driver is a v4l2 driver which can decode > > > +JPEG-encoded video frames. > > > > DT bindings should not reference drivers, they are OS-agnostic. > > > > > +Required properties: > > > + - compatible : "mediatek,mt2701-jpgdec" > > Is the JPEG decoder found in MT2701 only, or in other Mediatek SoCs as well ? Yes, the JPEG decoder is found in other Mediatek SoCs. However, the JPEG decoder HW in different SoCs have different register base, interrupt, power-domain and iommu setting. This patch series is only applicable in MT2701. > > > + - reg : Physical base address of the jpeg codec registers and length of > > > +memory mapped region. > > > + - interrupts : interrupt number to the cpu. > > > > That's actually not correct, the interrupt number is local to the interrupt > > controller, not to the CPU. > > > > > + - clocks : clock name from clock manager > > > > The clocks property doesn't contain a name. > > Furthermore you should document which clocks need to be specified here. There > are two of them in the example below, the documentation should explain this > clearly. OK. > > Until we provide standardized descriptions for those properties, I recommend > > copying the compatible, reg, interrupts, clocks, clock-names, power-domains > > and iommus properties descriptions from good DT bindings. Which DT bindings > > are good source of inspiration here is left as an exercise for the reader > > I'm afraid :-( > > > > > + - clock-names: the clocks of the jpeg codec H/W > > > + - power-domains : a phandle to the power domain. > > > + - larb : must contain the larbes of current platform > > > > Shouldn't this be mediatek,larb ? And what is a larb ? > > > > > + - iommus : Mediatek IOMMU H/W has designed the fixed associations with > > > +the multimedia H/W. and there is only one multimedia iommu > > > domain. > > > +"iommus = <&iommu portid>" the "portid" is from > > > +dt-bindings\iommu\mt2701-iommu-port.h, it means that this portid > > > will > > > +enable iommu. The portid default is disable iommu if "<&iommu> > > > > portid>" > > > > > +don't be added. > > > > There are two iommus instances in your example below, this should be > > documented. This description is not very clear I'm afraid. > > > > > + > > > +Example: > > > + jpegdec: jpegdec@15004000 { > > > + compatible = "mediatek,mt2701-jpgdec"; > > > + reg = <0 0x15004000 0 0x1000>; > > > + interrupts = ; > > > + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, > > > + <&imgsys CLK_IMG_JPGDEC>; > > > + clock-names = "jpgdec-smi", > > > + "jpgdec"; > > > + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; > > > + mediatek,larb = <&larb2>; > > > + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, > > > + <&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; > > > + }; > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Hi Laurent, Thanks for your patient review.I will fix them in the next patch (v3). On Thu, 2016-11-03 at 20:33 +0200, Laurent Pinchart wrote: > Hi Rick, > > Thank you for the patch. > > On Monday 31 Oct 2016 15:16:55 Rick Chang wrote: > > Add a DT binding documentation for Mediatek JPEG Decoder of > > MT2701 SoC. > > > > Signed-off-by: Rick Chang > > Signed-off-by: Minghsiu Tsai > > --- > > .../bindings/media/mediatek-jpeg-codec.txt | 35 +++ > > 1 file changed, 35 insertions(+) > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > > > diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt new file > > mode 100644 > > index 000..514e656 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt > > @@ -0,0 +1,35 @@ > > +* Mediatek JPEG Codec > > Is it a codec or a decoder only ? It's a decoder precisely. > > +Mediatek JPEG Codec device driver is a v4l2 driver which can decode > > +JPEG-encoded video frames. > > DT bindings should not reference drivers, they are OS-agnostic. OK. > > +Required properties: > > + - compatible : "mediatek,mt2701-jpgdec" > > + - reg : Physical base address of the jpeg codec registers and length of > > +memory mapped region. > > + - interrupts : interrupt number to the cpu. > > That's actually not correct, the interrupt number is local to the interrupt > controller, not to the CPU. OK. > > + - clocks : clock name from clock manager > > The clocks property doesn't contain a name. OK. > Until we provide standardized descriptions for those properties, I recommend > copying the compatible, reg, interrupts, clocks, clock-names, power-domains > and iommus properties descriptions from good DT bindings. Which DT bindings > are good source of inspiration here is left as an exercise for the reader I'm > afraid :-( Thank you for the advice. I will revise the descriptions with the statements in existed upstream documents. > > + - clock-names: the clocks of the jpeg codec H/W > > + - power-domains : a phandle to the power domain. > > + - larb : must contain the larbes of current platform > > Shouldn't this be mediatek,larb ? And what is a larb ? It should be mediatek,larb. > > + - iommus : Mediatek IOMMU H/W has designed the fixed associations with > > +the multimedia H/W. and there is only one multimedia iommu domain. > > +"iommus = <&iommu portid>" the "portid" is from > > +dt-bindings\iommu\mt2701-iommu-port.h, it means that this portid > > will > > +enable iommu. The portid default is disable iommu if "<&iommu> > portid>" > > +don't be added. > > There are two iommus instances in your example below, this should be > documented. This description is not very clear I'm afraid. OK. > > + > > +Example: > > + jpegdec: jpegdec@15004000 { > > + compatible = "mediatek,mt2701-jpgdec"; > > + reg = <0 0x15004000 0 0x1000>; > > + interrupts = ; > > + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, > > + <&imgsys CLK_IMG_JPGDEC>; > > + clock-names = "jpgdec-smi", > > + "jpgdec"; > > + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; > > + mediatek,larb = <&larb2>; > > + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, > > +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; > > + }; > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- .../bindings/media/mediatek-jpeg-codec.txt | 35 ++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt new file mode 100644 index 000..514e656 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt @@ -0,0 +1,35 @@ +* Mediatek JPEG Codec + +Mediatek JPEG Codec device driver is a v4l2 driver which can decode +JPEG-encoded video frames. + +Required properties: + - compatible : "mediatek,mt2701-jpgdec" + - reg : Physical base address of the jpeg codec registers and length of +memory mapped region. + - interrupts : interrupt number to the cpu. + - clocks : clock name from clock manager + - clock-names: the clocks of the jpeg codec H/W + - power-domains : a phandle to the power domain. + - larb : must contain the larbes of current platform + - iommus : Mediatek IOMMU H/W has designed the fixed associations with +the multimedia H/W. and there is only one multimedia iommu domain. +"iommus = <&iommu portid>" the "portid" is from +dt-bindings\iommu\mt2701-iommu-port.h, it means that this portid will +enable iommu. The portid default is disable iommu if "<&iommu portid>" +don't be added. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 8f13c70..4dd5048 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -298,6 +298,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2 2/3] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1271 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2182 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 754edbf1..96c9887 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index f842933..cf701e3 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -68,3 +68,5 @@ obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ obj-$(CONFIG_VIDEO_MEDIATEK_MDP) += mtk-mdp/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..b2e6069 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,2 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..64a2044 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1271 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .name = "JPEG JFIF", + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .name = "YUV 4:2:0 non-contiguous 3-planar, Y/Cb/Cr", + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { + .name = "YUV 4:2:2 non-contiguous 3-planar, Y/Cb/Cr&q
[PATCH v2 0/3] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG hw for decoding JPEG image and Motion JPEG bitstream. changes since v1: - Rebase for v4.9-rc1. - Update Compliance test version and result - Remove redundant path in Makefile - Fix potential build error without CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP - Fix warnings from patch check and smatch check * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "Add clock support for Mediatek MT2701"[1] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[2] [1] http://lists.infradead.org/pipermail/linux-mediatek/2016-October/007271.html [2] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : 4ad7174b908a36c4f315e3fe2efa7e2f8a6f375a Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.9.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (3): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder .../bindings/media/mediatek-jpeg-codec.txt | 35 + arch/arm/boot/dts/mt2701.dtsi | 14 + drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile|2 + drivers/media/platform/mtk-jpeg/Makefile |2 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1271 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h| 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c | 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h | 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/pl
[RESEND PATCH 1/3] dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder
Add a DT binding documentation for Mediatek JPEG Decoder of MT2701 SoC. Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- .../bindings/media/mediatek-jpeg-codec.txt | 35 ++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt new file mode 100644 index 000..514e656 --- /dev/null +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-codec.txt @@ -0,0 +1,35 @@ +* Mediatek JPEG Codec + +Mediatek JPEG Codec device driver is a v4l2 driver which can decode +JPEG-encoded video frames. + +Required properties: + - compatible : "mediatek,mt2701-jpgdec" + - reg : Physical base address of the jpeg codec registers and length of +memory mapped region. + - interrupts : interrupt number to the cpu. + - clocks : clock name from clock manager + - clock-names: the clocks of the jpeg codec H/W + - power-domains : a phandle to the power domain. + - larb : must contain the larbes of current platform + - iommus : Mediatek IOMMU H/W has designed the fixed associations with +the multimedia H/W. and there is only one multimedia iommu domain. +"iommus = <&iommu portid>" the "portid" is from +dt-bindings\iommu\mt2701-iommu-port.h, it means that this portid will +enable iommu. The portid default is disable iommu if "<&iommu portid>" +don't be added. + +Example: + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[RESEND PATCH 2/3] vcodec: mediatek: Add Mediatek JPEG Decoder Driver
Add v4l2 driver for Mediatek JPEG Decoder Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile |2 + drivers/media/platform/mtk-jpeg/Makefile |4 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1271 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h | 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c| 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h| 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 10 files changed, 2184 insertions(+) create mode 100644 drivers/media/platform/mtk-jpeg/Makefile create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h create mode 100644 drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index f98ed3f..4769a56 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -162,6 +162,21 @@ config VIDEO_CODA Coda is a range of video codec IPs that supports H.264, MPEG-4, and other video formats. +config VIDEO_MEDIATEK_JPEG + tristate "Mediatek JPEG Codec driver" + depends on MTK_IOMMU_V1 || COMPILE_TEST + depends on VIDEO_DEV && VIDEO_V4L2 + depends on ARCH_MEDIATEK || COMPILE_TEST + depends on HAS_DMA + select VIDEOBUF2_DMA_CONTIG + select V4L2_MEM2MEM_DEV + ---help--- + Mediatek jpeg codec driver provides HW capability to decode + JPEG format + + To compile this driver as a module, choose M here: the + module will be called mtk-jpeg + config VIDEO_MEDIATEK_VPU tristate "Mediatek Video Processor Unit" depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile index 40b18d1..351d979 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -66,3 +66,5 @@ ccflags-y += -I$(srctree)/drivers/media/i2c obj-$(CONFIG_VIDEO_MEDIATEK_VPU) += mtk-vpu/ obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC)+= mtk-vcodec/ + +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk-jpeg/ diff --git a/drivers/media/platform/mtk-jpeg/Makefile b/drivers/media/platform/mtk-jpeg/Makefile new file mode 100644 index 000..59528fa --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/Makefile @@ -0,0 +1,4 @@ +mtk_jpeg-objs := mtk_jpeg_core.o mtk_jpeg_hw.o mtk_jpeg_parse.o +obj-$(CONFIG_VIDEO_MEDIATEK_JPEG) += mtk_jpeg.o + +ccflags-y += -I$(srctree)/drivers/media/platform/mtk-videobuf diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c new file mode 100644 index 000..3804a48 --- /dev/null +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -0,0 +1,1271 @@ +/* + * Copyright (c) 2016 MediaTek Inc. + * Author: Ming Hsiu Tsai + * Rick Chang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mtk_jpeg_hw.h" +#include "mtk_jpeg_core.h" +#include "mtk_jpeg_parse.h" + +static struct mtk_jpeg_fmt mtk_jpeg_formats[] = { + { + .name = "JPEG JFIF", + .fourcc = V4L2_PIX_FMT_JPEG, + .colplanes = 1, + .flags = MTK_JPEG_FMT_FLAG_DEC_OUTPUT, + }, + { + .name = "YUV 4:2:0 non-contiguous 3-planar, Y/Cb/Cr", + .fourcc = V4L2_PIX_FMT_YUV420M, + .h_sample = {4, 2, 2}, + .v_sample = {4, 2, 2}, + .colplanes = 3, + .h_align= 5, + .v_align= 4, + .flags = MTK_JPEG_FMT_FLAG_DEC_CAPTURE, + }, + { +
[RESEND PATCH 3/3] arm: dts: mt2701: Add node for Mediatek JPEG Decoder
Signed-off-by: Rick Chang Signed-off-by: Minghsiu Tsai --- This patch depends on: CCF "arm: dts: mt2701: Add clock controller device nodes"[1] power domain patch "Mediatek MT2701 SCPSYS power domain support v7"[2] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[3] [1] https://patchwork.kernel.org/patch/9109081 [2] http://lists.infradead.org/pipermail/linux-mediatek/2016-May/005429.html [3] https://patchwork.kernel.org/patch/9164013/ --- arch/arm/boot/dts/mt2701.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index d550d36..a9838bd 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -284,6 +284,20 @@ power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; }; + jpegdec: jpegdec@15004000 { + compatible = "mediatek,mt2701-jpgdec"; + reg = <0 0x15004000 0 0x1000>; + interrupts = ; + clocks = <&imgsys CLK_IMG_JPGDEC_SMI>, + <&imgsys CLK_IMG_JPGDEC>; + clock-names = "jpgdec-smi", + "jpgdec"; + power-domains = <&scpsys MT2701_POWER_DOMAIN_ISP>; + mediatek,larb = <&larb2>; + iommus = <&iommu MT2701_M4U_PORT_JPGDEC_WDMA>, +<&iommu MT2701_M4U_PORT_JPGDEC_BSDMA>; + }; + vdecsys: syscon@1600 { compatible = "mediatek,mt2701-vdecsys", "syscon"; reg = <0 0x1600 0 0x1000>; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[RESEND PATCH 0/3] Add Mediatek JPEG Decoder
This series of patches provide a v4l2 driver to control Mediatek JPEG hw for decoding JPEG image and Motion JPEG bitstream. * Dependency The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: CCF "arm: dts: mt2701: Add clock controller device nodes"[1] power domain patch "Mediatek MT2701 SCPSYS power domain support v7"[2] iommu and smi "Add the dtsi node of iommu and smi for mt2701"[3] [1] https://patchwork.kernel.org/patch/9109081 [2] http://lists.infradead.org/pipermail/linux-mediatek/2016-May/005429.html [3] https://patchwork.kernel.org/patch/9164013/ * Compliance test v4l2-compliance SHA : abc1453dfe89f244dccd3460d8e1a2e3091cbadb Driver Info: Driver name : mtk-jpeg decode Card type : mtk-jpeg decoder Bus info : platform:15004000.jpegdec Driver version: 4.8.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 Compliance test for device /dev/video3 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video 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 (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 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 test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Rick Chang (3): dt-bindings: mediatek: Add a binding for Mediatek JPEG Decoder vcodec: mediatek: Add Mediatek JPEG Decoder Driver arm: dts: mt2701: Add node for Mediatek JPEG Decoder .../bindings/media/mediatek-jpeg-codec.txt | 35 + arch/arm/boot/dts/mt2701.dtsi | 14 + drivers/media/platform/Kconfig | 15 + drivers/media/platform/Makefile|2 + drivers/media/platform/mtk-jpeg/Makefile |4 + drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c| 1271 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h| 141 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.c | 417 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_hw.h | 91 ++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.c | 160 +++ drivers/media/platform/mtk-jpeg/mtk_jpeg_parse.h | 25 + drivers/media/platform/mtk-jpeg/mtk_jpeg_reg.h | 58 + 12 files changed, 2233 insertions(+) create mode 100644
Re: [PATCH 0/3] Add Mediatek JPEG Decoder
Hi Hans, I have perceived the problem. I'm afraid there may be some firewalls in my environment.To prevent too much repost mails, I will check my environment with our expert first.Sorry for the inconvenient. Best Regards, Rick On Thu, 2016-09-15 at 09:43 +0200, Hans Verkuil wrote: > Hi Rick, > > I'm not sure why, but for some reason this patch series never made it to > the linux-media mailinglist. > > Can you repost? > > Regards, > > Hans > > On 09/14/2016 08:36 AM, Rick Chang wrote: > > This series of patches provide a v4l2 driver to control Mediatek JPEG hw > > for decoding JPEG image and Motion JPEG bitstream. > > > > * Dependency > > The patch "arm: dts: mt2701: Add node for JPEG decoder" depends on: > > CCF "arm: dts: mt2701: Add clock controller device nodes"[1] > > power domain patch "Mediatek MT2701 SCPSYS power domain support v7"[2] > > iommu and smi "Add the dtsi node of iommu and smi for mt2701"[3] > > > > [1] https://patchwork.kernel.org/patch/9109081 > > [2] http://lists.infradead.org/pipermail/linux-mediatek/2016-May/005429.html > > [3] https://patchwork.kernel.org/patch/9164013/ > > > > * Compliance test > > v4l2-compliance SHA : abc1453dfe89f244dccd3460d8e1a2e3091cbadb > > > > Driver Info: > > Driver name : mtk-jpeg decode > > Card type : mtk-jpeg decoder > > Bus info : platform:15004000.jpegdec > > Driver version: 4.8.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 > > > > Compliance test for device /dev/video3 (not using libv4l2): > > > > Required ioctls: > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second video 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 > > test Scaling