]> Git Repo - linux.git/commitdiff
Merge tag 'media/v6.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
authorLinus Torvalds <[email protected]>
Fri, 15 Mar 2024 18:36:54 +0000 (11:36 -0700)
committerLinus Torvalds <[email protected]>
Fri, 15 Mar 2024 18:36:54 +0000 (11:36 -0700)
Pull media updates from Mauro Carvalho Chehab:

 - DVB budget legacy API was finally documented. It took only 20+ years
   to get some documentation about it...

 - hantro driver has gained support for STM32MP25 VDEC/VENC

 - rkisp1 has gained support for i.MX8MP

 - atomisp got rid of two items from its todo list. Still 5 items
   pending for moving it out of staging

 - lots of driver fixes, cleanups and improvements

* tag 'media/v6.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (252 commits)
  media: rcar-isp: Disallow unbind of devices
  media: usbtv: Remove useless locks in usbtv_video_free()
  media: mediatek: vcodec: avoid -Wcast-function-type-strict warning
  media: ttpci: fix two memleaks in budget_av_attach
  media: go7007: fix a memleak in go7007_load_encoder
  media: dvb-frontends: avoid stack overflow warnings with clang
  media: pvrusb2: fix uaf in pvr2_context_set_notify
  media: usb: s2255: Refactor s2255_get_fx2fw
  media: ti: j721e-csi2rx: Convert to platform remove callback returning void
  media: stm32-dcmipp: Convert to platform remove callback returning void
  media: nxp: imx8-isi: Convert to platform remove callback returning void
  media: nuvoton: Convert to platform remove callback returning void
  media: chips-media: wave5: Convert to platform remove callback returning void
  media: chips-media: wave5: Remove unnecessary semicolons
  media: i2c: imx290: Fix IMX920 typo
  media: platform: replace of_graph_get_next_endpoint()
  media: i2c: replace of_graph_get_next_endpoint()
  media: ivsc: csi: Make use of sub-device state
  media: ivsc: csi: Swap SINK and SOURCE pads
  media: ipu-bridge: Serialise calls to IPU bridge init
  ...

1  2 
MAINTAINERS
drivers/media/platform/qcom/venus/core.h
drivers/media/platform/rockchip/rkisp1/rkisp1-capture.c
drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c
include/media/v4l2-common.h

diff --combined MAINTAINERS
index e58171cb32fd624acec986eba3ae4a5d61af7760,83b7d3745336622b9b563dab43873105148e6f5a..fd00b0fc5b70ecf982cee0ce932843f3e3a091e4
@@@ -24,7 -24,7 +24,7 @@@ Descriptions of section entries and pre
           filing info, a direct bug tracker link, or a mailto: URI.
        C: URI for *chat* protocol, server and channel where developers
           usually hang out, for example irc://server/channel.
 -      P: Subsystem Profile document for more details submitting
 +      P: *Subsystem Profile* document for more details submitting
           patches to the given subsystem. This is either an in-tree file,
           or a URI. See Documentation/maintainer/maintainer-entry-profile.rst
           for details.
@@@ -614,7 -614,7 +614,7 @@@ AGPGART DRIVE
  M:    David Airlie <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://anongit.freedesktop.org/drm/drm
 +T:    git https://gitlab.freedesktop.org/drm/kernel.git
  F:    drivers/char/agp/
  F:    include/linux/agp*
  F:    include/uapi/linux/agp*
@@@ -897,12 -897,6 +897,12 @@@ Q:       https://patchwork.kernel.org/project
  F:    drivers/infiniband/hw/efa/
  F:    include/uapi/rdma/efa-abi.h
  
 +AMD ADDRESS TRANSLATION LIBRARY (ATL)
 +M:    Yazen Ghannam <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/ras/amd/atl/*
 +
  AMD AXI W1 DRIVER
  M:    Kris Chaplin <[email protected]>
  R:    Thomas Delev <[email protected]>
@@@ -1104,14 -1098,6 +1104,14 @@@ F:    Documentation/devicetree/bindings/pe
  F:    drivers/perf/amlogic/
  F:    include/soc/amlogic/
  
 +AMPHENOL CHIPCAP 2 HUMIDITY-TEMPERATURE IIO DRIVER
 +M:    Javier Carrasco <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/amphenol,chipcap2.yaml
 +F:    Documentation/hwmon/chipcap2.rst
 +F:    drivers/hwmon/chipcap2.c
 +
  AMPHION VPU CODEC V4L2 DRIVER
  M:    Ming Qian <[email protected]>
  M:    Zhou Peng <[email protected]>
@@@ -1398,9 -1384,17 +1398,9 @@@ F:     drivers/iio/amplifiers/hmc425a.
  F:    drivers/staging/iio/*/ad*
  X:    drivers/iio/*/adjd*
  
 -ANALOG DEVICES INC MAX31760 DRIVER
 -M:    Ibrahim Tilki <[email protected]>
 -S:    Maintained
 -W:    http://wiki.analog.com/
 -W:    https://ez.analog.com/linux-software-drivers
 -F:    Documentation/devicetree/bindings/hwmon/adi,max31760.yaml
 -F:    Documentation/hwmon/max31760.rst
 -F:    drivers/hwmon/max31760.c
 -
  ANALOGBITS PLL LIBRARIES
  M:    Paul Walmsley <[email protected]>
 +M:    Samuel Holland <[email protected]>
  S:    Supported
  F:    drivers/clk/analogbits/*
  F:    include/linux/clk/analogbits*
@@@ -2162,7 -2156,7 +2162,7 @@@ M:      Shawn Guo <[email protected]
  M:    Sascha Hauer <[email protected]>
  R:    Pengutronix Kernel Team <[email protected]>
  R:    Fabio Estevam <[email protected]>
 -R:    NXP Linux Team <[email protected]>
 +L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
@@@ -2471,7 -2465,6 +2471,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/arm/ste-*
  F:    Documentation/devicetree/bindings/arm/ux500.yaml
  F:    Documentation/devicetree/bindings/arm/ux500/
 +F:    Documentation/devicetree/bindings/gpio/st,nomadik-gpio.yaml
  F:    Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml
  F:    arch/arm/boot/dts/st/ste-*
  F:    arch/arm/mach-nomadik/
@@@ -2480,7 -2473,6 +2480,7 @@@ F:      drivers/clk/clk-nomadik.
  F:    drivers/clocksource/clksrc-dbx500-prcmu.c
  F:    drivers/dma/ste_dma40*
  F:    drivers/pmdomain/st/ste-ux500-pm-domain.c
 +F:    drivers/gpio/gpio-nomadik.c
  F:    drivers/hwspinlock/u8500_hsem.c
  F:    drivers/i2c/busses/i2c-nomadik.c
  F:    drivers/iio/adc/ab8500-gpadc.c
@@@ -2550,14 -2542,13 +2550,14 @@@ F:   drivers/*/*/*wpcm
  F:    drivers/*/*wpcm*
  
  ARM/NXP S32G ARCHITECTURE
 -M:    Chester Lin <[email protected]>
 -R:    Andreas Färber <[email protected]>
 +R:    Chester Lin <[email protected]>
  R:    Matthias Brugger <[email protected]>
 -R:    NXP S32 Linux Team <[email protected]>
 +R:    Ghennadi Procopciuc <[email protected]>
 +L:    NXP S32 Linux Team <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/freescale/s32g*.dts*
 +F:    drivers/pinctrl/nxp/
  
  ARM/Orion SoC/Technologic Systems TS-78xx platform support
  M:    Alexander Clouter <[email protected]>
@@@ -2761,6 -2752,7 +2761,7 @@@ M:      Andrzej Hajda <[email protected]
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
  S:    Maintained
+ F:    Documentation/devicetree/bindings/media/samsung,s5p-mfc.yaml
  F:    drivers/media/platform/samsung/s5p-mfc/
  
  ARM/SOCFPGA ARCHITECTURE
@@@ -3191,12 -3183,6 +3192,12 @@@ S:    Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
  F:    drivers/platform/x86/asus-tf103c-dock.c
  
 +ASUS ROG RYUJIN AIO HARDWARE MONITOR DRIVER
 +M:    Aleksa Savic <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/hwmon/asus_rog_ryujin.c
 +
  ASUS WIRELESS RADIO CONTROL DRIVER
  M:    João Paulo Rechi Vita <[email protected]>
  L:    [email protected]
@@@ -3391,15 -3377,11 +3392,15 @@@ F:   drivers/base/auxiliary.
  F:    include/linux/auxiliary_bus.h
  
  AUXILIARY DISPLAY DRIVERS
 -M:    Miguel Ojeda <[email protected]>
 -S:    Maintained
 +M:    Andy Shevchenko <[email protected]>
 +R:    Geert Uytterhoeven <[email protected]>
 +S:    Odd Fixes
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-auxdisplay.git
  F:    Documentation/devicetree/bindings/auxdisplay/
  F:    drivers/auxdisplay/
  F:    include/linux/cfag12864b.h
 +F:    include/uapi/linux/map_to_14segment.h
 +F:    include/uapi/linux/map_to_7segment.h
  
  AVIA HX711 ANALOG DIGITAL CONVERTER IIO DRIVER
  M:    Andreas Klinger <[email protected]>
@@@ -3555,7 -3537,6 +3556,7 @@@ R:      Brian Foster <[email protected]
  L:    [email protected]
  S:    Supported
  C:    irc://irc.oftc.net/bcache
 +T:    git https://evilpiepirate.org/git/bcachefs.git
  F:    fs/bcachefs/
  
  BDISP ST MEDIA DRIVER
@@@ -3819,7 -3800,6 +3820,7 @@@ M:      Alexei Starovoitov <[email protected]
  M:    Daniel Borkmann <[email protected]>
  M:    Andrii Nakryiko <[email protected]>
  R:    Martin KaFai Lau <[email protected]>
 +R:    Eduard Zingerman <[email protected]>
  R:    Song Liu <[email protected]>
  R:    Yonghong Song <[email protected]>
  R:    John Fastabend <[email protected]>
@@@ -3880,7 -3860,6 +3881,7 @@@ F:      net/unix/unix_bpf.
  
  BPF [LIBRARY] (libbpf)
  M:    Andrii Nakryiko <[email protected]>
 +M:    Eduard Zingerman <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    tools/lib/bpf/
@@@ -3938,7 -3917,6 +3939,7 @@@ F:      security/bpf
  
  BPF [SELFTESTS] (Test Runners & Infrastructure)
  M:    Andrii Nakryiko <[email protected]>
 +M:    Eduard Zingerman <[email protected]>
  R:    Mykola Lysenko <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -4192,14 -4170,14 +4193,14 @@@ F:   drivers/firmware/broadcom/tee_bnxt_f
  F:    drivers/net/ethernet/broadcom/bnxt/
  F:    include/linux/firmware/broadcom/tee_bnxt_fw.h
  
 -BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
 -M:    Arend van Spriel <[email protected]>
 -M:    Franky Lin <[email protected]>
 -M:    Hante Meuleman <[email protected]>
 +BROADCOM BRCM80211 IEEE802.11 WIRELESS DRIVERS
 +M:    Arend van Spriel <[email protected]>
  L:    [email protected]
 +L:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    drivers/net/wireless/broadcom/brcm80211/
 +F:    include/linux/platform_data/brcmfmac.h
  
  BROADCOM BRCMSTB GPIO DRIVER
  M:    Doug Berger <[email protected]>
@@@ -4652,8 -4630,8 +4653,8 @@@ S:      Maintaine
  F:    net/sched/sch_cake.c
  
  CAN NETWORK DRIVERS
 -M:    Wolfgang Grandegger <[email protected]>
  M:    Marc Kleine-Budde <[email protected]>
 +M:    Vincent Mailhol <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://github.com/linux-can
@@@ -5013,12 -4991,6 +5014,12 @@@ R:    Sami Kyöstilä <[email protected]
  S:    Maintained
  F:    drivers/platform/chrome/cros_hps_i2c.c
  
 +CHROMEOS EC WATCHDOG
 +M:    Lukasz Majczak <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/watchdog/cros_ec_wdt.c
 +
  CHRONTEL CH7322 CEC DRIVER
  M:    Joe Tessler <[email protected]>
  L:    [email protected]
@@@ -5043,7 -5015,6 +5044,7 @@@ F:      include/linux/mfd/cs42l43
  F:    include/sound/cs*
  F:    sound/pci/hda/cirrus*
  F:    sound/pci/hda/cs*
 +F:    sound/pci/hda/hda_component*
  F:    sound/pci/hda/hda_cs_dsp_ctl.*
  F:    sound/soc/codecs/cs*
  
