linux/drivers/media/i2c
Luca Ceresoli 39dd23dc9d media: imx274: add cropping support via SELECTION API
Currently this driver does not support cropping. The supported modes
are the following, all capturing the entire area:

 - 3840x2160, 1:1 binning (native sensor resolution)
 - 1920x1080, 2:1 binning
 - 1280x720,  3:1 binning

The VIDIOC_SUBDEV_S_FMT ioctl chooses among these 3 configurations the
one that matches the requested format.

Add cropping support via VIDIOC_SUBDEV_S_SELECTION: with target
V4L2_SEL_TGT_CROP to choose the captured area, with
V4L2_SEL_TGT_COMPOSE to choose the output resolution.

To maintain backward compatibility we also allow setting the compose
format via VIDIOC_SUBDEV_S_FMT. To obtain this, compose rect and
output format are computed in the common helper function
__imx274_change_compose(), which sets both to the same width/height
values.

Cropping also calls __imx274_change_compose() whenever cropping rect
size changes in order to reset the compose rect (and output format
size) for 1:1 binning.

Also rename enum imx274_mode to imx274_binning (and its values from
IMX274_MODE_BINNING_* to IMX274_BINNING_*). Without cropping, the two
naming are equivalent. With cropping, the resolution could be
different, e.g. using 2:1 binning mode to crop 1200x960 and output a
600x480 format. Using binning in the names avoids any
misunderstanding. For the same reason, replace the 'size' field in
struct imx274_frmfmt with 'bin_ratio'.

