Merge tag 'drm-misc-next-2023-01-12' of git://anongit.freedesktop.org/drm/drm-misc...
authorDave Airlie <airlied@redhat.com>
Mon, 16 Jan 2023 05:33:22 +0000 (15:33 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 16 Jan 2023 05:33:28 +0000 (15:33 +1000)
drm-misc-next for v6.3:

UAPI Changes:

 * fourcc: Document Open Source user waiver

Cross-subsystem Changes:

 * firmware: fix color-format selection for system framebuffers

Core Changes:

 * format-helper: Add conversion from XRGB8888 to various sysfb formats;
   Make XRGB8888 the only driver-emulated legacy format

 * fb-helper: Avoid blank consoles from selecting an incorrect color format

 * probe-helper: Enable/disable HPD on connectors plus driver updates

 * Use drm_dbg_ helpers in several places

 * docs: Document defaults for CRTC backgrounds; Document use of drm_minor

Driver Changes:

 * arm/hdlcd: Use new debugfs helpers

 * gud: Use new debugfs helpers

 * panel: Support Visionox VTDR6130 AMOLED DSI; Support Himax HX8394; Convert
   many drivers to common generic DSI write-sequence helper

 * v3d: Do not opencode drm_gem_object_lookup()

 * vc4: Various HVS an CRTC fixes

 * vkms: Fix SEGFAULT from incorrect GEM-buffer mapping

 * Convert various drivers to i2c probe_new()

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/Y8ADeSzZDj+tpibF@linux-uq9g
1  2 
Documentation/userspace-api/ioctl/ioctl-number.rst
MAINTAINERS
drivers/gpu/drm/drm_file.c
drivers/gpu/drm/drm_gem_shmem_helper.c
drivers/gpu/drm/i2c/tda998x_drv.c
drivers/gpu/drm/msm/hdmi/hdmi.c
drivers/gpu/drm/tests/drm_format_helper_test.c
include/drm/drm_device.h

@@@ -105,7 -105,6 +105,7 @@@ Code  Seq#    Include Fil
  '8'   all                                                            SNP8023 advanced NIC card
                                                                       <mailto:mcr@solidum.com>
  ';'   64-7F  linux/vfio.h
 +';'   80-FF  linux/iommufd.h
  '='   00-3f  uapi/linux/ptp_clock.h                                  <mailto:richardcochran@gmail.com>
  '@'   00-0F  linux/radeonfb.h                                        conflict!
  '@'   00-0F  drivers/video/aty/aty128fb.c                            conflict!
  'a'   00-0F  drivers/crypto/qat/qat_common/adf_cfg_common.h          conflict! qat driver
  'b'   00-FF                                                          conflict! bit3 vme host bridge
                                                                       <mailto:natalia@nikhefk.nikhef.nl>
+ 'b'   00-0F  linux/dma-buf.h                                         conflict!
  'c'   all    linux/cm4000_cs.h                                       conflict!
  'c'   00-7F  linux/comstats.h                                        conflict!
  'c'   00-7F  linux/coda.h                                            conflict!
diff --combined MAINTAINERS
@@@ -312,13 -312,6 +312,13 @@@ L:       linux-iio@vger.kernel.or
  S:    Maintained
  F:    drivers/counter/104-quad-8.c
  
 +ACCES IDIO-16 GPIO LIBRARY
 +M:    William Breathitt Gray <william.gray@linaro.org>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-idio-16.c
 +F:    drivers/gpio/gpio-idio-16.h
 +
  ACCES PCI-IDIO-16 GPIO DRIVER
  M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
@@@ -782,24 -775,6 +782,24 @@@ T:       git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
  F:    drivers/media/platform/sunxi/sun4i-csi/
  
 +ALLWINNER A31 CSI DRIVER
 +M:    Yong Deng <yong.deng@magewell.com>
 +M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
 +F:    drivers/media/platform/sunxi/sun6i-csi/
 +
 +ALLWINNER A31 ISP DRIVER
 +M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-isp.yaml
 +F:    drivers/staging/media/sunxi/sun6i-isp/
 +F:    drivers/staging/media/sunxi/sun6i-isp/uapi/sun6i-isp-config.h
 +
  ALLWINNER A31 MIPI CSI-2 BRIDGE DRIVER
  M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
  L:    linux-media@vger.kernel.org
@@@ -1118,16 -1093,6 +1118,16 @@@ S:    Maintaine
  F:    Documentation/hid/amd-sfh*
  F:    drivers/hid/amd-sfh-hid/
  
 +AMLOGIC DDR PMU DRIVER
 +M:    Jiucheng Xu <jiucheng.xu@amlogic.com>
 +L:    linux-amlogic@lists.infradead.org
 +S:    Supported
 +W:    http://www.amlogic.com
 +F:    Documentation/admin-guide/perf/meson-ddr-pmu.rst
 +F:    Documentation/devicetree/bindings/perf/amlogic,g12-ddr-pmu.yaml
 +F:    drivers/perf/amlogic/
 +F:    include/soc/amlogic/
 +
  AMPHION VPU CODEC V4L2 DRIVER
  M:    Ming Qian <ming.qian@nxp.com>
  M:    Shijie Qin <shijie.qin@nxp.com>
@@@ -1152,15 -1117,6 +1152,15 @@@ T:    git git://git.kernel.org/pub/scm/lin
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
  F:    drivers/net/amt.c
  
 +ANALOG DEVICES INC AD4130 DRIVER
 +M:    Cosmin Tanislav <cosmin.tanislav@analog.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +W:    http://ez.analog.com/community/linux-device-drivers
 +F:    Documentation/ABI/testing/sysfs-bus-iio-adc-ad4130
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad4130.yaml
 +F:    drivers/iio/adc/ad4130.c
 +
  ANALOG DEVICES INC AD7192 DRIVER
  M:    Alexandru Tachici <alexandru.tachici@analog.com>
  L:    linux-iio@vger.kernel.org
@@@ -1210,14 -1166,6 +1210,14 @@@ W:    https://ez.analog.com/linux-software
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7780.yaml
  F:    drivers/iio/adc/ad7780.c
  
 +ANALOG DEVICES INC AD74115 DRIVER
 +M:    Cosmin Tanislav <cosmin.tanislav@analog.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +W:    http://ez.analog.com/community/linux-device-drivers
 +F:    Documentation/devicetree/bindings/iio/addac/adi,ad74115.yaml
 +F:    drivers/iio/addac/ad74115.c
 +
  ANALOG DEVICES INC AD74413R DRIVER
  M:    Cosmin Tanislav <cosmin.tanislav@analog.com>
  L:    linux-iio@vger.kernel.org
@@@ -1241,14 -1189,6 +1241,14 @@@ W:    https://ez.analog.com/linux-software
  F:    Documentation/devicetree/bindings/iio/amplifiers/adi,ada4250.yaml
  F:    drivers/iio/amplifiers/ada4250.c
  
 +ANALOG DEVICES INC ADF4377 DRIVER
 +M:    Antoniu Miclaus <antoniu.miclaus@analog.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/iio/frequency/adi,adf4377.yaml
 +F:    drivers/iio/frequency/adf4377.c
 +
  ANALOG DEVICES INC ADGS1408 DRIVER
  M:    Mircea Caprioru <mircea.caprioru@analog.com>
  S:    Supported
@@@ -1745,7 -1685,7 +1745,7 @@@ M:      Miquel Raynal <miquel.raynal@bootlin
  M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/memory-controllers/arm,pl353-smc.yaml
 +F:    Documentation/devicetree/bindings/memory-controllers/arm,pl35x-smc.yaml
  F:    drivers/memory/pl353-smc.c
  
  ARM PRIMECELL CLCD PL110 DRIVER
@@@ -1957,14 -1897,12 +1957,14 @@@ T:   git https://github.com/AsahiLinux/li
  F:    Documentation/devicetree/bindings/arm/apple.yaml
  F:    Documentation/devicetree/bindings/arm/apple/*
  F:    Documentation/devicetree/bindings/clock/apple,nco.yaml
 +F:    Documentation/devicetree/bindings/cpufreq/apple,cluster-cpufreq.yaml
  F:    Documentation/devicetree/bindings/dma/apple,admac.yaml
  F:    Documentation/devicetree/bindings/i2c/apple,i2c.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,*
  F:    Documentation/devicetree/bindings/iommu/apple,dart.yaml
  F:    Documentation/devicetree/bindings/iommu/apple,sart.yaml
  F:    Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
 +F:    Documentation/devicetree/bindings/net/bluetooth/brcm,bcm4377-bluetooth.yaml
  F:    Documentation/devicetree/bindings/nvme/apple,nvme-ans.yaml
  F:    Documentation/devicetree/bindings/nvmem/apple,efuses.yaml
  F:    Documentation/devicetree/bindings/pci/apple,pcie.yaml
@@@ -1972,9 -1910,7 +1972,9 @@@ F:      Documentation/devicetree/bindings/pi
  F:    Documentation/devicetree/bindings/power/apple*
  F:    Documentation/devicetree/bindings/watchdog/apple,wdt.yaml
  F:    arch/arm64/boot/dts/apple/
 +F:    drivers/bluetooth/hci_bcm4377.c
  F:    drivers/clk/clk-apple-nco.c
 +F:    drivers/cpufreq/apple-soc-cpufreq.c
  F:    drivers/dma/apple-admac.c
  F:    drivers/i2c/busses/i2c-pasemi-core.c
  F:    drivers/i2c/busses/i2c-pasemi-platform.c
@@@ -2330,13 -2266,14 +2330,13 @@@ F:   Documentation/devicetree/bindings/bu
  F:    Documentation/devicetree/bindings/gpio/intel,ixp4xx-gpio.txt
  F:    Documentation/devicetree/bindings/interrupt-controller/intel,ixp4xx-interrupt.yaml
  F:    Documentation/devicetree/bindings/timer/intel,ixp4xx-timer.yaml
 +F:    arch/arm/boot/dts/intel-ixp*
  F:    arch/arm/mach-ixp4xx/
  F:    drivers/bus/intel-ixp4xx-eb.c
  F:    drivers/clocksource/timer-ixp4xx.c
  F:    drivers/crypto/ixp4xx_crypto.c
  F:    drivers/gpio/gpio-ixp4xx.c
  F:    drivers/irqchip/irq-ixp4xx.c
 -F:    include/linux/irqchip/irq-ixp4xx.h
 -F:    include/linux/platform_data/timer-ixp4xx.h
  
  ARM/INTEL KEEMBAY ARCHITECTURE
  M:    Paul J. Murphy <paul.j.murphy@intel.com>
@@@ -2404,8 -2341,6 +2404,8 @@@ M:      Gregory Clement <gregory.clement@boo
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git
 +F:    Documentation/devicetree/bindings/arm/marvell/marvell,dove.txt
 +F:    Documentation/devicetree/bindings/arm/marvell/marvell,orion5x.txt
  F:    Documentation/devicetree/bindings/soc/dove/
  F:    arch/arm/boot/dts/dove*
  F:    arch/arm/boot/dts/orion5x*
@@@ -2422,7 -2357,6 +2422,7 @@@ M:      Sebastian Hesselbarth <sebastian.hes
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git
 +F:    Documentation/devicetree/bindings/arm/marvell/
  F:    arch/arm/boot/dts/armada*
  F:    arch/arm/boot/dts/kirkwood*
  F:    arch/arm/configs/mvebu_*_defconfig
@@@ -2505,7 -2439,6 +2505,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Supported
  T:    git git://github.com/microchip-ung/linux-upstream.git
  F:    arch/arm64/boot/dts/microchip/
 +F:    drivers/net/ethernet/microchip/vcap/
  F:    drivers/pinctrl/pinctrl-microchip-sgpio.c
  N:    sparx5
  
@@@ -2687,7 -2620,7 +2687,7 @@@ W:      http://www.armlinux.org.uk
  ARM/QUALCOMM SUPPORT
  M:    Andy Gross <agross@kernel.org>
  M:    Bjorn Andersson <andersson@kernel.org>
 -R:    Konrad Dybcio <konrad.dybcio@somainline.org>
 +R:    Konrad Dybcio <konrad.dybcio@linaro.org>
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
@@@ -2758,7 -2691,7 +2758,7 @@@ F:      arch/arm/boot/dts/rtd
  F:    arch/arm/mach-realtek/
  F:    arch/arm64/boot/dts/realtek/
  
 -ARM/RENESAS ARCHITECTURE
 +ARM/RISC-V/RENESAS ARCHITECTURE
  M:    Geert Uytterhoeven <geert+renesas@glider.be>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-renesas-soc@vger.kernel.org
@@@ -2766,6 -2699,7 +2766,6 @@@ S:      Supporte
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
 -F:    Documentation/devicetree/bindings/arm/renesas.yaml
  F:    Documentation/devicetree/bindings/hwinfo/renesas,prr.yaml
  F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm/boot/dts/emev2*
@@@ -2779,7 -2713,6 +2779,7 @@@ F:      arch/arm/configs/shmobile_defconfi
  F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
  F:    arch/arm64/boot/dts/renesas/
 +F:    arch/riscv/boot/dts/renesas/
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
  
@@@ -5008,12 -4941,6 +5008,12 @@@ S:    Maintaine
  F:    drivers/platform/chrome/cros_usbpd_notify.c
  F:    include/linux/platform_data/cros_usbpd_notify.h
  
 +CHROMEOS HPS DRIVER
 +M:    Dan Callaghan <dcallagh@chromium.org>
 +R:    Sami Kyöstilä <skyostil@chromium.org>
 +S:    Maintained
 +F:    drivers/platform/chrome/cros_hps_i2c.c
 +
  CHRONTEL CH7322 CEC DRIVER
  M:    Joe Tessler <jrt@google.com>
  L:    linux-media@vger.kernel.org
@@@ -5372,7 -5299,7 +5372,7 @@@ M:      Johannes Weiner <hannes@cmpxchg.org
  M:    Michal Hocko <mhocko@kernel.org>
  M:    Roman Gushchin <roman.gushchin@linux.dev>
  M:    Shakeel Butt <shakeelb@google.com>
 -R:    Muchun Song <songmuchun@bytedance.com>
 +R:    Muchun Song <muchun.song@linux.dev>
  L:    cgroups@vger.kernel.org
  L:    linux-mm@kvack.org
  S:    Maintained
@@@ -5575,6 -5502,14 +5575,6 @@@ M:     Jaya Kumar <jayakumar.alsa@gmail.com
  S:    Maintained
  F:    sound/pci/cs5535audio/
  
 -CSI DRIVERS FOR ALLWINNER V3s
 -M:    Yong Deng <yong.deng@magewell.com>
 -L:    linux-media@vger.kernel.org
 -S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
 -F:    drivers/media/platform/sunxi/sun6i-csi/
 -
  CTU CAN FD DRIVER
  M:    Pavel Pisa <pisa@cmp.felk.cvut.cz>
  M:    Ondrej Ille <ondrej.ille@gmail.com>
@@@ -5650,6 -5585,8 +5650,6 @@@ F:      drivers/scsi/cxgbi/cxgb3
  
  CXGB4 CRYPTO DRIVER (chcr)
  M:    Ayush Sawal <ayush.sawal@chelsio.com>
 -M:    Vinay Kumar Yadav <vinay.yadav@chelsio.com>
 -M:    Rohit Maheshwari <rohitm@chelsio.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
  W:    http://www.chelsio.com
@@@ -5657,6 -5594,8 +5657,6 @@@ F:      drivers/crypto/chelsi
  
  CXGB4 INLINE CRYPTO DRIVER
  M:    Ayush Sawal <ayush.sawal@chelsio.com>
 -M:    Vinay Kumar Yadav <vinay.yadav@chelsio.com>
 -M:    Rohit Maheshwari <rohitm@chelsio.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  W:    http://www.chelsio.com
@@@ -5919,13 -5858,6 +5919,13 @@@ L:    Dell.Client.Kernel@dell.co
  S:    Maintained
  F:    drivers/platform/x86/dell/dell-wmi-descriptor.c
  
 +DELL WMI DDV DRIVER
 +M:    Armin Wolf <W_Armin@gmx.de>
 +S:    Maintained
 +F:    Documentation/ABI/testing/debugfs-dell-wmi-ddv
 +F:    Documentation/ABI/testing/sysfs-platform-dell-wmi-ddv
 +F:    drivers/platform/x86/dell/dell-wmi-ddv.c
 +
  DELL WMI SYSMAN DRIVER
  M:    Divya Bharathi <divya.bharathi@dell.com>
  M:    Prasanth Ksr <prasanth.ksr@dell.com>
@@@ -6101,12 -6033,11 +6101,12 @@@ F:   include/net/devlink.
  F:    include/uapi/linux/devlink.h
  F:    net/core/devlink.c
  
 -DH ELECTRONICS IMX6 DHCOM BOARD SUPPORT
 +DH ELECTRONICS IMX6 DHCOM/DHCOR BOARD SUPPORT
  M:    Christoph Niedermaier <cniedermaier@dh-electronics.com>
  L:    kernel@dh-electronics.com
  S:    Maintained
  F:    arch/arm/boot/dts/imx6*-dhcom-*
 +F:    arch/arm/boot/dts/imx6*-dhcor-*
  
  DH ELECTRONICS STM32MP1 DHCOM/DHCOR BOARD SUPPORT
  M:    Marek Vasut <marex@denx.de>
@@@ -6398,7 -6329,6 +6398,7 @@@ F:      drivers/net/ethernet/freescale/dpaa2
  F:    drivers/net/ethernet/freescale/dpaa2/Makefile
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth*
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-mac*
 +F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk*
  F:    drivers/net/ethernet/freescale/dpaa2/dpkg.h
  F:    drivers/net/ethernet/freescale/dpaa2/dpmac*
  F:    drivers/net/ethernet/freescale/dpaa2/dpni*
@@@ -6550,6 -6480,14 +6550,14 @@@ S:    Maintaine
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/tiny/gm12u320.c
  
+ DRM DRIVER FOR HIMAX HX8394 MIPI-DSI LCD panels
+ M:    Ondrej Jirman <megi@xff.cz>
+ M:    Javier Martinez Canillas <javierm@redhat.com>
+ S:    Maintained
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
+ F:    Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
+ F:    drivers/gpu/drm/panel/panel-himax-hx8394.c
  DRM DRIVER FOR HX8357D PANELS
  M:    Emma Anholt <emma@anholt.net>
  S:    Maintained
@@@ -6906,15 -6844,6 +6914,15 @@@ F:    include/drm/drm
  F:    include/linux/vga*
  F:    include/uapi/drm/drm*
  
 +DRM COMPUTE ACCELERATORS DRIVERS AND FRAMEWORK
 +M:    Oded Gabbay <ogabbay@kernel.org>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Maintained
 +C:    irc://irc.oftc.net/dri-devel
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/accel.git
 +F:    Documentation/accel/
 +F:    drivers/accel/
 +
  DRM DRIVERS FOR ALLWINNER A10
  M:    Maxime Ripard <mripard@kernel.org>
  M:    Chen-Yu Tsai <wens@csie.org>
@@@ -7009,7 -6938,6 +7017,6 @@@ M:      Xinliang Liu <xinliang.liu@linaro.or
  M:    Tian Tao  <tiantao6@hisilicon.com>
  R:    John Stultz <jstultz@google.com>
  R:    Xinwei Kong <kong.kongxinwei@hisilicon.com>
- R:    Chen Feng <puck.chen@hisilicon.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -7451,9 -7379,9 +7458,9 @@@ F:      drivers/edac/thunderx_edac
  
  EDAC-CORE
  M:    Borislav Petkov <bp@alien8.de>
 -M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  M:    Tony Luck <tony.luck@intel.com>
  R:    James Morse <james.morse@arm.com>
 +R:    Mauro Carvalho Chehab <mchehab@kernel.org>
  R:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
  S:    Supported
@@@ -7570,7 -7498,8 +7577,7 @@@ S:      Maintaine
  F:    drivers/edac/pnd2_edac.[ch]
  
  EDAC-QCOM
 -M:    Channagoud Kadabi <ckadabi@codeaurora.org>
 -M:    Venkata Narendra Kumar Gutta <vnkgutta@codeaurora.org>
 +M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
  L:    linux-arm-msm@vger.kernel.org
  L:    linux-edac@vger.kernel.org
  S:    Maintained
@@@ -7771,7 -7700,6 +7778,7 @@@ ETAS ES58X CAN/USB DRIVE
  M:    Vincent Mailhol <mailhol.vincent@wanadoo.fr>
  L:    linux-can@vger.kernel.org
  S:    Maintained
 +F:    Documentation/networking/devlink/etas_es58x.rst
  F:    drivers/net/can/usb/etas_es58x/
  
  ETHERNET BRIDGE
@@@ -7877,6 -7805,7 +7884,6 @@@ F:      Documentation/admin-guide/efi-stub.r
  F:    arch/*/include/asm/efi.h
  F:    arch/*/kernel/efi.c
  F:    arch/arm/boot/compressed/efi-header.S
 -F:    arch/arm64/kernel/efi-entry.S
  F:    arch/x86/platform/efi/
  F:    drivers/firmware/efi/
  F:    include/linux/efi*.h
@@@ -7922,7 -7851,6 +7929,7 @@@ M:      Chao Yu <chao@kernel.org
  L:    linux-f2fs-devel@lists.sourceforge.net
  S:    Maintained
  W:    https://f2fs.wiki.kernel.org/
 +B:    https://bugzilla.kernel.org/enter_bug.cgi?product=File%20System&component=f2fs
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
  F:    Documentation/ABI/testing/sysfs-fs-f2fs
  F:    Documentation/filesystems/f2fs.rst
@@@ -7961,12 -7889,6 +7968,12 @@@ F:    fs/notify/fanotify
  F:    include/linux/fanotify.h
  F:    include/uapi/linux/fanotify.h
  
 +FARADAY FOTG210 USB2 DUAL-ROLE CONTROLLER
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/fotg210/
 +
  FARSYNC SYNCHRONOUS DRIVER
  M:    Kevin Curtis <kevin.curtis@farsite.co.uk>
  S:    Supported
@@@ -8145,8 -8067,6 +8152,8 @@@ S:      Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    include/linux/fortify-string.h
  F:    lib/fortify_kunit.c
 +F:    lib/memcpy_kunit.c
 +F:    lib/strscpy_kunit.c
  F:    lib/test_fortify/*
  F:    scripts/test_fortify.sh
  K:    \b__NO_FORTIFY\b
@@@ -8283,10 -8203,7 +8290,10 @@@ S:    Maintaine
  F:    drivers/i2c/busses/i2c-cpm.c
  
  FREESCALE IMX / MXC FEC DRIVER
 -M:    Joakim Zhang <qiangqing.zhang@nxp.com>
 +M:    Wei Fang <wei.fang@nxp.com>
 +R:    Shenwei Wang <shenwei.wang@nxp.com>
 +R:    Clark Wang <xiaoning.wang@nxp.com>
 +R:    NXP Linux Team <linux-imx@nxp.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/fsl,fec.yaml
@@@ -8560,9 -8477,6 +8567,9 @@@ FUNCTION HOOKS (FTRACE
  M:    Steven Rostedt <rostedt@goodmis.org>
  M:    Masami Hiramatsu <mhiramat@kernel.org>
  R:    Mark Rutland <mark.rutland@arm.com>
 +L:    linux-kernel@vger.kernel.org
 +L:    linux-trace-kernel@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-trace-kernel/list/
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
  F:    Documentation/trace/ftrace*
@@@ -8848,7 -8762,6 +8855,7 @@@ GPIO IR Transmitte
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/irled/gpio-ir-tx.yaml
  F:    drivers/media/rc/gpio-ir-tx.c
  
  GPIO MOCKUP DRIVER
@@@ -9272,13 -9185,6 +9279,13 @@@ W:    http://www.highpoint-tech.co
  F:    Documentation/scsi/hptiop.rst
  F:    drivers/scsi/hptiop.c
  
 +HIMAX HX83112B TOUCHSCREEN SUPPORT
 +M:    Job Noorman <job@noorman.info>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/input/touchscreen/himax,hx83112b.yaml
 +F:    drivers/input/touchscreen/himax_hx83112b.c
 +
  HIPPI
  M:    Jes Sorensen <jes@trained-monkey.org>
  L:    linux-hippi@sunsite.dk
@@@ -9308,7 -9214,6 +9315,7 @@@ HISILICON GPIO DRIVE
  M:    Jay Fang <f.fangjian@huawei.com>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/gpio/hisilicon,ascend910-gpio.yaml
  F:    drivers/gpio/gpio-hisi.c
  
  HISILICON HIGH PERFORMANCE RSA ENGINE DRIVER (HPRE)
@@@ -9325,7 -9230,6 +9332,7 @@@ M:      Yicong Yang <yangyicong@hisilicon.co
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  W:    https://www.hisilicon.com
 +F:    Documentation/devicetree/bindings/i2c/hisilicon,ascend910-i2c.yaml
  F:    drivers/i2c/busses/i2c-hisi.c
  
  HISILICON LPC BUS DRIVER
@@@ -9360,7 -9264,7 +9367,7 @@@ F:      drivers/misc/hisi_hikey_usb.
  
  HISILICON PMU DRIVER
  M:    Shaokun Zhang <zhangshaokun@hisilicon.com>
 -M:    Qi Liu <liuqi115@huawei.com>
 +M:    Jonathan Cameron <jonathan.cameron@huawei.com>
  S:    Supported
  W:    http://www.hisilicon.com
  F:    Documentation/admin-guide/perf/hisi-pcie-pmu.rst
@@@ -9409,7 -9313,7 +9416,7 @@@ F:      Documentation/devicetree/bindings/in
  F:    drivers/infiniband/hw/hns/
  
  HISILICON SAS Controller
 -M:    John Garry <john.garry@huawei.com>
 +M:    Xiang Chen <chenxiang66@hisilicon.com>
  S:    Supported
  W:    http://www.hisilicon.com
  F:    Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
@@@ -9478,7 -9382,7 +9485,7 @@@ F:      drivers/net/wireless/intersil/hostap
  HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
  L:    platform-driver-x86@vger.kernel.org
  S:    Orphan
 -F:    drivers/platform/x86/tc1100-wmi.c
 +F:    drivers/platform/x86/hp/tc1100-wmi.c
  
  HPET: High Precision Event Timers driver
  M:    Clemens Ladisch <clemens@ladisch.de>
@@@ -9548,15 -9452,14 +9555,15 @@@ F:   Documentation/devicetree/bindings/ii
  F:    drivers/iio/humidity/hts221*
  
  HUAWEI ETHERNET DRIVER
 +M:    Cai Huoqing <cai.huoqing@linux.dev>
  L:    netdev@vger.kernel.org
 -S:    Orphan
 +S:    Maintained
  F:    Documentation/networking/device_drivers/ethernet/huawei/hinic.rst
  F:    drivers/net/ethernet/huawei/hinic/
  
  HUGETLB SUBSYSTEM
  M:    Mike Kravetz <mike.kravetz@oracle.com>
 -M:    Muchun Song <songmuchun@bytedance.com>
 +M:    Muchun Song <muchun.song@linux.dev>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-kernel-mm-hugepages
@@@ -9653,7 -9556,6 +9660,7 @@@ F:      include/asm-generic/hyperv-tlfs.
  F:    include/asm-generic/mshyperv.h
  F:    include/clocksource/hyperv_timer.h
  F:    include/linux/hyperv.h
 +F:    include/net/mana
  F:    include/uapi/linux/hyperv.h
  F:    net/vmw_vsock/hyperv_transport.c
  F:    tools/hv/
@@@ -9817,7 -9719,8 +9824,7 @@@ F:      Documentation/devicetree/bindings/i3
  F:    drivers/i3c/master/i3c-master-cdns.c
  
  I3C DRIVER FOR SYNOPSYS DESIGNWARE
 -M:    Vitor Soares <vitor.soares@synopsys.com>
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.yaml
  F:    drivers/i3c/master/dw*
  
@@@ -10139,11 -10042,6 +10146,11 @@@ F: Documentation/hwmon/ina2xx.rs
  F:    drivers/hwmon/ina2xx.c
  F:    include/linux/platform_data/ina2xx.h
  
 +INDEX OF FURTHER KERNEL DOCUMENTATION
 +M:    Carlos Bilbao <carlos.bilbao@amd.com>
 +S:    Maintained
 +F:    Documentation/process/kernel-docs.rst
 +
  INDUSTRY PACK SUBSYSTEM (IPACK)
  M:    Samuel Iglesias Gonsalvez <siglesias@igalia.com>
  M:    Jens Taprogge <jens.taprogge@taprogge.org>
@@@ -10173,7 -10071,6 +10180,7 @@@ F:   drivers/infiniband
  F:    include/rdma/
  F:    include/trace/events/ib_mad.h
  F:    include/trace/events/ib_umad.h
 +F:    include/trace/misc/rdma.h
  F:    include/uapi/linux/if_infiniband.h
  F:    include/uapi/rdma/
  F:    samples/bpf/ibumad_kern.c
@@@ -10407,7 -10304,7 +10414,7 @@@ T:   git https://github.com/intel/gvt-lin
  F:    drivers/gpu/drm/i915/gvt/
  
  INTEL HID EVENT DRIVER
 -M:    Alex Hung <alex.hung@canonical.com>
 +M:    Alex Hung <alexhung@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/intel/hid.c
@@@ -10461,6 -10358,11 +10468,6 @@@ T:  git git://git.kernel.org/pub/scm/lin
  F:    drivers/iommu/intel/
  F:    include/linux/intel-svm.h
  
 -INTEL IOP-ADMA DMA DRIVER
 -R:    Dan Williams <dan.j.williams@intel.com>
 -S:    Odd fixes
 -F:    drivers/dma/iop-adma.c
 -
  INTEL IPU3 CSI-2 CIO2 DRIVER
  M:    Yong Zhi <yong.zhi@intel.com>
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
@@@ -10834,18 -10736,6 +10841,18 @@@ F: drivers/iommu/dma-iommu.
  F:    drivers/iommu/iova.c
  F:    include/linux/iova.h
  
 +IOMMUFD
 +M:    Jason Gunthorpe <jgg@nvidia.com>
 +M:    Kevin Tian <kevin.tian@intel.com>
 +L:    iommu@lists.linux.dev
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd.git
 +F:    Documentation/userspace-api/iommufd.rst
 +F:    drivers/iommu/iommufd/
 +F:    include/linux/iommufd.h
 +F:    include/uapi/linux/iommufd.h
 +F:    tools/testing/selftests/iommu/
 +
  IOMMU SUBSYSTEM
  M:    Joerg Roedel <joro@8bytes.org>
  M:    Will Deacon <will@kernel.org>
@@@ -10878,7 -10768,6 +10885,7 @@@ T:   git git://git.kernel.dk/liburin
  F:    io_uring/
  F:    include/linux/io_uring.h
  F:    include/linux/io_uring_types.h
 +F:    include/trace/events/io_uring.h
  F:    include/uapi/linux/io_uring.h
  F:    tools/io_uring/
  
@@@ -11026,13 -10915,6 +11033,13 @@@ F: drivers/isdn/Makefil
  F:    drivers/isdn/hardware/
  F:    drivers/isdn/mISDN/
  
 +ISOFS FILESYSTEM
 +M:    Jan Kara <jack@suse.cz>
 +L:    linux-fsdevel@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/filesystems/isofs.rst
 +F:    fs/isofs/
 +
  IT87 HARDWARE MONITORING DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -11094,9 -10976,9 +11101,9 @@@ F:   drivers/hwmon/jc42.
  JFS FILESYSTEM
  M:    Dave Kleikamp <shaggy@kernel.org>
  L:    jfs-discussion@lists.sourceforge.net
 -S:    Maintained
 +S:    Odd Fixes
  W:    http://jfs.sourceforge.net/
 -T:    git git://github.com/kleikamp/linux-shaggy.git
 +T:    git https://github.com/kleikamp/linux-shaggy.git
  F:    Documentation/admin-guide/jfs.rst
  F:    fs/jfs/
  
@@@ -11251,8 -11133,6 +11258,8 @@@ M:   Kees Cook <keescook@chromium.org
  L:    linux-hardening@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
 +F:    Documentation/ABI/testing/sysfs-kernel-oops_count
 +F:    Documentation/ABI/testing/sysfs-kernel-warn_count
  F:    include/linux/overflow.h
  F:    include/linux/randomize_kstack.h
  F:    mm/usercopy.c
@@@ -11271,18 -11151,11 +11278,18 @@@ L:        linux-nfs@vger.kernel.or
  S:    Supported
  W:    http://nfs.sourceforge.net/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
 +F:    fs/exportfs/
  F:    fs/lockd/
  F:    fs/nfs_common/
  F:    fs/nfsd/
  F:    include/linux/lockd/
  F:    include/linux/sunrpc/
 +F:    include/trace/events/rpcgss.h
 +F:    include/trace/events/rpcrdma.h
 +F:    include/trace/events/sunrpc.h
 +F:    include/trace/misc/fs.h
 +F:    include/trace/misc/nfs.h
 +F:    include/trace/misc/sunrpc.h
  F:    include/uapi/linux/nfsd/
  F:    include/uapi/linux/sunrpc/
  F:    net/sunrpc/
@@@ -11468,17 -11341,7 +11475,17 @@@ F: arch/x86/kvm/hyperv.
  F:    arch/x86/kvm/kvm_onhyperv.*
  F:    arch/x86/kvm/svm/hyperv.*
  F:    arch/x86/kvm/svm/svm_onhyperv.*
 -F:    arch/x86/kvm/vmx/evmcs.*
 +F:    arch/x86/kvm/vmx/hyperv.*
 +
 +KVM X86 Xen (KVM/Xen)
 +M:    David Woodhouse <dwmw2@infradead.org>
 +M:    Paul Durrant <paul@xen.org>
 +M:    Sean Christopherson <seanjc@google.com>
 +M:    Paolo Bonzini <pbonzini@redhat.com>
 +L:    kvm@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +F:    arch/x86/kvm/xen.*
  
  KERNFS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@@@ -11600,12 -11463,6 +11607,12 @@@ F: drivers/mfd/khadas-mcu.
  F:    include/linux/mfd/khadas-mcu.h
  F:    drivers/thermal/khadas_mcu_fan.c
  
 +KIONIX/ROHM KX022A ACCELEROMETER
 +M:    Matti Vaittinen <mazziesaccount@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    drivers/iio/accel/kionix-kx022a*
 +
  KMEMLEAK
  M:    Catalin Marinas <catalin.marinas@arm.com>
  S:    Maintained
@@@ -11643,9 -11500,6 +11650,9 @@@ M:   Naveen N. Rao <naveen.n.rao@linux.ib
  M:    Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
  M:    "David S. Miller" <davem@davemloft.net>
  M:    Masami Hiramatsu <mhiramat@kernel.org>
 +L:    linux-kernel@vger.kernel.org
 +L:    linux-trace-kernel@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-trace-kernel/list/
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
  F:    Documentation/trace/kprobes.rst
@@@ -11729,13 -11583,11 +11736,13 @@@ F:        scripts/leaking_addresses.p
  
  LED SUBSYSTEM
  M:    Pavel Machek <pavel@ucw.cz>
 +M:    Lee Jones <lee@kernel.org>
  L:    linux-leds@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git
  F:    Documentation/devicetree/bindings/leds/
  F:    drivers/leds/
 +F:    include/dt-bindings/leds/
  F:    include/linux/leds.h
  
  LEGACY EEPROM DRIVER
@@@ -12025,7 -11877,7 +12032,7 @@@ M:   Eric Piel <eric.piel@tremplin-utc.ne
  S:    Maintained
  F:    Documentation/misc-devices/lis3lv02d.rst
  F:    drivers/misc/lis3lv02d/
 -F:    drivers/platform/x86/hp_accel.c
 +F:    drivers/platform/x86/hp/hp_accel.c
  
  LIST KUNIT TEST
  M:    David Gow <davidgow@google.com>
@@@ -12180,21 -12032,6 +12187,21 @@@ F: drivers/*/*loongarch
  F:    Documentation/loongarch/
  F:    Documentation/translations/zh_CN/loongarch/
  
 +LOONGSON-2 SOC SERIES GUTS DRIVER
 +M:    Yinbo Zhu <zhuyinbo@loongson.cn>
 +L:    loongarch@lists.linux.dev
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwinfo/loongson,ls2k-chipid.yaml
 +F:    drivers/soc/loongson/loongson2_guts.c
 +
 +LOONGSON-2 SOC SERIES PINCTRL DRIVER
 +M:    zhanghongchen <zhanghongchen@loongson.cn>
 +M:    Yinbo Zhu <zhuyinbo@loongson.cn>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pinctrl/loongson,ls2k-pinctrl.yaml
 +F:    drivers/pinctrl/pinctrl-loongson2.c
 +
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
  M:    Sathya Prakash <sathya.prakash@broadcom.com>
  M:    Sreekanth Reddy <sreekanth.reddy@broadcom.com>
@@@ -12272,7 -12109,7 +12279,7 @@@ M:   Alexey Kodanev <alexey.kodanev@oracl
  L:    ltp@lists.linux.it (subscribers-only)
  S:    Maintained
  W:    http://linux-test-project.github.io/
 -T:    git git://github.com/linux-test-project/ltp.git
 +T:    git https://github.com/linux-test-project/ltp.git
  
  LYNX 28G SERDES PHY DRIVER
  M:    Ioana Ciornei <ioana.ciornei@nxp.com>
@@@ -12497,7 -12334,7 +12504,7 @@@ M:   Marcin Wojtas <mw@semihalf.com
  M:    Russell King <linux@armlinux.org.uk>
  L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/net/marvell-pp2.txt
 +F:    Documentation/devicetree/bindings/net/marvell,pp2.yaml
  F:    drivers/net/ethernet/marvell/mvpp2/
  
  MARVELL MWIFIEX WIRELESS DRIVER
@@@ -12545,7 -12382,7 +12552,7 @@@ F:   Documentation/networking/device_driv
  F:    drivers/net/ethernet/marvell/octeontx2/af/
  
  MARVELL PRESTERA ETHERNET SWITCH DRIVER
 -M:    Taras Chornyi <tchornyi@marvell.com>
 +M:    Taras Chornyi <taras.chornyi@plvision.eu>
  S:    Supported
  W:    https://github.com/Marvell-switching/switchdev-prestera
  F:    drivers/net/ethernet/marvell/prestera/
@@@ -12687,12 -12524,6 +12694,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/regulator/maxim,max20086.yaml
  F:    drivers/regulator/max20086-regulator.c
  
 +MAXIM MAX30208 TEMPERATURE SENSOR DRIVER
 +M:    Rajat Khandelwal <rajat.khandelwal@linux.intel.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/iio/temperature/max30208.c
 +
  MAXIM MAX77650 PMIC MFD DRIVER
  M:    Bartosz Golaszewski <brgl@bgdev.pl>
  L:    linux-kernel@vger.kernel.org
@@@ -12913,7 -12744,7 +12920,7 @@@ F:   Documentation/admin-guide/media/imx7
  F:    Documentation/devicetree/bindings/media/nxp,imx-mipi-csi2.yaml
  F:    Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
  F:    drivers/media/platform/nxp/imx-mipi-csis.c
 -F:    drivers/staging/media/imx/imx7-media-csi.c
 +F:    drivers/media/platform/nxp/imx7-media-csi.c
  
  MEDIA DRIVERS FOR HELENE
  M:    Abylay Ospan <aospan@netup.ru>
@@@ -13110,7 -12941,6 +13117,7 @@@ M:   Felix Fietkau <nbd@nbd.name
  M:    John Crispin <john@phrozen.org>
  M:    Sean Wang <sean.wang@mediatek.com>
  M:    Mark Lee <Mark-MC.Lee@mediatek.com>
 +M:    Lorenzo Bianconi <lorenzo@kernel.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/mediatek/
@@@ -13482,20 -13312,10 +13489,20 @@@ F:        include/linux/memory_hotplug.
  F:    include/linux/mm.h
  F:    include/linux/mmzone.h
  F:    include/linux/pagewalk.h
 -F:    include/linux/vmalloc.h
  F:    mm/
  F:    tools/testing/selftests/vm/
  
 +VMALLOC
 +M:    Andrew Morton <akpm@linux-foundation.org>
 +R:    Uladzislau Rezki <urezki@gmail.com>
 +R:    Christoph Hellwig <hch@infradead.org>
 +L:    linux-mm@kvack.org
 +S:    Maintained
 +W:    http://www.linux-mm.org
 +T:    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +F:    include/linux/vmalloc.h
 +F:    mm/vmalloc.c
 +
  MEMORY HOT(UN)PLUG
  M:    David Hildenbrand <david@redhat.com>
  M:    Oscar Salvador <osalvador@suse.de>
@@@ -13583,7 -13403,7 +13590,7 @@@ MESON NAND CONTROLLER DRIVER FOR AMLOGI
  M:    Liang Yang <liang.yang@amlogic.com>
  L:    linux-mtd@lists.infradead.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
 +F:    Documentation/devicetree/bindings/mtd/amlogic,meson-nand.yaml
  F:    drivers/mtd/nand/raw/meson_*
  
  MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
@@@ -13602,6 -13422,7 +13609,6 @@@ F:   arch/arm64/boot/dts/marvell/armada-3
  
  MHI BUS
  M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
 -R:    Hemant Kumar <quic_hemantk@quicinc.com>
  L:    mhi@lists.linux.dev
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
@@@ -13626,6 -13447,7 +13633,6 @@@ L:   dmaengine@vger.kernel.or
  S:    Supported
  F:    Documentation/devicetree/bindings/dma/atmel-dma.txt
  F:    drivers/dma/at_hdmac.c
 -F:    drivers/dma/at_hdmac_regs.h
  F:    drivers/dma/at_xdmac.c
  F:    include/dt-bindings/dma/at91.h
  
@@@ -13662,7 -13484,7 +13669,7 @@@ M:   Eugen Hristev <eugen.hristev@microch
  L:    linux-media@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/media/microchip,csi2dc.yaml
 -F:    drivers/media/platform/atmel/microchip-csi2dc.c
 +F:    drivers/media/platform/microchip/microchip-csi2dc.c
  
  MICROCHIP ECC DRIVER
  M:    Tudor Ambarus <tudor.ambarus@microchip.com>
@@@ -13689,10 -13511,8 +13696,10 @@@ L: linux-media@vger.kernel.or
  S:    Supported
  F:    Documentation/devicetree/bindings/media/atmel,isc.yaml
  F:    Documentation/devicetree/bindings/media/microchip,xisc.yaml
 -F:    drivers/media/platform/atmel/atmel-isc*
 -F:    drivers/media/platform/atmel/atmel-sama*-isc*
 +F:    drivers/staging/media/deprecated/atmel/atmel-isc*
 +F:    drivers/staging/media/deprecated/atmel/atmel-sama*-isc*
 +F:    drivers/media/platform/microchip/microchip-isc*
 +F:    drivers/media/platform/microchip/microchip-sama*-isc*
  F:    include/linux/atmel-isc-media.h
  
  MICROCHIP ISI DRIVER
@@@ -13835,7 -13655,7 +13842,7 @@@ MICROCHIP USB251XB DRIVE
  M:    Richard Leitner <richard.leitner@skidata.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/usb/usb251xb.txt
 +F:    Documentation/devicetree/bindings/usb/usb251xb.yaml
  F:    drivers/usb/misc/usb251xb.c
  
  MICROCHIP USBA UDC DRIVER
@@@ -13875,15 -13695,6 +13882,15 @@@ F: drivers/scsi/smartpqi/smartpqi*.[ch
  F:    include/linux/cciss*.h
  F:    include/uapi/linux/cciss*.h
  
 +MICROSOFT MANA RDMA DRIVER
 +M:    Long Li <longli@microsoft.com>
 +M:    Ajay Sharma <sharmaajay@microsoft.com>
 +L:    linux-rdma@vger.kernel.org
 +S:    Supported
 +F:    drivers/infiniband/hw/mana/
 +F:    include/net/mana
 +F:    include/uapi/rdma/mana-abi.h
 +
  MICROSOFT SURFACE AGGREGATOR TABLET-MODE SWITCH
  M:    Maximilian Luz <luzmaximilian@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -14159,7 -13970,6 +14166,7 @@@ F:   include/uapi/linux/meye.
  
  MOTORCOMM PHY DRIVER
  M:    Peter Geis <pgwipeout@gmail.com>
 +M:    Frank <Frank.Sae@motor-comm.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/phy/motorcomm.c
@@@ -14777,9 -14587,10 +14784,9 @@@ T:  git git://git.kernel.org/pub/scm/lin
  F:    arch/nios2/
  
  NITRO ENCLAVES (NE)
 -M:    Andra Paraschiv <andraprs@amazon.com>
 -M:    Alexandru Vasile <lexnv@amazon.com>
  M:    Alexandru Ciobotaru <alcioa@amazon.com>
  L:    linux-kernel@vger.kernel.org
 +L:    The AWS Nitro Enclaves Team <aws-nitro-enclaves-devel@amazon.com>
  S:    Supported
  W:    https://aws.amazon.com/ec2/nitro/nitro-enclaves/
  F:    Documentation/virt/ne_overview.rst
@@@ -14916,7 -14727,6 +14923,7 @@@ L:   linux-nvme@lists.infradead.or
  S:    Supported
  W:    http://git.infradead.org/nvme.git
  T:    git://git.infradead.org/nvme.git
 +F:    Documentation/nvme/
  F:    drivers/nvme/host/
  F:    drivers/nvme/common/
  F:    include/linux/nvme*
@@@ -15338,7 -15148,6 +15345,7 @@@ F:   drivers/mfd/menelaus.
  F:    drivers/mfd/palmas.c
  F:    drivers/mfd/tps65217.c
  F:    drivers/mfd/tps65218.c
 +F:    drivers/mfd/tps65219.c
  F:    drivers/mfd/tps65910.c
  F:    drivers/mfd/twl-core.[ch]
  F:    drivers/mfd/twl4030*.c
@@@ -15395,13 -15204,6 +15402,13 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov08d10.c
  
 +OMNIVISION OV08X40 SENSOR DRIVER
 +M:    Jason Chen <jason.z.chen@intel.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    drivers/media/i2c/ov08x40.c
 +
  OMNIVISION OV13858 SENSOR DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-media@vger.kernel.org
@@@ -15440,14 -15242,6 +15447,14 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov2740.c
  
 +OMNIVISION OV4689 SENSOR DRIVER
 +M:    Mikhail Rudenko <mike.rudenko@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
 +F:    drivers/media/i2c/ov5647.c
 +
  OMNIVISION OV5640 SENSOR DRIVER
  M:    Steve Longerbeam <slongerbeam@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -15572,12 -15366,6 +15579,12 @@@ S: Maintaine
  F:    drivers/mtd/nand/onenand/
  F:    include/linux/mtd/onenand*.h
  
 +ONEXPLAYER FAN DRIVER
 +M:    Joaquín Ignacio Aramendía <samsagax@gmail.com>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hwmon/oxp-sensors.c
 +
  ONION OMEGA2+ BOARD
  M:    Harvey Hunt <harveyhuntnexus@gmail.com>
  L:    linux-mips@vger.kernel.org
@@@ -16181,7 -15969,6 +16188,7 @@@ Q:   https://patchwork.kernel.org/project
  B:    https://bugzilla.kernel.org
  C:    irc://irc.oftc.net/linux-pci
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git
 +F:    Documentation/devicetree/bindings/pci/
  F:    drivers/pci/controller/
  F:    drivers/pci/pci-bridge-emul.c
  F:    drivers/pci/pci-bridge-emul.h
@@@ -16288,7 -16075,7 +16295,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/*microchip*
  
  PCIE DRIVER FOR QUALCOMM MSM
 -M:    Stanimir Varbanov <svarbanov@mm-sol.com>
 +M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
@@@ -16378,8 -16165,7 +16385,8 @@@ F:   include/linux/peci-cpu.
  F:    include/linux/peci.h
  
  PENSANDO ETHERNET DRIVERS
 -M:    Shannon Nelson <snelson@pensando.io>
 +M:    Shannon Nelson <shannon.nelson@amd.com>
 +M:    Brett Creeley <brett.creeley@amd.com>
  M:    drivers@pensando.io
  L:    netdev@vger.kernel.org
  S:    Supported
@@@ -16431,7 -16217,7 +16438,7 @@@ F:   tools/lib/perf
  F:    tools/perf/
  
  PERFORMANCE EVENTS TOOLING ARM64
 -R:    John Garry <john.garry@huawei.com>
 +R:    John Garry <john.g.garry@oracle.com>
  R:    Will Deacon <will@kernel.org>
  R:    James Clark <james.clark@arm.com>
  R:    Mike Leach <mike.leach@linaro.org>
@@@ -16537,7 -16323,7 +16544,7 @@@ M:   Sean Wang <sean.wang@kernel.org
  L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt65xx-pinctrl.yaml
 -F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt6797-pinctrl.yaml
 +F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt6779-pinctrl.yaml
  F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt7622-pinctrl.yaml
  F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt8183-pinctrl.yaml
  F:    drivers/pinctrl/mediatek/
@@@ -16610,6 -16396,13 +16617,6 @@@ S:  Supporte
  F:    Documentation/devicetree/bindings/input/pine64,pinephone-keyboard.yaml
  F:    drivers/input/keyboard/pinephone-keyboard.c
  
 -PKTCDVD DRIVER
 -M:    linux-block@vger.kernel.org
 -S:    Orphan
 -F:    drivers/block/pktcdvd.c
 -F:    include/linux/pktcdvd.h
 -F:    include/uapi/linux/pktcdvd.h
 -
  PLANTOWER PMS7003 AIR POLLUTION SENSOR DRIVER
  M:    Tomasz Duszynski <tduszyns@gmail.com>
  S:    Maintained
@@@ -16887,10 -16680,10 +16894,10 @@@ F:        net/psampl
  
  PSTORE FILESYSTEM
  M:    Kees Cook <keescook@chromium.org>
 -M:    Anton Vorontsov <anton@enomsg.org>
 -M:    Colin Cross <ccross@android.com>
 -M:    Tony Luck <tony.luck@intel.com>
 -S:    Maintained
 +R:    Tony Luck <tony.luck@intel.com>
 +R:    Guilherme G. Piccoli <gpiccoli@igalia.com>
 +L:    linux-hardening@vger.kernel.org
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
  F:    Documentation/admin-guide/ramoops.rst
  F:    Documentation/admin-guide/pstore-blk.rst
@@@ -16937,6 -16730,7 +16944,6 @@@ M:   Hans Verkuil <hverkuil@xs4all.nl
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/admin-guide/media/pulse8-cec.rst
  F:    drivers/media/cec/usb/pulse8/
  
  PURELIFI PLFXLC DRIVER
@@@ -16967,7 -16761,6 +16974,7 @@@ PWM IR Transmitte
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
  F:    drivers/media/rc/pwm-ir-tx.c
  
  PWM SUBSYSTEM
@@@ -17032,7 -16825,7 +17039,7 @@@ M:   Srinivas Kandagatla <srinivas.kandag
  M:    Banajit Goswami <bgoswami@quicinc.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
 -F:    Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml
 +F:    Documentation/devicetree/bindings/soc/qcom/qcom,apr*
  F:    Documentation/devicetree/bindings/sound/qcom,*
  F:    drivers/soc/qcom/apr.c
  F:    include/dt-bindings/sound/qcom,wcd9335.h
@@@ -17390,8 -17183,7 +17397,8 @@@ F:   Documentation/devicetree/bindings/th
  F:    drivers/thermal/qcom/
  
  QUALCOMM VENUS VIDEO ACCELERATOR DRIVER
 -M:    Stanimir Varbanov <stanimir.varbanov@linaro.org>
 +M:    Stanimir Varbanov <stanimir.k.varbanov@gmail.com>
 +M:    Vikash Garodia <quic_vgarodia@quicinc.com>
  L:    linux-media@vger.kernel.org
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
@@@ -17709,8 -17501,10 +17716,8 @@@ S:  Maintaine
  F:    drivers/net/wireless/realtek/rtw89/
  
  REDPINE WIRELESS DRIVER
 -M:    Amitkumar Karwar <amitkarwar@gmail.com>
 -M:    Siva Rebbagondla <siva8118@gmail.com>
  L:    linux-wireless@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/wireless/rsi/
  
  REGISTER MAP ABSTRACTION
@@@ -18008,13 -17802,6 +18015,13 @@@ F: Documentation/ABI/*/sysfs-driver-hid
  F:    drivers/hid/hid-roccat*
  F:    include/linux/hid-roccat*
  
 +ROCKCHIP CRYPTO DRIVERS
 +M:    Corentin Labbe <clabbe@baylibre.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
 +F:    drivers/crypto/rockchip/
 +
  ROCKCHIP I2S TDM DRIVER
  M:    Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
  L:    linux-rockchip@lists.infradead.org
@@@ -18240,7 -18027,7 +18247,7 @@@ L:   linux-fbdev@vger.kernel.or
  S:    Maintained
  F:    drivers/video/fbdev/savage/
  
 -S390
 +S390 ARCHITECTURE
  M:    Heiko Carstens <hca@linux.ibm.com>
  M:    Vasily Gorbik <gor@linux.ibm.com>
  M:    Alexander Gordeev <agordeev@linux.ibm.com>
@@@ -18295,15 -18082,6 +18302,15 @@@ L: netdev@vger.kernel.or
  S:    Supported
  F:    drivers/s390/net/
  
 +S390 MM
 +M:    Alexander Gordeev <agordeev@linux.ibm.com>
 +M:    Gerald Schaefer <gerald.schaefer@linux.ibm.com>
 +L:    linux-s390@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git
 +F:    arch/s390/include/asm/pgtable.h
 +F:    arch/s390/mm
 +
  S390 PCI SUBSYSTEM
  M:    Niklas Schnelle <schnelle@linux.ibm.com>
  M:    Gerald Schaefer <gerald.schaefer@linux.ibm.com>
@@@ -18731,7 -18509,6 +18738,7 @@@ K:   \bsecure_computin
  K:    \bTIF_SECCOMP\b
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) Broadcom BRCMSTB DRIVER
 +M:    Kamal Dasu <kdasu.kdev@gmail.com>
  M:    Al Cooper <alcooperx@gmail.com>
  R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-mmc@vger.kernel.org
@@@ -18742,7 -18519,6 +18749,7 @@@ SECURE DIGITAL HOST CONTROLLER INTERFAC
  M:    Adrian Hunter <adrian.hunter@intel.com>
  L:    linux-mmc@vger.kernel.org
  S:    Supported
 +F:    Documentation/devicetree/bindings/mmc/sdhci-common.yaml
  F:    drivers/mmc/host/sdhci*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) MICROCHIP DRIVER
