twx-linux/drivers
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
..
accessibility
acpi Merge branches 'acpi-soc' and 'acpi-processor' 2018-06-21 14:19:08 +02:00
amba
android
ata
atm
auxdisplay
base Power management changes for 4.18-rc2 2018-06-22 05:57:36 +09:00
bcma
block for-linus-20180623 2018-06-24 06:33:54 +08:00
bluetooth
bus
cdrom
char Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2018-06-24 06:31:54 +08:00
clk
clocksource Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-24 19:16:42 +08:00
connector
cpufreq cpufreq: intel_pstate: Fix scaling max/min limits with Turbo 3.0 2018-06-19 10:40:29 +02:00
cpuidle
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2018-06-24 06:31:54 +08:00
dax
dca
devfreq
dio
dma
dma-buf
edac
eisa
extcon
firewire
firmware efi/libstub/tpm: Initialize efi_physical_addr_t vars to zero for mixed mode 2018-06-22 10:58:27 +02:00
fmc
fpga
fsi
gpio
gpu Fixes for v4.18-rc2: 2018-06-22 11:03:43 +10:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2018-06-20 16:42:39 +09:00
hsi
hv
hwmon
hwspinlock
hwtracing
i2c
ide
idle
iio
infiniband 4.18-rc 2018-06-21 07:22:30 +09:00
input
iommu
ipack
irqchip irqchip/gic-v3-its: Fix reprogramming of redistributors on CPU hotplug 2018-06-22 14:22:02 +02:00
isdn
leds
lightnvm for-linus-20180623 2018-06-24 06:33:54 +08:00
macintosh
mailbox
mcb
md
media media: imx274: add cropping support via SELECTION API 2018-07-27 12:58:07 -04:00
memory
memstick
message
mfd
misc
mmc
mtd
mux
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-06-21 07:13:42 +09:00
nfc
ntb
nubus
nvdimm
nvme nvme-pci: limit max IO size and segments to avoid high order allocations 2018-06-21 18:59:46 +02:00
nvmem
of
opp PM / OPP: Update voltage in case freq == old_freq 2018-06-19 15:53:32 +05:30
oprofile
parisc
parport
pci
pcmcia
perf
phy
pinctrl
platform
pnp
power
powercap
pps
ps3
ptp ptp: replace getnstimeofday64() with ktime_get_real_ts64() 2018-06-20 07:59:53 +09:00
pwm
rapidio
ras
regulator
remoteproc
reset
rpmsg
rtc
s390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2018-06-19 07:44:51 +09:00
sbus
scsi for-linus-20180623 2018-06-24 06:33:54 +08:00
sfi
sh
siox
slimbus
sn
soc
soundwire
spi
spmi
ssb
staging media: imx: add support for RGB565_2X8 on parallel bus 2018-07-04 09:27:01 -04:00
target
tc
tee
thermal
thunderbolt
tty
uio
usb
uwb
vfio
vhost
video
virt
virtio
visorbus
vlynq
vme
w1
watchdog
xen xen: fixes for 4.18-rc2 2018-06-23 20:44:11 +08:00
zorro
Kconfig
Makefile