@@@ -5269,7 -5240,6 +5270,7 @@@ R:      Paulo Alcantara <[email protected]> (
  R:    Ronnie Sahlberg <[email protected]> (directory leases, sparse files)
  R:    Shyam Prasad N <[email protected]> (multichannel)
  R:    Tom Talpey <[email protected]> (RDMA, smbdirect)
 +R:    Bharath SM <[email protected]> (deferred close, directory leases)
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
@@@ -5409,12 -5379,11 +5410,12 @@@ CONTROL GROUP - MEMORY RESOURCE CONTROL
  M:    Johannes Weiner <[email protected]>
  M:    Michal Hocko <[email protected]>
  M:    Roman Gushchin <[email protected]>
 -M:    Shakeel Butt <shakeel[email protected]>
 +M:    Shakeel Butt <shakeel[email protected]>
  R:    Muchun Song <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 +F:    include/linux/memcontrol.h
  F:    mm/memcontrol.c
  F:    mm/swap_cgroup.c
  F:    samples/cgroup/*
@@@ -5642,11 -5611,6 +5643,11 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/net/can/ctu,ctucanfd.yaml
  F:    drivers/net/can/ctucanfd/
  
 +CVE ASSIGNMENT CONTACT
 +M:    CVE Assignment Team <[email protected]>
 +S:    Maintained
 +F:    Documentation/process/cve.rst
 +
  CW1200 WLAN driver
  S:    Orphan
  F:    drivers/net/wireless/st/cw1200/
@@@ -6155,14 -6119,6 +6156,14 @@@ F:    include/linux/device-mapper.
  F:    include/linux/dm-*.h
  F:    include/uapi/linux/dm-*.h
  
 +DEVICE-MAPPER VDO TARGET
 +M:    Matthew Sakai <[email protected]>
 +M:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/admin-guide/device-mapper/vdo*.rst
 +F:    drivers/md/dm-vdo/
 +
  DEVLINK
  M:    Jiri Pirko <[email protected]>
  L:    [email protected]
@@@ -6190,16 -6146,16 +6191,16 @@@ DIALOG SEMICONDUCTOR DRIVER
  M:    Support Opensource <[email protected]>
  S:    Supported
  W:    http://www.dialog-semiconductor.com/products
 -F:    Documentation/devicetree/bindings/input/da90??-onkey.txt
  F:    Documentation/devicetree/bindings/input/dlg,da72??.txt
 +F:    Documentation/devicetree/bindings/input/dlg,da9062-onkey.yaml
  F:    Documentation/devicetree/bindings/mfd/da90*.txt
  F:    Documentation/devicetree/bindings/mfd/dlg,da90*.yaml
  F:    Documentation/devicetree/bindings/regulator/da92*.txt
  F:    Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
  F:    Documentation/devicetree/bindings/regulator/dlg,slg51000.yaml
  F:    Documentation/devicetree/bindings/sound/da[79]*.txt
 -F:    Documentation/devicetree/bindings/thermal/da90??-thermal.txt
 -F:    Documentation/devicetree/bindings/watchdog/dlg,da90??-watchdog.yaml
 +F:    Documentation/devicetree/bindings/thermal/dlg,da9062-thermal.yaml
 +F:    Documentation/devicetree/bindings/watchdog/dlg,da9062-watchdog.yaml
  F:    Documentation/hwmon/da90??.rst
  F:    drivers/gpio/gpio-da90??.c
  F:    drivers/hwmon/da90??-hwmon.c
@@@ -6417,7 -6373,6 +6418,7 @@@ L:      [email protected]
  S:    Maintained
  F:    Documentation/admin-guide/quickly-build-trimmed-linux.rst
  F:    Documentation/admin-guide/reporting-issues.rst
 +F:    Documentation/admin-guide/verify-bugs-and-bisect-regressions.rst
  
  DOCUMENTATION SCRIPTS
  M:    Mauro Carvalho Chehab <[email protected]>
@@@ -7037,7 -6992,7 +7038,7 @@@ L:      [email protected]
  S:    Maintained
  B:    https://gitlab.freedesktop.org/drm
  C:    irc://irc.oftc.net/dri-devel
 -T:    git git://anongit.freedesktop.org/drm/drm
 +T:    git https://gitlab.freedesktop.org/drm/kernel.git
  F:    Documentation/devicetree/bindings/display/
  F:    Documentation/devicetree/bindings/gpu/
  F:    Documentation/gpu/
@@@ -7071,7 -7026,7 +7072,7 @@@ X:      drivers/gpu/drm/mediatek
  X:    drivers/gpu/drm/msm/
  X:    drivers/gpu/drm/nouveau/
  X:    drivers/gpu/drm/radeon/
 -X:    drivers/gpu/drm/renesas/
 +X:    drivers/gpu/drm/renesas/rcar-du/
  X:    drivers/gpu/drm/tegra/
  
  DRM DRIVERS FOR ALLWINNER A10
@@@ -7239,22 -7194,12 +7240,22 @@@ F:   Documentation/devicetree/bindings/di
  F:    Documentation/devicetree/bindings/display/renesas,du.yaml
  F:    drivers/gpu/drm/renesas/rcar-du/
  
 +DRM DRIVERS FOR RENESAS RZ
 +M:    Biju Das <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml
 +F:    drivers/gpu/drm/renesas/rz-du/
 +
  DRM DRIVERS FOR RENESAS SHMOBILE
  M:    Laurent Pinchart <[email protected]>
  M:    Geert Uytterhoeven <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/devicetree/bindings/display/renesas,shmobile-lcdc.yaml
  F:    drivers/gpu/drm/renesas/shmobile/
  F:    include/linux/platform_data/shmob_drm.h
@@@ -7364,7 -7309,6 +7365,7 @@@ F:      drivers/gpu/drm/xlnx
  
  DRM GPU SCHEDULER
  M:    Luben Tuikov <[email protected]>
 +M:    Matthew Brost <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -7634,6 -7578,7 +7635,6 @@@ R:      Robert Richter <[email protected]
  L:    [email protected]
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
 -F:    Documentation/admin-guide/ras.rst
  F:    Documentation/driver-api/edac.rst
  F:    drivers/edac/
  F:    include/linux/edac.h
@@@ -7841,8 -7786,8 +7842,8 @@@ F:      drivers/media/usb/em28xx
  
  EMMC CMDQ HOST CONTROLLER INTERFACE (CQHCI) DRIVER
  M:    Adrian Hunter <[email protected]>
 -M:    Ritesh Harjani <[email protected]>
 -M:    Asutosh Das <[email protected]>
 +M:    Asutosh Das <[email protected]>
 +R:    Ritesh Harjani <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/mmc/host/cqhci*
@@@ -7940,13 -7885,6 +7941,13 @@@ S:    Maintaine
  F:    include/linux/errseq.h
  F:    lib/errseq.c
  
 +ESD CAN NETWORK DRIVERS
 +M:    Stefan Mätje <[email protected]>
 +R:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/can/esd/
 +
  ESD CAN/USB DRIVERS
  M:    Frank Jungclaus <[email protected]>
  R:    [email protected]
@@@ -8042,19 -7980,11 +8043,19 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git
  F:    fs/exfat/
  
 +EXPRESSWIRE PROTOCOL LIBRARY
 +M:    Duje Mihanović <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/leds/leds-expresswire.c
 +F:    include/linux/leds-expresswire.h
 +
  EXT2 FILE SYSTEM
  M:    Jan Kara <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/filesystems/ext2.rst
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git
  F:    fs/ext2/
  F:    include/linux/ext2*
  
@@@ -8231,7 -8161,6 +8232,7 @@@ F:      include/uapi/scsi/fc
  FILE LOCKING (flock() and fcntl()/lockf())
  M:    Jeff Layton <[email protected]>
  M:    Chuck Lever <[email protected]>
 +R:    Alexander Aring <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    fs/fcntl.c
@@@ -8562,7 -8491,7 +8563,7 @@@ FREESCALE IMX / MXC FEC DRIVE
  M:    Wei Fang <[email protected]>
  R:    Shenwei Wang <[email protected]>
  R:    Clark Wang <[email protected]>
 -R:    NXP Linux Team <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/fsl,fec.yaml
@@@ -8597,7 -8526,7 +8598,7 @@@ F:      drivers/i2c/busses/i2c-imx.
  FREESCALE IMX LPI2C DRIVER
  M:    Dong Aisheng <[email protected]>
  L:    [email protected]
 -L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.yaml
  F:    drivers/i2c/busses/i2c-imx-lpi2c.c
@@@ -8657,13 -8586,6 +8658,13 @@@ F:    Documentation/devicetree/bindings/so
  F:    drivers/soc/fsl/qe/qmc.c
  F:    include/soc/fsl/qe/qmc.h
  
 +FREESCALE QUICC ENGINE QMC HDLC DRIVER
 +M:    Herve Codina <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/wan/fsl_qmc_hdlc.c
 +
  FREESCALE QUICC ENGINE TSA DRIVER
  M:    Herve Codina <[email protected]>
  L:    [email protected]
@@@ -9055,10 -8977,9 +9056,10 @@@ F:    include/linux/string.
  F:    include/linux/string_choices.h
  F:    include/linux/string_helpers.h
  F:    lib/string.c
 +F:    lib/string_kunit.c
  F:    lib/string_helpers.c
 -F:    lib/test-string_helpers.c
 -F:    lib/test_string.c
 +F:    lib/string_helpers_kunit.c
 +F:    scripts/coccinelle/api/string_choices.cocci
  
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <[email protected]>
@@@ -9160,7 -9081,6 +9161,7 @@@ F:      Documentation/devicetree/bindings/cl
  F:    arch/arm64/boot/dts/exynos/google/
  F:    drivers/clk/samsung/clk-gs101.c
  F:    include/dt-bindings/clock/google,gs101.h
 +K:    [gG]oogle.?[tT]ensor
  
  GPD POCKET FAN DRIVER
  M:    Hans de Goede <[email protected]>
@@@ -9230,7 -9150,6 +9231,7 @@@ S:      Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
  F:    Documentation/ABI/obsolete/sysfs-gpio
  F:    Documentation/ABI/testing/gpio-cdev
 +F:    Documentation/userspace-api/gpio/
  F:    drivers/gpio/gpiolib-cdev.c
  F:    include/uapi/linux/gpio.h
  F:    tools/gpio/
  S:    Maintained
  W:    https://i2c.wiki.kernel.org/
  Q:    https://patchwork.ozlabs.org/project/linux-i2c/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git
  F:    Documentation/devicetree/bindings/i2c/
  F:    drivers/i2c/algos/
  F:    drivers/i2c/busses/
@@@ -10365,7 -10284,7 +10366,7 @@@ F:   drivers/scsi/ibmvscsi/ibmvscsi
  F:    include/scsi/viosrp.h
  
  IBM Power Virtual SCSI Device Target Driver
 -M:    Michael Cyr <mikecyr@linux.ibm.com>
 +M:    Tyrel Datwyler <tyreld@linux.ibm.com>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -10549,11 -10468,11 +10550,11 @@@ F:        drivers/media/rc/img-ir
  
  IMGTEC POWERVR DRM DRIVER
  M:    Frank Binns <[email protected]>
 -M:    Donald Robson <[email protected]>
  M:    Matt Coster <[email protected]>
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 -F:    Documentation/devicetree/bindings/gpu/img,powervr.yaml
 +F:    Documentation/devicetree/bindings/gpu/img,powervr-rogue.yaml
 +F:    Documentation/devicetree/bindings/gpu/img,powervr-sgx.yaml
  F:    Documentation/gpu/imagination/
  F:    drivers/gpu/drm/imagination/
  F:    include/uapi/drm/pvr_drm.h
  S:    Orphan
  F:    drivers/video/fbdev/imsttfb.c
  
 -INA209 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml
 -F:    Documentation/hwmon/ina209.rst
 -F:    drivers/hwmon/ina209.c
 -
 -INA2XX HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/hwmon/ina2xx.rst
 -F:    drivers/hwmon/ina2xx.c
 -F:    include/linux/platform_data/ina2xx.h
 -
  INDEX OF FURTHER KERNEL DOCUMENTATION
  M:    Carlos Bilbao <[email protected]>
  S:    Maintained
@@@ -10795,7 -10730,7 +10796,7 @@@ INTEL DRM I915 DRIVER (Meteor Lake, DG
  M:    Jani Nikula <[email protected]>
  M:    Joonas Lahtinen <[email protected]>
  M:    Rodrigo Vivi <[email protected]>
 -M:    Tvrtko Ursulin <t[email protected]>
 +M:    Tvrtko Ursulin <t[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://drm.pages.freedesktop.org/intel-docs/
@@@ -10867,11 -10802,11 +10868,11 @@@ F:        drivers/gpio/gpio-tangier.
  
  INTEL GVT-g DRIVERS (Intel GPU Virtualization)
  M:    Zhenyu Wang <[email protected]>
 -M:    Zhi Wang <zhi.a.wang@intel.com>
 +M:    Zhi Wang <zhi.wang.linux@gmail.com>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -W:    https://01.org/igvt-g
 +W:    https://github.com/intel/gvt-linux/wiki
  T:    git https://github.com/intel/gvt-linux.git
  F:    drivers/gpu/drm/i915/gvt/
  
@@@ -11193,6 -11128,7 +11194,6 @@@ S:   Supporte
  F:    drivers/net/wireless/intel/iwlegacy/
  
  INTEL WIRELESS WIFI LINK (iwlwifi)
 -M:    Gregory Greenman <[email protected]>
  M:    Miri Korenblit <[email protected]>
  L:    [email protected]
  S:    Supported
  S:    Maintained
  F:    drivers/net/wwan/iosm/
  
 +INTEL(R) FLEXIBLE RETURN AND EVENT DELIVERY
 +M:    Xin Li <[email protected]>
 +M:    "H. Peter Anvin" <[email protected]>
 +S:    Supported
 +F:    Documentation/arch/x86/x86_64/fred.rst
 +F:    arch/x86/entry/entry_64_fred.S
 +F:    arch/x86/entry/entry_fred.c
 +F:    arch/x86/include/asm/fred.h
 +F:    arch/x86/kernel/fred.c
 +
  INTEL(R) TRACE HUB
  M:    Alexander Shishkin <[email protected]>
  S:    Supported
@@@ -11315,6 -11241,7 +11316,6 @@@ F:   drivers/iommu
  F:    include/linux/iommu.h
  F:    include/linux/iova.h
  F:    include/linux/of_iommu.h
 -F:    include/uapi/linux/iommu.h
  
  IOMMUFD
  M:    Jason Gunthorpe <[email protected]>
@@@ -11554,6 -11481,14 +11555,6 @@@ S:  Maintaine
  F:    arch/x86/include/asm/jailhouse_para.h
  F:    arch/x86/kernel/jailhouse.c
  
 -JC42.4 TEMPERATURE SENSOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml
 -F:    Documentation/hwmon/jc42.rst
 -F:    drivers/hwmon/jc42.c
 -
  JFS FILESYSTEM
  M:    Dave Kleikamp <[email protected]>
  L:    [email protected]
@@@ -11791,7 -11726,6 +11792,7 @@@ F:   fs/smb/server
  KERNEL UNIT TESTING FRAMEWORK (KUnit)
  M:    Brendan Higgins <[email protected]>
  M:    David Gow <[email protected]>
 +R:    Rae Moar <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -12113,12 -12047,6 +12114,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml
  F:    drivers/video/backlight/ktd253-backlight.c
  
 +KTD2801 BACKLIGHT DRIVER
 +M:    Duje Mihanović <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
 +F:    drivers/video/backlight/ktd2801-backlight.c
 +
  KTEST
  M:    Steven Rostedt <[email protected]>
  M:    John Hawley <[email protected]>
@@@ -12226,11 -12154,11 +12227,11 @@@ F:        Documentation/scsi/53c700.rs
  F:    drivers/scsi/53c700*
  
  LEAKING_ADDRESSES
 -M:    Tobin C. Harding <[email protected]>
  M:    Tycho Andersen <[email protected]>
 +R:    Kees Cook <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tobin/leaks.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    scripts/leaking_addresses.pl
  
  LED SUBSYSTEM
@@@ -12584,6 -12512,7 +12585,6 @@@ F:   arch/powerpc/include/asm/livepatch.
  F:    include/linux/livepatch.h
  F:    kernel/livepatch/
  F:    kernel/module/livepatch.c
 -F:    lib/livepatch/
  F:    samples/livepatch/
  F:    tools/testing/selftests/livepatch/
  
@@@ -12624,6 -12553,13 +12625,6 @@@ F:  Documentation/hwmon/lm90.rs
  F:    drivers/hwmon/lm90.c
  F:    include/dt-bindings/thermal/lm90.h
  
 -LM95234 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/hwmon/lm95234.rst
 -F:    drivers/hwmon/lm95234.c
 -
  LME2510 MEDIA DRIVER
  M:    Malcolm Priestley <[email protected]>
  L:    [email protected]
@@@ -12827,13 -12763,12 +12828,13 @@@ W:        https://ez.analog.com/linux-software
  F:    Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
  F:    drivers/iio/temperature/ltc2983.c
  
 -LTC4261 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 +LTC4282 HARDWARE MONITOR DRIVER
 +M:    Nuno Sa <[email protected]>
  L:    [email protected]
 -S:    Maintained
 -F:    Documentation/hwmon/ltc4261.rst
 -F:    drivers/hwmon/ltc4261.c
 +S:    Supported
 +F:    Documentation/devicetree/bindings/hwmon/adi,ltc4282.yaml
 +F:    Documentation/hwmon/ltc4282.rst
 +F:    drivers/hwmon/ltc4282.c
  
  LTC4286 HARDWARE MONITOR DRIVER
  M:    Delphine CC Chiu <[email protected]>
@@@ -12969,8 -12904,6 +12970,8 @@@ M:   Alejandro Colomar <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    http://www.kernel.org/doc/man-pages
 +T:    git git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git
 +T:    git git://www.alejandro-colomar.es/src/alx/linux/man-pages/man-pages.git
  
  MANAGEMENT COMPONENT TRANSPORT PROTOCOL (MCTP)
  M:    Jeremy Kerr <[email protected]>
  S:    Supported
  F:    drivers/net/ethernet/marvell/octeon_ep
  
 +MARVELL OCTEON ENDPOINT VF DRIVER
 +M:    Veerasenareddy Burru <[email protected]>
 +M:    Sathesh Edara <[email protected]>
 +M:    Shinas Rasheed <[email protected]>
 +M:    Satananda Burla <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/net/ethernet/marvell/octeon_ep_vf
 +
  MARVELL OCTEONTX2 PHYSICAL FUNCTION DRIVER
  M:    Sunil Goutham <[email protected]>
  M:    Geetha sowjanya <[email protected]>
@@@ -13191,6 -13115,13 +13192,6 @@@ S:  Maintaine
  F:    Documentation/hwmon/max15301.rst
  F:    drivers/hwmon/pmbus/max15301.c
  
 -MAX16065 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/hwmon/max16065.rst
 -F:    drivers/hwmon/max16065.c
 -
  MAX2175 SDR TUNER DRIVER
  M:    Ramesh Shanmugasundaram <[email protected]>
  L:    [email protected]
@@@ -13201,6 -13132,15 +13202,6 @@@ F:  Documentation/userspace-api/media/dr
  F:    drivers/media/i2c/max2175*
  F:    include/uapi/linux/max2175.h
  
 -MAX31827 TEMPERATURE SWITCH DRIVER
 -M:    Daniel Matyas <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    https://ez.analog.com/linux-software-drivers
 -F:    Documentation/devicetree/bindings/hwmon/adi,max31827.yaml
 -F:    Documentation/hwmon/max31827.rst
 -F:    drivers/hwmon/max31827.c
 -
  MAX31335 RTC DRIVER
  M:    Antoniu Miclaus <[email protected]>
  L:    [email protected]
@@@ -13215,6 -13155,15 +13216,6 @@@ S:  Orpha
  F:    Documentation/hwmon/max6650.rst
  F:    drivers/hwmon/max6650.c
  
 -MAX6697 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/max6697.txt
 -F:    Documentation/hwmon/max6697.rst
 -F:    drivers/hwmon/max6697.c
 -F:    include/linux/platform_data/max6697.h
 -
  MAX9286 QUAD GMSL DESERIALIZER DRIVER
  M:    Jacopo Mondi <[email protected]>
  M:    Kieran Bingham <[email protected]>
@@@ -13630,6 -13579,7 +13631,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/renesas,csi2.yaml
  F:    Documentation/devicetree/bindings/media/renesas,isp.yaml
  F:    Documentation/devicetree/bindings/media/renesas,vin.yaml
+ F:    drivers/media/platform/renesas/rcar-csi2.c
  F:    drivers/media/platform/renesas/rcar-isp.c
  F:    drivers/media/platform/renesas/rcar-vin/
  
@@@ -14060,7 -14010,7 +14062,7 @@@ F:   include/uapi/rdma/mlx5-abi.
  
  MELLANOX MLX5 VDPA DRIVER
  M:    Dragos Tatulea <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  F:    drivers/vdpa/mlx5/
  
@@@ -14146,35 -14096,15 +14148,35 @@@ T:        git git://git.kernel.org/pub/scm/lin
  T:    quilt git://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new
  F:    include/linux/gfp.h
  F:    include/linux/gfp_types.h
 +F:    include/linux/memfd.h
 +F:    include/linux/memory.h
  F:    include/linux/memory_hotplug.h
 +F:    include/linux/memory-tiers.h
 +F:    include/linux/mempolicy.h
 +F:    include/linux/mempool.h
 +F:    include/linux/memremap.h
  F:    include/linux/mm.h
 +F:    include/linux/mm_*.h
  F:    include/linux/mmzone.h
 +F:    include/linux/mmu_notifier.h
  F:    include/linux/pagewalk.h
  F:    include/linux/rmap.h
  F:    include/trace/events/ksm.h
  F:    mm/
  F:    tools/mm/
  F:    tools/testing/selftests/mm/
 +N:    include/linux/page[-_]*
 +
 +MEMORY MAPPING
 +M:    Andrew Morton <[email protected]>
 +R:    Liam R. Howlett <[email protected]>
 +R:    Vlastimil Babka <[email protected]>
 +R:    Lorenzo Stoakes <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +W:    http://www.linux-mm.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +F:    mm/mmap.c
  
  MEMORY TECHNOLOGY DEVICES (MTD)
  M:    Miquel Raynal <[email protected]>
@@@ -14434,7 -14364,7 +14436,7 @@@ MICROCHIP MCP16502 PMIC DRIVE
  M:    Claudiu Beznea <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
 -F:    Documentation/devicetree/bindings/regulator/mcp16502-regulator.txt
 +F:    Documentation/devicetree/bindings/regulator/microchip,mcp16502.yaml
  F:    drivers/regulator/mcp16502.c
  
  MICROCHIP MCP3564 ADC DRIVER
@@@ -14629,14 -14559,6 +14631,14 @@@ F: Documentation/driver-api/surface_agg
  F:    drivers/platform/surface/surface_dtx.c
  F:    include/uapi/linux/surface_aggregator/dtx.h
  
 +MICROSOFT SURFACE SENSOR FAN DRIVER
 +M:    Maximilian Luz <[email protected]>
 +M:    Ivor Wanders <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/surface_fan.rst
 +F:    drivers/hwmon/surface_fan.c
 +
  MICROSOFT SURFACE GPE LID SUPPORT DRIVER
  M:    Maximilian Luz <[email protected]>
  L:    [email protected]
@@@ -15141,6 -15063,15 +15143,6 @@@ M:  Samuel Mendoza-Jonas <sam@mendozajon
  S:    Maintained
  F:    net/ncsi/
  
 -NCT6775 HARDWARE MONITOR DRIVER - CORE & PLATFORM DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/hwmon/nct6775.rst
 -F:    drivers/hwmon/nct6775-core.c
 -F:    drivers/hwmon/nct6775-platform.c
 -F:    drivers/hwmon/nct6775.h
 -
  NCT6775 HARDWARE MONITOR DRIVER - I2C DRIVER
  M:    Zev Weiss <[email protected]>
  L:    [email protected]
@@@ -15152,7 -15083,6 +15154,7 @@@ NETDEVSI
  M:    Jakub Kicinski <[email protected]>
  S:    Maintained
  F:    drivers/net/netdevsim/*
 +F:    tools/testing/selftests/drivers/net/netdevsim/*
  
  NETEM NETWORK EMULATOR
  M:    Stephen Hemminger <[email protected]>
@@@ -15250,7 -15180,6 +15252,7 @@@ F:   Documentation/networking/net_cacheli
  F:    drivers/connector/
  F:    drivers/net/
  F:    include/dt-bindings/net/
 +F:    include/linux/cn_proc.h
  F:    include/linux/etherdevice.h
  F:    include/linux/fcdevice.h
  F:    include/linux/fddidevice.h
@@@ -15258,7 -15187,6 +15260,7 @@@ F:   include/linux/hippidevice.
  F:    include/linux/if_*
  F:    include/linux/inetdevice.h
  F:    include/linux/netdevice.h
 +F:    include/uapi/linux/cn_proc.h
  F:    include/uapi/linux/if_*
  F:    include/uapi/linux/netdevice.h
  X:    drivers/net/wireless/
@@@ -15307,8 -15235,6 +15309,8 @@@ F:   Documentation/networking
  F:    Documentation/networking/net_cachelines/
  F:    Documentation/process/maintainer-netdev.rst
  F:    Documentation/userspace-api/netlink/
 +F:    include/linux/framer/framer-provider.h
 +F:    include/linux/framer/framer.h
  F:    include/linux/in.h
  F:    include/linux/indirect_call_wrapper.h
  F:    include/linux/net.h
@@@ -15396,7 -15322,7 +15398,7 @@@ K:   \bmdo
  NETWORKING [MPTCP]
  M:    Matthieu Baerts <[email protected]>
  M:    Mat Martineau <[email protected]>
 -R:    Geliang Tang <geliang[email protected]>
 +R:    Geliang Tang <geliang@kernel.org>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -15502,6 -15428,7 +15504,6 @@@ M:   Ryusuke Konishi <konishi.ryusuke@gma
  L:    [email protected]
  S:    Supported
  W:    https://nilfs.sourceforge.io/
 -W:    https://nilfs.osdn.jp/
  T:    git https://github.com/konis/nilfs2.git
  F:    Documentation/filesystems/nilfs2.rst
  F:    fs/nilfs2/
@@@ -15642,6 -15569,16 +15644,6 @@@ W:  https://github.com/davejiang/linux/w
  T:    git https://github.com/davejiang/linux.git
  F:    drivers/ntb/hw/intel/
  
 -NTFS FILESYSTEM
 -M:    Anton Altaparmakov <[email protected]>
 -R:    Namjae Jeon <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    http://www.tuxera.com/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs.git
 -F:    Documentation/filesystems/ntfs.rst
 -F:    fs/ntfs/
 -
  NTFS3 FILESYSTEM
  M:    Konstantin Komarov <[email protected]>
  L:    [email protected]
@@@ -15770,7 -15707,7 +15772,7 @@@ F:   drivers/iio/gyro/fxas21002c_spi.
  NXP i.MX 7D/6SX/6UL/93 AND VF610 ADC DRIVER
  M:    Haibo Chen <[email protected]>
  L:    [email protected]
 -L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/iio/adc/fsl,imx7d-adc.yaml
  F:    Documentation/devicetree/bindings/iio/adc/fsl,vf610-adc.yaml
@@@ -15807,7 -15744,7 +15809,7 @@@ F:   drivers/gpu/drm/imx/dcss
  NXP i.MX 8QXP ADC DRIVER
  M:    Cai Huoqing <[email protected]>
  M:    Haibo Chen <[email protected]>
 -L:    [email protected]
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/iio/adc/nxp,imx8qxp-adc.yaml
@@@ -15815,7 -15752,7 +15817,7 @@@ F:   drivers/iio/adc/imx8qxp-adc.
  
  NXP i.MX 8QXP/8QM JPEG V4L2 DRIVER
  M:    Mirela Rabulea <[email protected]>
 -R:    NXP Linux Team <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml
@@@ -15825,7 -15762,7 +15827,7 @@@ NXP i.MX CLOCK DRIVER
  M:    Abel Vesa <[email protected]>
  R:    Peng Fan <[email protected]>
  L:    [email protected]
 -L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/abelvesa/linux.git clk/imx
  F:    Documentation/devicetree/bindings/clock/imx*
@@@ -15895,14 -15832,6 +15897,14 @@@ S: Maintaine
  F:    Documentation/hwmon/nzxt-kraken2.rst
  F:    drivers/hwmon/nzxt-kraken2.c
  
 +NZXT-KRAKEN3 HARDWARE MONITORING DRIVER
 +M:    Jonas Malaco <[email protected]>
 +M:    Aleksa Savic <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/nzxt-kraken3.rst
 +F:    drivers/hwmon/nzxt-kraken3.c
 +
  NZXT-SMART2 HARDWARE MONITORING DRIVER
  M:    Aleksandr Mezin <[email protected]>
  L:    [email protected]
@@@ -16794,7 -16723,6 +16796,7 @@@ F:   drivers/pci/controller/dwc/*layersca
  PCI DRIVER FOR FU740
  M:    Paul Walmsley <[email protected]>
  M:    Greentime Hu <[email protected]>
 +M:    Samuel Holland <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml
@@@ -16907,7 -16835,6 +16909,7 @@@ F:   drivers/pci/controller/dwc/*designwa
  
  PCI DRIVER FOR TI DRA7XX/J721E
  M:    Vignesh Raghavendra <[email protected]>
 +R:    Siddharth Vadapalli <[email protected]>
  L:    [email protected]
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
@@@ -16932,8 -16859,9 +16934,8 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pcie-xilinx-cpm.c
  
  PCI ENDPOINT SUBSYSTEM
 -M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
 +M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
  M:    Krzysztof Wilczyński <[email protected]>
 -R:    Manivannan Sadhasivam <[email protected]>
  R:    Kishon Vijay Abraham I <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -17029,6 -16957,7 +17031,6 @@@ F:   include/asm-generic/pci
  F:    include/linux/of_pci.h
  F:    include/linux/pci*
  F:    include/uapi/linux/pci*
 -F:    lib/pci*
  
  PCIE DRIVER FOR AMAZON ANNAPURNA LABS
  M:    Jonathan Chocron <[email protected]>
@@@ -17252,7 -17181,7 +17254,7 @@@ R:   John Garry <[email protected]
  R:    Will Deacon <[email protected]>
  R:    James Clark <[email protected]>
  R:    Mike Leach <[email protected]>
 -R:    Leo Yan <leo.yan@linaro.org>
 +R:    Leo Yan <leo.yan@linux.dev>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    tools/build/feature/test-libopencsd.c
  M:    Jacky Bai <[email protected]>
  R:    Pengutronix Kernel Team <[email protected]>
  L:    [email protected]
 +L:    NXP S32 Linux Team <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/fsl,*
 +F:    Documentation/devicetree/bindings/pinctrl/nxp,s32*
  F:    drivers/pinctrl/freescale/
 +F:    drivers/pinctrl/nxp/
  
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <[email protected]>
@@@ -17392,6 -17318,14 +17394,6 @@@ S:  Supporte
  F:    drivers/gpio/gpio-sama5d2-piobu.c
  F:    drivers/pinctrl/pinctrl-at91*
  
 -PIN CONTROLLER - NXP S32
 -M:    Chester Lin <[email protected]>
 -R:    NXP S32 Linux Team <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/pinctrl/nxp,s32*
 -F:    drivers/pinctrl/nxp/
 -
  PIN CONTROLLER - QUALCOMM
  M:    Bjorn Andersson <[email protected]>
  L:    [email protected]
@@@ -17408,6 -17342,7 +17410,6 @@@ F:   Documentation/devicetree/bindings/pi
  F:    drivers/pinctrl/renesas/
  
  PIN CONTROLLER - SAMSUNG
 -M:    Tomasz Figa <[email protected]>
  M:    Krzysztof Kozlowski <[email protected]>
  M:    Sylwester Nawrocki <[email protected]>
  R:    Alim Akhtar <[email protected]>
@@@ -17494,6 -17429,35 +17496,6 @@@ S:  Maintaine
  F:    Documentation/hwmon/pm6764tr.rst
  F:    drivers/hwmon/pmbus/pm6764tr.c
  
 -PMBUS HARDWARE MONITORING DRIVERS
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -W:    http://hwmon.wiki.kernel.org/
 -W:    http://www.roeck-us.net/linux/drivers/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
 -F:    Documentation/devicetree/bindings/hwmon/ltc2978.txt
 -F:    Documentation/devicetree/bindings/hwmon/max31785.txt
 -F:    Documentation/hwmon/adm1275.rst
 -F:    Documentation/hwmon/ibm-cffps.rst
 -F:    Documentation/hwmon/ir35221.rst
 -F:    Documentation/hwmon/lm25066.rst
 -F:    Documentation/hwmon/ltc2978.rst
 -F:    Documentation/hwmon/ltc3815.rst
 -F:    Documentation/hwmon/max16064.rst
 -F:    Documentation/hwmon/max20751.rst
 -F:    Documentation/hwmon/max31785.rst
 -F:    Documentation/hwmon/max34440.rst
 -F:    Documentation/hwmon/max8688.rst
 -F:    Documentation/hwmon/pmbus-core.rst
 -F:    Documentation/hwmon/pmbus.rst
 -F:    Documentation/hwmon/tps40422.rst
 -F:    Documentation/hwmon/ucd9000.rst
 -F:    Documentation/hwmon/ucd9200.rst
 -F:    Documentation/hwmon/zl6100.rst
 -F:    drivers/hwmon/pmbus/
 -F:    include/linux/pmbus.h
 -
  PMC SIERRA MaxRAID DRIVER
  L:    [email protected]
  S:    Orphan
@@@ -17528,7 -17492,6 +17530,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    fs/timerfd.c
  F:    include/linux/time_namespace.h
  F:    include/linux/timer*
 +F:    include/trace/events/timer*
  F:    kernel/time/*timer*
  F:    kernel/time/namespace.c
  
@@@ -17565,7 -17528,6 +17567,7 @@@ F:   Documentation/devicetree/bindings/po
  F:    drivers/power/supply/
  F:    include/linux/power/
  F:    include/linux/power_supply.h
 +F:    tools/testing/selftests/power_supply/
  
  POWERNV OPERATOR PANEL LCD DISPLAY DRIVER
  M:    Suraj Jitindar Singh <[email protected]>
@@@ -17715,13 -17677,6 +17717,13 @@@ F: fs/pstore
  F:    include/linux/pstore*
  K:    \b(pstore|ramoops)
  
 +PT5161L HARDWARE MONITOR DRIVER
 +M:    Cosmo Chou <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/pt5161l.rst
 +F:    drivers/hwmon/pt5161l.c
 +
  PTP HARDWARE CLOCK SUPPORT
  M:    Richard Cochran <[email protected]>
  L:    [email protected]
@@@ -18020,34 -17975,33 +18022,34 @@@ F:        drivers/media/tuners/qt1010
  
  QUALCOMM ATH12K WIRELESS DRIVER
  M:    Kalle Valo <[email protected]>
 -M:    Jeff Johnson <[email protected]>
 +M:    Jeff Johnson <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
  F:    drivers/net/wireless/ath/ath12k/
 +N:    ath12k
  
  QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
  M:    Kalle Valo <[email protected]>
 -M:    Jeff Johnson <[email protected]>
 +M:    Jeff Johnson <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
 -F:    Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml
  F:    drivers/net/wireless/ath/ath10k/
 +N:    ath10k
  
  QUALCOMM ATHEROS ATH11K WIRELESS DRIVER
  M:    Kalle Valo <[email protected]>
 -M:    Jeff Johnson <[email protected]>
 +M:    Jeff Johnson <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath11k
  B:    https://wireless.wiki.kernel.org/en/users/Drivers/ath11k/bugreport
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
 -F:    Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
  F:    drivers/net/wireless/ath/ath11k/
 +N:    ath11k
  
  QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
  M:    Toke Høiland-Jørgensen <[email protected]>
@@@ -18058,13 -18012,6 +18060,13 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
  F:    drivers/net/wireless/ath/ath9k/
  
 +QUALCOMM ATHEROS QCA7K ETHERNET DRIVER
 +M:    Stefan Wahren <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/qca,qca7000.txt
 +F:    drivers/net/ethernet/qualcomm/qca*
 +
  QUALCOMM BAM-DMUX WWAN NETWORK DRIVER
  M:    Stephan Gerhold <[email protected]>
  L:    [email protected]
@@@ -18137,6 -18084,7 +18139,6 @@@ F:   drivers/net/ethernet/qualcomm/emac
  
  QUALCOMM ETHQOS ETHERNET DRIVER
  M:    Vinod Koul <[email protected]>
 -R:    Bhupesh Sharma <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -18408,17 -18356,11 +18410,17 @@@ M:        Tony Luck <[email protected]
  M:    Borislav Petkov <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/admin-guide/ras.rst
 +F:    Documentation/admin-guide/RAS
  F:    drivers/ras/
  F:    include/linux/ras.h
  F:    include/ras/ras_event.h
  
 +RAS FRU MEMORY POISON MANAGER (FMPM)
 +M:    Yazen Ghannam <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/ras/amd/fmpm.c
 +
  RC-CORE / LIRC FRAMEWORK
  M:    Sean Young <[email protected]>
  L:    [email protected]
@@@ -18489,7 -18431,7 +18491,7 @@@ S:   Supporte
  F:    drivers/infiniband/sw/rdmavt
  
  RDS - RELIABLE DATAGRAM SOCKETS
 -M:    Santosh Shilimkar <santosh.shilimkar@oracle.com>
 +M:    Allison Henderson <allison.henderson@oracle.com>
  L:    [email protected]
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
@@@ -18908,7 -18850,6 +18910,7 @@@ F:   Documentation/devicetree/bindings/ri
  F:    arch/riscv/boot/dts/
  X:    arch/riscv/boot/dts/allwinner/
  X:    arch/riscv/boot/dts/renesas/
 +X:    arch/riscv/boot/dts/sophgo/
  
  RISC-V PMU DRIVERS
  M:    Atish Patra <[email protected]>
@@@ -19157,7 -19098,6 +19159,7 @@@ F:   Documentation/rust
  F:    rust/
  F:    samples/rust/
  F:    scripts/*rust*
 +F:    tools/testing/selftests/rust/
  K:    \b(?i:rust)\b
  
  RXRPC SOCKETS (AF_RXRPC)
@@@ -19451,6 -19391,7 +19453,6 @@@ F:   drivers/media/platform/samsung/exyno
  SAMSUNG SOC CLOCK DRIVERS
  M:    Krzysztof Kozlowski <[email protected]>
  M:    Sylwester Nawrocki <[email protected]>
 -M:    Tomasz Figa <[email protected]>
  M:    Chanwoo Choi <[email protected]>
  R:    Alim Akhtar <[email protected]>
  L:    [email protected]
@@@ -19692,7 -19633,7 +19694,7 @@@ F:   drivers/mmc/host/sdhci-of-at91.
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) NXP i.MX DRIVER
  M:    Haibo Chen <[email protected]>
 -L:    [email protected]
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    drivers/mmc/host/sdhci-esdhc-imx.c
@@@ -20027,15 -19968,36 +20029,15 @@@ S:        Maintaine
  F:    drivers/watchdog/simatic-ipc-wdt.c
  
  SIFIVE DRIVERS
 -M:    Palmer Dabbelt <[email protected]>
  M:    Paul Walmsley <[email protected]>
 +M:    Samuel Holland <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    drivers/dma/sf-pdma/
  N:    sifive
 +K:    fu[57]40
  K:    [^@]sifive
  
 -SIFIVE CACHE DRIVER
 -M:    Conor Dooley <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/cache/sifive,ccache0.yaml
 -F:    drivers/cache/sifive_ccache.c
 -
 -SIFIVE FU540 SYSTEM-ON-CHIP
 -M:    Paul Walmsley <[email protected]>
 -M:    Palmer Dabbelt <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pjw/sifive.git
 -N:    fu540
 -K:    fu540
 -
 -SIFIVE PDMA DRIVER
 -M:    Green Wan <[email protected]>
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
 -F:    drivers/dma/sf-pdma/
 -
 -
  SILEAD TOUCHSCREEN DRIVER
  M:    Hans de Goede <[email protected]>
  L:    [email protected]
@@@ -20244,8 -20206,8 +20246,8 @@@ F:   Documentation/devicetree/bindings/ne
  F:    drivers/net/ethernet/socionext/sni_ave.c
  
  SOCIONEXT (SNI) NETSEC NETWORK DRIVER
 -M:    Jassi Brar <[email protected]>
  M:    Ilias Apalodimas <[email protected]>
 +M:    Masahisa Kojima <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/socionext,synquacer-netsec.yaml
@@@ -20486,13 -20448,12 +20488,13 @@@ F:        drivers/char/sonypi.
  F:    drivers/platform/x86/sony-laptop.c
  F:    include/linux/sony-laptop.h
  
 -SOPHGO DEVICETREES
 -M:    Chao Wei <[email protected]>
 +SOPHGO DEVICETREES and DRIVERS
  M:    Chen Wang <[email protected]>
 +M:    Inochi Amaoto <[email protected]>
 +T:    git https://github.com/sophgo/linux.git
  S:    Maintained
 -F:    arch/riscv/boot/dts/sophgo/
 -F:    Documentation/devicetree/bindings/riscv/sophgo.yaml
 +N:    sophgo
 +K:    sophgo
  
  SOUND
  M:    Jaroslav Kysela <[email protected]>
@@@ -20526,12 -20487,6 +20528,12 @@@ F: include/uapi/sound/compress_
  F:    sound/core/compress_offload.c
  F:    sound/soc/soc-compress.c
  
 +SOUND - CORE KUNIT TEST
 +M:    Ivan Orlov <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    sound/core/sound_kunit.c
 +
  SOUND - DMAENGINE HELPERS
  M:    Lars-Peter Clausen <[email protected]>
  S:    Supported
@@@ -20984,13 -20939,6 +20986,13 @@@ S: Maintaine
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
  F:    Documentation/devicetree/bindings/soc/starfive/
  
 +STARFIVE STARLINK PMU DRIVER
 +M:    Ji Sheng Teoh <[email protected]>
 +S:    Maintained
 +F:    Documentation/admin-guide/perf/starfive_starlink_pmu.rst
 +F:    Documentation/devicetree/bindings/perf/starfive,jh8100-starlink-pmu.yaml
 +F:    drivers/perf/starfive_starlink_pmu.c
 +
  STARFIVE TRNG DRIVER
  M:    Jia Jie Ho <[email protected]>
  S:    Supported
@@@ -21012,12 -20960,6 +21014,12 @@@ F: Documentation/devicetree/bindings/ph
  F:    drivers/phy/starfive/phy-jh7110-pcie.c
  F:    drivers/phy/starfive/phy-jh7110-usb.c
  
 +STARFIVE JH8100 EXTERNAL INTERRUPT CONTROLLER DRIVER
 +M:    Changhuang Liang <[email protected]>
 +S:    Supported
 +F:    Documentation/devicetree/bindings/interrupt-controller/starfive,jh8100-intc.yaml
 +F:    drivers/irqchip/irq-starfive-jh8100-intc.c
 +
  STATIC BRANCH/CALL
  M:    Peter Zijlstra <[email protected]>
  M:    Josh Poimboeuf <[email protected]>
@@@ -21383,7 -21325,6 +21385,7 @@@ F:   drivers/clk/clk-sc[mp]i.
  F:    drivers/cpufreq/sc[mp]i-cpufreq.c
  F:    drivers/firmware/arm_scmi/
  F:    drivers/firmware/arm_scpi.c
 +F:    drivers/hwmon/scmi-hwmon.c
  F:    drivers/pmdomain/arm/
  F:    drivers/powercap/arm_scmi_powercap.c
  F:    drivers/regulator/scmi-regulator.c
@@@ -21578,7 -21519,7 +21580,7 @@@ F:   tools/testing/selftests/drivers/net/
  TECHNICAL ADVISORY BOARD PROCESS DOCS
  M:    "Theodore Ts'o" <[email protected]>
  M:    Greg Kroah-Hartman <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  F:    Documentation/process/contribution-maturity-model.rst
  F:    Documentation/process/researcher-guidelines.rst
@@@ -22068,14 -22009,6 +22070,14 @@@ F: Documentation/devicetree/bindings/me
  F:    drivers/media/i2c/ds90*
  F:    include/media/i2c/ds90*
  
 +TI HDC302X HUMIDITY DRIVER
 +M:    Javier Carrasco <[email protected]>
 +M:    Li peiyu <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/humidity/ti,hdc3020.yaml
 +F:    drivers/iio/humidity/hdc3020.c
 +
  TI ICSSG ETHERNET DRIVER (ICSSG)
  R:    MD Danish Anwar <[email protected]>
  R:    Roger Quadros <[email protected]>
@@@ -22222,6 -22155,22 +22224,6 @@@ F:  drivers/mmc/host/renesas_sdhi
  F:    drivers/mmc/host/tmio_mmc*
  F:    include/linux/mfd/tmio.h
  
 -TMP401 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
 -F:    Documentation/hwmon/tmp401.rst
 -F:    drivers/hwmon/tmp401.c
 -
 -TMP464 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/ti,tmp464.yaml
 -F:    Documentation/hwmon/tmp464.rst
 -F:    drivers/hwmon/tmp464.c
 -
  TMP513 HARDWARE MONITOR DRIVER
  M:    Eric Tremblay <[email protected]>
  L:    [email protected]
@@@ -22526,23 -22475,6 +22528,23 @@@ F: Documentation/block/ublk.rs
  F:    drivers/block/ublk_drv.c
  F:    include/uapi/linux/ublk_cmd.h
  
 +UBSAN
 +M:    Kees Cook <[email protected]>
 +R:    Marco Elver <[email protected]>
 +R:    Andrey Konovalov <[email protected]>
 +R:    Andrey Ryabinin <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
 +F:    Documentation/dev-tools/ubsan.rst
 +F:    include/linux/ubsan.h
 +F:    lib/Kconfig.ubsan
 +F:    lib/test_ubsan.c
 +F:    lib/ubsan.c
 +F:    scripts/Makefile.ubsan
 +K:    \bARCH_HAS_UBSAN\b
 +
  UCLINUX (M68KNOMMU AND COLDFIRE)
  M:    Greg Ungerer <[email protected]>
  L:    [email protected]
@@@ -22932,8 -22864,9 +22934,8 @@@ S:   Maintaine
  F:    drivers/usb/typec/mux/pi3usb30532.c
  
  USB TYPEC PORT CONTROLLER DRIVERS
 -M:    Guenter Roeck <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  F:    drivers/usb/typec/tcpm/
  
  USB UHCI DRIVER
@@@ -23145,7 -23078,7 +23147,7 @@@ F:   drivers/vfio/pci/mlx5
  VFIO VIRTIO PCI DRIVER
  M:    Yishai Hadas <[email protected]>
  L:    [email protected]
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  F:    drivers/vfio/pci/virtio
  
@@@ -24189,13 -24122,14 +24191,13 @@@ F:        drivers/net/ethernet/xilinx/xilinx_a
  
  XILINX CAN DRIVER
  M:    Appana Durga Kedareswara rao <[email protected]>
 -R:    Naga Sureshkumar Relli <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/can/xilinx,can.yaml
  F:    drivers/net/can/xilinx_can.c
  
  XILINX EVENT MANAGEMENT DRIVER
 -M:    Abhyuday Godhasara <abhyuday.godhasara@xilinx.com>
 +M:    Michal Simek <michal.simek@amd.com>
  S:    Maintained
  F:    drivers/soc/xilinx/xlnx_event_manager.c
  F:    include/linux/firmware/xlnx-event-manager.h
@@@ -24409,6 -24343,13 +24411,6 @@@ T:  git git://git.kernel.org/pub/scm/lin
  F:    Documentation/filesystems/zonefs.rst
  F:    fs/zonefs/
  
 -ZPOOL COMPRESSED PAGE STORAGE API
 -M:    Dan Streetman <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    include/linux/zpool.h
 -F:    mm/zpool.c
 -
  ZR36067 VIDEO FOR LINUX DRIVER
  M:    Corentin Labbe <[email protected]>
  L:    [email protected]
@@@ -24457,15 -24398,11 +24459,15 @@@ ZSWAP COMPRESSED SWAP CACHIN
  M:    Johannes Weiner <[email protected]>
  M:    Yosry Ahmed <[email protected]>
  M:    Nhat Pham <[email protected]>
 +R:    Chengming Zhou <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/admin-guide/mm/zswap.rst
 +F:    include/linux/zpool.h
  F:    include/linux/zswap.h
 +F:    mm/zpool.c
  F:    mm/zswap.c
 +F:    tools/testing/selftests/cgroup/test_zswap.c
  
  THE REST
  M:    Linus Torvalds <[email protected]>
index 7ef341bf21cc8b5a77c3bbd13ceb670e0201fdea,a39986ce79f1998f9a07c0597f34d194d638753c..6a77de3744543132bfdb538b3c465cae6bd7e550
@@@ -25,6 -25,7 +25,6 @@@
  
  #define VIDC_CLKS_NUM_MAX             4
  #define VIDC_VCODEC_CLKS_NUM_MAX      2
 -#define VIDC_PMDOMAINS_NUM_MAX                3
  #define VIDC_RESETS_NUM_MAX           2
  
  extern int venus_fw_debug;
@@@ -71,7 -72,7 +71,7 @@@ struct venus_resources 
        const char * const vcodec0_clks[VIDC_VCODEC_CLKS_NUM_MAX];
        const char * const vcodec1_clks[VIDC_VCODEC_CLKS_NUM_MAX];
        unsigned int vcodec_clks_num;
 -      const char * const vcodec_pmdomains[VIDC_PMDOMAINS_NUM_MAX];
 +      const char **vcodec_pmdomains;
        unsigned int vcodec_pmdomains_num;
        const char **opp_pmdomain;
        unsigned int vcodec_num;
@@@ -133,7 -134,7 +133,7 @@@ struct venus_format 
   * @video_path: an interconnect handle to video to/from memory path
   * @cpucfg_path: an interconnect handle to cpu configuration path
   * @has_opp_table: does OPP table exist
 - * @pmdomains:        an array of pmdomains struct device pointers
 + * @pmdomains:        a pointer to a list of pmdomains
   * @opp_dl_venus: an device-link for device OPP
   * @opp_pmdomain: an OPP power-domain
   * @resets: an array of reset signals
@@@ -186,7 -187,7 +186,7 @@@ struct venus_core 
        struct icc_path *video_path;
        struct icc_path *cpucfg_path;
        bool has_opp_table;
 -      struct device *pmdomains[VIDC_PMDOMAINS_NUM_MAX];
 +      struct dev_pm_domain_list *pmdomains;
        struct device_link *opp_dl_venus;
        struct device *opp_pmdomain;
        struct reset_control *resets[VIDC_RESETS_NUM_MAX];
@@@ -427,7 -428,6 +427,6 @@@ enum venus_inst_modes 
   * @error:    an error returned during last HFI sync operation
   * @session_error:    a flag rised by HFI interface in case of session error
   * @ops:              HFI operations
-  * @priv:     a private for HFI operations callbacks
   * @session_type:     the type of the session (decoder or encoder)
   * @hprop:    a union used as a holder by get property
   * @core_acquired:    the Core has been acquired
index c381c22135a217b71e82f8282699cfbe14749ded,9e0e690520961e3529d8f0436e5c01da43ca5409..2bddb4fa8a5cd163f383a9baa9fc3e2ca1ea87b8
@@@ -47,13 -47,18 +47,18 @@@ enum rkisp1_plane 
   * @fourcc: pixel format
   * @fmt_type: helper filed for pixel format
   * @uv_swap: if cb cr swapped, for yuv
+  * @yc_swap: if y and cb/cr swapped, for yuv
+  * @byte_swap: if byte pairs are swapped, for raw
   * @write_format: defines how YCbCr self picture data is written to memory
-  * @output_format: defines sp output format
+  * @output_format: defines the output format (RKISP1_CIF_MI_INIT_MP_OUTPUT_* for
+  *    the main path and RKISP1_MI_CTRL_SP_OUTPUT_* for the self path)
   * @mbus: the mbus code on the src resizer pad that matches the pixel format
   */
  struct rkisp1_capture_fmt_cfg {
        u32 fourcc;
-       u8 uv_swap;
+       u32 uv_swap : 1;
+       u32 yc_swap : 1;
+       u32 byte_swap : 1;
        u32 write_format;
        u32 output_format;
        u32 mbus;
@@@ -94,36 -99,50 +99,50 @@@ static const struct rkisp1_capture_fmt_
                .fourcc = V4L2_PIX_FMT_YUYV,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUVINT,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
+               .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
+       }, {
+               .fourcc = V4L2_PIX_FMT_UYVY,
+               .uv_swap = 0,
+               .yc_swap = 1,
+               .write_format = RKISP1_MI_CTRL_MP_WRITE_YUVINT,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        }, {
                .fourcc = V4L2_PIX_FMT_YUV422P,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        }, {
                .fourcc = V4L2_PIX_FMT_NV16,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        }, {
                .fourcc = V4L2_PIX_FMT_NV61,
                .uv_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        }, {
                .fourcc = V4L2_PIX_FMT_NV16M,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        }, {
                .fourcc = V4L2_PIX_FMT_NV61M,
                .uv_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        }, {
                .fourcc = V4L2_PIX_FMT_YVU422M,
                .uv_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        },
        /* yuv400 */
                .fourcc = V4L2_PIX_FMT_GREY,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV400,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        },
        /* yuv420 */
                .fourcc = V4L2_PIX_FMT_NV21,
                .uv_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV420,
                .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
        }, {
                .fourcc = V4L2_PIX_FMT_NV12,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV420,
                .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
        }, {
                .fourcc = V4L2_PIX_FMT_NV21M,
                .uv_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV420,
                .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
        }, {
                .fourcc = V4L2_PIX_FMT_NV12M,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV420,
                .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
        }, {
                .fourcc = V4L2_PIX_FMT_YUV420,
                .uv_swap = 0,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV420,
                .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
        }, {
                .fourcc = V4L2_PIX_FMT_YVU420,
                .uv_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_YUV420,
                .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
        },
        /* raw */
        {
                .fourcc = V4L2_PIX_FMT_SRGGB8,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW8,
                .mbus = MEDIA_BUS_FMT_SRGGB8_1X8,
        }, {
                .fourcc = V4L2_PIX_FMT_SGRBG8,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW8,
                .mbus = MEDIA_BUS_FMT_SGRBG8_1X8,
        }, {
                .fourcc = V4L2_PIX_FMT_SGBRG8,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW8,
                .mbus = MEDIA_BUS_FMT_SGBRG8_1X8,
        }, {
                .fourcc = V4L2_PIX_FMT_SBGGR8,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW8,
                .mbus = MEDIA_BUS_FMT_SBGGR8_1X8,
        }, {
                .fourcc = V4L2_PIX_FMT_SRGGB10,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW10,
                .mbus = MEDIA_BUS_FMT_SRGGB10_1X10,
        }, {
                .fourcc = V4L2_PIX_FMT_SGRBG10,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW10,
                .mbus = MEDIA_BUS_FMT_SGRBG10_1X10,
        }, {
                .fourcc = V4L2_PIX_FMT_SGBRG10,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW10,
                .mbus = MEDIA_BUS_FMT_SGBRG10_1X10,
        }, {
                .fourcc = V4L2_PIX_FMT_SBGGR10,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW10,
                .mbus = MEDIA_BUS_FMT_SBGGR10_1X10,
        }, {
                .fourcc = V4L2_PIX_FMT_SRGGB12,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW12,
                .mbus = MEDIA_BUS_FMT_SRGGB12_1X12,
        }, {
                .fourcc = V4L2_PIX_FMT_SGRBG12,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW12,
                .mbus = MEDIA_BUS_FMT_SGRBG12_1X12,
        }, {
                .fourcc = V4L2_PIX_FMT_SGBRG12,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW12,
                .mbus = MEDIA_BUS_FMT_SGBRG12_1X12,
        }, {
                .fourcc = V4L2_PIX_FMT_SBGGR12,
+               .byte_swap = 1,
                .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
+               .output_format = RKISP1_CIF_MI_INIT_MP_OUTPUT_RAW12,
                .mbus = MEDIA_BUS_FMT_SBGGR12_1X12,
        },
  };
@@@ -229,6 -275,13 +275,13 @@@ static const struct rkisp1_capture_fmt_
                .write_format = RKISP1_MI_CTRL_SP_WRITE_INT,
                .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
                .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
+       }, {
+               .fourcc = V4L2_PIX_FMT_UYVY,
+               .uv_swap = 0,
+               .yc_swap = 1,
+               .write_format = RKISP1_MI_CTRL_SP_WRITE_INT,
+               .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
+               .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
        }, {
                .fourcc = V4L2_PIX_FMT_YUV422P,
                .uv_swap = 0,
@@@ -442,6 -495,14 +495,14 @@@ static void rkisp1_mp_config(struct rki
        rkisp1_write(rkisp1, cap->config->mi.cr_size_init,
                     rkisp1_pixfmt_comp_size(pixm, RKISP1_PLANE_CR));
  
+       if (rkisp1_has_feature(rkisp1, MAIN_STRIDE)) {
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_MP_Y_LLENGTH, cap->stride);
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_MP_Y_PIC_WIDTH, pixm->width);
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_MP_Y_PIC_HEIGHT, pixm->height);
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_MP_Y_PIC_SIZE,
+                            cap->stride * pixm->height);
+       }
        rkisp1_irq_frame_end_enable(cap);
  
        /* set uv swapping for semiplanar formats */
                rkisp1_write(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL, reg);
        }
  