@@@ -19128,7 -18904,7 +19135,7 @@@ M:   Jason A. Donenfeld <Jason@zx2c4.com
  S:    Maintained
  F:    include/linux/siphash.h
  F:    lib/siphash.c
 -F:    lib/test_siphash.c
 +F:    lib/siphash_kunit.c
  
  SIS 190 ETHERNET DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
@@@ -19152,7 -18928,7 +19159,7 @@@ F:   drivers/video/fbdev/sis
  F:    include/video/sisfb.h
  
  SIS I2C TOUCHSCREEN DRIVER
 -M:    Mika Penttilä <mika.penttila@nextfour.com>
 +M:    Mika Penttilä <mpenttil@redhat.com>
  L:    linux-input@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/input/touchscreen/sis_i2c.txt
@@@ -19295,7 -19071,7 +19302,7 @@@ M:   Jassi Brar <jaswinder.singh@linaro.o
  M:    Ilias Apalodimas <ilias.apalodimas@linaro.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/net/socionext-netsec.txt
 +F:    Documentation/devicetree/bindings/net/socionext,synquacer-netsec.yaml
  F:    drivers/net/ethernet/socionext/netsec.c
  
  SOCIONEXT (SNI) Synquacer SPI DRIVER
@@@ -19303,7 -19079,7 +19310,7 @@@ M:   Masahisa Kojima <masahisa.kojima@lin
  M:    Jassi Brar <jaswinder.singh@linaro.org>
  L:    linux-spi@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/spi/spi-synquacer.txt
 +F:    Documentation/devicetree/bindings/spi/socionext,synquacer-spi.yaml
  F:    drivers/spi/spi-synquacer.c
  
  SOCIONEXT SYNQUACER I2C DRIVER
@@@ -19450,7 -19226,7 +19457,7 @@@ M:   Manivannan Sadhasivam <manivannan.sa
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/imx290.txt
 +F:    Documentation/devicetree/bindings/media/i2c/sony,imx290.yaml
  F:    drivers/media/i2c/imx290.c
  
  SONY IMX319 SENSOR DRIVER
@@@ -19599,11 -19375,6 +19606,11 @@@ W: https://linuxtv.or
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  F:    drivers/media/dvb-frontends/sp2*
  
 +SPANISH DOCUMENTATION
 +M:    Carlos Bilbao <carlos.bilbao@amd.com>
 +S:    Maintained
 +F:    Documentation/translations/sp_SP/
 +
  SPARC + UltraSPARC (sparc/sparc64)
  M:    "David S. Miller" <davem@davemloft.net>
  L:    sparclinux@vger.kernel.org
@@@ -19747,7 -19518,7 +19754,7 @@@ M:   Sylvain Petinot <sylvain.petinot@fos
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
 +F:    Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
  F:    drivers/media/i2c/st-mipid02.c
  
  ST STM32 I2C/SMBUS DRIVER
@@@ -19770,16 -19541,6 +19777,16 @@@ S: Maintaine
  F:    Documentation/hwmon/stpddc60.rst
  F:    drivers/hwmon/pmbus/stpddc60.c
  
 +ST VGXY61 DRIVER
 +M:    Benjamin Mugnier <benjamin.mugnier@foss.st.com>
 +M:    Sylvain Petinot <sylvain.petinot@foss.st.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/st,st-vgxy61.yaml
 +F:    Documentation/userspace-api/media/drivers/st-vgxy61.rst
 +F:    drivers/media/i2c/st-vgxy61.c
 +
  ST VL53L0X ToF RANGER(I2C) IIO DRIVER
  M:    Song Qiang <songqiang1304521@gmail.com>
  L:    linux-iio@vger.kernel.org
@@@ -19795,7 -19556,6 +19802,7 @@@ S:   Supporte
  F:    Documentation/process/stable-kernel-rules.rst
  
  STAGING - ATOMISP DRIVER
 +M:    Hans de Goede <hdegoede@redhat.com>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  R:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-media@vger.kernel.org
@@@ -20005,13 -19765,6 +20012,13 @@@ W: https://sunplus.atlassian.net/wiki/s
  F:    Documentation/devicetree/bindings/net/sunplus,sp7021-emac.yaml
  F:    drivers/net/ethernet/sunplus/
  
 +SUNPLUS MMC DRIVER
 +M:    Tony Huang <tonyhuang.sunplus@gmail.com>
 +M:    Li-hao Kuo <lhjeff911@gmail.com>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/mmc/sunplus,mmc.yaml
 +F:    drivers/mmc/host/sunplus-mmc.c
 +
  SUNPLUS OCOTP DRIVER
  M:    Vincent Shih <vincent.sunplus@gmail.com>
  S:    Maintained
@@@ -20263,7 -20016,6 +20270,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/powercap/arm_scmi_powercap.c
  F:    drivers/regulator/scmi-regulator.c
  F:    drivers/reset/reset-scmi.c
  F:    include/linux/sc[mp]i_protocol.h
@@@ -20598,7 -20350,7 +20605,7 @@@ M:   Chris Zankel <chris@zankel.net
  M:    Max Filippov <jcmvbkbc@gmail.com>
  L:    linux-xtensa@linux-xtensa.org
  S:    Maintained
 -T:    git git://github.com/czankel/xtensa-linux.git
 +T:    git https://github.com/jcmvbkbc/linux-xtensa.git
  F:    arch/xtensa/
  F:    drivers/irqchip/irq-xtensa-*
  
@@@ -20948,6 -20700,7 +20955,6 @@@ W:   https://wireless.wiki.kernel.org/en/
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wl1251
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
  F:    drivers/net/wireless/ti/
 -F:    include/linux/wl12xx.h
  
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <jstultz@google.com>
@@@ -21126,9 -20879,6 +21133,9 @@@ F:   drivers/hwmon/pmbus/tps546d24.
  TRACING
  M:    Steven Rostedt <rostedt@goodmis.org>
  M:    Masami Hiramatsu <mhiramat@kernel.org>
 +L:    linux-kernel@vger.kernel.org
 +L:    linux-trace-kernel@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-trace-kernel/list/
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
  F:    Documentation/trace/*
@@@ -21832,7 -21582,7 +21839,7 @@@ M:   Alex Williamson <alex.williamson@red
  R:    Cornelia Huck <cohuck@redhat.com>
  L:    kvm@vger.kernel.org
  S:    Maintained
 -T:    git git://github.com/awilliam/linux-vfio.git
 +T:    git https://github.com/awilliam/linux-vfio.git
  F:    Documentation/ABI/testing/sysfs-devices-vfio-dev
  F:    Documentation/driver-api/vfio.rst
  F:    drivers/vfio/
@@@ -22014,12 -21764,6 +22021,12 @@@ F: include/linux/virtio*.
  F:    include/uapi/linux/virtio_*.h
  F:    tools/virtio/
  
 +VISL VIRTUAL STATELESS DECODER DRIVER
 +M:    Daniel Almeida <daniel.almeida@collabora.com>
 +L:    linux-media@vger.kernel.org
 +S:    Supported
 +F:    drivers/media/test-drivers/visl
 +
  IFCVF VIRTIO DATA PATH ACCELERATOR
  R:    Zhu Lingshan <lingshan.zhu@intel.com>
  F:    drivers/vdpa/ifcvf/
@@@ -23053,7 -22797,8 +23060,7 @@@ F:   drivers/media/pci/zoran
  
  ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER
  M:    Minchan Kim <minchan@kernel.org>
 -M:    Nitin Gupta <ngupta@vflare.org>
 -R:    Sergey Senozhatsky <senozhatsky@chromium.org>
 +M:    Sergey Senozhatsky <senozhatsky@chromium.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    Documentation/admin-guide/blockdev/zram.rst
@@@ -23066,7 -22811,8 +23073,7 @@@ F:   drivers/tty/serial/zs.
  
  ZSMALLOC COMPRESSED SLAB MEMORY ALLOCATOR
  M:    Minchan Kim <minchan@kernel.org>
 -M:    Nitin Gupta <ngupta@vflare.org>
 -R:    Sergey Senozhatsky <senozhatsky@chromium.org>
 +M:    Sergey Senozhatsky <senozhatsky@chromium.org>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    Documentation/mm/zsmalloc.rst
  M:    Nick Terrell <terrelln@fb.com>
  S:    Maintained
  B:    https://github.com/facebook/zstd/issues
 -T:    git git://github.com/terrelln/linux.git
 +T:    git https://github.com/terrelln/linux.git
  F:    include/linux/zstd*
  F:    lib/zstd/
  F:    lib/decompress_unzstd.c
@@@ -245,10 -245,10 +245,10 @@@ void drm_file_free(struct drm_file *fil
  
        dev = file->minor->dev;
  
-       DRM_DEBUG("comm=\"%s\", pid=%d, dev=0x%lx, open_count=%d\n",
-                 current->comm, task_pid_nr(current),
-                 (long)old_encode_dev(file->minor->kdev->devt),
-                 atomic_read(&dev->open_count));
+       drm_dbg_core(dev, "comm=\"%s\", pid=%d, dev=0x%lx, open_count=%d\n",
+                    current->comm, task_pid_nr(current),
+                    (long)old_encode_dev(file->minor->kdev->devt),
+                    atomic_read(&dev->open_count));
  
  #ifdef CONFIG_DRM_LEGACY
        if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
@@@ -326,7 -326,7 +326,7 @@@ static int drm_cpu_valid(void
   * Creates and initializes a drm_file structure for the file private data in \p
   * filp and add it into the double linked list in \p dev.
   */
 -static int drm_open_helper(struct file *filp, struct drm_minor *minor)
 +int drm_open_helper(struct file *filp, struct drm_minor *minor)
  {
        struct drm_device *dev = minor->dev;
        struct drm_file *priv;
            dev->switch_power_state != DRM_SWITCH_POWER_DYNAMIC_OFF)
                return -EINVAL;
  
-       DRM_DEBUG("comm=\"%s\", pid=%d, minor=%d\n", current->comm,
-                 task_pid_nr(current), minor->index);
+       drm_dbg_core(dev, "comm=\"%s\", pid=%d, minor=%d\n",
+                    current->comm, task_pid_nr(current), minor->index);
  
        priv = drm_file_alloc(minor);
        if (IS_ERR(priv))
