[PATCHv2 0/7] Fix adv7180 and rcar-vin field handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

This series add V4L2_FIELD_ALTERNATE support to the rcar-vin driver and 
changes the field mode reported by adv7180 from V4L2_FIELD_INTERLACED to 
V4L2_FIELD_ALTERNATE.

The change field mode reported by adv7180 was first done by Steve 
Longerbeam (https://lkml.org/lkml/2016/7/23/107), I have kept and 
reworked Steves patch to report V4L2_FIELD_ALTERNATE instead of 
V4L2_FIELD_SEQ_{TB,BT}, after discussions on #v4l this seems more
correct.

The rcar-vin changes contains some bug fixes needed to enable 
V4L2_FIELD_ALTERNATE.

All work is based on top of media-next and is tested on Koelsch. Output 
of 'v4l2-compliance -fs' is attached bellow and I have tested all fields 
using qv4l2 and it looks OK to me. I need to disable 'Enable Video 
Scaling' in the 'Capture' Menu for ODD/EVEN/ALTERNATE or I get a 
horizontally stretched image. Also for ALTERNATE the 1 line difference 
between the fields are noticeable. The image jumps up/down 1 line for 
each other field, but I guess that is normal since the fields are 
different right?

This series touch two drivers which is not a good thing. But I could not 
figure out a good way to post them separately since if the adv7180 parts 
where too be merged before the rcar-vin changes the driver would stop to 
work on the Koelsch. If some one wants this series split in two let me 
know.

* Changes since v1
- Added patch so that V4L2_FIELD_INTERLACED is not treated the same as 
  V4L2_FIELD_INTERLACED_TB. Instead G_STD will be used to get the video 
  standard and make a TB/BT decision based on that.
- Add changelog to Stevens patch which I dropped by mistake when I 
  applied it to my tree.
- Add better commit message, comment explaining that INTERLACED will be 
  used as the default if the subdeivce uses ALTERNATE field mode and 
  implements G_STD.


# v4l2-compliance -d 3 -fs
v4l2-compliance SHA   : 7785594dd82b4fa04585928e5b825a0df73a2774

Driver Info:
	Driver name   : rcar_vin
	Card type     : R_Car_VIN
	Bus info      : platform:e6ef1000.video
	Driver version: 4.7.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/video3 (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
	test for unlimited opens: 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: 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
	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: 1

	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

	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 2x4:
		Crop 720x480@0x0, Compose 6x4@0x0, Stride 32, Field None: OK
		Crop 720x240@0x0, Compose 6x4@0x0, Stride 32, Field Top: OK
		Crop 720x240@0x0, Compose 6x4@0x0, Stride 32, Field Bottom: OK
		Crop 720x240@0x0, Compose 6x4@0x0, Stride 32, Field Interlaced: OK
		Crop 720x240@0x0, Compose 6x4@0x0, Stride 32, Field Alternating: OK
		Crop 720x240@0x0, Compose 6x4@0x0, Stride 32, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 6x4@0x0, Stride 32, Field Interlaced Bottom-Top: OK
	test MMAP for Format NV16, Frame Size 2048x2048:
		Crop 720x480@0x0, Compose 2048x2048@0x0, Stride 2048, Field None: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 2048, Field Top: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 2048, Field Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 2048, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 2048, Field Alternating: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 2048, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 2048, Field Interlaced Bottom-Top: OK
	test MMAP for Format NV16, Frame Size 736x480:
		Crop 720x480@0x0, Compose 736x480@0x0, Stride 736, Field None: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 736, Field Top: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 736, Field Bottom: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 736, Field Interlaced: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 736, Field Alternating: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 736, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 736, Field Interlaced Bottom-Top: OK
	test MMAP for Format YUYV, Frame Size 32x4:
		Crop 720x480@0x0, Compose 32x4@0x0, Stride 64, Field None: OK
		Crop 720x240@0x0, Compose 32x4@0x0, Stride 64, Field Top: OK
		Crop 720x240@0x0, Compose 32x4@0x0, Stride 64, Field Bottom: OK
		Crop 720x240@0x0, Compose 32x4@0x0, Stride 64, Field Interlaced: OK
		Crop 720x240@0x0, Compose 32x4@0x0, Stride 64, Field Alternating: OK
		Crop 720x240@0x0, Compose 32x4@0x0, Stride 64, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 32x4@0x0, Stride 64, Field Interlaced Bottom-Top: OK
	test MMAP for Format YUYV, Frame Size 2048x2048:
		Crop 720x480@0x0, Compose 2048x2048@0x0, Stride 4096, Field None: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Top: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Alternating: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Bottom-Top: OK
	test MMAP for Format YUYV, Frame Size 736x480:
		Crop 720x480@0x0, Compose 736x480@0x0, Stride 1472, Field None: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 1472, Field Top: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 1472, Field Bottom: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 1472, Field Interlaced: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 1472, Field Alternating: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 1472, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 736x480@0x0, Stride 1472, Field Interlaced Bottom-Top: OK
	test MMAP for Format UYVY, Frame Size 2x4:
		Crop 720x480@0x0, Compose 2x4@0x0, Stride 4, Field None: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Top: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Alternating: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced Bottom-Top: OK
	test MMAP for Format UYVY, Frame Size 2048x2048:
		Crop 720x480@0x0, Compose 2048x2048@0x0, Stride 4096, Field None: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Top: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Alternating: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Bottom-Top: OK
	test MMAP for Format UYVY, Frame Size 720x480:
		Crop 720x480@0x0, Compose 720x480@0x0, Stride 1440, Field None: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Top: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Alternating: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced Bottom-Top: OK
	test MMAP for Format RGBP, Frame Size 2x4:
		Crop 720x480@0x0, Compose 2x4@0x0, Stride 4, Field None: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Top: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Alternating: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced Bottom-Top: OK
	test MMAP for Format RGBP, Frame Size 2048x2048:
		Crop 720x480@0x0, Compose 2048x2048@0x0, Stride 4096, Field None: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Top: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Alternating: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Bottom-Top: OK
	test MMAP for Format RGBP, Frame Size 720x480:
		Crop 720x480@0x0, Compose 720x480@0x0, Stride 1440, Field None: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Top: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Alternating: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced Bottom-Top: OK
	test MMAP for Format XR15, Frame Size 2x4:
		Crop 720x480@0x0, Compose 2x4@0x0, Stride 4, Field None: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Top: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Alternating: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 4, Field Interlaced Bottom-Top: OK
	test MMAP for Format XR15, Frame Size 2048x2048:
		Crop 720x480@0x0, Compose 2048x2048@0x0, Stride 4096, Field None: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Top: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Alternating: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 4096, Field Interlaced Bottom-Top: OK
	test MMAP for Format XR15, Frame Size 720x480:
		Crop 720x480@0x0, Compose 720x480@0x0, Stride 1440, Field None: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Top: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Alternating: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 1440, Field Interlaced Bottom-Top: OK
	test MMAP for Format XR24, Frame Size 2x4:
		Crop 720x480@0x0, Compose 2x4@0x0, Stride 8, Field None: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 8, Field Top: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 8, Field Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 8, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 8, Field Alternating: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 8, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2x4@0x0, Stride 8, Field Interlaced Bottom-Top: OK
	test MMAP for Format XR24, Frame Size 2048x2048:
		Crop 720x480@0x0, Compose 2048x2048@0x0, Stride 8192, Field None: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 8192, Field Top: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 8192, Field Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 8192, Field Interlaced: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 8192, Field Alternating: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 8192, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 2048x2048@0x0, Stride 8192, Field Interlaced Bottom-Top: OK
	test MMAP for Format XR24, Frame Size 720x480:
		Crop 720x480@0x0, Compose 720x480@0x0, Stride 2880, Field None: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 2880, Field Top: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 2880, Field Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 2880, Field Interlaced: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 2880, Field Alternating: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 2880, Field Interlaced Top-Bottom: OK
		Crop 720x240@0x0, Compose 720x480@0x0, Stride 2880, Field Interlaced Bottom-Top: OK

Total: 172, Succeeded: 172, Failed: 0, Warnings: 0

Niklas Söderlund (6):
  media: rcar-vin: make V4L2_FIELD_INTERLACED standard dependent
  media: rcar-vin: allow field to be changed
  media: rcar-vin: fix bug in scaling
  media: rcar-vin: fix height for TOP and BOTTOM fields
  media: rcar-vin: add support for V4L2_FIELD_ALTERNATE
  media: adv7180: fill in mbus format in set_fmt

Steve Longerbeam (1):
  media: adv7180: fix field type

 drivers/media/i2c/adv7180.c                 |  21 ++--
 drivers/media/platform/rcar-vin/rcar-dma.c  |  34 ++++--
 drivers/media/platform/rcar-vin/rcar-v4l2.c | 156 +++++++++++++++++-----------
 3 files changed, 136 insertions(+), 75 deletions(-)

-- 
2.9.0




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux