From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: linux-media@vger.kernel.org
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>, Benoit Parrot <bparrot@ti.com>
Subject: [PATCH v3 00/24] media: ti-vpe: cal: Add media controller support
Date: Mon, 7 Dec 2020 01:53:29 +0200 [thread overview]
Message-ID: <20201206235353.26968-1-laurent.pinchart@ideasonboard.com> (raw)
Hello,
This patch series adds media controller support to the ti-cal driver. It
incorporates the review feedback received on v2, and has been rebased on
top of the media tree, dropping about three quarters of the patches from
v2 that have already been merged.
The end goal is to support pipelines where the image source is more
complex than a single subdev (for instance a SMIA++-compliant sensor, or
an FPD-Link source made of a camera, a serializer and a deserializer),
and to prepare for support of multiple hardware contexts, needed for
CSI-2 virtual channel and data type multiplexing support. These use
cases require configuration of the external pipeline from userspace, and
thus need support for the media controller and V4L2 subdev userspace
APIs.
The series starts with refactoring CAMERARX instances support by
splitting them to sudbevs in patch 01/24. Patches 02/24 to 06/24 perform
small cleanups, patch 07/24 implements the subdev operations and patch
08/24 uses them to configure and control the CAMERARX.
More refactoring and cleanup follow in patches 09/24 to 23/24, until
patch 24/24 that adds media controller support. As the existing video
node centric API needs to be preserved to avoid breaking userspace
applications, a module parameter is added to enable the media controller
API. Changes are otherwise fairly limited, and mostly involve the
implementation of MC-centric V4L2 ioctl handlers (which are far simpler
than their video node centric equivalents), additional pipeline
validation in the vb2 start streaming handler, and disabling control
handling in the video nodes.
Addition of a new Kconfig option to select the default value of the MC
API control module parameter has been left out from patch 24/24 until
the related discussions complete. This can easily be implemented on top,
without introducing any regression. Alternatively patch 24/24 could be
left out for the time being if desired.
The patches have been tested on an AM65x EVM with an OV5640 camera
module with the yavta test application, both in MC mode and in legacy
mode. As the ov5640 driver sets a default format identical to the
default of the ti-cal driver, capture in both modes can simply be tested
with
yavta -f UYVY -s 640x480 -c10 --requeue-last /dev/video0
without requiring manual pipeline setup through the media controller
API. Usage of other formats or resolutions require pipeline
configuration before capture.
Laurent Pinchart (24):
media: ti-vpe: cal: Create subdev for CAMERARX
media: ti-vpe: cal: Drop cal_ctx m_fmt field
media: ti-vpe: cal: Move format handling to cal.c and expose helpers
media: ti-vpe: cal: Rename MAX_(WIDTH|HEIGHT)_* macros with CAL_
prefix
media: ti-vpe: cal: Replace hardcoded BIT() value with macro
media: ti-vpe: cal: Iterate over correct number of CAMERARX instances
media: ti-vpe: cal: Implement subdev ops for CAMERARX
media: ti-vpe: cal: Use CAMERARX subdev s_stream op in video device
code
media: ti-vpe: cal: Don't pass format to cal_ctx_wr_dma_config()
media: ti-vpe: cal: Rename struct cal_fmt to cal_format_info
media: ti-vpe: cal: Refactor interrupt enable/disable
media: ti-vpe: cal: Fold PPI enable in CAMERARX .s_stream()
media: ti-vpe: cal: Stop write DMA without disabling PPI
media: ti-vpe: cal: Use spin_lock_irq() when starting or stopping
stream
media: ti-vpe: cal: Share buffer release code between start and stop
media: ti-vpe: cal: Drop V4L2_CAP_READWRITE
media: ti-vpe: cal: Drop unneeded check in cal_calc_format_size()
media: ti-vpe: cal: Remove DMA queue empty check at start streaming
time
media: ti-vpe: cal: Use list_first_entry()
media: ti-vpe: cal: Group all DMA queue fields in struct cal_dmaqueue
media: ti-vpe: cal: Set cal_dmaqueue.pending to NULL when no pending
buffer
media: ti-vpe: cal: Store buffer DMA address in dma_addr_t
media: ti-vpe: cal: Simplify the context API
media: ti-vpe: cal: Implement media controller centric API
drivers/media/platform/ti-vpe/cal-camerarx.c | 374 ++++++++--
drivers/media/platform/ti-vpe/cal-video.c | 720 ++++++++++---------
drivers/media/platform/ti-vpe/cal.c | 395 ++++++++--
drivers/media/platform/ti-vpe/cal.h | 105 ++-
4 files changed, 1082 insertions(+), 512 deletions(-)
--
Regards,
Laurent Pinchart
next reply other threads:[~2020-12-06 23:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-06 23:53 Laurent Pinchart [this message]
2020-12-06 23:53 ` [PATCH v3 01/24] media: ti-vpe: cal: Create subdev for CAMERARX Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 02/24] media: ti-vpe: cal: Drop cal_ctx m_fmt field Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 03/24] media: ti-vpe: cal: Move format handling to cal.c and expose helpers Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 04/24] media: ti-vpe: cal: Rename MAX_(WIDTH|HEIGHT)_* macros with CAL_ prefix Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 05/24] media: ti-vpe: cal: Replace hardcoded BIT() value with macro Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 06/24] media: ti-vpe: cal: Iterate over correct number of CAMERARX instances Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 07/24] media: ti-vpe: cal: Implement subdev ops for CAMERARX Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 08/24] media: ti-vpe: cal: Use CAMERARX subdev s_stream op in video device code Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 09/24] media: ti-vpe: cal: Don't pass format to cal_ctx_wr_dma_config() Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 10/24] media: ti-vpe: cal: Rename struct cal_fmt to cal_format_info Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 11/24] media: ti-vpe: cal: Refactor interrupt enable/disable Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 12/24] media: ti-vpe: cal: Fold PPI enable in CAMERARX .s_stream() Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 13/24] media: ti-vpe: cal: Stop write DMA without disabling PPI Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 14/24] media: ti-vpe: cal: Use spin_lock_irq() when starting or stopping stream Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 15/24] media: ti-vpe: cal: Share buffer release code between start and stop Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 16/24] media: ti-vpe: cal: Drop V4L2_CAP_READWRITE Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 17/24] media: ti-vpe: cal: Drop unneeded check in cal_calc_format_size() Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 18/24] media: ti-vpe: cal: Remove DMA queue empty check at start streaming time Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 19/24] media: ti-vpe: cal: Use list_first_entry() Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 20/24] media: ti-vpe: cal: Group all DMA queue fields in struct cal_dmaqueue Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 21/24] media: ti-vpe: cal: Set cal_dmaqueue.pending to NULL when no pending buffer Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 22/24] media: ti-vpe: cal: Store buffer DMA address in dma_addr_t Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 23/24] media: ti-vpe: cal: Simplify the context API Laurent Pinchart
2020-12-06 23:53 ` [PATCH v3 24/24] media: ti-vpe: cal: Implement media controller centric API Laurent Pinchart
2020-12-07 10:11 ` Hans Verkuil
2020-12-07 23:51 ` Laurent Pinchart
2020-12-08 8:58 ` Hans Verkuil
2020-12-08 16:15 ` Laurent Pinchart
2021-02-15 15:23 ` Tomi Valkeinen
2021-03-03 15:15 ` Hans Verkuil
2021-03-03 15:22 ` Laurent Pinchart
2021-03-03 15:51 ` Hans Verkuil
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=20201206235353.26968-1-laurent.pinchart@ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=bparrot@ti.com \
--cc=linux-media@vger.kernel.org \
--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: link
Be 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.