@@@ -450,11 -450,11 +450,11 @@@ EXPORT_SYMBOL(drm_open)
  
  void drm_lastclose(struct drm_device * dev)
  {
-       DRM_DEBUG("\n");
+       drm_dbg_core(dev, "\n");
  
        if (dev->driver->lastclose)
                dev->driver->lastclose(dev);
-       DRM_DEBUG("driver lastclose completed\n");
+       drm_dbg_core(dev, "driver lastclose completed\n");
  
        if (drm_core_check_feature(dev, DRIVER_LEGACY))
                drm_legacy_dev_reinit(dev);
@@@ -485,7 -485,7 +485,7 @@@ int drm_release(struct inode *inode, st
        if (drm_dev_needs_global_mutex(dev))
                mutex_lock(&drm_global_mutex);
  
-       DRM_DEBUG("open_count = %d\n", atomic_read(&dev->open_count));
+       drm_dbg_core(dev, "open_count = %d\n", atomic_read(&dev->open_count));
  
        drm_close_helper(filp);
  
@@@ -573,20 -573,12 +573,20 @@@ static void drm_gem_shmem_vm_open(struc
  {
        struct drm_gem_object *obj = vma->vm_private_data;
        struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
 -      int ret;
  
        WARN_ON(shmem->base.import_attach);
  
 -      ret = drm_gem_shmem_get_pages(shmem);
 -      WARN_ON_ONCE(ret != 0);
 +      mutex_lock(&shmem->pages_lock);
 +
 +      /*
 +       * We should have already pinned the pages when the buffer was first
 +       * mmap'd, vm_open() just grabs an additional reference for the new
 +       * mm the vma is getting copied into (ie. on fork()).
 +       */
 +      if (!WARN_ON_ONCE(!shmem->pages_use_count))
 +              shmem->pages_use_count++;
 +
 +      mutex_unlock(&shmem->pages_lock);
  
        drm_gem_vm_open(vma);
  }
@@@ -632,8 -624,10 +632,8 @@@ int drm_gem_shmem_mmap(struct drm_gem_s
        }
  
        ret = drm_gem_shmem_get_pages(shmem);
 -      if (ret) {
 -              drm_gem_vm_close(vma);
 +      if (ret)
                return ret;
 -      }
  
        vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
        vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
@@@ -766,7 -760,7 +766,7 @@@ drm_gem_shmem_prime_import_sg_table(str
  
        shmem->sgt = sgt;
  
-       DRM_DEBUG_PRIME("size = %zu\n", size);
+       drm_dbg_prime(dev, "size = %zu\n", size);
  
        return &shmem->base;
  }
@@@ -1174,8 -1174,6 +1174,8 @@@ static int tda998x_audio_codec_init(str
        struct hdmi_codec_pdata codec_data = {
                .ops = &audio_codec_ops,
                .max_i2s_channels = 2,
 +              .no_i2s_capture = 1,
 +              .no_spdif_capture = 1,
        };
  
        if (priv->audio_port_enable[AUDIO_ROUTE_I2S])
@@@ -2059,7 -2057,7 +2059,7 @@@ static const struct component_ops tda99
  };
  
  static int
- tda998x_probe(struct i2c_client *client, const struct i2c_device_id *id)
+ tda998x_probe(struct i2c_client *client)
  {
        int ret;
  
@@@ -2099,7 -2097,7 +2099,7 @@@ static const struct i2c_device_id tda99
  MODULE_DEVICE_TABLE(i2c, tda998x_ids);
  
  static struct i2c_driver tda998x_driver = {
-       .probe = tda998x_probe,
+       .probe_new = tda998x_probe,
        .remove = tda998x_remove,
        .driver = {
                .name = "tda998x",
@@@ -68,17 -68,16 +68,17 @@@ static void msm_hdmi_destroy(struct hdm
                destroy_workqueue(hdmi->workq);
        msm_hdmi_hdcp_destroy(hdmi);
  
 +      if (hdmi->i2c)
 +              msm_hdmi_i2c_destroy(hdmi->i2c);
 +}
 +
 +static void msm_hdmi_put_phy(struct hdmi *hdmi)
 +{
        if (hdmi->phy_dev) {
                put_device(hdmi->phy_dev);
                hdmi->phy = NULL;
                hdmi->phy_dev = NULL;
        }
 -
 -      if (hdmi->i2c)
 -              msm_hdmi_i2c_destroy(hdmi->i2c);
 -
 -      platform_set_drvdata(hdmi->pdev, NULL);
  }
  
  static int msm_hdmi_get_phy(struct hdmi *hdmi)
        }
  
        phy_pdev = of_find_device_by_node(phy_node);
 -      if (phy_pdev)
 -              hdmi->phy = platform_get_drvdata(phy_pdev);
 -
        of_node_put(phy_node);
  
 -      if (!phy_pdev) {
 -              DRM_DEV_ERROR(&pdev->dev, "phy driver is not ready\n");
 -              return -EPROBE_DEFER;
 -      }
 +      if (!phy_pdev)
 +              return dev_err_probe(&pdev->dev, -EPROBE_DEFER, "phy driver is not ready\n");
 +
 +      hdmi->phy = platform_get_drvdata(phy_pdev);
        if (!hdmi->phy) {
 -              DRM_DEV_ERROR(&pdev->dev, "phy driver is not ready\n");
                put_device(&phy_pdev->dev);
 -              return -EPROBE_DEFER;
 +              return dev_err_probe(&pdev->dev, -EPROBE_DEFER, "phy driver is not ready\n");
        }
  
 -      hdmi->phy_dev = get_device(&phy_pdev->dev);
 +      hdmi->phy_dev = &phy_pdev->dev;
  
        return 0;
  }
   * we are to EPROBE_DEFER we want to do it here, rather than later
   * at modeset_init() time
   */
 -static struct hdmi *msm_hdmi_init(struct platform_device *pdev)
 +static int msm_hdmi_init(struct hdmi *hdmi)
  {
 -      struct hdmi_platform_config *config = pdev->dev.platform_data;
 -      struct hdmi *hdmi = NULL;
 -      struct resource *res;
 -      int i, ret;
 -
 -      hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL);
 -      if (!hdmi) {
 -              ret = -ENOMEM;
 -              goto fail;
 -      }
 -
 -      hdmi->pdev = pdev;
 -      hdmi->config = config;
 -      spin_lock_init(&hdmi->reg_lock);
 -
 -      ret = drm_of_find_panel_or_bridge(pdev->dev.of_node, 1, 0, NULL, &hdmi->next_bridge);
 -      if (ret && ret != -ENODEV)
 -              goto fail;
 -
 -      hdmi->mmio = msm_ioremap(pdev, config->mmio_name);
 -      if (IS_ERR(hdmi->mmio)) {
 -              ret = PTR_ERR(hdmi->mmio);
 -              goto fail;
 -      }
 -
 -      /* HDCP needs physical address of hdmi register */
 -      res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
 -              config->mmio_name);
 -      if (!res) {
 -              ret = -EINVAL;
 -              goto fail;
 -      }
 -      hdmi->mmio_phy_addr = res->start;
 -
 -      hdmi->qfprom_mmio = msm_ioremap(pdev, config->qfprom_mmio_name);
 -      if (IS_ERR(hdmi->qfprom_mmio)) {
 -              DRM_DEV_INFO(&pdev->dev, "can't find qfprom resource\n");
 -              hdmi->qfprom_mmio = NULL;
 -      }
 -
 -      hdmi->hpd_regs = devm_kcalloc(&pdev->dev,
 -                                    config->hpd_reg_cnt,
 -                                    sizeof(hdmi->hpd_regs[0]),
 -                                    GFP_KERNEL);
 -      if (!hdmi->hpd_regs) {
 -              ret = -ENOMEM;
 -              goto fail;
 -      }
 -      for (i = 0; i < config->hpd_reg_cnt; i++)
 -              hdmi->hpd_regs[i].supply = config->hpd_reg_names[i];
 -
 -      ret = devm_regulator_bulk_get(&pdev->dev, config->hpd_reg_cnt, hdmi->hpd_regs);
 -      if (ret) {
 -              DRM_DEV_ERROR(&pdev->dev, "failed to get hpd regulator: %d\n", ret);
 -              goto fail;
 -      }
 -
 -      hdmi->pwr_regs = devm_kcalloc(&pdev->dev,
 -                                    config->pwr_reg_cnt,
 -                                    sizeof(hdmi->pwr_regs[0]),
 -                                    GFP_KERNEL);
 -      if (!hdmi->pwr_regs) {
 -              ret = -ENOMEM;
 -              goto fail;
 -      }
 -
 -      for (i = 0; i < config->pwr_reg_cnt; i++)
 -              hdmi->pwr_regs[i].supply = config->pwr_reg_names[i];
 -
 -      ret = devm_regulator_bulk_get(&pdev->dev, config->pwr_reg_cnt, hdmi->pwr_regs);
 -      if (ret) {
 -              DRM_DEV_ERROR(&pdev->dev, "failed to get pwr regulator: %d\n", ret);
 -              goto fail;
 -      }
 -
 -      hdmi->hpd_clks = devm_kcalloc(&pdev->dev,
 -                                    config->hpd_clk_cnt,
 -                                    sizeof(hdmi->hpd_clks[0]),
 -                                    GFP_KERNEL);
 -      if (!hdmi->hpd_clks) {
 -              ret = -ENOMEM;
 -              goto fail;
 -      }
 -      for (i = 0; i < config->hpd_clk_cnt; i++) {
 -              struct clk *clk;
 -
 -              clk = msm_clk_get(pdev, config->hpd_clk_names[i]);
 -              if (IS_ERR(clk)) {
 -                      ret = PTR_ERR(clk);
 -                      DRM_DEV_ERROR(&pdev->dev, "failed to get hpd clk: %s (%d)\n",
 -                                      config->hpd_clk_names[i], ret);
 -                      goto fail;
 -              }
 -
 -              hdmi->hpd_clks[i] = clk;
 -      }
 -
 -      hdmi->pwr_clks = devm_kcalloc(&pdev->dev,
 -                                    config->pwr_clk_cnt,
 -                                    sizeof(hdmi->pwr_clks[0]),
 -                                    GFP_KERNEL);
 -      if (!hdmi->pwr_clks) {
 -              ret = -ENOMEM;
 -              goto fail;
 -      }
 -      for (i = 0; i < config->pwr_clk_cnt; i++) {
 -              struct clk *clk;
 -
 -              clk = msm_clk_get(pdev, config->pwr_clk_names[i]);
 -              if (IS_ERR(clk)) {
 -                      ret = PTR_ERR(clk);
 -                      DRM_DEV_ERROR(&pdev->dev, "failed to get pwr clk: %s (%d)\n",
 -                                      config->pwr_clk_names[i], ret);
 -                      goto fail;
 -              }
 -
 -              hdmi->pwr_clks[i] = clk;
 -      }
 -
 -      hdmi->hpd_gpiod = devm_gpiod_get_optional(&pdev->dev, "hpd", GPIOD_IN);
 -      /* This will catch e.g. -EPROBE_DEFER */
 -      if (IS_ERR(hdmi->hpd_gpiod)) {
 -              ret = PTR_ERR(hdmi->hpd_gpiod);
 -              DRM_DEV_ERROR(&pdev->dev, "failed to get hpd gpio: (%d)\n", ret);
 -              goto fail;
 -      }
 -
 -      if (!hdmi->hpd_gpiod)
 -              DBG("failed to get HPD gpio");
 -
 -      if (hdmi->hpd_gpiod)
 -              gpiod_set_consumer_name(hdmi->hpd_gpiod, "HDMI_HPD");
 -
 -      pm_runtime_enable(&pdev->dev);
 +      struct platform_device *pdev = hdmi->pdev;
 +      int ret;
  
        hdmi->workq = alloc_ordered_workqueue("msm_hdmi", 0);
  
                goto fail;
        }
  
 -      ret = msm_hdmi_get_phy(hdmi);
 -      if (ret) {
 -              DRM_DEV_ERROR(&pdev->dev, "failed to get phy\n");
 -              goto fail;
 -      }
 -
        hdmi->hdcp_ctrl = msm_hdmi_hdcp_init(hdmi);
        if (IS_ERR(hdmi->hdcp_ctrl)) {
                dev_warn(&pdev->dev, "failed to init hdcp: disabled\n");
                hdmi->hdcp_ctrl = NULL;
        }
  
 -      return hdmi;
 +      return 0;
  
  fail:
 -      if (hdmi)
 -              msm_hdmi_destroy(hdmi);
 +      msm_hdmi_destroy(hdmi);
  
 -      return ERR_PTR(ret);
 +      return ret;
  }
  
  /* Second part of initialization, the drm/kms level modeset_init,
@@@ -155,6 -297,7 +155,6 @@@ int msm_hdmi_modeset_init(struct hdmi *
                struct drm_device *dev, struct drm_encoder *encoder)
  {
        struct msm_drm_private *priv = dev->dev_private;
 -      struct platform_device *pdev = hdmi->pdev;
        int ret;
  
        if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) {
  
        drm_connector_attach_encoder(hdmi->connector, hdmi->encoder);
  
 -      hdmi->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
 -      if (!hdmi->irq) {
 -              ret = -EINVAL;
 -              DRM_DEV_ERROR(dev->dev, "failed to get irq\n");
 -              goto fail;
 -      }
 -
        ret = devm_request_irq(dev->dev, hdmi->irq,
                        msm_hdmi_irq, IRQF_TRIGGER_HIGH,
                        "hdmi_isr", hdmi);
                goto fail;
        }
  
-       drm_bridge_connector_enable_hpd(hdmi->connector);
        ret = msm_hdmi_hpd_enable(hdmi->bridge);
        if (ret < 0) {
                DRM_DEV_ERROR(&hdmi->pdev->dev, "failed to enable HPD: %d\n", ret);
  
        priv->bridges[priv->num_bridges++]       = hdmi->bridge;
  
 -      platform_set_drvdata(pdev, hdmi);
 -
        return 0;
  
  fail:
  static const char *hpd_reg_names_8960[] = {"core-vdda"};
  static const char *hpd_clk_names_8960[] = {"core", "master_iface", "slave_iface"};
  
 -static struct hdmi_platform_config hdmi_tx_8960_config = {
 +static const struct hdmi_platform_config hdmi_tx_8960_config = {
                HDMI_CFG(hpd_reg, 8960),
                HDMI_CFG(hpd_clk, 8960),
  };
@@@ -250,7 -400,7 +248,7 @@@ static const char *pwr_clk_names_8x74[
  static const char *hpd_clk_names_8x74[] = {"iface", "core", "mdp_core"};
  static unsigned long hpd_clk_freq_8x74[] = {0, 19200000, 0};
  
 -static struct hdmi_platform_config hdmi_tx_8974_config = {
 +static const struct hdmi_platform_config hdmi_tx_8974_config = {
                HDMI_CFG(pwr_reg, 8x74),
                HDMI_CFG(pwr_clk, 8x74),
                HDMI_CFG(hpd_clk, 8x74),
@@@ -365,12 -515,26 +363,12 @@@ static int msm_hdmi_register_audio_driv
  static int msm_hdmi_bind(struct device *dev, struct device *master, void *data)
  {
        struct msm_drm_private *priv = dev_get_drvdata(master);
 -      struct hdmi_platform_config *hdmi_cfg;
 -      struct hdmi *hdmi;
 -      struct device_node *of_node = dev->of_node;
 +      struct hdmi *hdmi = dev_get_drvdata(dev);
        int err;
  
 -      hdmi_cfg = (struct hdmi_platform_config *)
 -                      of_device_get_match_data(dev);
 -      if (!hdmi_cfg) {
 -              DRM_DEV_ERROR(dev, "unknown hdmi_cfg: %pOFn\n", of_node);
 -              return -ENXIO;
 -      }
 -
 -      hdmi_cfg->mmio_name     = "core_physical";
 -      hdmi_cfg->qfprom_mmio_name = "qfprom_physical";
 -
 -      dev->platform_data = hdmi_cfg;
 -
 -      hdmi = msm_hdmi_init(to_platform_device(dev));
 -      if (IS_ERR(hdmi))
 -              return PTR_ERR(hdmi);
 +      err = msm_hdmi_init(hdmi);
 +      if (err)
 +              return err;
        priv->hdmi = hdmi;
  
        err = msm_hdmi_register_audio_driver(hdmi, dev);
@@@ -403,150 -567,12 +401,150 @@@ static const struct component_ops msm_h
  
  static int msm_hdmi_dev_probe(struct platform_device *pdev)
  {
 +      const struct hdmi_platform_config *config;
 +      struct device *dev = &pdev->dev;
 +      struct hdmi *hdmi;
 +      struct resource *res;
 +      int i, ret;
 +
 +      config = of_device_get_match_data(dev);
 +      if (!config)
 +              return -EINVAL;
 +
 +      hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL);
 +      if (!hdmi)
 +              return -ENOMEM;
 +
 +      hdmi->pdev = pdev;
 +      hdmi->config = config;
 +      spin_lock_init(&hdmi->reg_lock);
 +
 +      ret = drm_of_find_panel_or_bridge(pdev->dev.of_node, 1, 0, NULL, &hdmi->next_bridge);
 +      if (ret && ret != -ENODEV)
 +              return ret;
 +
 +      hdmi->mmio = msm_ioremap(pdev, "core_physical");
 +      if (IS_ERR(hdmi->mmio))
 +              return PTR_ERR(hdmi->mmio);
 +
 +      /* HDCP needs physical address of hdmi register */
 +      res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
 +              "core_physical");
 +      if (!res)
 +              return -EINVAL;
 +      hdmi->mmio_phy_addr = res->start;
 +
 +      hdmi->qfprom_mmio = msm_ioremap(pdev, "qfprom_physical");
 +      if (IS_ERR(hdmi->qfprom_mmio)) {
 +              DRM_DEV_INFO(&pdev->dev, "can't find qfprom resource\n");
 +              hdmi->qfprom_mmio = NULL;
 +      }
 +
 +      hdmi->irq = platform_get_irq(pdev, 0);
 +      if (hdmi->irq < 0)
 +              return hdmi->irq;
 +
 +      hdmi->hpd_regs = devm_kcalloc(&pdev->dev,
 +                                    config->hpd_reg_cnt,
 +                                    sizeof(hdmi->hpd_regs[0]),
 +                                    GFP_KERNEL);
 +      if (!hdmi->hpd_regs)
 +              return -ENOMEM;
 +
 +      for (i = 0; i < config->hpd_reg_cnt; i++)
 +              hdmi->hpd_regs[i].supply = config->hpd_reg_names[i];
 +
 +      ret = devm_regulator_bulk_get(&pdev->dev, config->hpd_reg_cnt, hdmi->hpd_regs);
 +      if (ret)
 +              return dev_err_probe(dev, ret, "failed to get hpd regulators\n");
 +
 +      hdmi->pwr_regs = devm_kcalloc(&pdev->dev,
 +                                    config->pwr_reg_cnt,
 +                                    sizeof(hdmi->pwr_regs[0]),
 +                                    GFP_KERNEL);
 +      if (!hdmi->pwr_regs)
 +              return -ENOMEM;
 +
 +      for (i = 0; i < config->pwr_reg_cnt; i++)
 +              hdmi->pwr_regs[i].supply = config->pwr_reg_names[i];
 +
 +      ret = devm_regulator_bulk_get(&pdev->dev, config->pwr_reg_cnt, hdmi->pwr_regs);
 +      if (ret)
 +              return dev_err_probe(dev, ret, "failed to get pwr regulators\n");
 +
 +      hdmi->hpd_clks = devm_kcalloc(&pdev->dev,
 +                                    config->hpd_clk_cnt,
 +                                    sizeof(hdmi->hpd_clks[0]),
 +                                    GFP_KERNEL);
 +      if (!hdmi->hpd_clks)
 +              return -ENOMEM;
 +
 +      for (i = 0; i < config->hpd_clk_cnt; i++) {
 +              struct clk *clk;
 +
 +              clk = msm_clk_get(pdev, config->hpd_clk_names[i]);
 +              if (IS_ERR(clk))
 +                      return dev_err_probe(dev, PTR_ERR(clk),
 +                                           "failed to get hpd clk: %s\n",
 +                                           config->hpd_clk_names[i]);
 +
 +              hdmi->hpd_clks[i] = clk;
 +      }
 +
 +      hdmi->pwr_clks = devm_kcalloc(&pdev->dev,
 +                                    config->pwr_clk_cnt,
 +                                    sizeof(hdmi->pwr_clks[0]),
 +                                    GFP_KERNEL);
 +      if (!hdmi->pwr_clks)
 +              return -ENOMEM;
 +
 +      for (i = 0; i < config->pwr_clk_cnt; i++) {
 +              struct clk *clk;
 +
 +              clk = msm_clk_get(pdev, config->pwr_clk_names[i]);
 +              if (IS_ERR(clk))
 +                      return dev_err_probe(dev, PTR_ERR(clk),
 +                                           "failed to get pwr clk: %s\n",
 +                                           config->pwr_clk_names[i]);
 +
 +              hdmi->pwr_clks[i] = clk;
 +      }
 +
 +      hdmi->hpd_gpiod = devm_gpiod_get_optional(&pdev->dev, "hpd", GPIOD_IN);
 +      /* This will catch e.g. -EPROBE_DEFER */
 +      if (IS_ERR(hdmi->hpd_gpiod))
 +              return dev_err_probe(dev, PTR_ERR(hdmi->hpd_gpiod),
 +                                   "failed to get hpd gpio\n");
 +
 +      if (!hdmi->hpd_gpiod)
 +              DBG("failed to get HPD gpio");
 +
 +      if (hdmi->hpd_gpiod)
 +              gpiod_set_consumer_name(hdmi->hpd_gpiod, "HDMI_HPD");
 +
 +      ret = msm_hdmi_get_phy(hdmi);
 +      if (ret) {
 +              DRM_DEV_ERROR(&pdev->dev, "failed to get phy\n");
 +              return ret;
 +      }
 +
 +      ret = devm_pm_runtime_enable(&pdev->dev);
 +      if (ret)
 +              return ret;
 +
 +      platform_set_drvdata(pdev, hdmi);
 +
        return component_add(&pdev->dev, &msm_hdmi_ops);
  }
  
  static int msm_hdmi_dev_remove(struct platform_device *pdev)
  {
 +      struct hdmi *hdmi = dev_get_drvdata(&pdev->dev);
 +
        component_del(&pdev->dev, &msm_hdmi_ops);
 +
 +      msm_hdmi_put_phy(hdmi);
 +
        return 0;
  }
  