+       /*
+        * U/V swapping with the MI_XTD_FORMAT_CTRL register only works for
+        * NV12/NV21 and NV16/NV61, so instead use byte swap to support UYVY.
+        * YVYU and VYUY cannot be supported with this method.
+        */
+       if (rkisp1_has_feature(rkisp1, MAIN_STRIDE)) {
+               reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_OUTPUT_ALIGN_FORMAT);
+               if (cap->pix.cfg->yc_swap || cap->pix.cfg->byte_swap)
+                       reg |= RKISP1_CIF_OUTPUT_ALIGN_FORMAT_MP_BYTE_SWAP_BYTES;
+               else
+                       reg &= ~RKISP1_CIF_OUTPUT_ALIGN_FORMAT_MP_BYTE_SWAP_BYTES;
+               reg |= RKISP1_CIF_OUTPUT_ALIGN_FORMAT_MP_LSB_ALIGNMENT;
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_OUTPUT_ALIGN_FORMAT, reg);
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_INIT,
+                            cap->pix.cfg->output_format);
+       }
        rkisp1_mi_config_ctrl(cap);
  
        reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_CTRL);
@@@ -479,11 -559,11 +559,11 @@@ static void rkisp1_sp_config(struct rki
        rkisp1_write(rkisp1, cap->config->mi.cr_size_init,
                     rkisp1_pixfmt_comp_size(pixm, RKISP1_PLANE_CR));
  
-       rkisp1_write(rkisp1, RKISP1_CIF_MI_SP_Y_LLENGTH, cap->sp_y_stride);
+       rkisp1_write(rkisp1, RKISP1_CIF_MI_SP_Y_LLENGTH, cap->stride);
        rkisp1_write(rkisp1, RKISP1_CIF_MI_SP_Y_PIC_WIDTH, pixm->width);
        rkisp1_write(rkisp1, RKISP1_CIF_MI_SP_Y_PIC_HEIGHT, pixm->height);
        rkisp1_write(rkisp1, RKISP1_CIF_MI_SP_Y_PIC_SIZE,
-                    cap->sp_y_stride * pixm->height);
+                    cap->stride * pixm->height);
  
        rkisp1_irq_frame_end_enable(cap);
  
                rkisp1_write(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL, reg);
        }
  
+       /*
+        * U/V swapping with the MI_XTD_FORMAT_CTRL register only works for
+        * NV12/NV21 and NV16/NV61, so instead use byte swap to support UYVY.
+        * YVYU and VYUY cannot be supported with this method.
+        */
+       if (rkisp1_has_feature(rkisp1, MAIN_STRIDE)) {
+               reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_OUTPUT_ALIGN_FORMAT);
+               if (cap->pix.cfg->yc_swap)
+                       reg |= RKISP1_CIF_OUTPUT_ALIGN_FORMAT_SP_BYTE_SWAP_BYTES;
+               else
+                       reg &= ~RKISP1_CIF_OUTPUT_ALIGN_FORMAT_SP_BYTE_SWAP_BYTES;
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_OUTPUT_ALIGN_FORMAT, reg);
+       }
        rkisp1_mi_config_ctrl(cap);
  
        mi_ctrl = rkisp1_read(rkisp1, RKISP1_CIF_MI_CTRL);
@@@ -640,11 -734,13 +734,13 @@@ static void rkisp1_dummy_buf_destroy(st
  
  static void rkisp1_set_next_buf(struct rkisp1_capture *cap)
  {
+       u8 shift = rkisp1_has_feature(cap->rkisp1, DMA_34BIT) ? 2 : 0;
        cap->buf.curr = cap->buf.next;
        cap->buf.next = NULL;
  
        if (!list_empty(&cap->buf.queue)) {
-               u32 *buff_addr;
+               dma_addr_t *buff_addr;
  
                cap->buf.next = list_first_entry(&cap->buf.queue, struct rkisp1_buffer, queue);
                list_del(&cap->buf.next->queue);
                buff_addr = cap->buf.next->buff_addr;
  
                rkisp1_write(cap->rkisp1, cap->config->mi.y_base_ad_init,
-                            buff_addr[RKISP1_PLANE_Y]);
+                            buff_addr[RKISP1_PLANE_Y] >> shift);
                /*
                 * In order to support grey format we capture
                 * YUV422 planar format from the camera and
                if (cap->pix.cfg->fourcc == V4L2_PIX_FMT_GREY) {
                        rkisp1_write(cap->rkisp1,
                                     cap->config->mi.cb_base_ad_init,
-                                    cap->buf.dummy.dma_addr);
+                                    cap->buf.dummy.dma_addr >> shift);
                        rkisp1_write(cap->rkisp1,
                                     cap->config->mi.cr_base_ad_init,
-                                    cap->buf.dummy.dma_addr);
+                                    cap->buf.dummy.dma_addr >> shift);
                } else {
                        rkisp1_write(cap->rkisp1,
                                     cap->config->mi.cb_base_ad_init,
-                                    buff_addr[RKISP1_PLANE_CB]);
+                                    buff_addr[RKISP1_PLANE_CB] >> shift);
                        rkisp1_write(cap->rkisp1,
                                     cap->config->mi.cr_base_ad_init,
-                                    buff_addr[RKISP1_PLANE_CR]);
+                                    buff_addr[RKISP1_PLANE_CR] >> shift);
                }
        } else {
                /*
                 * throw data if there is no available buffer.
                 */
                rkisp1_write(cap->rkisp1, cap->config->mi.y_base_ad_init,
-                            cap->buf.dummy.dma_addr);
+                            cap->buf.dummy.dma_addr >> shift);
                rkisp1_write(cap->rkisp1, cap->config->mi.cb_base_ad_init,
-                            cap->buf.dummy.dma_addr);
+                            cap->buf.dummy.dma_addr >> shift);
                rkisp1_write(cap->rkisp1, cap->config->mi.cr_base_ad_init,
-                            cap->buf.dummy.dma_addr);
+                            cap->buf.dummy.dma_addr >> shift);
        }
  
        /* Set plane offsets */