[Sakari Ailus: Remove leftover condition in imx274_apply_trimming]

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
2018-07-27 12:58:07 -04:00
..
adv748x media: i2c: adv748x: csi2: set entity function to video interface bridge 2018-06-28 07:50:54 -04:00
cx25840 media: cx25840: add kernel-doc description of struct cx25840_state 2018-07-04 09:38:49 -04:00
et8ek8 media: media/i2c: add missing entity functions 2018-07-25 08:04:00 -04:00
m5mols media: m5mols: fix some kernel-doc markups 2017-11-30 04:18:55 -05:00
s5c73m3 media: s5c73m3-core: fix logic on a timeout condition 2018-03-07 05:55:05 -05:00
smiapp media: smiapp: fix debug message 2018-07-24 14:54:05 -04:00
soc_camera media: soc_camera: ov772x: correct setting of banding filter 2018-06-28 09:22:57 -04:00
ad5820.c [media] ad5820: unregister async sub-device 2017-06-08 12:34:17 -03:00
ad9389b.c media: ad9389b/adv7511: set proper media entity function 2018-07-25 07:51:58 -04:00
adp1653.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
adv7170.c [media] adv7170: drop redundant ret local 2017-01-30 15:47:05 -02:00
adv7175.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
adv7180.c media: adv7180: add g_frame_interval support 2018-07-27 08:04:04 -04:00
adv7183_regs.h scripts/spelling.txt: add "swithc" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
adv7183.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
adv7343_regs.h
adv7343.c media: fix usage of whitespaces and on indentation 2018-01-04 13:12:01 -05:00
adv7393_regs.h
adv7393.c media: fix usage of whitespaces and on indentation 2018-01-04 13:12:01 -05:00
adv7511.c media: ad9389b/adv7511: set proper media entity function 2018-07-25 07:51:58 -04:00
adv7604.c media: rename MEDIA_ENT_F_DTV_DECODER to MEDIA_ENT_F_DV_DECODER 2018-07-25 07:49:28 -04:00
adv7842.c media: i2c: adv7842: Replace mdelay() with msleep() and usleep_range() in adv7842_ddr_ram_test() 2018-07-27 08:11:13 -04:00
ak881x.c [media] drivers: media: i2c: ak881x: constify v4l2_subdev_* structures 2017-02-03 09:33:55 -02:00
ak7375.c media: ak7375: Add ak7375 lens voice coil driver 2018-07-04 07:13:34 -04:00
aptina-pll.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
aptina-pll.h [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
bt819.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
bt856.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
bt866.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
cs53l32a.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
cs3308.c [media] media/i2c: Delete owner assignment 2016-09-06 16:21:24 -03:00
cs5345.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
dw9714.c media: dw9714: Update to SPDX license identifier 2018-04-04 06:12:53 -04:00
dw9807-vcm.c media: dw9807-vcm: Recognise this is just the VCM bit of the device 2018-07-27 12:33:09 -04:00
imx258.c media: imx258: Check the rotation property has a value of 180 2018-06-27 09:49:11 -04:00
imx274.c media: imx274: add cropping support via SELECTION API 2018-07-27 12:58:07 -04:00
ir-kbd-i2c.c media: rc: probe zilog transmitter when zilog receiver is found 2018-05-04 08:22:36 -04:00
Kconfig media: ov2680: Add Omnivision OV2680 sensor driver 2018-07-27 12:40:48 -04:00
ks0127.c media: replace all <spaces><tab> occurrences 2018-01-04 13:15:05 -05:00
ks0127.h [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
lm3560.c media: i2c: lm3560: add support for lm3559 chip 2018-06-28 07:10:01 -04:00
lm3646.c [media] media framework: rename pads init function to media_entity_pads_init() 2016-01-11 12:19:03 -02:00
m52790.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
Makefile media: ov2680: Add Omnivision OV2680 sensor driver 2018-07-27 12:40:48 -04:00
max2175.c media: max2175: fix location of driver's companion documentation 2018-06-15 18:10:41 -03:00
max2175.h [media] media: i2c: max2175: Add MAX2175 support 2017-06-20 07:02:43 -03:00
ml86v7667.c [media] drivers: media: i2c: ml86v7667: constify v4l2_subdev_* structures 2017-02-03 09:34:43 -02:00
msp3400-driver.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
msp3400-driver.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
msp3400-kthreads.c treewide: Align function definition open/close braces 2018-03-26 11:13:09 +02:00
mt9m032.c media: media/i2c: add missing entity functions 2018-07-25 08:04:00 -04:00
mt9m111.c media: entity: Add a nop variant of media_entity_cleanup 2018-01-23 08:12:01 -05:00
mt9p031.c media: media/i2c: add missing entity functions 2018-07-25 08:04:00 -04:00
mt9t001.c media: media/i2c: add missing entity functions 2018-07-25 08:04:00 -04:00
mt9t112.c media: i2c: mt9t112: Remove soc_camera dependencies 2018-03-21 15:29:07 -04:00
mt9v011.c media: convert g/s_parm to g/s_frame_interval in subdevs 2018-02-22 12:27:35 -05:00
mt9v032.c media: media/i2c: add missing entity functions 2018-07-25 08:04:00 -04:00
mt9v111.c media: i2c: Add driver for Aptina MT9V111 2018-07-27 12:36:51 -04:00
noon010pc30.c [media] drivers: media: i2c: constify v4l2_subdev_* structures 2017-02-03 09:23:19 -02:00
ov772x.c media: ov772x: create subdevice device node 2018-06-28 09:19:03 -04:00
ov2640.c media: ov2640: make s_ctrl() work in power-down mode 2018-05-17 06:22:08 -04:00
ov2659.c media: entity: Add a nop variant of media_entity_cleanup 2018-01-23 08:12:01 -05:00
ov2680.c media: ov2680: Add Omnivision OV2680 sensor driver 2018-07-27 12:40:48 -04:00
ov2685.c media: ov2685: Remove owner assignment from i2c_driver 2018-04-04 06:12:53 -04:00
ov5640.c media: ov5640: do not change mode if format or frame interval is unchanged 2018-07-24 14:53:36 -04:00
ov5645.c media: ov5645: Supported external clock is 24MHz 2018-07-24 15:00:22 -04:00
ov5647.c media: drivers: remove "/**" from non-kernel-doc comments 2017-11-30 04:19:03 -05:00
ov5670.c media: ov5670: Update to SPDX identifier 2018-04-04 06:12:53 -04:00
ov5695.c media: ov5695: Remove owner assignment from i2c_driver 2018-05-04 14:33:25 -04:00
ov6650.c media: convert g/s_parm to g/s_frame_interval in subdevs 2018-02-22 12:27:35 -05:00
ov7251.c media: Add a driver for the ov7251 camera sensor 2018-05-17 06:22:08 -04:00
ov7640.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
ov7670.c media: i2c: ov7670: Put ep fwnode after use 2018-07-24 15:01:27 -04:00
ov7740.c media: ov7740: Set subdev HAS_EVENT flag 2018-04-23 13:58:31 -04:00
ov9650.c media: i2c: ov9650: fix potential integer overflow in __ov965x_set_frame_interval 2018-02-23 03:03:32 -05:00
ov13858.c media: ov13858: Remove owner assignment from i2c_driver 2018-05-04 14:33:48 -04:00
rj54n1cb0c.c media: i2c: rj54n1: Remove soc_camera dependencies 2018-06-28 07:27:11 -04:00
s5k4ecgx.c [media] media/i2c: Delete owner assignment 2016-09-06 16:21:24 -03:00
s5k5baf.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
s5k6a3.c media: s5k6a3: document some fields at struct s5k6a3 2017-11-30 04:18:57 -05:00
s5k6aa.c media: s5k6aa: describe some function parameters 2017-11-30 04:18:58 -05:00
saa711x_regs.h MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
saa717x.c media: replace all <spaces><tab> occurrences 2018-01-04 13:15:05 -05:00
saa6588.c [poll] annotate SAA6588_CMD_POLL users 2018-02-15 13:11:48 -05:00
saa6752hs.c media: replace all <spaces><tab> occurrences 2018-01-04 13:15:05 -05:00
saa7110.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
saa7115.c MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
saa7127.c media: replace all <spaces><tab> occurrences 2018-01-04 13:15:05 -05:00
saa7185.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
smiapp-pll.c [media] smiapp-pll: Don't complain aloud about failing PLL calculation 2016-10-21 15:15:06 -02:00
smiapp-pll.h
sony-btf-mpx.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
sr030pc30.c media: sr030pc30: prevent array underflow in try_fmt() 2018-03-06 08:20:22 -05:00
tc358743_regs.h media: i2c: add SPDX license info 2018-02-14 13:16:31 -05:00
tc358743.c media: tc358743: release device_node in tc358743_probe_of() 2018-06-28 06:38:43 -04:00
tda1997x_regs.h media: i2c: Add TDA1997x HDMI receiver driver 2018-02-22 12:53:32 -05:00
tda1997x.c media: rename MEDIA_ENT_F_DTV_DECODER to MEDIA_ENT_F_DV_DECODER 2018-07-25 07:49:28 -04:00
tda7432.c MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
tda9840.c media: tda9840: cleanup a warning 2018-03-23 07:48:08 -04:00
tea6415c.c [media] i2c: Drop owner assignment from i2c_driver 2015-08-11 13:00:15 -03:00
tea6415c.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tea6420.c [media] i2c: Drop owner assignment from i2c_driver 2015-08-11 13:00:15 -03:00
tea6420.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ths7303.c media: replace all <spaces><tab> occurrences 2018-01-04 13:15:05 -05:00
ths8200_regs.h
ths8200.c media: ths8200: constify i2c_device_id 2017-08-26 08:43:40 -04:00
tlv320aic23b.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
tvaudio.c media: tvaudio: improve error handling 2018-03-23 06:54:32 -04:00
tvp514x_regs.h [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
tvp514x.c media: adv7180/tvp514x/tvp7002: fix entity function 2018-07-25 07:52:42 -04:00
tvp5150_reg.h MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
tvp5150.c media: Revert "[media] tvp5150: fix pad format frame height" 2018-06-28 07:58:23 -04:00
tvp7002_reg.h MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
tvp7002.c media: adv7180/tvp514x/tvp7002: fix entity function 2018-07-25 07:52:42 -04:00
tw2804.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
tw9903.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
tw9906.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
tw9910.c media: tw9910: Replace msleep(1) with usleep_range 2018-03-06 11:57:16 -05:00
uda1342.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
upd64031a.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
upd64083.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
video-i2c.c media: video-i2c: hwmon: fix return value from amg88xx_hwmon_init() 2018-07-27 08:10:34 -04:00
vp27smpx.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
vpx3220.c media: replace all <spaces><tab> occurrences 2018-01-04 13:15:05 -05:00
vs6624_regs.h [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
vs6624.c media: i2c: vs6624: Replace mdelay() with msleep() and usleep_range() in vs6624_probe() 2018-07-27 08:11:57 -04:00
wm8739.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
wm8775.c [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00