@@@ -32,16 -32,41 +32,41 @@@ struct convert_to_rgb565_result 
        const u16 expected_swab[TEST_BUF_SIZE];
  };
  
+ struct convert_to_xrgb1555_result {
+       unsigned int dst_pitch;
+       const u16 expected[TEST_BUF_SIZE];
+ };
+ struct convert_to_argb1555_result {
+       unsigned int dst_pitch;
+       const u16 expected[TEST_BUF_SIZE];
+ };
+ struct convert_to_rgba5551_result {
+       unsigned int dst_pitch;
+       const u16 expected[TEST_BUF_SIZE];
+ };
  struct convert_to_rgb888_result {
        unsigned int dst_pitch;
        const u8 expected[TEST_BUF_SIZE];
  };
  
+ struct convert_to_argb8888_result {
+       unsigned int dst_pitch;
+       const u32 expected[TEST_BUF_SIZE];
+ };
  struct convert_to_xrgb2101010_result {
        unsigned int dst_pitch;
        const u32 expected[TEST_BUF_SIZE];
  };
  
+ struct convert_to_argb2101010_result {
+       unsigned int dst_pitch;
+       const u32 expected[TEST_BUF_SIZE];
+ };
  struct convert_xrgb8888_case {
        const char *name;
        unsigned int pitch;
        struct convert_to_gray8_result gray8_result;
        struct convert_to_rgb332_result rgb332_result;
        struct convert_to_rgb565_result rgb565_result;
+       struct convert_to_xrgb1555_result xrgb1555_result;
+       struct convert_to_argb1555_result argb1555_result;
+       struct convert_to_rgba5551_result rgba5551_result;
        struct convert_to_rgb888_result rgb888_result;
+       struct convert_to_argb8888_result argb8888_result;
        struct convert_to_xrgb2101010_result xrgb2101010_result;
+       struct convert_to_argb2101010_result argb2101010_result;
  };
  
  static struct convert_xrgb8888_case convert_xrgb8888_cases[] = {
                        .expected = { 0xF800 },
                        .expected_swab = { 0x00F8 },
                },
+               .xrgb1555_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0x7C00 },
+               },
+               .argb1555_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xFC00 },
+               },
+               .rgba5551_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xF801 },
+               },
                .rgb888_result = {
                        .dst_pitch = 0,
                        .expected = { 0x00, 0x00, 0xFF },
                },
+               .argb8888_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xFFFF0000 },
+               },
                .xrgb2101010_result = {
                        .dst_pitch = 0,
                        .expected = { 0x3FF00000 },
                },
+               .argb2101010_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xFFF00000 },
+               },
        },
        {
                .name = "single_pixel_clip_rectangle",
                        .expected = { 0xF800 },
                        .expected_swab = { 0x00F8 },
                },
+               .xrgb1555_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0x7C00 },
+               },
+               .argb1555_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xFC00 },
+               },
+               .rgba5551_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xF801 },
+               },
                .rgb888_result = {
                        .dst_pitch = 0,
                        .expected = { 0x00, 0x00, 0xFF },
                },
+               .argb8888_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xFFFF0000 },
+               },
                .xrgb2101010_result = {
                        .dst_pitch = 0,
                        .expected = { 0x3FF00000 },
                },
+               .argb2101010_result = {
+                       .dst_pitch = 0,
+                       .expected = { 0xFFF00000 },
+               },
        },
        {
                /* Well known colors: White, black, red, green, blue, magenta,
                                0xE0FF, 0xFF07,
                        },
                },
+               .xrgb1555_result = {
+                       .dst_pitch = 0,
+                       .expected = {
+                               0x7FFF, 0x0000,
+                               0x7C00, 0x03E0,
+                               0x001F, 0x7C1F,
+                               0x7FE0, 0x03FF,
+                       },
+               },
+               .argb1555_result = {
+                       .dst_pitch = 0,
+                       .expected = {
+                               0xFFFF, 0x8000,
+                               0xFC00, 0x83E0,
+                               0x801F, 0xFC1F,
+                               0xFFE0, 0x83FF,
+                       },
+               },
+               .rgba5551_result = {
+                       .dst_pitch = 0,
+                       .expected = {
+                               0xFFFF, 0x0001,
+                               0xF801, 0x07C1,
+                               0x003F, 0xF83F,
+                               0xFFC1, 0x07FF,
+                       },
+               },
                .rgb888_result = {
                        .dst_pitch = 0,
                        .expected = {
                                0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
                        },
                },
+               .argb8888_result = {
+                       .dst_pitch = 0,
+                       .expected = {
+                               0xFFFFFFFF, 0xFF000000,
+                               0xFFFF0000, 0xFF00FF00,
+                               0xFF0000FF, 0xFFFF00FF,
+                               0xFFFFFF00, 0xFF00FFFF,
+                       },
+               },
                .xrgb2101010_result = {
                        .dst_pitch = 0,
                        .expected = {
                                0x3FFFFC00, 0x000FFFFF,
                        },
                },
+               .argb2101010_result = {
+                       .dst_pitch = 0,
+                       .expected = {
+                               0xFFFFFFFF, 0xC0000000,
+                               0xFFF00000, 0xC00FFC00,
+                               0xC00003FF, 0xFFF003FF,
+                               0xFFFFFC00, 0xC00FFFFF,
+                       },
+               },
        },
        {
                /* Randomly picked colors. Full buffer within the clip area. */
                                0x00A8, 0x8E6B, 0x330A, 0x0000, 0x0000,
                        },
                },
+               .xrgb1555_result = {
+                       .dst_pitch = 10,
+                       .expected = {
+                               0x0513, 0x0920, 0x5400, 0x0000, 0x0000,
+                               0x35CE, 0x0513, 0x0920, 0x0000, 0x0000,
+                               0x5400, 0x35CE, 0x0513, 0x0000, 0x0000,
+                       },
+               },
+               .argb1555_result = {
+                       .dst_pitch = 10,
+                       .expected = {
+                               0x8513, 0x8920, 0xD400, 0x0000, 0x0000,
+                               0xB5CE, 0x8513, 0x8920, 0x0000, 0x0000,
+                               0xD400, 0xB5CE, 0x8513, 0x0000, 0x0000,
+                       },
+               },
+               .rgba5551_result = {
+                       .dst_pitch = 10,
+                       .expected = {
+                               0x0A27, 0x1241, 0xA801, 0x0000, 0x0000,
+                               0x6B9D, 0x0A27, 0x1241, 0x0000, 0x0000,
+                               0xA801, 0x6B9D, 0x0A27, 0x0000, 0x0000,
+                       },
+               },
                .rgb888_result = {
                        .dst_pitch = 15,
                        .expected = {
                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                        },
                },
