On 2/4/20 5:42 PM, Sowjanya Komatineni wrote: > > On 2/4/20 4:53 AM, Hans Verkuil wrote: >> External email: Use caution opening links or attachments >> >> >> On 1/28/20 7:23 PM, Sowjanya Komatineni wrote: >>> This series adds Tegra210 VI and CSI driver for built-in test pattern >>> generator (TPG) capture. >>> >>> Tegra210 supports max 6 channels on VI and 6 ports on CSI where each >>> CSI port is one-to-one mapped to VI channel for video capture. >>> >>> This series has TPG support only where it creates hard media links >>> between CSI subdevice and VI video device without device graphs. >>> >>> v4l2-compliance results are available below the patch diff. >>> >>> [v0]: Includes, >>> - Adds CSI TPG clock to Tegra210 clock driver >>> - Host1x video driver with VI and CSI clients. >>> - Support for Tegra210 only. >>> - VI CSI TPG support with hard media links in driver. >>> - Video formats supported by Tegra210 VI >>> - CSI TPG supported video formats >>> >>> >>> Sowjanya Komatineni (5): >>> dt-bindings: clock: tegra: Add clk id for CSI TPG clock >>> clk: tegra: Add Tegra210 CSI TPG clock gate >>> dt-binding: tegra: Add VI and CSI bindings >>> media: tegra: Add Tegra Video input driver for Tegra210 >>> arm64: tegra: Add Tegra VI CSI suppport in device tree >>> >>> .../display/tegra/nvidia,tegra20-host1x.txt | 10 +- >>> arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 8 + >>> arch/arm64/boot/dts/nvidia/tegra210.dtsi | 31 +- >>> drivers/clk/tegra/clk-tegra210.c | 7 + >>> drivers/staging/media/Kconfig | 2 + >>> drivers/staging/media/Makefile | 1 + >>> drivers/staging/media/tegra/Kconfig | 12 + >>> drivers/staging/media/tegra/Makefile | 11 + >>> drivers/staging/media/tegra/TODO | 10 + >>> drivers/staging/media/tegra/csi.h | 111 ++++ >>> drivers/staging/media/tegra/csi2_fops.c | 335 +++++++++++ >>> drivers/staging/media/tegra/csi2_fops.h | 15 + >>> drivers/staging/media/tegra/host1x-video.c | 120 ++++ >>> drivers/staging/media/tegra/host1x-video.h | 33 ++ >>> drivers/staging/media/tegra/mc_common.h | 131 +++++ >>> drivers/staging/media/tegra/tegra-channel.c | 628 +++++++++++++++++++++ >>> drivers/staging/media/tegra/tegra-core.c | 111 ++++ >>> drivers/staging/media/tegra/tegra-core.h | 125 ++++ >>> drivers/staging/media/tegra/tegra-csi.c | 380 +++++++++++++ >>> drivers/staging/media/tegra/tegra-vi.c | 351 ++++++++++++ >>> drivers/staging/media/tegra/tegra-vi.h | 101 ++++ >>> drivers/staging/media/tegra/vi2_fops.c | 364 ++++++++++++ >>> drivers/staging/media/tegra/vi2_fops.h | 15 + >>> drivers/staging/media/tegra/vi2_formats.h | 119 ++++ >>> drivers/staging/media/tegra/vi2_registers.h | 194 +++++++ >>> include/dt-bindings/clock/tegra210-car.h | 2 +- >>> 26 files changed, 3224 insertions(+), 3 deletions(-) >>> create mode 100644 drivers/staging/media/tegra/Kconfig >>> create mode 100644 drivers/staging/media/tegra/Makefile >>> create mode 100644 drivers/staging/media/tegra/TODO >>> create mode 100644 drivers/staging/media/tegra/csi.h >>> create mode 100644 drivers/staging/media/tegra/csi2_fops.c >>> create mode 100644 drivers/staging/media/tegra/csi2_fops.h >>> create mode 100644 drivers/staging/media/tegra/host1x-video.c >>> create mode 100644 drivers/staging/media/tegra/host1x-video.h >>> create mode 100644 drivers/staging/media/tegra/mc_common.h >>> create mode 100644 drivers/staging/media/tegra/tegra-channel.c >>> create mode 100644 drivers/staging/media/tegra/tegra-core.c >>> create mode 100644 drivers/staging/media/tegra/tegra-core.h >>> create mode 100644 drivers/staging/media/tegra/tegra-csi.c >>> create mode 100644 drivers/staging/media/tegra/tegra-vi.c >>> create mode 100644 drivers/staging/media/tegra/tegra-vi.h >>> create mode 100644 drivers/staging/media/tegra/vi2_fops.c >>> create mode 100644 drivers/staging/media/tegra/vi2_fops.h >>> create mode 100644 drivers/staging/media/tegra/vi2_formats.h >>> create mode 100644 drivers/staging/media/tegra/vi2_registers.h >>> >>> >>> v4l2-compliance SHA: e7402fb758fd106955c3b7d5a5e961d1cb606f4a, 32 bits, 32-bit time_t >>> >>> Compliance test for tegra-video device /dev/video0: >> Since this driver creates a /dev/media0 device you should test with: >> >> v4l2-compliance -m0 -s10: that tests everything found in the media topology. >> >> It finds a few issues in the media topology itself: >> >> ---------------------------------------------------------------------------- >> $ v4l2-compliance -M0 >> v4l2-compliance SHA: 5af0730d06247a2de487abf2e00e70b156f1fb82, 64 bits, 64-bit time_t >> >> Compliance test for host1x_video device /dev/media0: >> >> Media Driver Info: >> Driver name : host1x_video >> Model : NVIDIA Tegra Video Input Device >> Serial : >> Bus info : >> Media version : 5.5.0 >> Hardware revision: 0x00000003 (3) >> Driver version : 5.5.0 >> >> Required ioctls: >> warn: v4l2-test-media.cpp(52): empty bus_info >> test MEDIA_IOC_DEVICE_INFO: OK >> >> Allow for multiple opens: >> test second /dev/media0 open: OK >> warn: v4l2-test-media.cpp(52): empty bus_info >> test MEDIA_IOC_DEVICE_INFO: OK >> test for unlimited opens: OK >> >> Media Controller ioctls: >> fail: v4l2-test-media.cpp(117): function == MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN >> fail: v4l2-test-media.cpp(203): checkFunction(ent.function, true) >> test MEDIA_IOC_G_TOPOLOGY: FAIL >> fail: v4l2-test-media.cpp(390): num_data_links != num_links >> test MEDIA_IOC_ENUM_ENTITIES/LINKS: FAIL >> test MEDIA_IOC_SETUP_LINK: OK >> test invalid ioctls: OK >> >> Total for host1x_video device /dev/media0: 8, Succeeded: 6, Failed: 2, Warnings: 2 >> ---------------------------------------------------------------------------- >> >> Note: the -M0 option tests just /dev/media0 without testing any of the devices >> mentioned in the topology. Use -m0 for that. > OK >> I see a lot of spam in the kernel log: >> >> [ 484.362145] tegra-vi 54080000.vi: TPG mode is set to Black/White Direct Mode >> [ 486.147937] tegra-csi 54080838.csi: using Tegra default WIDTH X HEIGHT (1920x1080) >> [ 486.155499] tegra-csi 54080838.csi: using Tegra default RAW10 video format >> [ 486.162403] tegra-csi 54080838.csi: using Tegra default RAW10 video format >> >> Change that to dev_dbg or delete altogether. > > ok, removed TPG mode message in v2. > > Other above messages are to log using default format when requested > format is not supported by TPG mode. > > Will change them to dev_dbg. > >> >> I also noticed that changing the test pattern while streaming did not seem to have >> any effect until I stop and restart streaming. Is that a limitation of the HW or of >> the driver? > > Do you mean changing test pattern mode of different channel while other > channels are streaming? No, from the same channel. E.g. v4l2-ctl --stream-mmap, then do from another console 'v4l2-ctl -c test-pattern=1'. It depends on the hardware whether or not you can change the test pattern while streaming. But it is nice for testing if this is possible. > > In v1, pg mode from handler is stored in vi which is common for all > channels. > > So, v2 has change to use channel specific pg mode rather than common > mode for all channels. That sounds better. You want independent test patterns for each channel if possible. Regards, Hans > >> >> Note that the RGB pixelformat appears to be incorrect: it is set to RGB32 but it >> should be BGR32. Actually, it should be XBGR32 since there is no alpha channel >> present (I think). RGB32 and BGR32 are deprecated in favor of RGBX/A and X/ABGR. >> >> Regards, >> >> Hans > Will fix it. >>> Driver Info: >>> Driver name : tegra-video >>> Card type : 54080000.vi-output-0 >>> Bus info : platform:54080000.vi:0 >>> Driver version : 5.5.0 >>> Capabilities : 0x85200001 >>> Video Capture >>> Read/Write >>> Streaming >>> Extended Pix Format >>> Device Capabilities >>> Device Caps : 0x05200001 >>> Video Capture >>> Read/Write >>> Streaming >>> Extended Pix Format >>> Media Driver Info: >>> Driver name : host1x_video >>> Model : NVIDIA Tegra Video Input Device >>> Serial : >>> Bus info : >>> Media version : 5.5.0 >>> Hardware revision: 0x00000003 (3) >>> Driver version : 5.5.0 >>> Interface Info: >>> ID : 0x03000003 >>> Type : V4L Video >>> Entity Info: >>> ID : 0x00000001 (1) >>> Name : 54080000.vi-output-0 >>> Function : V4L2 I/O >>> Pad 0x01000002 : 0: Sink >>> Link 0x0200001b: from remote pad 0x100001a of entity 'tpg-0': Data, Enabled >>> >>> Required ioctls: >>> test MC information (see 'Media Driver Info' above): OK >>> test VIDIOC_QUERYCAP: OK >>> >>> Allow for multiple opens: >>> test second /dev/video0 open: OK >>> test VIDIOC_QUERYCAP: OK >>> test VIDIOC_G/S_PRIORITY: OK >>> test for unlimited opens: OK >>> >>> test invalid ioctls: OK >>> Debug ioctls: >>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) >>> test VIDIOC_LOG_STATUS: OK (Not Supported) >>> >>> Input ioctls: >>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) >>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) >>> test VIDIOC_ENUMAUDIO: OK (Not Supported) >>> test VIDIOC_G/S/ENUMINPUT: OK >>> test VIDIOC_G/S_AUDIO: OK (Not Supported) >>> Inputs: 1 Audio Inputs: 0 Tuners: 0 >>> >>> Output ioctls: >>> test VIDIOC_G/S_MODULATOR: OK (Not Supported) >>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >>> test VIDIOC_ENUMAUDOUT: OK (Not Supported) >>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) >>> test VIDIOC_G/S_AUDOUT: OK (Not Supported) >>> Outputs: 0 Audio Outputs: 0 Modulators: 0 >>> >>> Input/Output configuration ioctls: >>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) >>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) >>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) >>> test VIDIOC_G/S_EDID: OK (Not Supported) >>> >>> Control ioctls (Input 0): >>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK >>> test VIDIOC_QUERYCTRL: OK >>> test VIDIOC_G/S_CTRL: OK >>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK >>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK >>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) >>> Standard Controls: 2 Private Controls: 0 >>> >>> Format ioctls (Input 0): >>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK >>> test VIDIOC_G/S_PARM: OK (Not Supported) >>> test VIDIOC_G_FBUF: OK (Not Supported) >>> test VIDIOC_G_FMT: OK >>> test VIDIOC_TRY_FMT: OK >>> test VIDIOC_S_FMT: OK >>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) >>> test Cropping: OK (Not Supported) >>> test Composing: OK (Not Supported) >>> test Scaling: OK (Not Supported) >>> >>> Codec ioctls (Input 0): >>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) >>> test VIDIOC_G_ENC_INDEX: OK (Not Supported) >>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) >>> >>> Buffer ioctls (Input 0): >>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK >>> test VIDIOC_EXPBUF: OK >>> test Requests: OK (Not Supported) >>> >>> Test input 0: >>> >>> Streaming ioctls: >>> test read/write: OK >>> test blocking wait: OK >>> test MMAP (no poll): OK >>> test MMAP (select): OK >>> test MMAP (epoll): OK >>> test USERPTR (no poll): OK (Not Supported) >>> test USERPTR (select): OK (Not Supported) >>> test DMABUF: Cannot test, specify --expbuf-device >>> >>> Total for tegra-video device /dev/video0: 53, Succeeded: 53, Failed: 0, Warnings: 0 >>>