Difference between revisions of "R-Car/Tests:rcar-vin"

From eLinux.org
Jump to: navigation, search
(Created page with "This document describes how to test the VIN functionality on Renesas R-Car Gen2 and Gen3. == Get the patches == Ideally all the code to test VIN should be available in renesa...")
 
Line 1: Line 1:
This document describes how to test the VIN functionality on Renesas R-Car Gen2 and Gen3.
+
This document describes how to test the VIN and CSI2 (only present on Gen3) functionality on Renesas R-Car Gen2 and Gen3.
  
 
== Get the patches ==
 
== Get the patches ==
 
Ideally all the code to test VIN should be available in renesas-drivers, unfortunate they are not (yet).
 
Ideally all the code to test VIN should be available in renesas-drivers, unfortunate they are not (yet).
  
The driver itself (rcar-vin) will soon be available form renesas-drivers, and that is all that is needed to test VIN on Gen2.
+
For Gen2 testing all that is need is the rcar-vin driver itself and that will soon make its way to the kernel and renesas-drivers, it's currently sitting in media-next.
On Gen3 there are more things missing beside the rcar-vin driver itself to be able to test the driver.
 
It is the rcar-csi2 and the adv7482 device drivers that are missing, they are however available in the Renesas BSP.
 
  
To ease the testing all required patches needed for Gen3 (and Gen2 until it's available in renesas-drivers) can be found at:
+
For Gen3 testing a rcar-vin driver with Gen3 support is needed together with drivers for CSI2 and ADV7482.
 +
Prototypes for all these components are public and will soon (hopefully) be available in renesas-drivers.
 +
In addition to the drivers DT needs to be set up to hookup these drivers.
 +
 
 +
To ease the testing all required patches for rcar-vin Gen3 (and Gen2 until it's available in upstream), CSI2, ADV7482, and DT modifications can be found at:
  
 
https://git.ragnatech.se/linux rcar-vin-gen3
 
https://git.ragnatech.se/linux rcar-vin-gen3

Revision as of 08:03, 27 June 2016

This document describes how to test the VIN and CSI2 (only present on Gen3) functionality on Renesas R-Car Gen2 and Gen3.

Get the patches

Ideally all the code to test VIN should be available in renesas-drivers, unfortunate they are not (yet).

For Gen2 testing all that is need is the rcar-vin driver itself and that will soon make its way to the kernel and renesas-drivers, it's currently sitting in media-next.

For Gen3 testing a rcar-vin driver with Gen3 support is needed together with drivers for CSI2 and ADV7482. Prototypes for all these components are public and will soon (hopefully) be available in renesas-drivers. In addition to the drivers DT needs to be set up to hookup these drivers.

To ease the testing all required patches for rcar-vin Gen3 (and Gen2 until it's available in upstream), CSI2, ADV7482, and DT modifications can be found at:

https://git.ragnatech.se/linux rcar-vin-gen3

Boot the kernel

You should see this on successful probe (this is from Gen3):

rcar-vin e6ef0000.video: Device registered as video22
rcar-vin e6ef1000.video: Device registered as video23
rcar-vin e6ef2000.video: Device registered as video24
rcar-vin e6ef3000.video: Device registered as video25
rcar-vin e6ef4000.video: Device registered as video26
rcar-vin e6ef5000.video: Device registered as video27
rcar-vin e6ef6000.video: Device registered as video28
rcar-vin e6ef7000.video: Device registered as video29

Use v4l-utils to test

The v4l2-utils (git://linuxtv.org/v4l-utils.git) provide two tools which are helpful in testing rcar-vin.

qv4l2

A GUI tool which lets you view the video from a rcar-vin device and test a wide range of different input parameters. Start the tool and specifying which video device you wish to operate on using the -d parameter, the video device number for the different video nodes can be observed in the boot log as shown above.

# qv4l2 -d 23

v4l2-compliance

A compliance test tool that verifies the drivers user-space interface. Start the tool and specifying which video device you wish to operate on using the -d parameter, the video device number for the different video nodes can be observed in the boot log as shown above. There are a few other options worth testing, --stream-all-formats (-f) and --streaming=<count> (-s) will test that the driver actually can grab frames in different formats.

# v4l2-compliance -d 23 -s -f
Driver Info:
	Driver name   : rcar_vin
	Card type     : R_Car_VIN
	Bus info      : platform:e6ef1000.video
	Driver version: 4.6.0
	Capabilities  : 0x85200001
		Video Capture
		Read/Write
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps   : 0x05200001
		Video Capture
		Read/Write
		Streaming
		Extended Pix Format

Compliance test for device /dev/video23 (not using libv4l2):

Required ioctls:
	test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
	test second video open: OK
	test VIDIOC_QUERYCAP: OK
	test VIDIOC_G/S_PRIORITY: OK

Debug ioctls:
	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
	test VIDIOC_LOG_STATUS: OK

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: 2 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
	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)

Test input 0:

	Control ioctls:
		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: 5 Private Controls: 0

	Format ioctls:
		test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
		test VIDIOC_G/S_PARM: OK
		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
		test Composing: OK
		test Scaling: OK (Not Supported)

	Codec ioctls:
		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:
		test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
		test VIDIOC_EXPBUF: OK

Test input 1:

	Control ioctls:
		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: 5 Private Controls: 0

	Format ioctls:
		test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
		test VIDIOC_G/S_PARM: OK
		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
		test Composing: OK
		test Scaling: OK (Not Supported)

	Codec ioctls:
		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:
		test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
		test VIDIOC_EXPBUF: OK

Test input 0:

Streaming ioctls:
	test read/write: OK
	test MMAP: OK                                     
	test USERPTR: OK (Not Supported)
	test DMABUF: Cannot test, specify --expbuf-device

Stream using all formats:
	test MMAP for Format NV16, Frame Size 720x576:
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 736, Field None: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 736, Field Top: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 736, Field Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 736, Field Interlaced: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 736, Field Interlaced Top-Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 736, Field Interlaced Bottom-Top: OK   
		Crop 6x4@0x0, Compose 720x576@0x0, Stride 736, Field Interlaced, SelTest: OK   
		Crop 6x4@0x0, Compose 6x2@0x0, Stride 736, Field Interlaced, SelTest: OK   
		Crop 720x576@0x0, Compose 6x2@0x0, Stride 736, Field Interlaced, SelTest: OK   
		Crop 6x4@0x0, Compose 736x576@0x0, Stride 736, Field Interlaced, SelTest: OK   
		Crop 720x576@0x0, Compose 736x576@0x0, Stride 736, Field Interlaced, SelTest: OK   
	test MMAP for Format YUYV, Frame Size 736x576:
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field None: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Top: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Top-Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Bottom-Top: OK   
		Crop 6x4@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced, SelTest: OK   
		Crop 6x4@0x0, Compose 6x2@0x0, Stride 1440, Field Interlaced, SelTest: OK   
		Crop 720x576@0x0, Compose 6x2@0x0, Stride 1440, Field Interlaced, SelTest: OK   
	test MMAP for Format UYVY, Frame Size 720x576:
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field None: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Top: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Top-Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Bottom-Top: OK   
	test MMAP for Format RGBP, Frame Size 720x576:
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field None: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Top: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Top-Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Bottom-Top: OK   
	test MMAP for Format XR15, Frame Size 720x576:
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field None: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Top: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Top-Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 1440, Field Interlaced Bottom-Top: OK   
	test MMAP for Format XR24, Frame Size 720x576:
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 2880, Field None: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 2880, Field Top: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 2880, Field Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 2880, Field Interlaced: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 2880, Field Interlaced Top-Bottom: OK   
		Crop 720x576@0x0, Compose 720x576@0x0, Stride 2880, Field Interlaced Bottom-Top: OK   

Total: 110, Succeeded: 110, Failed: 0, Warnings: 0