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.

Linux: How to receive RGB 24bit signals without a decoder (ex:TVP5158)

Other Parts Discussed in Thread: DRA744, TVP5158

Tool/software: Linux

Our processor is DRA744, with 3.02.00.03 SDK version.

I am working on a project which will use dra744 to capture video(RGB 24bit) from VIP0(vin2a). 

In our own hardware environment without a decoder, and we send RGB 24bit signals into vin2a direct.

The following is my current status

a. Input include hsync,vsync, pclk and data D0~D23.

b. 720x480@60Hz, Hsync=50kHz, Vsync=60Hz, Clock=70MHz, test data is always send

c. vin2a pin define is correct

d. Check interrupt status "cat /proc/interrupts | grep vip", value always is 0
344:         0          0      CBAR 351 Level     vip1-s0
345:         0          0      CBAR 392 Level     vip1-s1

My question are

a. How to receive RGB 24bit signals without a decoder(ex: TVP5158)?
b. Are above capture scenario possible?
c. Is open device set /dev/video2 when we use vin2a?
 
Any help will be highly appreciated.

  • Yes, You can choose any video source at the video port.
    However, in V4L2, you need a subdevice driver which implements all the video_ops (e.g. s/g_fmt and s_stream)

    If you have a different video source, implement a different v4l2 subdev device, advertise the capabilities like RGB24 via the s/g_fmt operations, V4L2 endpoint device nodes, and link the device tree node to this new node instead of the TVP5158 decoder node.

    You need to make sure that the video is actually available at the parser (check the parser size register value)
    Untill that registers reads non-zero value, there won't be any interrupts fired and the application will BLOCK forever for DQBUF ioctl.
    That's the starndard failure when the video source is not detected

    Regards,
    Nikhil D
  • The external devices continuously transmit RGB 24bit data to vin2a.
    but I read Parser size register(vin2a:0x48975A30) still 0.
    Could you give me some suggestion or tell me which settings should I need to confirm?


    Regards,

    Shawn
  • You can try to run this utility to check each and every signal at the SoC pads.
    git.ti.com/.../iodelay-config
    Use the --gpio option to generate a script which can be used to check every signal.
    Also, make sure your device tree description describes the correct bus width, sync type
    embedded sync has different options like line multiplexed, 1ch, 4ch multiplexed, etc

    Regards,
    Nikhil D
  • I confirm vin2a pins have input signals() by tool"IODELAY - Configuration".
    (CLK0, HSYNC0, VSYNC0,D0~D7 signal are '0' and '1' keep change continuously)
    How to set "bus width" in DTS? Is it similar to the description below?
    bus-width = <24>;

    Regards,

    Shawn
  • Yes, that's correct!

    Nikhil D