+               .argb8888_result = {
+                       .dst_pitch = 20,
+                       .expected = {
+                               0xFF0E449C, 0xFF114D05, 0xFFA80303, 0x00000000, 0x00000000,
+                               0xFF6C7073, 0xFF0E449C, 0xFF114D05, 0x00000000, 0x00000000,
+                               0xFFA80303, 0xFF6C7073, 0xFF0E449C, 0x00000000, 0x00000000,
+                       },
+               },
                .xrgb2101010_result = {
                        .dst_pitch = 20,
                        .expected = {
                                0x2A20300C, 0x1B1705CD, 0x03844672, 0x00000000, 0x00000000,
                        },
                },
+               .argb2101010_result = {
+                       .dst_pitch = 20,
+                       .expected = {
+                               0xC3844672, 0xC444D414, 0xEA20300C, 0x00000000, 0x00000000,
+                               0xDB1705CD, 0xC3844672, 0xC444D414, 0x00000000, 0x00000000,
+                               0xEA20300C, 0xDB1705CD, 0xC3844672, 0x00000000, 0x00000000,
+                       },
+               },
        },
  };
  
@@@ -264,7 -419,22 +419,22 @@@ static size_t conversion_buf_size(u32 d
        return dst_pitch * drm_rect_height(clip);
  }
  
- static u32 *le32buf_to_cpu(struct kunit *test, const u32 *buf, size_t buf_size)
+ static u16 *le16buf_to_cpu(struct kunit *test, const __le16 *buf, size_t buf_size)
+ {
+       u16 *dst = NULL;
+       int n;
+       dst = kunit_kzalloc(test, sizeof(*dst) * buf_size, GFP_KERNEL);
+       if (!dst)
+               return NULL;
+       for (n = 0; n < buf_size; n++)
+               dst[n] = le16_to_cpu(buf[n]);
+       return dst;
+ }
+ static u32 *le32buf_to_cpu(struct kunit *test, const __le32 *buf, size_t buf_size)
  {
        u32 *dst = NULL;
        int n;
        return dst;
  }
  
+ static __le32 *cpubuf_to_le32(struct kunit *test, const u32 *buf, size_t buf_size)
+ {
+       __le32 *dst = NULL;
+       int n;
+       dst = kunit_kzalloc(test, sizeof(*dst) * buf_size, GFP_KERNEL);
+       if (!dst)
+               return NULL;
+       for (n = 0; n < buf_size; n++)
+               dst[n] = cpu_to_le32(buf[n]);
+       return dst;
+ }
  static void convert_xrgb8888_case_desc(struct convert_xrgb8888_case *t,
                                       char *desc)
  {
@@@ -293,8 -478,8 +478,8 @@@ static void drm_test_fb_xrgb8888_to_gra
        const struct convert_xrgb8888_case *params = test->param_value;
        const struct convert_to_gray8_result *result = &params->gray8_result;
        size_t dst_size;
-       __u8 *buf = NULL;
-       __u32 *xrgb8888 = NULL;
+       u8 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
        struct iosys_map dst, src;
  
        struct drm_framebuffer fb = {
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
        iosys_map_set_vaddr(&dst, buf);
  
-       xrgb8888 = le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
        iosys_map_set_vaddr(&src, xrgb8888);
  
        drm_fb_xrgb8888_to_gray8(&dst, &result->dst_pitch, &src, &fb, &params->clip);
 -      KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
 +      KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
  }
  
  static void drm_test_fb_xrgb8888_to_rgb332(struct kunit *test)
        const struct convert_xrgb8888_case *params = test->param_value;
        const struct convert_to_rgb332_result *result = &params->rgb332_result;
        size_t dst_size;
-       __u8 *buf = NULL;
-       __u32 *xrgb8888 = NULL;
+       u8 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
        struct iosys_map dst, src;
  
        struct drm_framebuffer fb = {
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
        iosys_map_set_vaddr(&dst, buf);
  
-       xrgb8888 = le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
        iosys_map_set_vaddr(&src, xrgb8888);
  
        drm_fb_xrgb8888_to_rgb332(&dst, &result->dst_pitch, &src, &fb, &params->clip);
 -      KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
 +      KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
  }
  
  static void drm_test_fb_xrgb8888_to_rgb565(struct kunit *test)
        const struct convert_xrgb8888_case *params = test->param_value;
        const struct convert_to_rgb565_result *result = &params->rgb565_result;
        size_t dst_size;
-       __u16 *buf = NULL;
-       __u32 *xrgb8888 = NULL;
+       u16 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
        struct iosys_map dst, src;
  
        struct drm_framebuffer fb = {
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
        iosys_map_set_vaddr(&dst, buf);
  
-       xrgb8888 = le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
        iosys_map_set_vaddr(&src, xrgb8888);
  
        drm_fb_xrgb8888_to_rgb565(&dst, &result->dst_pitch, &src, &fb, &params->clip, false);
 -      KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
+       buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
 +      KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
  
+       buf = dst.vaddr; /* restore original value of buf */
        drm_fb_xrgb8888_to_rgb565(&dst, &result->dst_pitch, &src, &fb, &params->clip, true);
 -      KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected_swab, dst_size), 0);
+       buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
 +      KUNIT_EXPECT_MEMEQ(test, buf, result->expected_swab, dst_size);
  }
  
+ static void drm_test_fb_xrgb8888_to_xrgb1555(struct kunit *test)
+ {
+       const struct convert_xrgb8888_case *params = test->param_value;
+       const struct convert_to_xrgb1555_result *result = &params->xrgb1555_result;
+       size_t dst_size;
+       u16 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
+       struct iosys_map dst, src;
+       struct drm_framebuffer fb = {
+               .format = drm_format_info(DRM_FORMAT_XRGB8888),
+               .pitches = { params->pitch, 0, 0 },
+       };
+       dst_size = conversion_buf_size(DRM_FORMAT_XRGB1555, result->dst_pitch,
+                                      &params->clip);
+       KUNIT_ASSERT_GT(test, dst_size, 0);
+       buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
+       iosys_map_set_vaddr(&dst, buf);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
+       iosys_map_set_vaddr(&src, xrgb8888);
+       drm_fb_xrgb8888_to_xrgb1555(&dst, &result->dst_pitch, &src, &fb, &params->clip);
+       buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
+       KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
+ }
+ static void drm_test_fb_xrgb8888_to_argb1555(struct kunit *test)
+ {
+       const struct convert_xrgb8888_case *params = test->param_value;
+       const struct convert_to_argb1555_result *result = &params->argb1555_result;
+       size_t dst_size;
+       u16 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
+       struct iosys_map dst, src;
+       struct drm_framebuffer fb = {
+               .format = drm_format_info(DRM_FORMAT_XRGB8888),
+               .pitches = { params->pitch, 0, 0 },
+       };
+       dst_size = conversion_buf_size(DRM_FORMAT_ARGB1555, result->dst_pitch,
+                                      &params->clip);
+       KUNIT_ASSERT_GT(test, dst_size, 0);
+       buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
+       iosys_map_set_vaddr(&dst, buf);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
+       iosys_map_set_vaddr(&src, xrgb8888);
+       drm_fb_xrgb8888_to_argb1555(&dst, &result->dst_pitch, &src, &fb, &params->clip);
+       buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
+       KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
+ }
+ static void drm_test_fb_xrgb8888_to_rgba5551(struct kunit *test)
+ {
+       const struct convert_xrgb8888_case *params = test->param_value;
+       const struct convert_to_rgba5551_result *result = &params->rgba5551_result;
+       size_t dst_size;
+       u16 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
+       struct iosys_map dst, src;
+       struct drm_framebuffer fb = {
+               .format = drm_format_info(DRM_FORMAT_XRGB8888),
+               .pitches = { params->pitch, 0, 0 },
+       };
+       dst_size = conversion_buf_size(DRM_FORMAT_RGBA5551, result->dst_pitch,
+                                      &params->clip);
+       KUNIT_ASSERT_GT(test, dst_size, 0);
+       buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
+       iosys_map_set_vaddr(&dst, buf);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
+       iosys_map_set_vaddr(&src, xrgb8888);
+       drm_fb_xrgb8888_to_rgba5551(&dst, &result->dst_pitch, &src, &fb, &params->clip);
+       buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
+       KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
+ }
  static void drm_test_fb_xrgb8888_to_rgb888(struct kunit *test)
  {
        const struct convert_xrgb8888_case *params = test->param_value;
        const struct convert_to_rgb888_result *result = &params->rgb888_result;
        size_t dst_size;
-       __u8 *buf = NULL;
-       __u32 *xrgb8888 = NULL;
+       u8 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
        struct iosys_map dst, src;
  
        struct drm_framebuffer fb = {
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
        iosys_map_set_vaddr(&dst, buf);
  
-       xrgb8888 = le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
        iosys_map_set_vaddr(&src, xrgb8888);
  
+       /*
+        * RGB888 expected results are already in little-endian
+        * order, so there's no need to convert the test output.
+        */
        drm_fb_xrgb8888_to_rgb888(&dst, &result->dst_pitch, &src, &fb, &params->clip);
 -      KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
 +      KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
  }
  
+ static void drm_test_fb_xrgb8888_to_argb8888(struct kunit *test)
+ {
+       const struct convert_xrgb8888_case *params = test->param_value;
+       const struct convert_to_argb8888_result *result = &params->argb8888_result;
+       size_t dst_size;
+       u32 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
+       struct iosys_map dst, src;
+       struct drm_framebuffer fb = {
+               .format = drm_format_info(DRM_FORMAT_XRGB8888),
+               .pitches = { params->pitch, 0, 0 },
+       };
+       dst_size = conversion_buf_size(DRM_FORMAT_ARGB8888,
+                                      result->dst_pitch, &params->clip);
+       KUNIT_ASSERT_GT(test, dst_size, 0);
+       buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
+       iosys_map_set_vaddr(&dst, buf);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
+       iosys_map_set_vaddr(&src, xrgb8888);
+       drm_fb_xrgb8888_to_argb8888(&dst, &result->dst_pitch, &src, &fb, &params->clip);
+       buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
+       KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
+ }
  static void drm_test_fb_xrgb8888_to_xrgb2101010(struct kunit *test)
  {
        const struct convert_xrgb8888_case *params = test->param_value;
        const struct convert_to_xrgb2101010_result *result = &params->xrgb2101010_result;
        size_t dst_size;
-       __u32 *buf = NULL;
-       __u32 *xrgb8888 = NULL;
+       u32 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
        struct iosys_map dst, src;
  
        struct drm_framebuffer fb = {
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
        iosys_map_set_vaddr(&dst, buf);
  
-       xrgb8888 = le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
        iosys_map_set_vaddr(&src, xrgb8888);
  
        drm_fb_xrgb8888_to_xrgb2101010(&dst, &result->dst_pitch, &src, &fb, &params->clip);
 -      buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
 -      KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
 +      buf = le32buf_to_cpu(test, buf, dst_size / sizeof(u32));
 +      KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
  }
  
+ static void drm_test_fb_xrgb8888_to_argb2101010(struct kunit *test)
+ {
+       const struct convert_xrgb8888_case *params = test->param_value;
+       const struct convert_to_argb2101010_result *result = &params->argb2101010_result;
+       size_t dst_size;
+       u32 *buf = NULL;
+       __le32 *xrgb8888 = NULL;
+       struct iosys_map dst, src;
+       struct drm_framebuffer fb = {
+               .format = drm_format_info(DRM_FORMAT_XRGB8888),
+               .pitches = { params->pitch, 0, 0 },
+       };
+       dst_size = conversion_buf_size(DRM_FORMAT_ARGB2101010,
+                                      result->dst_pitch, &params->clip);
+       KUNIT_ASSERT_GT(test, dst_size, 0);
+       buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
+       iosys_map_set_vaddr(&dst, buf);
+       xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888);
+       iosys_map_set_vaddr(&src, xrgb8888);
+       drm_fb_xrgb8888_to_argb2101010(&dst, &result->dst_pitch, &src, &fb, &params->clip);
+       buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
+       KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0);
+ }
  static struct kunit_case drm_format_helper_test_cases[] = {
        KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_gray8, convert_xrgb8888_gen_params),
        KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_rgb332, convert_xrgb8888_gen_params),
        KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_rgb565, convert_xrgb8888_gen_params),
+       KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_xrgb1555, convert_xrgb8888_gen_params),
+       KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_argb1555, convert_xrgb8888_gen_params),
+       KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_rgba5551, convert_xrgb8888_gen_params),
        KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_rgb888, convert_xrgb8888_gen_params),
+       KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_argb8888, convert_xrgb8888_gen_params),
        KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_xrgb2101010, convert_xrgb8888_gen_params),
+       KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_argb2101010, convert_xrgb8888_gen_params),
        {}
  };
  
diff --combined include/drm/drm_device.h
@@@ -87,15 -87,25 +87,28 @@@ struct drm_device 
         */
        void *dev_private;
  
-       /** @primary: Primary node */
+       /**
+        * @primary:
+        *
+        * Primary node. Drivers should not interact with this
+        * directly. debugfs interfaces can be registered with
+        * drm_debugfs_add_file(), and sysfs should be directly added on the
+        * hardware (and not character device node) struct device @dev.
+        */
        struct drm_minor *primary;
  
-       /** @render: Render node */
+       /**
+        * @render:
+        *
+        * Render node. Drivers should not interact with this directly ever.
+        * Drivers should not expose any additional interfaces in debugfs or
+        * sysfs on this node.
+        */
        struct drm_minor *render;
  
 +      /** @accel: Compute Acceleration node */
 +      struct drm_minor *accel;
 +
        /**
         * @registered:
         *