From: Archit Taneja <archit@ti.com> To: <linux-media@vger.kernel.org> Cc: <linux-omap@vger.kernel.org>, <dagriego@biglakesoftware.com>, <dale@farnsworth.org>, <pawel@osciak.com>, <m.szyprowski@samsung.com>, <hverkuil@xs4all.nl>, <laurent.pinchart@ideasonboard.com>, <tomi.valkeinen@ti.com>, Archit Taneja <archit@ti.com> Subject: [PATCH 0/6] v4l: VPE mem to mem driver Date: Fri, 2 Aug 2013 19:33:37 +0530 [thread overview] Message-ID: <1375452223-30524-1-git-send-email-archit@ti.com> (raw) VPE: VPE(Video Processing Engine) is an IP found on DRA7xx, and in some past TI multimedia SoCs which don't have baseport support in the mainline kernel. VPE is a memory to memory block used for performing de-interlacing, scaling and color conversion on input buffers. It's primarily used to de-interlace decoded DVD/Blu Ray video buffers, and provide the content to progressive display or do some other post processing. VPE can also be used for other tasks like fast color space conversion, scaling and chrominance up/down sampling. The scaler in particular is based on a polyphase filter and supports 32 phases and 5/7 taps. VPE's De-interlacer IP: The De-interlacer module performs a combination of spatial and temporal interlacing, it determines the weight-age by keeping a track of the change in motion between fields by maintaining and updating a motion vector buffer in the RAM. The de-interlacer needs the current field and the 2 previous fields (along with the motion vector info)to generate a progressive frame. It operates on YUV422 data. VPDMA: All the DMAs are done through a dedicated DMA IP called VPDMA(Video Port Direct Memory Access). This DMA IP is specialized for transferring video buffers, the input and output data ports of VPDMA are configured via descriptor lists loaded to the VPDMA list manager. VPDMA is also used to load MMRs of the various VPE sub blocks. VPDMA is advanced enough to support multiple clients like a system DMA, however, the way it's integrated in the SoC is such that it can be used only by the VPE IP. The same IP is also used on DRA7x in another block called VIP (full form) used to capture camera sensor content. It's again dedicated to the VIP block, and therefore doesn't have multiple clients. These factors made us consider writing the VPDMA block as a library, providing functions to VPE(and VIP in the future) to add descriptors and start DMA. It might have made sense to make it a dmaengine driver if there were multiple clients using VPDMA. VPE and VPDMA look something like this: ----------- --- | MVin |---------------->| | | | | | | Mvout |<----------------| | --- | | --------- | | | | | f |-->| CHR_US1 |-->| D | | S | ------ | (YUV in) | --------- | E |-->| C |------>|CHR_DS|---- | | --------- | I | | | | ------ | | f - 1 |-->| CHR_US2 |-->| | | | | | | (YUV in) | --------- | | --- | ----- | | | --------- | | -->| CSC |-- | | f - 2 |-->| CHR_US3 |-->| | ----- | | | (YUV in) | --------- | | | | | | --- | | | | | | | (YUV out) |<--------------------------------------------- | | | | | (RGB out) |<------------------------------------------------ ----------- VPDMA VPE f, f - 1, and f - 2 are input ports fetching 3 consecutive fields for the de-interlacer. MVin and MVout are ports which fetch the current motion vector and output the updated motion vector respectively. There are 2 output ports, one for YUV output and the other for RGB output if the color space converter(CSC) is used. The inputs can be YUV packed or semiplanar formats. The chrominance upsampler(CHR_USx) is used when the input format is NV12, the chrominance downsampler(CHR_DS) is used if the the output content needs to be NV12 format. The scaler(SC) can be used to scale the de-interlaced content if needed. This series adds VPE as a mem to mem v4l2 driver, and VPDMA as a helper library. For now, only the de-interlacer is configured, the scaler and color space converter are bypassed. These patches were tested over the patch series which provides initial baseport support for DRA7XX: http://marc.info/?l=linux-omap&m=137518359422774&w=2 Archit Taneja (6): v4l: ti-vpe: Create a vpdma helper library v4l: ti-vpe: Add helpers for creating VPDMA descriptors v4l: ti-vpe: Add VPE mem to mem driver v4l: ti-vpe: Add de-interlacer support in VPE arm: dra7xx: hwmod data: add VPE hwmod data and ocp_if info experimental: arm: dts: dra7xx: Add a DT node for VPE arch/arm/boot/dts/dra7.dtsi | 11 + arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 42 + drivers/media/platform/Kconfig | 10 + drivers/media/platform/Makefile | 2 + drivers/media/platform/ti-vpe/vpdma.c | 858 ++++++++++++ drivers/media/platform/ti-vpe/vpdma.h | 202 +++ drivers/media/platform/ti-vpe/vpdma_priv.h | 814 +++++++++++ drivers/media/platform/ti-vpe/vpe.c | 2065 ++++++++++++++++++++++++++++ drivers/media/platform/ti-vpe/vpe_regs.h | 496 +++++++ 9 files changed, 4500 insertions(+) create mode 100644 drivers/media/platform/ti-vpe/vpdma.c create mode 100644 drivers/media/platform/ti-vpe/vpdma.h create mode 100644 drivers/media/platform/ti-vpe/vpdma_priv.h create mode 100644 drivers/media/platform/ti-vpe/vpe.c create mode 100644 drivers/media/platform/ti-vpe/vpe_regs.h -- 1.8.1.2
WARNING: multiple messages have this Message-ID (diff)
From: Archit Taneja <archit@ti.com> To: linux-media@vger.kernel.org Cc: linux-omap@vger.kernel.org, dagriego@biglakesoftware.com, dale@farnsworth.org, pawel@osciak.com, m.szyprowski@samsung.com, hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ti.com, Archit Taneja <archit@ti.com> Subject: [PATCH 0/6] v4l: VPE mem to mem driver Date: Fri, 2 Aug 2013 19:33:37 +0530 [thread overview] Message-ID: <1375452223-30524-1-git-send-email-archit@ti.com> (raw) VPE: VPE(Video Processing Engine) is an IP found on DRA7xx, and in some past TI multimedia SoCs which don't have baseport support in the mainline kernel. VPE is a memory to memory block used for performing de-interlacing, scaling and color conversion on input buffers. It's primarily used to de-interlace decoded DVD/Blu Ray video buffers, and provide the content to progressive display or do some other post processing. VPE can also be used for other tasks like fast color space conversion, scaling and chrominance up/down sampling. The scaler in particular is based on a polyphase filter and supports 32 phases and 5/7 taps. VPE's De-interlacer IP: The De-interlacer module performs a combination of spatial and temporal interlacing, it determines the weight-age by keeping a track of the change in motion between fields by maintaining and updating a motion vector buffer in the RAM. The de-interlacer needs the current field and the 2 previous fields (along with the motion vector info)to generate a progressive frame. It operates on YUV422 data. VPDMA: All the DMAs are done through a dedicated DMA IP called VPDMA(Video Port Direct Memory Access). This DMA IP is specialized for transferring video buffers, the input and output data ports of VPDMA are configured via descriptor lists loaded to the VPDMA list manager. VPDMA is also used to load MMRs of the various VPE sub blocks. VPDMA is advanced enough to support multiple clients like a system DMA, however, the way it's integrated in the SoC is such that it can be used only by the VPE IP. The same IP is also used on DRA7x in another block called VIP (full form) used to capture camera sensor content. It's again dedicated to the VIP block, and therefore doesn't have multiple clients. These factors made us consider writing the VPDMA block as a library, providing functions to VPE(and VIP in the future) to add descriptors and start DMA. It might have made sense to make it a dmaengine driver if there were multiple clients using VPDMA. VPE and VPDMA look something like this: ----------- --- | MVin |---------------->| | | | | | | Mvout |<----------------| | --- | | --------- | | | | | f |-->| CHR_US1 |-->| D | | S | ------ | (YUV in) | --------- | E |-->| C |------>|CHR_DS|---- | | --------- | I | | | | ------ | | f - 1 |-->| CHR_US2 |-->| | | | | | | (YUV in) | --------- | | --- | ----- | | | --------- | | -->| CSC |-- | | f - 2 |-->| CHR_US3 |-->| | ----- | | | (YUV in) | --------- | | | | | | --- | | | | | | | (YUV out) |<--------------------------------------------- | | | | | (RGB out) |<------------------------------------------------ ----------- VPDMA VPE f, f - 1, and f - 2 are input ports fetching 3 consecutive fields for the de-interlacer. MVin and MVout are ports which fetch the current motion vector and output the updated motion vector respectively. There are 2 output ports, one for YUV output and the other for RGB output if the color space converter(CSC) is used. The inputs can be YUV packed or semiplanar formats. The chrominance upsampler(CHR_USx) is used when the input format is NV12, the chrominance downsampler(CHR_DS) is used if the the output content needs to be NV12 format. The scaler(SC) can be used to scale the de-interlaced content if needed. This series adds VPE as a mem to mem v4l2 driver, and VPDMA as a helper library. For now, only the de-interlacer is configured, the scaler and color space converter are bypassed. These patches were tested over the patch series which provides initial baseport support for DRA7XX: http://marc.info/?l=linux-omap&m=137518359422774&w=2 Archit Taneja (6): v4l: ti-vpe: Create a vpdma helper library v4l: ti-vpe: Add helpers for creating VPDMA descriptors v4l: ti-vpe: Add VPE mem to mem driver v4l: ti-vpe: Add de-interlacer support in VPE arm: dra7xx: hwmod data: add VPE hwmod data and ocp_if info experimental: arm: dts: dra7xx: Add a DT node for VPE arch/arm/boot/dts/dra7.dtsi | 11 + arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 42 + drivers/media/platform/Kconfig | 10 + drivers/media/platform/Makefile | 2 + drivers/media/platform/ti-vpe/vpdma.c | 858 ++++++++++++ drivers/media/platform/ti-vpe/vpdma.h | 202 +++ drivers/media/platform/ti-vpe/vpdma_priv.h | 814 +++++++++++ drivers/media/platform/ti-vpe/vpe.c | 2065 ++++++++++++++++++++++++++++ drivers/media/platform/ti-vpe/vpe_regs.h | 496 +++++++ 9 files changed, 4500 insertions(+) create mode 100644 drivers/media/platform/ti-vpe/vpdma.c create mode 100644 drivers/media/platform/ti-vpe/vpdma.h create mode 100644 drivers/media/platform/ti-vpe/vpdma_priv.h create mode 100644 drivers/media/platform/ti-vpe/vpe.c create mode 100644 drivers/media/platform/ti-vpe/vpe_regs.h -- 1.8.1.2
next reply other threads:[~2013-08-02 14:04 UTC|newest] Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-08-02 14:03 Archit Taneja [this message] 2013-08-02 14:03 ` [PATCH 0/6] v4l: VPE mem to mem driver Archit Taneja 2013-08-02 14:03 ` [PATCH 1/6] v4l: ti-vpe: Create a vpdma helper library Archit Taneja 2013-08-02 14:03 ` Archit Taneja 2013-08-05 8:13 ` Tomi Valkeinen 2013-08-05 8:13 ` Tomi Valkeinen 2013-08-05 11:26 ` Archit Taneja 2013-08-05 11:26 ` Archit Taneja 2013-08-05 12:26 ` Tomi Valkeinen 2013-08-05 12:26 ` Tomi Valkeinen 2013-08-08 21:35 ` Laurent Pinchart 2013-08-14 10:19 ` Archit Taneja 2013-08-14 10:19 ` Archit Taneja 2013-08-08 22:04 ` Laurent Pinchart 2013-08-14 10:57 ` Archit Taneja 2013-08-14 10:57 ` Archit Taneja 2013-08-20 11:39 ` Laurent Pinchart 2013-08-20 12:51 ` Archit Taneja 2013-08-20 12:51 ` Archit Taneja 2013-08-20 13:16 ` Archit Taneja 2013-08-20 13:16 ` Archit Taneja 2013-08-20 13:56 ` Laurent Pinchart 2013-08-21 6:47 ` Archit Taneja 2013-08-21 6:47 ` Archit Taneja 2013-08-02 14:03 ` [PATCH 2/6] v4l: ti-vpe: Add helpers for creating VPDMA descriptors Archit Taneja 2013-08-02 14:03 ` Archit Taneja 2013-08-05 9:11 ` Tomi Valkeinen 2013-08-05 9:11 ` Tomi Valkeinen 2013-08-05 12:05 ` Archit Taneja 2013-08-05 12:05 ` Archit Taneja 2013-08-05 13:03 ` Tomi Valkeinen 2013-08-05 13:03 ` Tomi Valkeinen 2013-08-02 14:03 ` [PATCH 3/6] v4l: ti-vpe: Add VPE mem to mem driver Archit Taneja 2013-08-02 14:03 ` Archit Taneja 2013-08-02 14:36 ` Hans Verkuil 2013-08-02 14:55 ` Archit Taneja 2013-08-02 14:55 ` Archit Taneja 2013-08-05 9:18 ` Tomi Valkeinen 2013-08-05 9:18 ` Tomi Valkeinen 2013-08-02 14:03 ` [PATCH 4/6] v4l: ti-vpe: Add de-interlacer support in VPE Archit Taneja 2013-08-02 14:03 ` Archit Taneja 2013-08-02 14:40 ` Hans Verkuil 2013-08-02 14:03 ` [PATCH 5/6] arm: dra7xx: hwmod data: add VPE hwmod data and ocp_if info Archit Taneja 2013-08-02 14:03 ` Archit Taneja 2013-08-02 14:03 ` [PATCH 6/6] experimental: arm: dts: dra7xx: Add a DT node for VPE Archit Taneja 2013-08-02 14:03 ` Archit Taneja 2013-08-08 22:11 ` Laurent Pinchart 2013-10-25 10:35 ` Archit Taneja 2013-10-25 10:35 ` Archit Taneja 2013-12-03 10:08 ` Archit Taneja 2013-12-03 10:08 ` Archit Taneja 2013-08-20 11:00 ` [PATCH v2 0/6] v4l: VPE mem to mem driver Archit Taneja 2013-08-20 11:00 ` Archit Taneja 2013-08-20 11:00 ` [PATCH v2 1/6] v4l: ti-vpe: Create a vpdma helper library Archit Taneja 2013-08-20 11:00 ` Archit Taneja 2013-08-20 11:00 ` [PATCH v2 2/6] v4l: ti-vpe: Add helpers for creating VPDMA descriptors Archit Taneja 2013-08-20 11:00 ` Archit Taneja 2013-08-20 11:00 ` [PATCH v2 3/6] v4l: ti-vpe: Add VPE mem to mem driver Archit Taneja 2013-08-20 11:00 ` Archit Taneja 2013-08-20 11:00 ` [PATCH v2 4/6] v4l: ti-vpe: Add de-interlacer support in VPE Archit Taneja 2013-08-20 11:00 ` Archit Taneja 2013-08-20 11:00 ` [PATCH v2 5/6] arm: dra7xx: hwmod data: add VPE hwmod data and ocp_if info Archit Taneja 2013-08-20 11:00 ` Archit Taneja 2013-08-20 11:00 ` [PATCH v2 6/6] experimental: arm: dts: dra7xx: Add a DT node for VPE Archit Taneja 2013-08-20 11:00 ` Archit Taneja 2013-08-29 12:32 ` [PATCH v3 0/6] v4l: VPE mem to mem driver Archit Taneja 2013-08-29 12:32 ` Archit Taneja 2013-08-29 12:32 ` [PATCH v3 1/6] v4l: ti-vpe: Create a vpdma helper library Archit Taneja 2013-08-29 12:32 ` Archit Taneja 2013-08-29 12:32 ` [PATCH v3 2/6] v4l: ti-vpe: Add helpers for creating VPDMA descriptors Archit Taneja 2013-08-29 12:32 ` Archit Taneja 2013-08-29 12:32 ` [PATCH v3 3/6] v4l: ti-vpe: Add VPE mem to mem driver Archit Taneja 2013-08-29 12:32 ` Archit Taneja 2013-08-29 13:28 ` Hans Verkuil 2013-08-30 6:47 ` Archit Taneja 2013-08-30 6:47 ` Archit Taneja 2013-08-30 7:07 ` Hans Verkuil 2013-08-30 10:05 ` Archit Taneja 2013-08-30 10:05 ` Archit Taneja 2013-08-30 10:44 ` Hans Verkuil 2013-09-05 5:56 ` Archit Taneja 2013-09-05 5:56 ` Archit Taneja 2013-08-29 12:32 ` [PATCH v3 4/6] v4l: ti-vpe: Add de-interlacer support in VPE Archit Taneja 2013-08-29 12:32 ` Archit Taneja 2013-08-29 12:32 ` [PATCH v3 5/6] arm: dra7xx: hwmod data: add VPE hwmod data and ocp_if info Archit Taneja 2013-08-29 12:32 ` Archit Taneja 2013-08-29 12:42 ` Rajendra Nayak 2013-08-29 12:42 ` Rajendra Nayak 2013-08-29 13:42 ` Archit Taneja 2013-08-29 13:42 ` Archit Taneja 2013-08-29 12:32 ` [PATCH v3 6/6] experimental: arm: dts: dra7xx: Add a DT node for VPE Archit Taneja 2013-08-29 12:32 ` Archit Taneja 2013-09-06 10:12 ` [PATCH v4 0/4] v4l: VPE mem to mem driver Archit Taneja 2013-09-06 10:12 ` Archit Taneja 2013-09-06 10:12 ` [PATCH v4 1/4] v4l: ti-vpe: Create a vpdma helper library Archit Taneja 2013-09-06 10:12 ` Archit Taneja 2013-10-07 7:46 ` Hans Verkuil 2013-09-06 10:12 ` [PATCH v4 2/4] v4l: ti-vpe: Add helpers for creating VPDMA descriptors Archit Taneja 2013-09-06 10:12 ` Archit Taneja 2013-10-07 7:46 ` Hans Verkuil 2013-09-06 10:12 ` [PATCH v4 3/4] v4l: ti-vpe: Add VPE mem to mem driver Archit Taneja 2013-09-06 10:12 ` Archit Taneja 2013-10-07 7:55 ` Hans Verkuil 2013-10-07 9:16 ` Archit Taneja 2013-10-07 9:16 ` Archit Taneja 2013-10-07 9:34 ` Hans Verkuil 2013-10-07 10:22 ` Archit Taneja 2013-10-07 10:22 ` Archit Taneja 2013-10-07 14:02 ` Hans Verkuil 2013-10-07 14:34 ` Archit Taneja 2013-10-07 14:34 ` Archit Taneja 2013-09-06 10:12 ` [PATCH v4 4/4] v4l: ti-vpe: Add de-interlacer support in VPE Archit Taneja 2013-09-06 10:12 ` Archit Taneja 2013-10-07 7:57 ` Hans Verkuil 2013-09-16 6:59 ` [PATCH v4 0/4] v4l: VPE mem to mem driver Archit Taneja 2013-09-16 6:59 ` Archit Taneja 2013-10-07 6:39 ` Archit Taneja 2013-10-07 6:39 ` Archit Taneja 2013-10-09 14:29 ` [PATCH v5 3/4] v4l: ti-vpe: Add " Archit Taneja 2013-10-09 14:29 ` Archit Taneja 2013-10-11 7:46 ` Hans Verkuil 2013-10-15 13:47 ` Archit Taneja 2013-10-15 13:47 ` Archit Taneja 2013-10-15 13:51 ` Hans Verkuil 2013-10-15 14:13 ` Kamil Debski 2013-10-15 15:54 ` Kamil Debski 2013-10-16 5:08 ` Archit Taneja 2013-10-16 5:08 ` Archit Taneja 2013-10-16 5:36 ` [PATCH v5 0/4] v4l: " Archit Taneja 2013-10-16 5:36 ` Archit Taneja 2013-10-16 5:36 ` [PATCH v5 1/4] v4l: ti-vpe: Create a vpdma helper library Archit Taneja 2013-10-16 5:36 ` Archit Taneja 2013-10-16 5:36 ` [PATCH v5 2/4] v4l: ti-vpe: Add helpers for creating VPDMA descriptors Archit Taneja 2013-10-16 5:36 ` Archit Taneja 2013-10-16 5:36 ` [PATCH v5 3/4] v4l: ti-vpe: Add VPE mem to mem driver Archit Taneja 2013-10-16 5:36 ` Archit Taneja 2013-10-16 5:36 ` [PATCH v5 4/4] v4l: ti-vpe: Add de-interlacer support in VPE Archit Taneja 2013-10-16 5:36 ` Archit Taneja
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1375452223-30524-1-git-send-email-archit@ti.com \ --to=archit@ti.com \ --cc=dagriego@biglakesoftware.com \ --cc=dale@farnsworth.org \ --cc=hverkuil@xs4all.nl \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-media@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=m.szyprowski@samsung.com \ --cc=pawel@osciak.com \ --cc=tomi.valkeinen@ti.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.