This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: TDA4VM (Linux OS): TDA4 FTD Bring up- CSI driver with virtual channels

Part Number: TDA4VM

As title, I was ported FPD Link serdes with ISP camera on FPC camera connector of TDA4VM, it works perfect when only link one video channel, but I got failed when I try to link multiple camera sensors using virtual channels (assuming virtual channel works on CSI PHY bridge driver).

Conditions:

  • OS: Yocto 3.1 base on latest SDK 8.1
  • Kernel: 5.10.65 base on latest SDK 8.1

I think root cause is their CSI driver has only one SINK in pads:

drivers/media/platform/cadence/cdns-csi2rx.c

enum csi2rx_pads {
        CSI2RX_PAD_SINK,
        CSI2RX_PAD_SOURCE_STREAM0,
        CSI2RX_PAD_SOURCE_STREAM1,
        CSI2RX_PAD_SOURCE_STREAM2,
        CSI2RX_PAD_SOURCE_STREAM3,
        CSI2RX_PAD_MAX,
};

it cause only can link one subdev camera sensor at the same time, I did a test: when I connect two camera sensors using FPD Link, those sensors initial driver success on i2c part, but subdev only generated for 1st one, the 2nd one doesn't link success to CSI-Bridge.

However, I got news from TI official about CSI Virtual Channel will be supported in SDK 8.2, I try to download and test their latest kernel (tag 08.02.00.006) from TI git server, but it seems this tag still doesn't works, check CSI PHY and CSI-Bridge drivers, both update format RAW8 and RAW10 supporting only, anyone knows it's tag 08.02.00.006 issue or not, maybe still need wait a minute?

Thanks a lot

  • As title, I got a problem with virtual channel on latest SDK with kernel 5.10.65.

    Update:

    My test condition as follows:

    TDA4VM <-> CSI2RX <-> Serdes DS90962 <-> Camera sensor (AR13xx)

    It works perfectly if I use only one channel, but when I connect 2nd camera on Serdes, CSI2RX still got 1st camera only (I'm sure 2nd camera initial successfully but link virtual channel-2 failed with CSI2RX bridge), do you have ideas?

    According to TI official feedback, they said current Linux SDK does not support virtual channels, but I checked the CSI2RX git log, there is mention that it does support but need setting manually:

    media: ti: j721e-csi2rx: add multistream support

        Each CSI2 stream can be multiplexed into 4 independent streams, each

        identified by its virtual channel number. To capture this multiplexed

        stream, the application needs to tell the driver how it wants to route

        the data. It needs to specify which context should process which stream.

        This is done via the new routing APIs.

       

        Add ioctls to accept routing information from the application and save

        that in the driver. This can be used when starting streaming on a

        context to determine which route and consequently which virtual channel

        it should process.  

    The question now is HOW to manually set it up.

    Maybe I need setting via media-ctl or v4l-ctl? I'm not sure, after all, I cannot find any relate document from TI WIKI, I'll very appreciate if you give me some hints.