Hi Maxime, Thanks for your patch-set, On 2018-03-01 12:30:47 +0100, Maxime Ripard wrote: > Hi, > > Here is an attempt at supporting the MIPI-CSI2 TX block from Cadence. > > This IP block is able to receive 4 video streams and stream them over > a MIPI-CSI2 link using up to 4 lanes. Those streams are basically the > interfaces to controllers generating some video signals, like a camera > or a pattern generator. > > It is able to map input streams to CSI2 virtual channels and datatypes > dynamically. The streaming devices choose their virtual channels > through an additional signal that is transparent to the CSI2-TX. The > datatypes however are yet another additional input signal, and can be > mapped to any CSI2 datatypes. > > Since v4l2 doesn't really allow for that setup at the moment, this > preliminary version is a rather dumb one in order to start the > discussion on how to address this properly. I'm sure you already are aware of this but in case you are not. Sakari have a branch [1] which addresses much of the CSI-2 virtual channel problems. It handles data types, virtual channels and format validation for pipelines in IMHO good way. I have used it for my base when implementing the R-Car CSI-2 receiver which adds a proposed way on how to start and stop streams using Sakaris work [2]. Would it be possible for you to try this series on-top of Sakaris branch and see if it fits your needs? I would be happy if it did and we can start the process of trying to get his work upstream so we can clear that dependency for our hopefully shared problem :-) 1. https://git.linuxtv.org/sailus/media_tree.git vc 2. https://git.ragnatech.se/linux v4l2/mux > > Let me know what you think! > Maxime > > Changes from v4: > - After playing a bit with the pad multiplexing patches, found that it > was making much more sense to have the subdev notifiers for the source > subdev rather for the sink that might even be outside of Linux control. > Removed the notifier for now. > > Changes from v3: > - Added a comment about entity links walk concurrency > - Changed the default resolution to 1280x720 > - Changed usleep_range calls to udelay > - Reworked the reference counting mechanism to remove a race > condition by adding a mutex instead of an atomic count > - Changed the entity function to MEDIA_ENT_F_VID_IF_BRIDGE > - Changed the name of the reg variable in _get_resources to dev_cfg > - Removed the redundant error message in the devm_ioremap_resource > error path > - Moved the subdev s_stream call before enabling the TX bridge > - Changed some int types to unsigned > - Init'd the pad formats properly > - Fixed typo in the CSI2TX_LANES_MAX define name > - Added Sakari Acked-by > > Changes from v2: > - Use SPDX license header > - Use the lane mapping from DT > > Changes from v1: > - Add a subdev notifier and start our downstream subdevice in > s_stream > - Based the decision to enable the stream or not on the link state > instead of whether a format was being set on the pad > - Put the controller back in reset when stopping the pipeline > - Clarified the enpoints number in the DT binding > - Added a default format for the pads > - Added some missing const > - Added more explicit comments > - Rebased on 4.15 > > Maxime Ripard (2): > dt-bindings: media: Add Cadence MIPI-CSI2 TX Device Tree bindings > v4l: cadence: Add Cadence MIPI-CSI2 TX driver > > .../devicetree/bindings/media/cdns,csi2tx.txt | 98 ++++ > drivers/media/platform/cadence/Kconfig | 11 + > drivers/media/platform/cadence/Makefile | 1 + > drivers/media/platform/cadence/cdns-csi2tx.c | 527 +++++++++++++++++++++ > 4 files changed, 637 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/cdns,csi2tx.txt > create mode 100644 drivers/media/platform/cadence/cdns-csi2tx.c > > -- > 2.14.3 > -- Regards, Niklas Söderlund -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html