mbox series

[v3,00/13] media: cadence,ti: CSI2RX Multistream Support

Message ID 20250417065554.437541-1-r-donadkar@ti.com
Headers show
Series media: cadence,ti: CSI2RX Multistream Support | expand

Message

Rishikesh Donadkar April 17, 2025, 6:55 a.m. UTC
This series adds multi-stream support for Cadence CSI2RX and TI CSI2RX
Shim drivers.

PATCH 1-6:	Support multiple DMA contexts/video nodes in TI CSI2RX
PATCH 7-8:	Use get_frame_desc to propagate virtual channel information 
            across Cadence and TI CSI-RX subdevs
PATCH 9-11:	Use new multi-stream APIs across the drivers to support
            multiplexed cameras from sources like UB960 (FPDLink)
PATCH 12:	Optimize stream on by submitting all queued buffers to DMA
PATCH 13:   Change the drain architecture to support multi-stream

Testing for this series has been done on top of media tree with 4x IMX219 
camera modules connected to TI's AM62A using V3 Link fusion mini board.

Overlay and defconfig changes for the same can be found below:
https://github.com/RISHI27-dot/linux/commits/u/multistream_v3/

Signed-off-by: Jai Luthra <j-luthra@ti.com>
Signed-off-by: Rishikesh Donadkar <r-donadkar@ti.com>
---

Changes in v3:

- Drop [PATCH v2 01/13] media: cadence: csi2rx: Support runtime PM from
  v2, support for runtime PM will be added in a separate series:
  https://lore.kernel.org/all/20250224-ti_csi_pm-v1-0-8f8c29ef646d@ideasonboard.com/
- Change the drain architecture to prevent FIFO overflow in multistream
  usecases.
- With the new drain architecture, we don't need the the driver to wait 
  for userspace to start streaming on all "actively routed" video nodes 
  before starting streaming on the source. So, revert back to the capture 
  architecture where streams can be started and stopped independent 
  to each other.

- Link to (v2):
  https://lore.kernel.org/r/20240627-multistream-v2-0-6ae96c54c1c3@ti.com

Changes in v2:

- Change the multi-camera capture architecture to be similar to that of
  Tomi's RPi5 FE series, where the driver will wait for userspace to
  start streaming on all "actively routed" video nodes before starting
  streaming on the source. This simplifies things a lot from the HW
  perspective, which might run into deadlocks due to a shared FIFO
  between multiple DMA channels.

- Drop a few fixes that were posted separately and are already merged
- Fix dtschema warnings reported by Rob on [02/13]
- Fix warnings for uninitialized `used_vc` variable in cdns-csi2rx.c
- Return -EBUSY if someone updates routes for j721e-csi2rx subdev while
  streaming
- Only allow single-streams to be routed to the source pads (linked to
  video nodes) of the j721e-csi2rx device
- Squash the patches marked "SQUASH" in the v1 RFC series

- Link to RFC (v1):
  https://lore.kernel.org/r/20240222-multistream-v1-0-1837ed916eeb@ti.com

Jai Luthra (8):
  dt-bindings: media: ti,j721e-csi2rx-shim: Support 32 dma chans
  media: ti: j721e-csi2rx: separate out device and context
  media: ti: j721e-csi2rx: add a subdev for the core device
  media: ti: j721e-csi2rx: add support for processing virtual channels
  media: cadence: csi2rx: Use new enable stream APIs
  media: cadence: csi2rx: Enable multi-stream support
  media: ti: j721e-csi2rx: add multistream support
  media: ti: j721e-csi2rx: Submit all available buffers

Pratyush Yadav (4):
  media: ti: j721e-csi2rx: prepare SHIM code for multiple contexts
  media: ti: j721e-csi2rx: allocate DMA channel based on context index
  media: ti: j721e-csi2rx: get number of contexts from device tree
  media: cadence: csi2rx: add get_frame_desc wrapper

Rishikesh Donadkar (1):
  media: ti: j721e-csi2rx: Change the drain architecture for multistream

 .../bindings/media/ti,j721e-csi2rx-shim.yaml  |  39 +-
 drivers/media/platform/cadence/cdns-csi2rx.c  | 384 ++++++--
 .../platform/ti/j721e-csi2rx/j721e-csi2rx.c   | 913 +++++++++++++-----
 3 files changed, 992 insertions(+), 344 deletions(-)