linux-stable/drivers
Paul Kocialkowski e3185e1d7c media: staging: media: Add support for the Allwinner A31 ISP
Some Allwinner platforms come with an Image Signal Processor, which
supports various features in order to enhance and transform data
received by image sensors into good-looking pictures. In most cases,
the data is raw bayer, which gets internally converted to RGB and
finally YUV, which is what the hardware produces.

This driver supports ISPs that are similar to the A31 ISP, which was
the first standalone ISP found in Allwinner platforms. Simpler ISP
blocks were found in the A10 and A20, where they are tied to a CSI
controller. Newer generations of Allwinner SoCs (starting with the
H6, H616, etc) come with a new camera subsystem and revised ISP.
Even though these previous and next-generation ISPs are somewhat
similar to the A31 ISP, they have enough significant differences to
be out of the scope of this driver.

While the ISP supports many features, including 3A and many
enhancement blocks, this implementation is limited to the following:
- V3s (V3/S3) platform support;
- Bayer media bus formats as input;
- Semi-planar YUV (NV12/NV21) as output;
- Debayering with per-component gain and offset configuration;
- 2D noise filtering with configurable coefficients.

Since many features are missing from the associated uAPI, the driver
is aimed to integrate staging until all features are properly
described.

On the technical side, it uses the v4l2 and media controller APIs,
with a video node for capture, a processor subdev and a video node
for parameters submission. A specific uAPI structure and associated
v4l2 meta format are used to configure parameters of the supported
modules.

One particular thing about the hardware is that configuration for
module registers needs to be stored in a DMA buffer and gets copied
to actual registers by the hardware at the next vsync, when instructed
by a flag. This is handled by the "state" mechanism in the driver.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-11-25 07:22:59 +00:00
..
accessibility
acpi cxl fixes for 6.1-rc4 2022-11-06 13:09:52 -08:00
amba
android
ata ata: palmld: fix return value check in palmld_pata_probe() 2022-10-31 20:28:05 +09:00
atm
auxdisplay
base ACPI and device properties fixes for 6.1-rc3 2022-10-28 16:48:29 -07:00
bcma
block block-6.1-2022-11-05 2022-11-05 09:02:28 -07:00
bluetooth Bluetooth: virtio_bt: Use skb_put to set length 2022-11-02 14:15:42 -07:00
bus
cdrom
char random: use arch_get_random*_early() in random_init() 2022-10-29 00:24:03 +02:00
clk
clocksource
comedi
connector
counter
cpufreq
cpuidle
crypto
cxl cxl/region: Recycle region ids 2022-11-04 16:03:43 -07:00
dax
dca
devfreq
dio
dma
dma-buf
edac
eisa
extcon
firewire
firmware Second batch of EFI fixes for v6.1 2022-11-04 14:37:25 -07:00
fpga
fsi
gnss
gpio
gpu Merge tag 'drm-intel-fixes-2022-11-03' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes 2022-11-04 09:30:18 +10:00
greybus
hid
hsi
hte
hv
hwmon Revert "hwmon: (pmbus) Add regulator supply into macro" 2022-11-04 16:47:01 -07:00
hwspinlock
hwtracing
i2c i2c: i801: add lis3lv02d's I2C address for Vostro 5568 2022-11-01 13:46:30 +01:00
i3c
idle
iio
infiniband
input
interconnect
iommu
ipack
irqchip
isdn isdn: mISDN: netjet: fix wrong check of device registration 2022-11-02 12:34:48 +00:00
leds
macintosh
mailbox
mcb
md
media media: sun6i-csi: Request a shared interrupt 2022-11-25 07:18:18 +00:00
memory
memstick
message
mfd
misc
mmc
most
mtd
mux
net stmmac: dwmac-loongson: fix invalid mdio_node 2022-11-02 20:30:51 -07:00
nfc nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send() 2022-10-30 21:43:26 +00:00
ntb
nubus
nvdimm
nvme block-6.1-2022-10-28 2022-10-29 18:06:52 -07:00
nvmem
of
opp
parisc
parport
pci
pcmcia
peci
perf
phy
pinctrl
platform LoongArch fixes for v6.1-rc3 2022-10-30 09:44:06 -07:00
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator
remoteproc
reset
rpmsg
rtc
s390
sbus
scsi SCSI fixes on 20221028 2022-10-29 18:12:45 -07:00
sh
siox
slimbus
soc soc: imx: imx93-pd: Fix the error handling path of imx93_pd_probe() 2022-10-29 16:26:32 +08:00
soundwire
spi
spmi
ssb
staging media: staging: media: Add support for the Allwinner A31 ISP 2022-11-25 07:22:59 +00:00
target
tc
tee
thermal
thunderbolt
tty
ufs
uio
usb fbdev fixes for kernel 6.1-rc3: 2022-10-30 11:31:14 -07:00
vdpa
vfio
vhost
video fbdev fixes for kernel 6.1-rc3: 2022-10-30 11:31:14 -07:00
virt
virtio
vlynq
w1
watchdog linux-watchdog 6.1-rc4 tag 2022-11-01 12:21:53 -07:00
xen
zorro
Kconfig
Makefile