[media] v4l2-ioctl.c: improve cropcap compatibility code
authorHans Verkuil <hverkuil@xs4all.nl>
Fri, 15 Apr 2016 09:27:28 +0000 (06:27 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 6 May 2016 18:43:45 +0000 (15:43 -0300)
commit95dd7b7e30f385c1c2d5e41457c082c5f6c535b3
treeb0839be230e8587729def14fc77e6ef79404089c
parent92021e074afe25a607e24ec8f28d3daebca5d434
[media] v4l2-ioctl.c: improve cropcap compatibility code

- Add a check for the case that both the cropcap and g_selection ops
  are NULL. This shouldn't happen, but I feel happier if the code
  guards against this.

- If g_selection exists, then ignore ENOTTY and ENOIOCTLCMD error
  codes from cropcap. Just assume square pixelaspect ratio in that
  case. This situation can happen if the bridge driver's cropcap op
  calls the corresponding subdev's op. So the cropcap ioctl is set,
  but it might return ENOIOCTLCMD anyway. In the past this would
  just return an error which is wrong.

- Call cropcap first and let g_selection overwrite the bounds and
  defrect. This safeguards against subdev cropcap implementations
  that set those rectangles as well. What g_selection returns has
  priority over what such cropcap implementations return.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/v4l2-core/v4l2-ioctl.c