@@@ -722,19 -818,17 +818,20 @@@ irqreturn_t rkisp1_capture_isr(int irq
  {
        struct device *dev = ctx;
        struct rkisp1_device *rkisp1 = dev_get_drvdata(dev);
+       unsigned int dev_count = rkisp1_path_count(rkisp1);
        unsigned int i;
        u32 status;
  
 +      if (!rkisp1->irqs_enabled)
 +              return IRQ_NONE;
 +
        status = rkisp1_read(rkisp1, RKISP1_CIF_MI_MIS);
        if (!status)
                return IRQ_NONE;
  
        rkisp1_write(rkisp1, RKISP1_CIF_MI_ICR, status);
  
-       for (i = 0; i < ARRAY_SIZE(rkisp1->capture_devs); ++i) {
+       for (i = 0; i < dev_count; ++i) {
                struct rkisp1_capture *cap = &rkisp1->capture_devs[i];
  
                if (!(status & RKISP1_CIF_MI_FRAME(cap)))
@@@ -891,6 -985,7 +988,7 @@@ static void rkisp1_cap_stream_enable(st
  {
        struct rkisp1_device *rkisp1 = cap->rkisp1;
        struct rkisp1_capture *other = &rkisp1->capture_devs[cap->id ^ 1];
+       bool has_self_path = rkisp1_has_feature(rkisp1, SELF_PATH);
  
        cap->ops->set_data_path(cap);
        cap->ops->config(cap);
        spin_lock_irq(&cap->buf.lock);
        rkisp1_set_next_buf(cap);
        cap->ops->enable(cap);
-       /* It's safe to configure ACTIVE and SHADOW registers for the
-        * first stream. While when the second is starting, do NOT
-        * force update because it also updates the first one.
+       /*
+        * It's safe to configure ACTIVE and SHADOW registers for the first
+        * stream. While when the second is starting, do NOT force update
+        * because it also updates the first one.
         *
-        * The latter case would drop one more buffer(that is 2) since
-        * there's no buffer in a shadow register when the second FE received.
-        * This's also required because the second FE maybe corrupt
-        * especially when run at 120fps.
+        * The latter case would drop one more buffer(that is 2) since there's
+        * no buffer in a shadow register when the second FE received. This's
+        * also required because the second FE maybe corrupt especially when
+        * run at 120fps.
         */
-       if (!other->is_streaming) {
-               /* force cfg update */
-               rkisp1_write(rkisp1, RKISP1_CIF_MI_INIT,
-                            RKISP1_CIF_MI_INIT_SOFT_UPD);
+       if (!has_self_path || !other->is_streaming) {
+               u32 reg;
+               /*
+                * Force cfg update.
+                *
+                * The ISP8000 (implementing the MAIN_STRIDE feature) as a
+                * mp_output_format field in the CIF_MI_INIT register that must
+                * be preserved. It can be read back, but it is not clear what
+                * other register bits will return. Mask them out.
+                *
+                * On Rockchip platforms, the CIF_MI_INIT register is marked as
+                * write-only and reads as zeros. We can skip reading it.
+                */
+               if (rkisp1_has_feature(rkisp1, MAIN_STRIDE))
+                       reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_INIT)
+                           & RKISP1_CIF_MI_INIT_MP_OUTPUT_MASK;
+               else
+                       reg = 0;
+               reg |= RKISP1_CIF_MI_INIT_SOFT_UPD;
+               rkisp1_write(rkisp1, RKISP1_CIF_MI_INIT, reg);
                rkisp1_set_next_buf(cap);
        }
        spin_unlock_irq(&cap->buf.lock);
@@@ -1095,8 -1211,8 +1214,8 @@@ static const struct vb2_ops rkisp1_vb2_
   */
  
  static const struct v4l2_format_info *
- rkisp1_fill_pixfmt(struct v4l2_pix_format_mplane *pixm,
-                  enum rkisp1_stream_id id)
+ rkisp1_fill_pixfmt(const struct rkisp1_capture *cap,
+                  struct v4l2_pix_format_mplane *pixm)
  {
        struct v4l2_plane_pix_format *plane_y = &pixm->plane_fmt[0];
        const struct v4l2_format_info *info;
  
        /*
         * The SP supports custom strides, expressed as a number of pixels for
-        * the Y plane. Clamp the stride to a reasonable value to avoid integer
-        * overflows when calculating the bytesperline and sizeimage values.
+        * the Y plane, and so does the MP in ISP versions that have the
+        * MAIN_STRIDE feature. Clamp the stride to a reasonable value to avoid
+        * integer overflows when calculating the bytesperline and sizeimage
+        * values.
         */
-       if (id == RKISP1_SELFPATH)
+       if (cap->id == RKISP1_SELFPATH ||
+           rkisp1_has_feature(cap->rkisp1, MAIN_STRIDE))
                stride = clamp(DIV_ROUND_UP(plane_y->bytesperline, info->bpp[0]),
                               pixm->width, 65536U);
        else
  static const struct rkisp1_capture_fmt_cfg *
  rkisp1_find_fmt_cfg(const struct rkisp1_capture *cap, const u32 pixelfmt)
  {
+       bool yc_swap_support = rkisp1_has_feature(cap->rkisp1, MAIN_STRIDE);
        unsigned int i;
  
        for (i = 0; i < cap->config->fmt_size; i++) {
-               if (cap->config->fmts[i].fourcc == pixelfmt)
+               const struct rkisp1_capture_fmt_cfg *fmt = &cap->config->fmts[i];
+               if (fmt->fourcc == pixelfmt &&
+                   (!fmt->yc_swap || yc_swap_support))
                        return &cap->config->fmts[i];
        }
        return NULL;
@@@ -1187,7 -1310,7 +1313,7 @@@ static void rkisp1_try_fmt(const struc
        pixm->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
        pixm->quantization = V4L2_QUANTIZATION_DEFAULT;
  
-       info = rkisp1_fill_pixfmt(pixm, cap->id);
+       info = rkisp1_fill_pixfmt(cap, pixm);
  
        if (fmt_cfg)
                *fmt_cfg = fmt;
@@@ -1199,12 -1322,9 +1325,9 @@@ static void rkisp1_set_fmt(struct rkisp
                           struct v4l2_pix_format_mplane *pixm)
  {
        rkisp1_try_fmt(cap, pixm, &cap->pix.cfg, &cap->pix.info);
-       cap->pix.fmt = *pixm;
  
-       /* SP supports custom stride in number of pixels of the Y plane */
-       if (cap->id == RKISP1_SELFPATH)
-               cap->sp_y_stride = pixm->plane_fmt[0].bytesperline /
-                                  cap->pix.info->bpp[0];
+       cap->pix.fmt = *pixm;
+       cap->stride = pixm->plane_fmt[0].bytesperline / cap->pix.info->bpp[0];
  }
  
  static int rkisp1_try_fmt_vid_cap_mplane(struct file *file, void *fh,
@@@ -1222,23 -1342,29 +1345,29 @@@ static int rkisp1_enum_fmt_vid_cap_mpla
  {
        struct rkisp1_capture *cap = video_drvdata(file);
        const struct rkisp1_capture_fmt_cfg *fmt = NULL;
+       bool yc_swap_support = rkisp1_has_feature(cap->rkisp1, MAIN_STRIDE);
        unsigned int i, n = 0;
  
-       if (!f->mbus_code) {
-               if (f->index >= cap->config->fmt_size)
-                       return -EINVAL;
+       if (f->index >= cap->config->fmt_size)
+               return -EINVAL;
  
+       if (!f->mbus_code && yc_swap_support) {
                fmt = &cap->config->fmts[f->index];
                f->pixelformat = fmt->fourcc;
                return 0;
        }
  
        for (i = 0; i < cap->config->fmt_size; i++) {
-               if (cap->config->fmts[i].mbus != f->mbus_code)
+               fmt = &cap->config->fmts[i];
+               if (f->mbus_code && fmt->mbus != f->mbus_code)
+                       continue;
+               if (!yc_swap_support && fmt->yc_swap)
                        continue;
  
                if (n++ == f->index) {
-                       f->pixelformat = cap->config->fmts[i].fourcc;
+                       f->pixelformat = fmt->fourcc;
                        return 0;
                }
        }
@@@ -1501,10 -1627,11 +1630,11 @@@ rkisp1_capture_init(struct rkisp1_devic
  
  int rkisp1_capture_devs_register(struct rkisp1_device *rkisp1)
  {
+       unsigned int dev_count = rkisp1_path_count(rkisp1);
        unsigned int i;
        int ret;
  
-       for (i = 0; i < ARRAY_SIZE(rkisp1->capture_devs); i++) {
+       for (i = 0; i < dev_count; i++) {
                struct rkisp1_capture *cap = &rkisp1->capture_devs[i];
  
                rkisp1_capture_init(rkisp1, i);
index b757f75edecf75256525e378151fe217c88ef2c4,0afee50b97b96bc0ec4c63b75399475259a2d8a1..26573f6ae57550d9502c41ac7e1931868f68d4a6
@@@ -24,6 -24,7 +24,7 @@@
  #include "rkisp1-regs.h"
  
  struct dentry;
+ struct regmap;
  
  /*
   * flags on the 'direction' field in struct rkisp1_mbus_info' that indicate
@@@ -110,6 -111,10 +111,10 @@@ enum rkisp1_isp_pad 
   * enum rkisp1_feature - ISP features
   *
   * @RKISP1_FEATURE_MIPI_CSI2: The ISP has an internal MIPI CSI-2 receiver
+  * @RKISP1_FEATURE_MAIN_STRIDE: The ISP supports configurable stride on the main path
+  * @RKISP1_FEATURE_SELF_PATH: The ISP has a self path
+  * @RKISP1_FEATURE_DUAL_CROP: The ISP has the dual crop block at the resizer input
+  * @RKISP1_FEATURE_DMA_34BIT: The ISP uses 34-bit DMA addresses
   *
   * The ISP features are stored in a bitmask in &rkisp1_info.features and allow
   * the driver to implement support for features present in some ISP versions
   */
  enum rkisp1_feature {
        RKISP1_FEATURE_MIPI_CSI2 = BIT(0),
+       RKISP1_FEATURE_MAIN_STRIDE = BIT(1),
+       RKISP1_FEATURE_SELF_PATH = BIT(2),
+       RKISP1_FEATURE_DUAL_CROP = BIT(3),
+       RKISP1_FEATURE_DMA_34BIT = BIT(4),
  };
  
+ #define rkisp1_has_feature(rkisp1, feature) \
+       ((rkisp1)->info->features & RKISP1_FEATURE_##feature)
  /*
   * struct rkisp1_info - Model-specific ISP Information
   *
@@@ -229,7 -241,7 +241,7 @@@ struct rkisp1_vdev_node 
  struct rkisp1_buffer {
        struct vb2_v4l2_buffer vb;
        struct list_head queue;
-       u32 buff_addr[VIDEO_MAX_PLANES];
+       dma_addr_t buff_addr[VIDEO_MAX_PLANES];
  };
  
  /*
@@@ -263,7 -275,7 +275,7 @@@ struct rkisp1_device
   *              handler to stop the streaming by waiting on the 'done' wait queue.
   *              If the irq handler is not called, the stream is stopped by the callback
   *              after timeout.
-  * @sp_y_stride:  the selfpath allows to configure a y stride that is longer than the image width.
+  * @stride:       the line stride for the first plane, in pixel units
   * @buf.lock:   lock to protect buf.queue
   * @buf.queue:          queued buffer list
   * @buf.dummy:          dummy space to store dropped data
@@@ -284,7 -296,7 +296,7 @@@ struct rkisp1_capture 
        bool is_streaming;
        bool is_stopping;
        wait_queue_head_t done;
-       unsigned int sp_y_stride;
+       unsigned int stride;
        struct {
                /* protects queue, curr and next */
                spinlock_t lock;
@@@ -435,6 -447,8 +447,8 @@@ struct rkisp1_debug 
   * @dev:         a pointer to the struct device
   * @clk_size:    number of clocks
   * @clks:        array of clocks
+  * @gasket:      the gasket - i.MX8MP only
+  * @gasket_id:           the gasket ID (0 or 1) - i.MX8MP only
   * @v4l2_dev:    v4l2_device variable
   * @media_dev:           media_device variable
   * @notifier:    a notifier to register on the v4l2-async API to be notified on the sensor
   * @debug:       debug params to be exposed on debugfs
   * @info:        version-specific ISP information
   * @irqs:          IRQ line numbers
 + * @irqs_enabled:  the hardware is enabled and can cause interrupts
   */
  struct rkisp1_device {
        void __iomem *base_addr;
        struct device *dev;
        unsigned int clk_size;
        struct clk_bulk_data clks[RKISP1_MAX_BUS_CLK];
+       struct regmap *gasket;
+       unsigned int gasket_id;
        struct v4l2_device v4l2_dev;
        struct media_device media_dev;
        struct v4l2_async_notifier notifier;
        struct rkisp1_debug debug;
        const struct rkisp1_info *info;
        int irqs[RKISP1_NUM_IRQS];
 +      bool irqs_enabled;
  };
  
  /*
@@@ -526,6 -540,19 +542,19 @@@ int rkisp1_cap_enum_mbus_codes(struct r
   */
  const struct rkisp1_mbus_info *rkisp1_mbus_info_get_by_index(unsigned int index);
  
+ /*
+  * rkisp1_path_count - Return the number of paths supported by the device
+  *
+  * Some devices only have a main path, while other device have both a main path
+  * and a self path. This function returns the number of paths that this device
+  * has, based on the feature flags. It should be used insted of checking
+  * ARRAY_SIZE of capture_devs/resizer_devs.
+  */
+ static inline unsigned int rkisp1_path_count(struct rkisp1_device *rkisp1)
+ {
+       return rkisp1_has_feature(rkisp1, SELF_PATH) ? 2 : 1;
+ }
  /*
   * rkisp1_sd_adjust_crop_rect - adjust a rectangle to fit into another rectangle.
   *
index 73cf08a740118c05328fdd3f1a9d52a6e935c4e0,e6cd4b8604bcea8ff0d5a249c75853e733607c72..bb0202386c70173cdd59f296bff7c5a72421877d
@@@ -10,6 -10,7 +10,7 @@@
  
  #include <linux/clk.h>
  #include <linux/interrupt.h>
+ #include <linux/mfd/syscon.h>
  #include <linux/module.h>
  #include <linux/of.h>
  #include <linux/of_graph.h>
@@@ -207,7 -208,7 +208,7 @@@ static int rkisp1_subdev_notifier_regis
                switch (reg) {
                case 0:
                        /* MIPI CSI-2 port */
-                       if (!(rkisp1->info->features & RKISP1_FEATURE_MIPI_CSI2)) {
+                       if (!rkisp1_has_feature(rkisp1, MIPI_CSI2)) {
                                dev_err(rkisp1->dev,
                                        "internal CSI must be available for port 0\n");
                                ret = -EINVAL;
@@@ -305,24 -306,6 +306,24 @@@ static int __maybe_unused rkisp1_runtim
  {
        struct rkisp1_device *rkisp1 = dev_get_drvdata(dev);
  
 +      rkisp1->irqs_enabled = false;
 +      /* Make sure the IRQ handler will see the above */
 +      mb();
 +
 +      /*
 +       * Wait until any running IRQ handler has returned. The IRQ handler
 +       * may get called even after this (as it's a shared interrupt line)
 +       * but the 'irqs_enabled' flag will make the handler return immediately.
 +       */
 +      for (unsigned int il = 0; il < ARRAY_SIZE(rkisp1->irqs); ++il) {
 +              if (rkisp1->irqs[il] == -1)
 +                      continue;
 +
 +              /* Skip if the irq line is the same as previous */
 +              if (il == 0 || rkisp1->irqs[il - 1] != rkisp1->irqs[il])
 +                      synchronize_irq(rkisp1->irqs[il]);
 +      }
 +
        clk_bulk_disable_unprepare(rkisp1->clk_size, rkisp1->clks);
        return pinctrl_pm_select_sleep_state(dev);
  }
@@@ -339,10 -322,6 +340,10 @@@ static int __maybe_unused rkisp1_runtim
        if (ret)
                return ret;
  
 +      rkisp1->irqs_enabled = true;
 +      /* Make sure the IRQ handler will see the above */
 +      mb();
 +
        return 0;
  }
  
@@@ -358,10 -337,11 +359,11 @@@ static const struct dev_pm_ops rkisp1_p
  
  static int rkisp1_create_links(struct rkisp1_device *rkisp1)
  {
+       unsigned int dev_count = rkisp1_path_count(rkisp1);
        unsigned int i;
        int ret;
  
-       if (rkisp1->info->features & RKISP1_FEATURE_MIPI_CSI2) {
+       if (rkisp1_has_feature(rkisp1, MIPI_CSI2)) {
                /* Link the CSI receiver to the ISP. */
                ret = media_create_pad_link(&rkisp1->csi.sd.entity,
                                            RKISP1_CSI_PAD_SRC,
        }
  
        /* create ISP->RSZ->CAP links */
-       for (i = 0; i < 2; i++) {
+       for (i = 0; i < dev_count; i++) {
                struct media_entity *resizer =
                        &rkisp1->resizer_devs[i].sd.entity;
                struct media_entity *capture =
  
  static void rkisp1_entities_unregister(struct rkisp1_device *rkisp1)
  {
-       if (rkisp1->info->features & RKISP1_FEATURE_MIPI_CSI2)
+       if (rkisp1_has_feature(rkisp1, MIPI_CSI2))
                rkisp1_csi_unregister(rkisp1);
        rkisp1_params_unregister(rkisp1);
        rkisp1_stats_unregister(rkisp1);
@@@ -446,7 -426,7 +448,7 @@@ static int rkisp1_entities_register(str
        if (ret)
                goto error;
  
-       if (rkisp1->info->features & RKISP1_FEATURE_MIPI_CSI2) {
+       if (rkisp1_has_feature(rkisp1, MIPI_CSI2)) {
                ret = rkisp1_csi_register(rkisp1);
                if (ret)
                        goto error;
@@@ -505,7 -485,9 +507,9 @@@ static const struct rkisp1_info px30_is
        .isrs = px30_isp_isrs,
        .isr_size = ARRAY_SIZE(px30_isp_isrs),
        .isp_ver = RKISP1_V12,
-       .features = RKISP1_FEATURE_MIPI_CSI2,
+       .features = RKISP1_FEATURE_MIPI_CSI2
+                 | RKISP1_FEATURE_SELF_PATH
+                 | RKISP1_FEATURE_DUAL_CROP,
  };
  
  static const char * const rk3399_isp_clks[] = {
@@@ -524,7 -506,29 +528,29 @@@ static const struct rkisp1_info rk3399_
        .isrs = rk3399_isp_isrs,
        .isr_size = ARRAY_SIZE(rk3399_isp_isrs),
        .isp_ver = RKISP1_V10,
-       .features = RKISP1_FEATURE_MIPI_CSI2,
+       .features = RKISP1_FEATURE_MIPI_CSI2
+                 | RKISP1_FEATURE_SELF_PATH
+                 | RKISP1_FEATURE_DUAL_CROP,
+ };
+ static const char * const imx8mp_isp_clks[] = {
+       "isp",
+       "hclk",
+       "aclk",
+ };
+ static const struct rkisp1_isr_data imx8mp_isp_isrs[] = {
+       { NULL, rkisp1_isr, BIT(RKISP1_IRQ_ISP) | BIT(RKISP1_IRQ_MI) },
+ };
+ static const struct rkisp1_info imx8mp_isp_info = {
+       .clks = imx8mp_isp_clks,
+       .clk_size = ARRAY_SIZE(imx8mp_isp_clks),
+       .isrs = imx8mp_isp_isrs,
+       .isr_size = ARRAY_SIZE(imx8mp_isp_isrs),
+       .isp_ver = RKISP1_V_IMX8MP,
+       .features = RKISP1_FEATURE_MAIN_STRIDE
+                 | RKISP1_FEATURE_DMA_34BIT,
  };
  
  static const struct of_device_id rkisp1_of_match[] = {
                .compatible = "rockchip,rk3399-cif-isp",
                .data = &rk3399_isp_info,
        },
+       {
+               .compatible = "fsl,imx8mp-isp",
+               .data = &imx8mp_isp_info,
+       },
        {},
  };
  MODULE_DEVICE_TABLE(of, rkisp1_of_match);
@@@ -547,6 -555,7 +577,7 @@@ static int rkisp1_probe(struct platform
        struct rkisp1_device *rkisp1;
        struct v4l2_device *v4l2_dev;
        unsigned int i;
+       u64 dma_mask;
        int ret, irq;
        u32 cif_id;
  
        dev_set_drvdata(dev, rkisp1);
        rkisp1->dev = dev;
  
+       dma_mask = rkisp1_has_feature(rkisp1, DMA_34BIT) ? DMA_BIT_MASK(34) :
+                                                          DMA_BIT_MASK(32);
+       ret = dma_set_mask_and_coherent(dev, dma_mask);
+       if (ret)
+               return ret;
        mutex_init(&rkisp1->stream_lock);
  
        rkisp1->base_addr = devm_platform_ioremap_resource(pdev, 0);
                                rkisp1->irqs[il] = irq;
                }
  
 -              ret = devm_request_irq(dev, irq, info->isrs[i].isr, 0,
 +              ret = devm_request_irq(dev, irq, info->isrs[i].isr, IRQF_SHARED,
                                       dev_driver_string(dev), dev);
                if (ret) {
                        dev_err(dev, "request irq failed: %d\n", ret);
                return ret;
        rkisp1->clk_size = info->clk_size;
  
+       if (info->isp_ver == RKISP1_V_IMX8MP) {
+               unsigned int id;
+               rkisp1->gasket = syscon_regmap_lookup_by_phandle_args(dev->of_node,
+                                                                     "fsl,blk-ctrl",
+                                                                     1, &id);
+               if (IS_ERR(rkisp1->gasket)) {
+                       ret = PTR_ERR(rkisp1->gasket);
+                       dev_err(dev, "failed to get gasket: %d\n", ret);
+                       return ret;
+               }
+               rkisp1->gasket_id = id;
+       }
        pm_runtime_enable(&pdev->dev);
  
        ret = pm_runtime_resume_and_get(&pdev->dev);
  err_unreg_entities:
        rkisp1_entities_unregister(rkisp1);
  err_cleanup_csi:
-       if (rkisp1->info->features & RKISP1_FEATURE_MIPI_CSI2)
+       if (rkisp1_has_feature(rkisp1, MIPI_CSI2))
                rkisp1_csi_cleanup(rkisp1);
  err_unreg_media_dev:
        media_device_unregister(&rkisp1->media_dev);
@@@ -671,7 -702,7 +724,7 @@@ static void rkisp1_remove(struct platfo
        v4l2_async_nf_cleanup(&rkisp1->notifier);
  
        rkisp1_entities_unregister(rkisp1);
-       if (rkisp1->info->features & RKISP1_FEATURE_MIPI_CSI2)
+       if (rkisp1_has_feature(rkisp1, MIPI_CSI2))
                rkisp1_csi_cleanup(rkisp1);
        rkisp1_debug_cleanup(rkisp1);
  
index 78a1f7a1499be84f15b94d75b30266dfb8c720ce,f3552e1a88dd07bfec5585b13ebf108b2bba8956..e45a213baf497118c72ba42b1c6fbf1fcb76eafb
@@@ -10,6 -10,7 +10,7 @@@
  
  #include <linux/iopoll.h>
  #include <linux/pm_runtime.h>
+ #include <linux/regmap.h>
  #include <linux/videodev2.h>
  #include <linux/vmalloc.h>
  
   * +---------------------------------------------------------+
   */
  
+ /* -----------------------------------------------------------------------------
+  * Media block control (i.MX8MP only)
+  */
+ #define ISP_DEWARP_CONTROL                            0x0138
+ #define ISP_DEWARP_CONTROL_MIPI_CSI2_HS_POLARITY      BIT(22)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI2_VS_SEL_RISING    (0 << 20)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI2_VS_SEL_NEGATIVE  (1 << 20)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI2_VS_SEL_POSITIVE  (2 << 20)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI2_VS_SEL_FALLING   (3 << 20)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI2_VS_SEL_MASK      GENMASK(21, 20)
+ #define ISP_DEWARP_CONTROL_MIPI_ISP2_LEFT_JUST_MODE   BIT(19)
+ #define ISP_DEWARP_CONTROL_MIPI_ISP2_DATA_TYPE(dt)    ((dt) << 13)
+ #define ISP_DEWARP_CONTROL_MIPI_ISP2_DATA_TYPE_MASK   GENMASK(18, 13)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI1_HS_POLARITY      BIT(12)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI1_VS_SEL_RISING    (0 << 10)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI1_VS_SEL_NEGATIVE  (1 << 10)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI1_VS_SEL_POSITIVE  (2 << 10)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI1_VS_SEL_FALLING   (3 << 10)
+ #define ISP_DEWARP_CONTROL_MIPI_CSI1_VS_SEL_MASK      GENMASK(11, 10)
+ #define ISP_DEWARP_CONTROL_MIPI_ISP1_LEFT_JUST_MODE   BIT(9)
+ #define ISP_DEWARP_CONTROL_MIPI_ISP1_DATA_TYPE(dt)    ((dt) << 3)
+ #define ISP_DEWARP_CONTROL_MIPI_ISP1_DATA_TYPE_MASK   GENMASK(8, 3)
+ #define ISP_DEWARP_CONTROL_GPR_ISP_1_DISABLE          BIT(1)
+ #define ISP_DEWARP_CONTROL_GPR_ISP_0_DISABLE          BIT(0)
+ static int rkisp1_gasket_enable(struct rkisp1_device *rkisp1,
+                               struct media_pad *source)
+ {
+       struct v4l2_subdev *source_sd;
+       struct v4l2_mbus_frame_desc fd;
+       unsigned int dt;
+       u32 mask;
+       u32 val;
+       int ret;
+       /*
+        * Configure and enable the gasket with the CSI-2 data type. Set the
+        * vsync polarity as active high, as that is what the ISP is configured
+        * to expect in ISP_ACQ_PROP. Enable left justification, as the i.MX8MP
+        * ISP has a 16-bit wide input and expects data to be left-aligned.
+        */
+       source_sd = media_entity_to_v4l2_subdev(source->entity);
+       ret = v4l2_subdev_call(source_sd, pad, get_frame_desc,
+                              source->index, &fd);
+       if (ret) {
+               dev_err(rkisp1->dev,
+                       "failed to get frame descriptor from '%s':%u: %d\n",
+                       source_sd->name, 0, ret);
+               return ret;
+       }
+       if (fd.num_entries != 1) {
+               dev_err(rkisp1->dev, "invalid frame descriptor for '%s':%u\n",
+                       source_sd->name, 0);
+               return -EINVAL;
+       }
+       dt = fd.entry[0].bus.csi2.dt;
+       if (rkisp1->gasket_id == 0) {
+               mask = ISP_DEWARP_CONTROL_MIPI_CSI1_HS_POLARITY
+                    | ISP_DEWARP_CONTROL_MIPI_CSI1_VS_SEL_MASK
+                    | ISP_DEWARP_CONTROL_MIPI_ISP1_LEFT_JUST_MODE
+                    | ISP_DEWARP_CONTROL_MIPI_ISP1_DATA_TYPE_MASK
+                    | ISP_DEWARP_CONTROL_GPR_ISP_0_DISABLE;
+               val = ISP_DEWARP_CONTROL_MIPI_CSI1_VS_SEL_POSITIVE
+                   | ISP_DEWARP_CONTROL_MIPI_ISP1_LEFT_JUST_MODE
+                   | ISP_DEWARP_CONTROL_MIPI_ISP1_DATA_TYPE(dt);
+       } else {
+               mask = ISP_DEWARP_CONTROL_MIPI_CSI2_HS_POLARITY
+                    | ISP_DEWARP_CONTROL_MIPI_CSI2_VS_SEL_MASK
+                    | ISP_DEWARP_CONTROL_MIPI_ISP2_LEFT_JUST_MODE
+                    | ISP_DEWARP_CONTROL_MIPI_ISP2_DATA_TYPE_MASK
+                    | ISP_DEWARP_CONTROL_GPR_ISP_1_DISABLE;
+               val = ISP_DEWARP_CONTROL_MIPI_CSI2_VS_SEL_POSITIVE
+                   | ISP_DEWARP_CONTROL_MIPI_ISP2_LEFT_JUST_MODE
+                   | ISP_DEWARP_CONTROL_MIPI_ISP2_DATA_TYPE(dt);
+       }
+       regmap_update_bits(rkisp1->gasket, ISP_DEWARP_CONTROL, mask, val);
+       return 0;
+ }
+ static void rkisp1_gasket_disable(struct rkisp1_device *rkisp1)
+ {
+       u32 mask;
+       u32 val;
+       if (rkisp1->gasket_id == 1) {
+               mask = ISP_DEWARP_CONTROL_MIPI_ISP2_LEFT_JUST_MODE
+                    | ISP_DEWARP_CONTROL_MIPI_ISP2_DATA_TYPE_MASK
+                    | ISP_DEWARP_CONTROL_GPR_ISP_1_DISABLE;
+               val = ISP_DEWARP_CONTROL_GPR_ISP_1_DISABLE;
+       } else {
+               mask = ISP_DEWARP_CONTROL_MIPI_ISP1_LEFT_JUST_MODE
+                    | ISP_DEWARP_CONTROL_MIPI_ISP1_DATA_TYPE_MASK
+                    | ISP_DEWARP_CONTROL_GPR_ISP_0_DISABLE;
+               val = ISP_DEWARP_CONTROL_GPR_ISP_0_DISABLE;
+       }
+       regmap_update_bits(rkisp1->gasket, ISP_DEWARP_CONTROL, mask, val);
+ }
  /* ----------------------------------------------------------------------------
   * Camera Interface registers configurations
   */
@@@ -291,6 -401,9 +401,9 @@@ static void rkisp1_isp_stop(struct rkis
                     RKISP1_CIF_VI_IRCL_MIPI_SW_RST |
                     RKISP1_CIF_VI_IRCL_ISP_SW_RST);
        rkisp1_write(rkisp1, RKISP1_CIF_VI_IRCL, 0x0);
+       if (rkisp1->info->isp_ver == RKISP1_V_IMX8MP)
+               rkisp1_gasket_disable(rkisp1);
  }
  
  static void rkisp1_config_clk(struct rkisp1_isp *isp)
        }
  }
  
- static void rkisp1_isp_start(struct rkisp1_isp *isp,
-                            struct v4l2_subdev_state *sd_state)
+ static int rkisp1_isp_start(struct rkisp1_isp *isp,
+                           struct v4l2_subdev_state *sd_state,
+                           struct media_pad *source)
  {
        struct rkisp1_device *rkisp1 = isp->rkisp1;
        const struct v4l2_mbus_framefmt *src_fmt;
        const struct rkisp1_mbus_info *src_info;
        u32 val;
+       int ret;
  
        rkisp1_config_clk(isp);
  
+       if (rkisp1->info->isp_ver == RKISP1_V_IMX8MP) {
+               ret = rkisp1_gasket_enable(rkisp1, source);
+               if (ret)
+                       return ret;
+       }
        /* Activate ISP */
        val = rkisp1_read(rkisp1, RKISP1_CIF_ISP_CTRL);
        val |= RKISP1_CIF_ISP_CTRL_ISP_CFG_UPD |
  
        if (src_info->pixel_enc != V4L2_PIXEL_ENC_BAYER)
                rkisp1_params_post_configure(&rkisp1->params);
+       return 0;
  }
  
  /* ----------------------------------------------------------------------------
@@@ -848,7 -971,9 +971,9 @@@ static int rkisp1_isp_s_stream(struct v
        if (ret)
                goto out_unlock;
  
-       rkisp1_isp_start(isp, sd_state);
+       ret = rkisp1_isp_start(isp, sd_state, source_pad);
+       if (ret)
+               goto out_unlock;
  
        ret = v4l2_subdev_call(rkisp1->source, video, s_stream, true);
        if (ret) {
@@@ -976,9 -1101,6 +1101,9 @@@ irqreturn_t rkisp1_isp_isr(int irq, voi
        struct rkisp1_device *rkisp1 = dev_get_drvdata(dev);
        u32 status, isp_err;
  
 +      if (!rkisp1->irqs_enabled)
 +              return IRQ_NONE;
 +
        status = rkisp1_read(rkisp1, RKISP1_CIF_ISP_MIS);
        if (!status)
                return IRQ_NONE;
index 739b0f0fc1a0f4a90951dd1fb20ded8d2c565d54,ffed604bc29a92e7de511bf49c6a19f177b19a85..63ad36f04f724cf13e1c2928e7eb3602f98c3294
@@@ -278,13 -278,13 +278,13 @@@ static inline void v4l2_i2c_subdev_unre
   *
   *
   * @v4l2_dev: pointer to &struct v4l2_device.
 - * @master: pointer to struct spi_master.
 + * @ctlr: pointer to struct spi_controller.
   * @info: pointer to struct spi_board_info.
   *
   * returns a &struct v4l2_subdev pointer.
   */
  struct v4l2_subdev *v4l2_spi_new_subdev(struct v4l2_device *v4l2_dev,
 -              struct spi_master *master, struct spi_board_info *info);
 +              struct spi_controller *ctlr, struct spi_board_info *info);
  
  /**
   * v4l2_spi_subdev_init - Initialize a v4l2_subdev with data from an
@@@ -308,7 -308,7 +308,7 @@@ void v4l2_spi_subdev_unregister(struct 
  
  static inline struct v4l2_subdev *
  v4l2_spi_new_subdev(struct v4l2_device *v4l2_dev,
 -                  struct spi_master *master, struct spi_board_info *info)
 +                  struct spi_controller *ctlr, struct spi_board_info *info)
  {
        return NULL;
  }
@@@ -536,9 -536,10 +536,10 @@@ int v4l2_fill_pixfmt_mp(struct v4l2_pix
   * V4L2_CID_LINK_FREQ control implemented by the transmitter, or value
   * calculated based on the V4L2_CID_PIXEL_RATE implemented by the transmitter.
   *
-  * Returns link frequency on success, otherwise a negative error code:
-  *    -ENOENT: Link frequency or pixel rate control not found
-  *    -EINVAL: Invalid link frequency value
+  * Return:
+  * * >0: Link frequency
+  * * %-ENOENT: Link frequency or pixel rate control not found
+  * * %-EINVAL: Invalid link frequency value
   */
  s64 v4l2_get_link_freq(struct v4l2_ctrl_handler *handler, unsigned int mul,
                       unsigned int div);
@@@ -547,6 -548,31 +548,31 @@@ void v4l2_simplify_fraction(u32 *numera
                unsigned int n_terms, unsigned int threshold);
  u32 v4l2_fraction_to_interval(u32 numerator, u32 denominator);
  
+ /**
+  * v4l2_link_freq_to_bitmap - Figure out platform-supported link frequencies
+  * @dev: The struct device
+  * @fw_link_freqs: Array of link frequencies from firmware
+  * @num_of_fw_link_freqs: Number of entries in @fw_link_freqs
+  * @driver_link_freqs: Array of link frequencies supported by the driver
+  * @num_of_driver_link_freqs: Number of entries in @driver_link_freqs
+  * @bitmap: Bitmap of driver-supported link frequencies found in @fw_link_freqs
+  *
+  * This function checks which driver-supported link frequencies are enabled in
+  * system firmware and sets the corresponding bits in @bitmap (after first
+  * zeroing it).
+  *
+  * Return:
+  * * %0: Success
+  * * %-ENOENT: No match found between driver-supported link frequencies and
+  *   those available in firmware.
+  * * %-ENODATA: No link frequencies were specified in firmware.
+  */
+ int v4l2_link_freq_to_bitmap(struct device *dev, const u64 *fw_link_freqs,
+                            unsigned int num_of_fw_link_freqs,
+                            const s64 *driver_link_freqs,
+                            unsigned int num_of_driver_link_freqs,
+                            unsigned long *bitmap);
  static inline u64 v4l2_buffer_get_timestamp(const struct v4l2_buffer *buf)
  {
        /*
This page took 0.29086 seconds and 4 git commands to generate.