Browse Source

kernel: bump 5.15 to 5.15.100

Manually rebased:
        bcm27xx/patches-5.15/950-0421-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
        bcm27xx/patches-5.15/950-0706-media-i2c-imx219-Scale-the-pixel-clock-rate-for-the-.patch
        ramips/patches-5.15/810-uvc-add-iPassion-iP2970-support.patch

Removed upstreamed:
        bcm27xx/patches-5.15/950-0707-drm-vc4-For-DPI-MEDIA_BUS_FMT_RGB565_1X16-is-mode-1-.patch[1]
        bcm27xx/patches-5.15/950-0596-drm-vc4-dpi-Add-option-for-inverting-pixel-clock-and.patch[2]
        ipq807x/0006-v5.16-arm64-dts-qcom-Fix-IPQ8074-PCIe-PHY-nodes.patch [3]
        ipq807x/0034-v6.1-arm64-dts-qcom-ipq8074-fix-PCIe-PHY-serdes-size.patch [4]
        ipq807x/0103-arm64-dts-qcom-ipq8074-fix-Gen2-PCIe-QMP-PHY.patch [5]
        ipq807x/0104-arm64-dts-qcom-ipq8074-fix-Gen3-PCIe-QMP-PHY.patch [6]
        ipq807x/0105-arm64-dts-qcom-ipq8074-correct-Gen2-PCIe-ranges.patch [7]
        ipq807x/0108-arm64-dts-qcom-ipq8074-fix-Gen3-PCIe-node.patch [8]
        ipq807x/0109-arm64-dts-qcom-ipq8074-correct-PCIe-QMP-PHY-output-c.patch [9]
        ipq807x/0132-arm64-dts-qcom-ipq8074-correct-USB3-QMP-PHY-s-clock-.patch [10]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.99&id=d2991e6b30020e286f2dd9d3b4f43548c547caa6
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/gpu/drm/vc4/vc4_dpi.c?h=v5.15.100&id=8e04aaffb6de5f1ae61de7b671c1531172ccf429
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=a55a645aa303a3f7ec37db69822d5420657626da
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=d9df682bcea57fa25f37bbf17eae56fa05662635
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=7e6eeb5fb3aa9e5feffdb6e137dcc06f5f6410e1
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=e88204931d9a60634cd50bbc679f045439c4b91d
7.  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=1563af0f28afd3b6d64ac79a2aecced3969c90bf
8. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=feb8c71f015d416f1afe90e1f62cf51e47376c67
9. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=69c7a270357a7d50ffd3471b14c60250041200e3
10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v5.15.99&id=dd3d021ae5471d98adf81f1e897431c8657d0a18

Build system: x86_64
Build-tested: bcm2711/RPi4B, ramips/tplink_archer-a6-v3
Run-tested: bcm2711/RPi4B, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <[email protected]>
Tested-by: Robert Marko <[email protected]> #ipq807x/Dynalink WRX36
Tested-by: Stefan Lippers-Hollmann <[email protected]> #ipq807x/ax3600, x86_64/FW-7543B, ath79/tl-wdr3600, ipq806x/g10, ipq806x/nbg6817
John Audia 2 năm trước cách đây
mục cha
commit
d6d8851d12
100 tập tin đã thay đổi với 322 bổ sung461 xóa
  1. 2 2
      include/kernel-5.15
  2. 1 1
      target/linux/airoha/patches-5.15/0005-spi-Add-support-for-the-Airoha-EN7523-SoC-SPI-contro.patch
  3. 2 2
      target/linux/ath79/patches-5.15/401-mtd-nor-support-mtd-name-from-device-tree.patch
  4. 1 1
      target/linux/ath79/patches-5.15/920-mikrotik-rb4xx.patch
  5. 2 2
      target/linux/bcm27xx/patches-5.15/950-0001-drm-vc4-hdmi-Split-the-CEC-disable-enable-functions-.patch
  6. 2 2
      target/linux/bcm27xx/patches-5.15/950-0002-drm-vc4-hdmi-Make-sure-the-device-is-powered-with-CE.patch
  7. 1 1
      target/linux/bcm27xx/patches-5.15/950-0005-drm-vc4-hdmi-Raise-the-maximum-clock-rate.patch
  8. 40 40
      target/linux/bcm27xx/patches-5.15/950-0007-drm-vc4-hdmi-Add-a-spinlock-to-protect-register-acce.patch
  9. 21 21
      target/linux/bcm27xx/patches-5.15/950-0008-drm-vc4-hdmi-Use-a-mutex-to-prevent-concurrent-frame.patch
  10. 6 6
      target/linux/bcm27xx/patches-5.15/950-0009-drm-vc4-hdmi-Prevent-access-to-crtc-state-outside-of.patch
  11. 2 2
      target/linux/bcm27xx/patches-5.15/950-0010-drm-vc4-hdmi-Check-the-device-state-in-prepare.patch
  12. 2 2
      target/linux/bcm27xx/patches-5.15/950-0011-drm-vc4-hdmi-Introduce-an-output_enabled-flag.patch
  13. 1 1
      target/linux/bcm27xx/patches-5.15/950-0012-drm-vc4-hdmi-Introduce-a-scdc_enabled-flag.patch
  14. 1 1
      target/linux/bcm27xx/patches-5.15/950-0017-drm-vc4-Leverage-the-load-tracker-on-the-BCM2711.patch
  15. 1 1
      target/linux/bcm27xx/patches-5.15/950-0021-drm-vc4-hdmi-Actually-check-for-the-connector-status.patch
  16. 2 2
      target/linux/bcm27xx/patches-5.15/950-0062-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch
  17. 2 2
      target/linux/bcm27xx/patches-5.15/950-0144-bcmgenet-Better-coalescing-parameter-defaults.patch
  18. 1 1
      target/linux/bcm27xx/patches-5.15/950-0145-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
  19. 1 1
      target/linux/bcm27xx/patches-5.15/950-0165-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
  20. 1 1
      target/linux/bcm27xx/patches-5.15/950-0192-pinctrl-bcm2835-Remove-gpiochip-on-error.patch
  21. 4 4
      target/linux/bcm27xx/patches-5.15/950-0292-net-bcmgenet-Reset-RBUF-on-first-open.patch
  22. 21 21
      target/linux/bcm27xx/patches-5.15/950-0421-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
  23. 6 6
      target/linux/bcm27xx/patches-5.15/950-0422-drm-vc4-plane-Add-support-for-DRM_FORMAT_P030.patch
  24. 6 6
      target/linux/bcm27xx/patches-5.15/950-0423-drm-vc4-plane-Add-support-for-YUV-color-encodings-an.patch
  25. 1 1
      target/linux/bcm27xx/patches-5.15/950-0426-drm-vc4-Add-debugfs-node-that-dumps-the-current-disp.patch
  26. 2 2
      target/linux/bcm27xx/patches-5.15/950-0427-drm-vc4-Add-all-the-HDMI-registers-into-the-debugfs-.patch
  27. 3 3
      target/linux/bcm27xx/patches-5.15/950-0431-drm-vc4-Change-the-default-DPI-format-to-being-18bpp.patch
  28. 1 1
      target/linux/bcm27xx/patches-5.15/950-0442-drm-vc4-hdmi-Simplify-the-connector-state-retrieval.patch
  29. 2 2
      target/linux/bcm27xx/patches-5.15/950-0535-media-i2c-imx219-Sensor-should-report-RAW-color-spac.patch
  30. 1 1
      target/linux/bcm27xx/patches-5.15/950-0551-drm-vc4-Add-support-for-gamma-on-BCM2711.patch
  31. 1 1
      target/linux/bcm27xx/patches-5.15/950-0552-drm-vc4-Add-debugfs-node-that-dumps-the-vc5-gamma-PW.patch
  32. 1 1
      target/linux/bcm27xx/patches-5.15/950-0572-drm-vc4-Don-t-try-disabling-SCDC-on-Pi0-3.patch
  33. 1 1
      target/linux/bcm27xx/patches-5.15/950-0579-drm-vc4-Add-support-for-composite-syncs-to-vc4_dpi.patch
  34. 3 3
      target/linux/bcm27xx/patches-5.15/950-0580-drm-vc4-Ensure-vc4_hdmi-doesn-t-use-2711-HPD-registe.patch
  35. 5 5
      target/linux/bcm27xx/patches-5.15/950-0590-drm-vc4-Move-HDMI-reset-to-pm_resume.patch
  36. 0 114
      target/linux/bcm27xx/patches-5.15/950-0596-drm-vc4-dpi-Add-option-for-inverting-pixel-clock-and.patch
  37. 6 6
      target/linux/bcm27xx/patches-5.15/950-0597-drm-vc4-dpi-Ensure-a-default-format-is-selected.patch
  38. 16 16
      target/linux/bcm27xx/patches-5.15/950-0602-media-imx219-Advertise-embedded-data-node-on-media-p.patch
  39. 3 3
      target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch
  40. 1 1
      target/linux/bcm27xx/patches-5.15/950-0607-drm-vc4-Fix-build-without-DRM_VC4_HDMI_CEC.patch
  41. 2 2
      target/linux/bcm27xx/patches-5.15/950-0622-drm-vc4-Skip-writes-to-disabled-packet-RAM.patch
  42. 2 2
      target/linux/bcm27xx/patches-5.15/950-0623-drm-edid-Rename-drm_hdmi_avi_infoframe_colorspace-to.patch
  43. 1 1
      target/linux/bcm27xx/patches-5.15/950-0624-drm-vc4-hdmi-Add-full-range-RGB-helper.patch
  44. 1 1
      target/linux/bcm27xx/patches-5.15/950-0625-drm-vc4-hdmi-Use-full-range-helper-in-csc-functions.patch
  45. 1 1
      target/linux/bcm27xx/patches-5.15/950-0626-drm-vc4-hdmi-Move-XBAR-setup-to-csc_setup.patch
  46. 1 1
      target/linux/bcm27xx/patches-5.15/950-0627-drm-vc4-hdmi-Replace-CSC_CTL-hardcoded-value-by-defi.patch
  47. 1 1
      target/linux/bcm27xx/patches-5.15/950-0629-drm-vc4-hdmi-Change-CSC-callback-prototype.patch
  48. 3 3
      target/linux/bcm27xx/patches-5.15/950-0630-drm-vc4-hdmi-Move-clock-validation-to-its-own-functi.patch
  49. 3 3
      target/linux/bcm27xx/patches-5.15/950-0631-drm-vc4-hdmi-Move-clock-calculation-into-its-own-fun.patch
  50. 1 1
      target/linux/bcm27xx/patches-5.15/950-0632-drm-vc4-hdmi-Take-the-sink-maximum-TMDS-clock-into-a.patch
  51. 1 1
      target/linux/bcm27xx/patches-5.15/950-0633-drm-vc4-hdmi-Take-bpp-into-account-for-the-scrambler.patch
  52. 4 4
      target/linux/bcm27xx/patches-5.15/950-0634-drm-vc4-hdmi-Always-try-to-have-the-highest-bpc.patch
  53. 7 7
      target/linux/bcm27xx/patches-5.15/950-0635-drm-vc4-hdmi-Support-HDMI-YUV-output.patch
  54. 1 1
      target/linux/bcm27xx/patches-5.15/950-0643-drm-vc4-hdmi-Fix-no-video-output-on-DVI-monitors.patch
  55. 4 4
      target/linux/bcm27xx/patches-5.15/950-0650-drm-vc4-Add-alpha_blend_mode-property-to-each-plane.patch
  56. 1 1
      target/linux/bcm27xx/patches-5.15/950-0655-drm-vc4-hdmi-Fix-clock-value-used-for-validating-hdm.patch
  57. 1 1
      target/linux/bcm27xx/patches-5.15/950-0657-mfd-simple-mfd-i2c-Add-configuration-for-RPi-POE-HAT.patch
  58. 1 1
      target/linux/bcm27xx/patches-5.15/950-0669-drm-vc4_hdmi-Add-Broadcast-RGB-property-to-allow-ove.patch
  59. 1 1
      target/linux/bcm27xx/patches-5.15/950-0678-drm-vc4-Add-DRM-210101010-RGB-formats-for-hvs5.patch
  60. 2 2
      target/linux/bcm27xx/patches-5.15/950-0683-drm-vc4-dpi-Support-DPI-interface-in-mode3-for-RGB56.patch
  61. 21 21
      target/linux/bcm27xx/patches-5.15/950-0706-media-i2c-imx219-Scale-the-pixel-clock-rate-for-the-.patch
  62. 0 25
      target/linux/bcm27xx/patches-5.15/950-0707-drm-vc4-For-DPI-MEDIA_BUS_FMT_RGB565_1X16-is-mode-1-.patch
  63. 1 1
      target/linux/bcm27xx/patches-5.15/950-0742-drm-vc4-hvs-Defer-dlist-slots-deallocation.patch
  64. 3 3
      target/linux/bcm27xx/patches-5.15/950-0781-drm-vc4-Support-zpos-on-all-planes.patch
  65. 16 16
      target/linux/bcm27xx/patches-5.15/950-0787-vc4-drm-vc4_plane-Keep-fractional-source-coords-insi.patch
  66. 3 3
      target/linux/bcm27xx/patches-5.15/950-0788-vc4-drm-Handle-fractional-coordinates-using-the-phas.patch
  67. 3 3
      target/linux/bcm27xx/patches-5.15/950-0790-vc4-drm-plane-Make-use-of-chroma-siting-parameter.patch
  68. 2 2
      target/linux/bcm27xx/patches-5.15/950-0801-pinctrl-bcm2835-Only-return-non-GPIOs-to-inputs.patch
  69. 1 1
      target/linux/bcm27xx/patches-5.15/950-0807-Revert-drm-vc4-hvs-Defer-dlist-slots-deallocation.patch
  70. 2 2
      target/linux/bcm27xx/patches-5.15/950-0808-drm-vc4_hdmi-Force-modeset-when-bpc-changes.patch
  71. 1 1
      target/linux/bcm27xx/patches-5.15/950-0829-vc4_hdmi-Remove-VC4_HDMI_SCHEDULER_CONTROL_VERT_ALWA.patch
  72. 2 2
      target/linux/bcm27xx/patches-5.15/950-0868-drm-vc4-hdmi-Rework-hdmi_enable_4kp60-detection.patch
  73. 1 1
      target/linux/bcm27xx/patches-5.15/950-0897-drm-vc4-plane-Prevent-async-update-if-we-don-t-have-.patch
  74. 6 6
      target/linux/bcm27xx/patches-5.15/950-0898-drm-vc4-Consolidate-Hardware-Revision-Check.patch
  75. 2 2
      target/linux/bcm27xx/patches-5.15/950-0903-drm-vc4-plane-Register-a-different-drm_plane_helper_.patch
  76. 1 1
      target/linux/generic/backport-5.15/005-v5.17-01-Kbuild-use-Wdeclaration-after-statement.patch
  77. 1 1
      target/linux/generic/backport-5.15/005-v5.17-02-Kbuild-move-to-std-gnu11.patch
  78. 1 1
      target/linux/generic/backport-5.15/005-v5.17-03-Kbuild-use-std-gnu11-for-KBUILD_USERCFLAGS.patch
  79. 1 1
      target/linux/generic/backport-5.15/020-v6.1-04-mm-multigenerational-lru-groundwork.patch
  80. 3 3
      target/linux/generic/backport-5.15/020-v6.1-05-mm-multigenerational-lru-mm_struct-list.patch
  81. 1 1
      target/linux/generic/backport-5.15/702-v5.19-01-arm64-dts-mediatek-mt7622-add-support-for-coherent-D.patch
  82. 3 3
      target/linux/generic/backport-5.15/702-v5.19-04-arm64-dts-mediatek-mt7622-introduce-nodes-for-Wirele.patch
  83. 1 1
      target/linux/generic/backport-5.15/702-v5.19-13-net-ethernet-mtk_eth_soc-use-standard-property-for-c.patch
  84. 2 2
      target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch
  85. 1 1
      target/linux/generic/backport-5.15/822-v5.17-Bluetooth-btusb-Fix-application-of-sizeof-to-pointer.patch
  86. 1 1
      target/linux/generic/backport-5.15/823-v5.18-Bluetooth-btusb-Add-a-new-PID-VID-13d3-3567-for-MT79.patch
  87. 1 1
      target/linux/generic/backport-5.15/824-v5.19-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0c8-for-MT79.patch
  88. 1 1
      target/linux/generic/backport-5.15/825-v6.1-Bluetooth-btusb-Add-a-new-VID-PID-0e8d-0608-for-MT79.patch
  89. 1 1
      target/linux/generic/hack-5.15/721-net-add-packet-mangeling.patch
  90. 1 1
      target/linux/generic/hack-5.15/902-debloat_proc.patch
  91. 1 1
      target/linux/generic/pending-5.15/103-kbuild-export-SUBARCH.patch
  92. 3 3
      target/linux/generic/pending-5.15/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch
  93. 2 2
      target/linux/generic/pending-5.15/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
  94. 1 1
      target/linux/generic/pending-5.15/610-netfilter_match_bypass_default_checks.patch
  95. 7 7
      target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
  96. 5 5
      target/linux/generic/pending-5.15/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
  97. 1 1
      target/linux/ipq806x/patches-5.15/110-01-thermal-qcom-tsens-init-debugfs-only-with-successful.patch
  98. 1 1
      target/linux/ipq807x/patches-5.15/0001-v5.16-arm64-dts-qcom-ipq8074-add-SPMI-bus.patch
  99. 1 1
      target/linux/ipq807x/patches-5.15/0002-v5.16-arm64-dts-qcom-Update-BAM-DMA-node-name-per-DT-schem.patch
  100. 1 1
      target/linux/ipq807x/patches-5.15/0003-v5.16-arm64-dts-qcom-ipq8074-Add-QUP5-I2C-node.patch

+ 2 - 2
include/kernel-5.15

@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .98
-LINUX_KERNEL_HASH-5.15.98 = 7dc62cd3a45f95c9b60316a5886ea9406aee256308869dac1e4ec088fbb37787
+LINUX_VERSION-5.15 = .100
+LINUX_KERNEL_HASH-5.15.100 = f7a4ce870fc1ad879b49887f7f77ee79babdb66937d5acdb1465d53b388c1427

+ 1 - 1
target/linux/airoha/patches-5.15/0005-spi-Add-support-for-the-Airoha-EN7523-SoC-SPI-contro.patch

@@ -1,6 +1,6 @@
 --- a/drivers/spi/Kconfig
 --- a/drivers/spi/Kconfig
 +++ b/drivers/spi/Kconfig
 +++ b/drivers/spi/Kconfig
-@@ -308,6 +308,12 @@ config SPI_DLN2
+@@ -307,6 +307,12 @@ config SPI_DLN2
  	 This driver can also be built as a module.  If so, the module
  	 This driver can also be built as a module.  If so, the module
  	 will be called spi-dln2.
  	 will be called spi-dln2.
  
  

+ 2 - 2
target/linux/ath79/patches-5.15/401-mtd-nor-support-mtd-name-from-device-tree.patch

@@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <[email protected]>
 
 
 --- a/drivers/mtd/spi-nor/core.c
 --- a/drivers/mtd/spi-nor/core.c
 +++ b/drivers/mtd/spi-nor/core.c
 +++ b/drivers/mtd/spi-nor/core.c
-@@ -3098,6 +3098,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -3107,6 +3107,7 @@ int spi_nor_scan(struct spi_nor *nor, co
  	struct device *dev = nor->dev;
  	struct device *dev = nor->dev;
  	struct mtd_info *mtd = &nor->mtd;
  	struct mtd_info *mtd = &nor->mtd;
  	struct device_node *np = spi_nor_get_flash_node(nor);
  	struct device_node *np = spi_nor_get_flash_node(nor);
@@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <[email protected]>
  	int ret;
  	int ret;
  	int i;
  	int i;
  
  
-@@ -3152,7 +3153,12 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -3161,7 +3162,12 @@ int spi_nor_scan(struct spi_nor *nor, co
  	if (ret)
  	if (ret)
  		return ret;
  		return ret;
  
  

+ 1 - 1
target/linux/ath79/patches-5.15/920-mikrotik-rb4xx.patch

@@ -45,7 +45,7 @@ Submitted-by: Christopher Hill <[email protected]>
 
 
 --- a/drivers/mfd/Kconfig
 --- a/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
-@@ -2175,6 +2175,14 @@ config RAVE_SP_CORE
+@@ -2176,6 +2176,14 @@ config RAVE_SP_CORE
  	  Select this to get support for the Supervisory Processor
  	  Select this to get support for the Supervisory Processor
  	  device found on several devices in RAVE line of hardware.
  	  device found on several devices in RAVE line of hardware.
  
  

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0001-drm-vc4-hdmi-Split-the-CEC-disable-enable-functions-.patch

@@ -17,7 +17,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-5-maxi
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1748,7 +1748,7 @@ static irqreturn_t vc4_cec_irq_handler(i
+@@ -1749,7 +1749,7 @@ static irqreturn_t vc4_cec_irq_handler(i
  	return ret;
  	return ret;
  }
  }
  
  
@@ -26,7 +26,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-5-maxi
  {
  {
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	/* clock period in microseconds */
  	/* clock period in microseconds */
-@@ -1761,38 +1761,53 @@ static int vc4_hdmi_cec_adap_enable(stru
+@@ -1762,38 +1762,53 @@ static int vc4_hdmi_cec_adap_enable(stru
  	val |= ((4700 / usecs) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT) |
  	val |= ((4700 / usecs) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT) |
  	       ((4500 / usecs) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT);
  	       ((4500 / usecs) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT);
  
  

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0002-drm-vc4-hdmi-Make-sure-the-device-is-powered-with-CE.patch

@@ -24,7 +24,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-6-maxi
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1753,8 +1753,14 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1754,8 +1754,14 @@ static int vc4_hdmi_cec_enable(struct ce
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	/* clock period in microseconds */
  	/* clock period in microseconds */
  	const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
  	const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
@@ -40,7 +40,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-6-maxi
  	val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
  	val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
  		 VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
  		 VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
  		 VC4_HDMI_CEC_CNT_TO_4500_US_MASK);
  		 VC4_HDMI_CEC_CNT_TO_4500_US_MASK);
-@@ -1797,6 +1803,8 @@ static int vc4_hdmi_cec_disable(struct c
+@@ -1798,6 +1804,8 @@ static int vc4_hdmi_cec_disable(struct c
  	HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
  	HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
  		   VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
  		   VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0005-drm-vc4-hdmi-Raise-the-maximum-clock-rate.patch

@@ -20,7 +20,7 @@ Link: https://lore.kernel.org/r/[email protected]
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2386,7 +2386,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2387,7 +2387,7 @@ static const struct vc4_hdmi_variant bcm
  	.encoder_type		= VC4_ENCODER_TYPE_HDMI0,
  	.encoder_type		= VC4_ENCODER_TYPE_HDMI0,
  	.debugfs_name		= "hdmi0_regs",
  	.debugfs_name		= "hdmi0_regs",
  	.card_name		= "vc4-hdmi-0",
  	.card_name		= "vc4-hdmi-0",

+ 40 - 40
target/linux/bcm27xx/patches-5.15/950-0007-drm-vc4-hdmi-Add-a-spinlock-to-protect-register-acce.patch

@@ -281,9 +281,9 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi,
  static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi,
-@@ -789,10 +856,13 @@ static void vc5_hdmi_set_timings(struct
+@@ -790,10 +857,13 @@ static void vc5_hdmi_set_timings(struct
  			  VC4_SET_FIELD(mode->crtc_vtotal -
  			  VC4_SET_FIELD(mode->crtc_vtotal -
- 					mode->crtc_vsync_end - interlaced,
+ 					mode->crtc_vsync_end,
  					VC4_HDMI_VERTB_VBP));
  					VC4_HDMI_VERTB_VBP));
 +	unsigned long flags;
 +	unsigned long flags;
  	unsigned char gcp;
  	unsigned char gcp;
@@ -295,7 +295,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	HDMI_WRITE(HDMI_VEC_INTERFACE_XBAR, 0x354021);
  	HDMI_WRITE(HDMI_VEC_INTERFACE_XBAR, 0x354021);
  	HDMI_WRITE(HDMI_HORZA,
  	HDMI_WRITE(HDMI_HORZA,
  		   (vsync_pos ? VC5_HDMI_HORZA_VPOS : 0) |
  		   (vsync_pos ? VC5_HDMI_HORZA_VPOS : 0) |
-@@ -856,13 +926,18 @@ static void vc5_hdmi_set_timings(struct
+@@ -857,13 +927,18 @@ static void vc5_hdmi_set_timings(struct
  	HDMI_WRITE(HDMI_MISC_CONTROL, reg);
  	HDMI_WRITE(HDMI_MISC_CONTROL, reg);
  
  
  	HDMI_WRITE(HDMI_CLOCK_STOP, 0);
  	HDMI_WRITE(HDMI_CLOCK_STOP, 0);
@@ -314,7 +314,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	drift = HDMI_READ(HDMI_FIFO_CTL);
  	drift = HDMI_READ(HDMI_FIFO_CTL);
  	drift &= VC4_HDMI_FIFO_VALID_WRITE_MASK;
  	drift &= VC4_HDMI_FIFO_VALID_WRITE_MASK;
  
  
-@@ -870,12 +945,20 @@ static void vc4_hdmi_recenter_fifo(struc
+@@ -871,12 +946,20 @@ static void vc4_hdmi_recenter_fifo(struc
  		   drift & ~VC4_HDMI_FIFO_CTL_RECENTER);
  		   drift & ~VC4_HDMI_FIFO_CTL_RECENTER);
  	HDMI_WRITE(HDMI_FIFO_CTL,
  	HDMI_WRITE(HDMI_FIFO_CTL,
  		   drift | VC4_HDMI_FIFO_CTL_RECENTER);
  		   drift | VC4_HDMI_FIFO_CTL_RECENTER);
@@ -335,7 +335,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	ret = wait_for(HDMI_READ(HDMI_FIFO_CTL) &
  	ret = wait_for(HDMI_READ(HDMI_FIFO_CTL) &
  		       VC4_HDMI_FIFO_CTL_RECENTER_DONE, 1);
  		       VC4_HDMI_FIFO_CTL_RECENTER_DONE, 1);
  	WARN_ONCE(ret, "Timeout waiting for "
  	WARN_ONCE(ret, "Timeout waiting for "
-@@ -909,6 +992,7 @@ static void vc4_hdmi_encoder_pre_crtc_co
+@@ -910,6 +993,7 @@ static void vc4_hdmi_encoder_pre_crtc_co
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	unsigned long pixel_rate = vc4_conn_state->pixel_rate;
  	unsigned long pixel_rate = vc4_conn_state->pixel_rate;
  	unsigned long bvb_rate, hsm_rate;
  	unsigned long bvb_rate, hsm_rate;
@@ -343,7 +343,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	int ret;
  	int ret;
  
  
  	/*
  	/*
-@@ -977,11 +1061,15 @@ static void vc4_hdmi_encoder_pre_crtc_co
+@@ -978,11 +1062,15 @@ static void vc4_hdmi_encoder_pre_crtc_co
  	if (vc4_hdmi->variant->phy_init)
  	if (vc4_hdmi->variant->phy_init)
  		vc4_hdmi->variant->phy_init(vc4_hdmi, vc4_conn_state);
  		vc4_hdmi->variant->phy_init(vc4_hdmi, vc4_conn_state);
  
  
@@ -359,7 +359,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	if (vc4_hdmi->variant->set_timings)
  	if (vc4_hdmi->variant->set_timings)
  		vc4_hdmi->variant->set_timings(vc4_hdmi, conn_state, mode);
  		vc4_hdmi->variant->set_timings(vc4_hdmi, conn_state, mode);
  
  
-@@ -1001,6 +1089,7 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1002,6 +1090,7 @@ static void vc4_hdmi_encoder_pre_crtc_en
  	struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode;
  	struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode;
  	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
  	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
@@ -367,7 +367,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	if (vc4_encoder->hdmi_monitor &&
  	if (vc4_encoder->hdmi_monitor &&
  	    drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_LIMITED) {
  	    drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_LIMITED) {
-@@ -1015,7 +1104,9 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1016,7 +1105,9 @@ static void vc4_hdmi_encoder_pre_crtc_en
  		vc4_encoder->limited_rgb_range = false;
  		vc4_encoder->limited_rgb_range = false;
  	}
  	}
  
  
@@ -377,7 +377,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
  static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
-@@ -1026,8 +1117,11 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1027,8 +1118,11 @@ static void vc4_hdmi_encoder_post_crtc_e
  	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
  	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
  	bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
  	bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
  	bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
  	bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
@@ -389,7 +389,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	HDMI_WRITE(HDMI_VID_CTL,
  	HDMI_WRITE(HDMI_VID_CTL,
  		   VC4_HD_VID_CTL_ENABLE |
  		   VC4_HD_VID_CTL_ENABLE |
  		   VC4_HD_VID_CTL_CLRRGB |
  		   VC4_HD_VID_CTL_CLRRGB |
-@@ -1044,6 +1138,8 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1045,6 +1139,8 @@ static void vc4_hdmi_encoder_post_crtc_e
  			   HDMI_READ(HDMI_SCHEDULER_CONTROL) |
  			   HDMI_READ(HDMI_SCHEDULER_CONTROL) |
  			   VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
  			   VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
  
  
@@ -398,7 +398,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		ret = wait_for(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  		ret = wait_for(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  			       VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE, 1000);
  			       VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE, 1000);
  		WARN_ONCE(ret, "Timeout waiting for "
  		WARN_ONCE(ret, "Timeout waiting for "
-@@ -1056,6 +1152,8 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1057,6 +1153,8 @@ static void vc4_hdmi_encoder_post_crtc_e
  			   HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  			   HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  			   ~VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
  			   ~VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
  
  
@@ -407,7 +407,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		ret = wait_for(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  		ret = wait_for(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  				 VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE), 1000);
  				 VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE), 1000);
  		WARN_ONCE(ret, "Timeout waiting for "
  		WARN_ONCE(ret, "Timeout waiting for "
-@@ -1063,6 +1161,8 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1064,6 +1162,8 @@ static void vc4_hdmi_encoder_post_crtc_e
  	}
  	}
  
  
  	if (vc4_encoder->hdmi_monitor) {
  	if (vc4_encoder->hdmi_monitor) {
@@ -416,7 +416,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  		WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  			  VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE));
  			  VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE));
  		HDMI_WRITE(HDMI_SCHEDULER_CONTROL,
  		HDMI_WRITE(HDMI_SCHEDULER_CONTROL,
-@@ -1072,6 +1172,8 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1073,6 +1173,8 @@ static void vc4_hdmi_encoder_post_crtc_e
  		HDMI_WRITE(HDMI_RAM_PACKET_CONFIG,
  		HDMI_WRITE(HDMI_RAM_PACKET_CONFIG,
  			   VC4_HDMI_RAM_PACKET_ENABLE);
  			   VC4_HDMI_RAM_PACKET_ENABLE);
  
  
@@ -425,7 +425,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		vc4_hdmi_set_infoframes(encoder);
  		vc4_hdmi_set_infoframes(encoder);
  	}
  	}
  
  
-@@ -1195,6 +1297,7 @@ static void vc4_hdmi_audio_set_mai_clock
+@@ -1196,6 +1298,7 @@ static void vc4_hdmi_audio_set_mai_clock
  					 unsigned int samplerate)
  					 unsigned int samplerate)
  {
  {
  	u32 hsm_clock = clk_get_rate(vc4_hdmi->audio_clock);
  	u32 hsm_clock = clk_get_rate(vc4_hdmi->audio_clock);
@@ -433,7 +433,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	unsigned long n, m;
  	unsigned long n, m;
  
  
  	rational_best_approximation(hsm_clock, samplerate,
  	rational_best_approximation(hsm_clock, samplerate,
-@@ -1204,9 +1307,11 @@ static void vc4_hdmi_audio_set_mai_clock
+@@ -1205,9 +1308,11 @@ static void vc4_hdmi_audio_set_mai_clock
  				     VC4_HD_MAI_SMP_M_SHIFT) + 1,
  				     VC4_HD_MAI_SMP_M_SHIFT) + 1,
  				    &n, &m);
  				    &n, &m);
  
  
@@ -445,7 +445,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerate)
  static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerate)
-@@ -1217,6 +1322,8 @@ static void vc4_hdmi_set_n_cts(struct vc
+@@ -1218,6 +1323,8 @@ static void vc4_hdmi_set_n_cts(struct vc
  	u32 n, cts;
  	u32 n, cts;
  	u64 tmp;
  	u64 tmp;
  
  
@@ -454,7 +454,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	n = 128 * samplerate / 1000;
  	n = 128 * samplerate / 1000;
  	tmp = (u64)(mode->clock * 1000) * n;
  	tmp = (u64)(mode->clock * 1000) * n;
  	do_div(tmp, 128 * samplerate);
  	do_div(tmp, 128 * samplerate);
-@@ -1246,6 +1353,7 @@ static int vc4_hdmi_audio_startup(struct
+@@ -1247,6 +1354,7 @@ static int vc4_hdmi_audio_startup(struct
  {
  {
  	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
  	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
@@ -462,7 +462,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	/*
  	/*
  	 * If the HDMI encoder hasn't probed, or the encoder is
  	 * If the HDMI encoder hasn't probed, or the encoder is
-@@ -1257,12 +1365,14 @@ static int vc4_hdmi_audio_startup(struct
+@@ -1258,12 +1366,14 @@ static int vc4_hdmi_audio_startup(struct
  
  
  	vc4_hdmi->audio.streaming = true;
  	vc4_hdmi->audio.streaming = true;
  
  
@@ -477,7 +477,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	if (vc4_hdmi->variant->phy_rng_enable)
  	if (vc4_hdmi->variant->phy_rng_enable)
  		vc4_hdmi->variant->phy_rng_enable(vc4_hdmi);
  		vc4_hdmi->variant->phy_rng_enable(vc4_hdmi);
-@@ -1274,6 +1384,7 @@ static void vc4_hdmi_audio_reset(struct
+@@ -1275,6 +1385,7 @@ static void vc4_hdmi_audio_reset(struct
  {
  {
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
  	struct device *dev = &vc4_hdmi->pdev->dev;
  	struct device *dev = &vc4_hdmi->pdev->dev;
@@ -485,7 +485,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	int ret;
  	int ret;
  
  
  	vc4_hdmi->audio.streaming = false;
  	vc4_hdmi->audio.streaming = false;
-@@ -1281,20 +1392,29 @@ static void vc4_hdmi_audio_reset(struct
+@@ -1282,20 +1393,29 @@ static void vc4_hdmi_audio_reset(struct
  	if (ret)
  	if (ret)
  		dev_err(dev, "Failed to stop audio infoframe: %d\n", ret);
  		dev_err(dev, "Failed to stop audio infoframe: %d\n", ret);
  
  
@@ -515,7 +515,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	if (vc4_hdmi->variant->phy_rng_disable)
  	if (vc4_hdmi->variant->phy_rng_disable)
  		vc4_hdmi->variant->phy_rng_disable(vc4_hdmi);
  		vc4_hdmi->variant->phy_rng_disable(vc4_hdmi);
  
  
-@@ -1349,6 +1469,7 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -1350,6 +1470,7 @@ static int vc4_hdmi_audio_prepare(struct
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
  	unsigned int sample_rate = params->sample_rate;
  	unsigned int sample_rate = params->sample_rate;
  	unsigned int channels = params->channels;
  	unsigned int channels = params->channels;
@@ -523,7 +523,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	u32 audio_packet_config, channel_mask;
  	u32 audio_packet_config, channel_mask;
  	u32 channel_map;
  	u32 channel_map;
  	u32 mai_audio_format;
  	u32 mai_audio_format;
-@@ -1357,14 +1478,15 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -1358,14 +1479,15 @@ static int vc4_hdmi_audio_prepare(struct
  	dev_dbg(dev, "%s: %u Hz, %d bit, %d channels\n", __func__,
  	dev_dbg(dev, "%s: %u Hz, %d bit, %d channels\n", __func__,
  		sample_rate, params->sample_width, channels);
  		sample_rate, params->sample_width, channels);
  
  
@@ -541,7 +541,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	mai_sample_rate = sample_rate_to_mai_fmt(sample_rate);
  	mai_sample_rate = sample_rate_to_mai_fmt(sample_rate);
  	if (params->iec.status[0] & IEC958_AES0_NONAUDIO &&
  	if (params->iec.status[0] & IEC958_AES0_NONAUDIO &&
  	    params->channels == 8)
  	    params->channels == 8)
-@@ -1402,8 +1524,11 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -1403,8 +1525,11 @@ static int vc4_hdmi_audio_prepare(struct
  	channel_map = vc4_hdmi->variant->channel_map(vc4_hdmi, channel_mask);
  	channel_map = vc4_hdmi->variant->channel_map(vc4_hdmi, channel_mask);
  	HDMI_WRITE(HDMI_MAI_CHANNEL_MAP, channel_map);
  	HDMI_WRITE(HDMI_MAI_CHANNEL_MAP, channel_map);
  	HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config);
  	HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config);
@@ -553,7 +553,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	memcpy(&vc4_hdmi->audio.infoframe, &params->cea, sizeof(params->cea));
  	memcpy(&vc4_hdmi->audio.infoframe, &params->cea, sizeof(params->cea));
  	vc4_hdmi_set_audio_infoframe(encoder);
  	vc4_hdmi_set_audio_infoframe(encoder);
  
  
-@@ -1677,6 +1802,8 @@ static void vc4_cec_read_msg(struct vc4_
+@@ -1678,6 +1803,8 @@ static void vc4_cec_read_msg(struct vc4_
  	struct cec_msg *msg = &vc4_hdmi->cec_rx_msg;
  	struct cec_msg *msg = &vc4_hdmi->cec_rx_msg;
  	unsigned int i;
  	unsigned int i;
  
  
@@ -562,7 +562,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >>
  	msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >>
  					VC4_HDMI_CEC_REC_WRD_CNT_SHIFT);
  					VC4_HDMI_CEC_REC_WRD_CNT_SHIFT);
  
  
-@@ -1695,11 +1822,12 @@ static void vc4_cec_read_msg(struct vc4_
+@@ -1696,11 +1823,12 @@ static void vc4_cec_read_msg(struct vc4_
  	}
  	}
  }
  }
  
  
@@ -577,7 +577,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
  	cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
  	vc4_hdmi->cec_tx_ok = cntrl1 & VC4_HDMI_CEC_TX_STATUS_GOOD;
  	vc4_hdmi->cec_tx_ok = cntrl1 & VC4_HDMI_CEC_TX_STATUS_GOOD;
  	cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN;
  	cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN;
-@@ -1708,11 +1836,24 @@ static irqreturn_t vc4_cec_irq_handler_t
+@@ -1709,11 +1837,24 @@ static irqreturn_t vc4_cec_irq_handler_t
  	return IRQ_WAKE_THREAD;
  	return IRQ_WAKE_THREAD;
  }
  }
  
  
@@ -603,7 +603,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	vc4_hdmi->cec_rx_msg.len = 0;
  	vc4_hdmi->cec_rx_msg.len = 0;
  	cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
  	cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
  	vc4_cec_read_msg(vc4_hdmi, cntrl1);
  	vc4_cec_read_msg(vc4_hdmi, cntrl1);
-@@ -1725,6 +1866,18 @@ static irqreturn_t vc4_cec_irq_handler_r
+@@ -1726,6 +1867,18 @@ static irqreturn_t vc4_cec_irq_handler_r
  	return IRQ_WAKE_THREAD;
  	return IRQ_WAKE_THREAD;
  }
  }
  
  
@@ -622,7 +622,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
  static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
  {
  {
  	struct vc4_hdmi *vc4_hdmi = priv;
  	struct vc4_hdmi *vc4_hdmi = priv;
-@@ -1735,14 +1888,17 @@ static irqreturn_t vc4_cec_irq_handler(i
+@@ -1736,14 +1889,17 @@ static irqreturn_t vc4_cec_irq_handler(i
  	if (!(stat & VC4_HDMI_CPU_CEC))
  	if (!(stat & VC4_HDMI_CPU_CEC))
  		return IRQ_NONE;
  		return IRQ_NONE;
  
  
@@ -642,7 +642,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	return ret;
  	return ret;
  }
  }
  
  
-@@ -1751,6 +1907,7 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1752,6 +1908,7 @@ static int vc4_hdmi_cec_enable(struct ce
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	/* clock period in microseconds */
  	/* clock period in microseconds */
  	const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
  	const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
@@ -650,7 +650,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	u32 val;
  	u32 val;
  	int ret;
  	int ret;
  
  
-@@ -1758,6 +1915,8 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1759,6 +1916,8 @@ static int vc4_hdmi_cec_enable(struct ce
  	if (ret)
  	if (ret)
  		return ret;
  		return ret;
  
  
@@ -659,7 +659,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	val = HDMI_READ(HDMI_CEC_CNTRL_5);
  	val = HDMI_READ(HDMI_CEC_CNTRL_5);
  	val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
  	val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
  		 VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
  		 VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
-@@ -1788,12 +1947,17 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1789,12 +1948,17 @@ static int vc4_hdmi_cec_enable(struct ce
  	if (!vc4_hdmi->variant->external_irq_controller)
  	if (!vc4_hdmi->variant->external_irq_controller)
  		HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC);
  		HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC);
  
  
@@ -677,7 +677,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	if (!vc4_hdmi->variant->external_irq_controller)
  	if (!vc4_hdmi->variant->external_irq_controller)
  		HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC);
  		HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC);
-@@ -1801,6 +1965,8 @@ static int vc4_hdmi_cec_disable(struct c
+@@ -1802,6 +1966,8 @@ static int vc4_hdmi_cec_disable(struct c
  	HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
  	HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
  		   VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
  		   VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
  
  
@@ -686,7 +686,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	pm_runtime_put(&vc4_hdmi->pdev->dev);
  	pm_runtime_put(&vc4_hdmi->pdev->dev);
  
  
  	return 0;
  	return 0;
-@@ -1817,10 +1983,14 @@ static int vc4_hdmi_cec_adap_enable(stru
+@@ -1818,10 +1984,14 @@ static int vc4_hdmi_cec_adap_enable(stru
  static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
  static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
  {
  {
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
@@ -701,7 +701,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	return 0;
  	return 0;
  }
  }
  
  
-@@ -1829,6 +1999,7 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -1830,6 +2000,7 @@ static int vc4_hdmi_cec_adap_transmit(st
  {
  {
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct drm_device *dev = vc4_hdmi->connector.dev;
  	struct drm_device *dev = vc4_hdmi->connector.dev;
@@ -709,7 +709,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	u32 val;
  	u32 val;
  	unsigned int i;
  	unsigned int i;
  
  
-@@ -1837,6 +2008,8 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -1838,6 +2009,8 @@ static int vc4_hdmi_cec_adap_transmit(st
  		return -ENOMEM;
  		return -ENOMEM;
  	}
  	}
  
  
@@ -718,7 +718,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	for (i = 0; i < msg->len; i += 4)
  	for (i = 0; i < msg->len; i += 4)
  		HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2),
  		HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2),
  			   (msg->msg[i]) |
  			   (msg->msg[i]) |
-@@ -1852,6 +2025,9 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -1853,6 +2026,9 @@ static int vc4_hdmi_cec_adap_transmit(st
  	val |= VC4_HDMI_CEC_START_XMIT_BEGIN;
  	val |= VC4_HDMI_CEC_START_XMIT_BEGIN;
  
  
  	HDMI_WRITE(HDMI_CEC_CNTRL_1, val);
  	HDMI_WRITE(HDMI_CEC_CNTRL_1, val);
@@ -728,7 +728,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	return 0;
  	return 0;
  }
  }
  
  
-@@ -1866,6 +2042,7 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1867,6 +2043,7 @@ static int vc4_hdmi_cec_init(struct vc4_
  	struct cec_connector_info conn_info;
  	struct cec_connector_info conn_info;
  	struct platform_device *pdev = vc4_hdmi->pdev;
  	struct platform_device *pdev = vc4_hdmi->pdev;
  	struct device *dev = &pdev->dev;
  	struct device *dev = &pdev->dev;
@@ -736,7 +736,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	u32 value;
  	u32 value;
  	int ret;
  	int ret;
  
  
-@@ -1886,10 +2063,12 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1887,10 +2064,12 @@ static int vc4_hdmi_cec_init(struct vc4_
  	cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
  	cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
  	cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
  	cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
  
  
@@ -749,7 +749,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	vc4_hdmi_cec_update_clk_div(vc4_hdmi);
  	vc4_hdmi_cec_update_clk_div(vc4_hdmi);
  
  
-@@ -1908,7 +2087,9 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1909,7 +2088,9 @@ static int vc4_hdmi_cec_init(struct vc4_
  		if (ret)
  		if (ret)
  			goto err_remove_cec_rx_handler;
  			goto err_remove_cec_rx_handler;
  	} else {
  	} else {
@@ -759,7 +759,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  		ret = request_threaded_irq(platform_get_irq(pdev, 0),
  		ret = request_threaded_irq(platform_get_irq(pdev, 0),
  					   vc4_cec_irq_handler,
  					   vc4_cec_irq_handler,
-@@ -2178,6 +2359,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2179,6 +2360,7 @@ static int vc4_hdmi_bind(struct device *
  	vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
  	vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
  	if (!vc4_hdmi)
  	if (!vc4_hdmi)
  		return -ENOMEM;
  		return -ENOMEM;

+ 21 - 21
target/linux/bcm27xx/patches-5.15/950-0008-drm-vc4-hdmi-Use-a-mutex-to-prevent-concurrent-frame.patch

@@ -169,7 +169,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
  static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
-@@ -995,6 +1024,8 @@ static void vc4_hdmi_encoder_pre_crtc_co
+@@ -996,6 +1025,8 @@ static void vc4_hdmi_encoder_pre_crtc_co
  	unsigned long flags;
  	unsigned long flags;
  	int ret;
  	int ret;
  
  
@@ -178,7 +178,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	/*
  	/*
  	 * As stated in RPi's vc4 firmware "HDMI state machine (HSM) clock must
  	 * As stated in RPi's vc4 firmware "HDMI state machine (HSM) clock must
  	 * be faster than pixel clock, infinitesimally faster, tested in
  	 * be faster than pixel clock, infinitesimally faster, tested in
-@@ -1015,13 +1046,13 @@ static void vc4_hdmi_encoder_pre_crtc_co
+@@ -1016,13 +1047,13 @@ static void vc4_hdmi_encoder_pre_crtc_co
  	ret = clk_set_min_rate(vc4_hdmi->hsm_clock, hsm_rate);
  	ret = clk_set_min_rate(vc4_hdmi->hsm_clock, hsm_rate);
  	if (ret) {
  	if (ret) {
  		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
  		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
@@ -194,7 +194,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	}
  	}
  
  
  	ret = clk_set_rate(vc4_hdmi->pixel_clock, pixel_rate);
  	ret = clk_set_rate(vc4_hdmi->pixel_clock, pixel_rate);
-@@ -1073,13 +1104,16 @@ static void vc4_hdmi_encoder_pre_crtc_co
+@@ -1074,13 +1105,16 @@ static void vc4_hdmi_encoder_pre_crtc_co
  	if (vc4_hdmi->variant->set_timings)
  	if (vc4_hdmi->variant->set_timings)
  		vc4_hdmi->variant->set_timings(vc4_hdmi, conn_state, mode);
  		vc4_hdmi->variant->set_timings(vc4_hdmi, conn_state, mode);
  
  
@@ -212,7 +212,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	return;
  	return;
  }
  }
  
  
-@@ -1091,6 +1125,8 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1092,6 +1126,8 @@ static void vc4_hdmi_encoder_pre_crtc_en
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	unsigned long flags;
  	unsigned long flags;
  
  
@@ -221,7 +221,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	if (vc4_encoder->hdmi_monitor &&
  	if (vc4_encoder->hdmi_monitor &&
  	    drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_LIMITED) {
  	    drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_LIMITED) {
  		if (vc4_hdmi->variant->csc_setup)
  		if (vc4_hdmi->variant->csc_setup)
-@@ -1107,6 +1143,8 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1108,6 +1144,8 @@ static void vc4_hdmi_encoder_pre_crtc_en
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	HDMI_WRITE(HDMI_FIFO_CTL, VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N);
  	HDMI_WRITE(HDMI_FIFO_CTL, VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N);
  	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
  	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
@@ -230,7 +230,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
  static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
-@@ -1120,6 +1158,8 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1121,6 +1159,8 @@ static void vc4_hdmi_encoder_post_crtc_e
  	unsigned long flags;
  	unsigned long flags;
  	int ret;
  	int ret;
  
  
@@ -239,7 +239,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  
  
  	HDMI_WRITE(HDMI_VID_CTL,
  	HDMI_WRITE(HDMI_VID_CTL,
-@@ -1179,6 +1219,8 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1180,6 +1220,8 @@ static void vc4_hdmi_encoder_post_crtc_e
  
  
  	vc4_hdmi_recenter_fifo(vc4_hdmi);
  	vc4_hdmi_recenter_fifo(vc4_hdmi);
  	vc4_hdmi_enable_scrambling(encoder);
  	vc4_hdmi_enable_scrambling(encoder);
@@ -248,7 +248,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
  static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
-@@ -1322,6 +1364,7 @@ static void vc4_hdmi_set_n_cts(struct vc
+@@ -1323,6 +1365,7 @@ static void vc4_hdmi_set_n_cts(struct vc
  	u32 n, cts;
  	u32 n, cts;
  	u64 tmp;
  	u64 tmp;
  
  
@@ -256,7 +256,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	lockdep_assert_held(&vc4_hdmi->hw_lock);
  	lockdep_assert_held(&vc4_hdmi->hw_lock);
  
  
  	n = 128 * samplerate / 1000;
  	n = 128 * samplerate / 1000;
-@@ -1355,13 +1398,17 @@ static int vc4_hdmi_audio_startup(struct
+@@ -1356,13 +1399,17 @@ static int vc4_hdmi_audio_startup(struct
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
  	struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
  	unsigned long flags;
  	unsigned long flags;
  
  
@@ -275,7 +275,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	vc4_hdmi->audio.streaming = true;
  	vc4_hdmi->audio.streaming = true;
  
  
-@@ -1377,6 +1424,8 @@ static int vc4_hdmi_audio_startup(struct
+@@ -1378,6 +1425,8 @@ static int vc4_hdmi_audio_startup(struct
  	if (vc4_hdmi->variant->phy_rng_enable)
  	if (vc4_hdmi->variant->phy_rng_enable)
  		vc4_hdmi->variant->phy_rng_enable(vc4_hdmi);
  		vc4_hdmi->variant->phy_rng_enable(vc4_hdmi);
  
  
@@ -284,7 +284,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	return 0;
  	return 0;
  }
  }
  
  
-@@ -1387,6 +1436,8 @@ static void vc4_hdmi_audio_reset(struct
+@@ -1388,6 +1437,8 @@ static void vc4_hdmi_audio_reset(struct
  	unsigned long flags;
  	unsigned long flags;
  	int ret;
  	int ret;
  
  
@@ -293,7 +293,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	vc4_hdmi->audio.streaming = false;
  	vc4_hdmi->audio.streaming = false;
  	ret = vc4_hdmi_stop_packet(encoder, HDMI_INFOFRAME_TYPE_AUDIO, false);
  	ret = vc4_hdmi_stop_packet(encoder, HDMI_INFOFRAME_TYPE_AUDIO, false);
  	if (ret)
  	if (ret)
-@@ -1406,6 +1457,8 @@ static void vc4_hdmi_audio_shutdown(stru
+@@ -1407,6 +1458,8 @@ static void vc4_hdmi_audio_shutdown(stru
  	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
  	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
  	unsigned long flags;
  	unsigned long flags;
  
  
@@ -302,7 +302,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  
  
  	HDMI_WRITE(HDMI_MAI_CTL,
  	HDMI_WRITE(HDMI_MAI_CTL,
-@@ -1420,6 +1473,8 @@ static void vc4_hdmi_audio_shutdown(stru
+@@ -1421,6 +1474,8 @@ static void vc4_hdmi_audio_shutdown(stru
  
  
  	vc4_hdmi->audio.streaming = false;
  	vc4_hdmi->audio.streaming = false;
  	vc4_hdmi_audio_reset(vc4_hdmi);
  	vc4_hdmi_audio_reset(vc4_hdmi);
@@ -311,7 +311,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static int sample_rate_to_mai_fmt(int samplerate)
  static int sample_rate_to_mai_fmt(int samplerate)
-@@ -1478,6 +1533,8 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -1479,6 +1534,8 @@ static int vc4_hdmi_audio_prepare(struct
  	dev_dbg(dev, "%s: %u Hz, %d bit, %d channels\n", __func__,
  	dev_dbg(dev, "%s: %u Hz, %d bit, %d channels\n", __func__,
  		sample_rate, params->sample_width, channels);
  		sample_rate, params->sample_width, channels);
  
  
@@ -320,7 +320,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate);
  	vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate);
  
  
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
-@@ -1532,6 +1589,8 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -1533,6 +1590,8 @@ static int vc4_hdmi_audio_prepare(struct
  	memcpy(&vc4_hdmi->audio.infoframe, &params->cea, sizeof(params->cea));
  	memcpy(&vc4_hdmi->audio.infoframe, &params->cea, sizeof(params->cea));
  	vc4_hdmi_set_audio_infoframe(encoder);
  	vc4_hdmi_set_audio_infoframe(encoder);
  
  
@@ -329,7 +329,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	return 0;
  	return 0;
  }
  }
  
  
-@@ -1574,7 +1633,9 @@ static int vc4_hdmi_audio_get_eld(struct
+@@ -1575,7 +1634,9 @@ static int vc4_hdmi_audio_get_eld(struct
  	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
  	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
  	struct drm_connector *connector = &vc4_hdmi->connector;
  	struct drm_connector *connector = &vc4_hdmi->connector;
  
  
@@ -339,7 +339,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	return 0;
  	return 0;
  }
  }
-@@ -1911,6 +1972,17 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1912,6 +1973,17 @@ static int vc4_hdmi_cec_enable(struct ce
  	u32 val;
  	u32 val;
  	int ret;
  	int ret;
  
  
@@ -357,7 +357,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
  	ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
  	if (ret)
  	if (ret)
  		return ret;
  		return ret;
-@@ -1957,6 +2029,17 @@ static int vc4_hdmi_cec_disable(struct c
+@@ -1958,6 +2030,17 @@ static int vc4_hdmi_cec_disable(struct c
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	unsigned long flags;
  	unsigned long flags;
  
  
@@ -375,7 +375,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  
  
  	if (!vc4_hdmi->variant->external_irq_controller)
  	if (!vc4_hdmi->variant->external_irq_controller)
-@@ -1985,6 +2068,17 @@ static int vc4_hdmi_cec_adap_log_addr(st
+@@ -1986,6 +2069,17 @@ static int vc4_hdmi_cec_adap_log_addr(st
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
  	unsigned long flags;
  	unsigned long flags;
  
  
@@ -393,7 +393,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	HDMI_WRITE(HDMI_CEC_CNTRL_1,
  	HDMI_WRITE(HDMI_CEC_CNTRL_1,
  		   (HDMI_READ(HDMI_CEC_CNTRL_1) & ~VC4_HDMI_CEC_ADDR_MASK) |
  		   (HDMI_READ(HDMI_CEC_CNTRL_1) & ~VC4_HDMI_CEC_ADDR_MASK) |
-@@ -2003,6 +2097,17 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -2004,6 +2098,17 @@ static int vc4_hdmi_cec_adap_transmit(st
  	u32 val;
  	u32 val;
  	unsigned int i;
  	unsigned int i;
  
  
@@ -411,7 +411,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	if (msg->len > 16) {
  	if (msg->len > 16) {
  		drm_err(dev, "Attempting to transmit too much data (%d)\n", msg->len);
  		drm_err(dev, "Attempting to transmit too much data (%d)\n", msg->len);
  		return -ENOMEM;
  		return -ENOMEM;
-@@ -2359,6 +2464,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2360,6 +2465,7 @@ static int vc4_hdmi_bind(struct device *
  	vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
  	vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
  	if (!vc4_hdmi)
  	if (!vc4_hdmi)
  		return -ENOMEM;
  		return -ENOMEM;

+ 6 - 6
target/linux/bcm27xx/patches-5.15/950-0009-drm-vc4-hdmi-Prevent-access-to-crtc-state-outside-of.patch

@@ -73,7 +73,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		return;
  		return;
  
  
  	if (delayed_work_pending(&vc4_hdmi->scrambling_work))
  	if (delayed_work_pending(&vc4_hdmi->scrambling_work))
-@@ -1017,8 +1019,8 @@ static void vc4_hdmi_encoder_pre_crtc_co
+@@ -1018,8 +1020,8 @@ static void vc4_hdmi_encoder_pre_crtc_co
  		vc4_hdmi_encoder_get_connector_state(encoder, state);
  		vc4_hdmi_encoder_get_connector_state(encoder, state);
  	struct vc4_hdmi_connector_state *vc4_conn_state =
  	struct vc4_hdmi_connector_state *vc4_conn_state =
  		conn_state_to_vc4_hdmi_conn_state(conn_state);
  		conn_state_to_vc4_hdmi_conn_state(conn_state);
@@ -83,7 +83,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	unsigned long pixel_rate = vc4_conn_state->pixel_rate;
  	unsigned long pixel_rate = vc4_conn_state->pixel_rate;
  	unsigned long bvb_rate, hsm_rate;
  	unsigned long bvb_rate, hsm_rate;
  	unsigned long flags;
  	unsigned long flags;
-@@ -1120,9 +1122,9 @@ out:
+@@ -1121,9 +1123,9 @@ out:
  static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder,
  static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder,
  					     struct drm_atomic_state *state)
  					     struct drm_atomic_state *state)
  {
  {
@@ -95,7 +95,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	unsigned long flags;
  	unsigned long flags;
  
  
  	mutex_lock(&vc4_hdmi->mutex);
  	mutex_lock(&vc4_hdmi->mutex);
-@@ -1150,8 +1152,8 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1151,8 +1153,8 @@ static void vc4_hdmi_encoder_pre_crtc_en
  static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
  static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
  					      struct drm_atomic_state *state)
  					      struct drm_atomic_state *state)
  {
  {
@@ -105,7 +105,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
  	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
  	bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
  	bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
  	bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
  	bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
-@@ -1227,6 +1229,19 @@ static void vc4_hdmi_encoder_enable(stru
+@@ -1228,6 +1230,19 @@ static void vc4_hdmi_encoder_enable(stru
  {
  {
  }
  }
  
  
@@ -125,7 +125,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  
  
-@@ -1305,6 +1320,7 @@ vc4_hdmi_encoder_mode_valid(struct drm_e
+@@ -1306,6 +1321,7 @@ vc4_hdmi_encoder_mode_valid(struct drm_e
  
  
  static const struct drm_encoder_helper_funcs vc4_hdmi_encoder_helper_funcs = {
  static const struct drm_encoder_helper_funcs vc4_hdmi_encoder_helper_funcs = {
  	.atomic_check = vc4_hdmi_encoder_atomic_check,
  	.atomic_check = vc4_hdmi_encoder_atomic_check,
@@ -133,7 +133,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	.mode_valid = vc4_hdmi_encoder_mode_valid,
  	.mode_valid = vc4_hdmi_encoder_mode_valid,
  	.disable = vc4_hdmi_encoder_disable,
  	.disable = vc4_hdmi_encoder_disable,
  	.enable = vc4_hdmi_encoder_enable,
  	.enable = vc4_hdmi_encoder_enable,
-@@ -1358,9 +1374,7 @@ static void vc4_hdmi_audio_set_mai_clock
+@@ -1359,9 +1375,7 @@ static void vc4_hdmi_audio_set_mai_clock
  
  
  static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerate)
  static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerate)
  {
  {

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0010-drm-vc4-hdmi-Check-the-device-state-in-prepare.patch

@@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1406,20 +1406,36 @@ static inline struct vc4_hdmi *dai_to_hd
+@@ -1407,20 +1407,36 @@ static inline struct vc4_hdmi *dai_to_hd
  	return snd_soc_card_get_drvdata(card);
  	return snd_soc_card_get_drvdata(card);
  }
  }
  
  
@@ -63,7 +63,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		mutex_unlock(&vc4_hdmi->mutex);
  		mutex_unlock(&vc4_hdmi->mutex);
  		return -ENODEV;
  		return -ENODEV;
  	}
  	}
-@@ -1549,6 +1565,11 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -1550,6 +1566,11 @@ static int vc4_hdmi_audio_prepare(struct
  
  
  	mutex_lock(&vc4_hdmi->mutex);
  	mutex_lock(&vc4_hdmi->mutex);
  
  

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0011-drm-vc4-hdmi-Introduce-an-output_enabled-flag.patch

@@ -32,7 +32,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable)
  static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable)
-@@ -1227,6 +1232,11 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1228,6 +1233,11 @@ static void vc4_hdmi_encoder_post_crtc_e
  
  
  static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
  static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
  {
  {
@@ -44,7 +44,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  }
  }
  
  
  static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder,
  static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder,
-@@ -1408,14 +1418,12 @@ static inline struct vc4_hdmi *dai_to_hd
+@@ -1409,14 +1419,12 @@ static inline struct vc4_hdmi *dai_to_hd
  
  
  static bool vc4_hdmi_audio_can_stream(struct vc4_hdmi *vc4_hdmi)
  static bool vc4_hdmi_audio_can_stream(struct vc4_hdmi *vc4_hdmi)
  {
  {

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0012-drm-vc4-hdmi-Introduce-a-scdc_enabled-flag.patch

@@ -69,7 +69,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	if (delayed_work_pending(&vc4_hdmi->scrambling_work))
  	if (delayed_work_pending(&vc4_hdmi->scrambling_work))
  		cancel_delayed_work_sync(&vc4_hdmi->scrambling_work);
  		cancel_delayed_work_sync(&vc4_hdmi->scrambling_work);
-@@ -2522,6 +2516,14 @@ static int vc4_hdmi_bind(struct device *
+@@ -2523,6 +2517,14 @@ static int vc4_hdmi_bind(struct device *
  	vc4_hdmi->pdev = pdev;
  	vc4_hdmi->pdev = pdev;
  	vc4_hdmi->variant = variant;
  	vc4_hdmi->variant = variant;
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0017-drm-vc4-Leverage-the-load-tracker-on-the-BCM2711.patch

@@ -109,7 +109,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		 */
  		 */
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -525,11 +525,6 @@ static void vc4_plane_calc_load(struct d
+@@ -527,11 +527,6 @@ static void vc4_plane_calc_load(struct d
  	struct vc4_plane_state *vc4_state;
  	struct vc4_plane_state *vc4_state;
  	struct drm_crtc_state *crtc_state;
  	struct drm_crtc_state *crtc_state;
  	unsigned int vscale_factor;
  	unsigned int vscale_factor;

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0021-drm-vc4-hdmi-Actually-check-for-the-connector-status.patch

@@ -44,7 +44,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1801,10 +1801,11 @@ static void vc4_hdmi_audio_exit(struct v
+@@ -1802,10 +1802,11 @@ static void vc4_hdmi_audio_exit(struct v
  static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv)
  static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv)
  {
  {
  	struct vc4_hdmi *vc4_hdmi = priv;
  	struct vc4_hdmi *vc4_hdmi = priv;

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0062-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch

@@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 
 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -378,7 +378,7 @@ static const struct gpio_chip bcm2835_gp
+@@ -376,7 +376,7 @@ static const struct gpio_chip bcm2835_gp
  	.get = bcm2835_gpio_get,
  	.get = bcm2835_gpio_get,
  	.set = bcm2835_gpio_set,
  	.set = bcm2835_gpio_set,
  	.set_config = gpiochip_generic_config,
  	.set_config = gpiochip_generic_config,
@@ -29,7 +29,7 @@ Signed-off-by: Phil Elwell <[email protected]>
  	.ngpio = BCM2835_NUM_GPIOS,
  	.ngpio = BCM2835_NUM_GPIOS,
  	.can_sleep = false,
  	.can_sleep = false,
  	.of_gpio_ranges_fallback = bcm2835_of_gpio_ranges_fallback,
  	.of_gpio_ranges_fallback = bcm2835_of_gpio_ranges_fallback,
-@@ -395,7 +395,7 @@ static const struct gpio_chip bcm2711_gp
+@@ -393,7 +393,7 @@ static const struct gpio_chip bcm2711_gp
  	.get = bcm2835_gpio_get,
  	.get = bcm2835_gpio_get,
  	.set = bcm2835_gpio_set,
  	.set = bcm2835_gpio_set,
  	.set_config = gpiochip_generic_config,
  	.set_config = gpiochip_generic_config,

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0144-bcmgenet-Better-coalescing-parameter-defaults.patch

@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -2608,7 +2608,7 @@ static void bcmgenet_init_tx_ring(struct
+@@ -2616,7 +2616,7 @@ static void bcmgenet_init_tx_ring(struct
  
  
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
@@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <[email protected]>
  	/* Disable rate control for now */
  	/* Disable rate control for now */
  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
  				  TDMA_FLOW_PERIOD);
  				  TDMA_FLOW_PERIOD);
-@@ -4075,9 +4075,12 @@ static int bcmgenet_probe(struct platfor
+@@ -4083,9 +4083,12 @@ static int bcmgenet_probe(struct platfor
  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
  
  
  	/* Set default coalescing parameters */
  	/* Set default coalescing parameters */

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0145-net-genet-enable-link-energy-detect-powerdown-for-ex.patch

@@ -20,7 +20,7 @@ Signed-off-by: Jonathan Bell <[email protected]>
 
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -293,6 +293,8 @@ int bcmgenet_mii_probe(struct net_device
+@@ -286,6 +286,8 @@ int bcmgenet_mii_probe(struct net_device
  	/* Communicate the integrated PHY revision */
  	/* Communicate the integrated PHY revision */
  	if (priv->internal_phy)
  	if (priv->internal_phy)
  		phy_flags = priv->gphy_rev;
  		phy_flags = priv->gphy_rev;

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0165-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch

@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <[email protected]>
  
  
  static inline void bcmgenet_writel(u32 value, void __iomem *offset)
  static inline void bcmgenet_writel(u32 value, void __iomem *offset)
  {
  {
-@@ -2439,6 +2442,11 @@ static void reset_umac(struct bcmgenet_p
+@@ -2447,6 +2450,11 @@ static void reset_umac(struct bcmgenet_p
  	bcmgenet_rbuf_ctrl_set(priv, 0);
  	bcmgenet_rbuf_ctrl_set(priv, 0);
  	udelay(10);
  	udelay(10);
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0192-pinctrl-bcm2835-Remove-gpiochip-on-error.patch

@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 
 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -1339,7 +1339,7 @@ static int bcm2835_pinctrl_probe(struct
+@@ -1337,7 +1337,7 @@ static int bcm2835_pinctrl_probe(struct
  	girq->default_type = IRQ_TYPE_NONE;
  	girq->default_type = IRQ_TYPE_NONE;
  	girq->handler = handle_level_irq;
  	girq->handler = handle_level_irq;
  
  

+ 4 - 4
target/linux/bcm27xx/patches-5.15/950-0292-net-bcmgenet-Reset-RBUF-on-first-open.patch

@@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -3257,7 +3257,7 @@ static void bcmgenet_get_hw_addr(struct
+@@ -3265,7 +3265,7 @@ static void bcmgenet_get_hw_addr(struct
  }
  }
  
  
  /* Returns a reusable dma control register value */
  /* Returns a reusable dma control register value */
@@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell <[email protected]>
  {
  {
  	unsigned int i;
  	unsigned int i;
  	u32 reg;
  	u32 reg;
-@@ -3282,6 +3282,14 @@ static u32 bcmgenet_dma_disable(struct b
+@@ -3290,6 +3290,14 @@ static u32 bcmgenet_dma_disable(struct b
  	udelay(10);
  	udelay(10);
  	bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH);
  	bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH);
  
  
@@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <[email protected]>
  	return dma_ctrl;
  	return dma_ctrl;
  }
  }
  
  
-@@ -3345,8 +3353,8 @@ static int bcmgenet_open(struct net_devi
+@@ -3353,8 +3361,8 @@ static int bcmgenet_open(struct net_devi
  
  
  	bcmgenet_set_hw_addr(priv, dev->dev_addr);
  	bcmgenet_set_hw_addr(priv, dev->dev_addr);
  
  
@@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <[email protected]>
  
  
  	/* Reinitialize TDMA and RDMA and SW housekeeping */
  	/* Reinitialize TDMA and RDMA and SW housekeeping */
  	ret = bcmgenet_init_dma(priv);
  	ret = bcmgenet_init_dma(priv);
-@@ -4204,7 +4212,7 @@ static int bcmgenet_resume(struct device
+@@ -4212,7 +4220,7 @@ static int bcmgenet_resume(struct device
  			bcmgenet_hfb_create_rxnfc_filter(priv, rule);
  			bcmgenet_hfb_create_rxnfc_filter(priv, rule);
  
  
  	/* Disable RX/TX DMA and flush TX queues */
  	/* Disable RX/TX DMA and flush TX queues */

+ 21 - 21
target/linux/bcm27xx/patches-5.15/950-0421-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch

@@ -169,27 +169,27 @@ Signed-off-by: Joerg Quinten <[email protected]>
  	}, {
  	}, {
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
-@@ -165,10 +165,20 @@ static void vc4_dpi_encoder_enable(struc
- 			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
- 					       DPI_FORMAT);
- 			break;
-+		case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
-+			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
-+					       DPI_FORMAT);
-+			dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
-+			break;
- 		case MEDIA_BUS_FMT_RGB666_1X18:
- 			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
- 					       DPI_FORMAT);
- 			break;
-+		case MEDIA_BUS_FMT_BGR666_1X18:
-+			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
-+					       DPI_FORMAT);
-+			dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
-+			break;
- 		case MEDIA_BUS_FMT_RGB565_1X16:
- 			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_3,
- 					       DPI_FORMAT);
+@@ -167,10 +167,20 @@ static void vc4_dpi_encoder_enable(struc
+ 				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
+ 						       DPI_FORMAT);
+ 				break;
++			case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
++				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
++						DPI_FORMAT);
++				dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
++				break;
+ 			case MEDIA_BUS_FMT_RGB666_1X18:
+ 				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
+ 						       DPI_FORMAT);
+ 				break;
++			case MEDIA_BUS_FMT_BGR666_1X18:
++				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
++						DPI_FORMAT);
++				dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
++				break;
+ 			case MEDIA_BUS_FMT_RGB565_1X16:
+ 				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_1,
+ 						       DPI_FORMAT);
 --- a/include/uapi/linux/media-bus-format.h
 --- a/include/uapi/linux/media-bus-format.h
 +++ b/include/uapi/linux/media-bus-format.h
 +++ b/include/uapi/linux/media-bus-format.h
 @@ -34,7 +34,7 @@
 @@ -34,7 +34,7 @@

+ 6 - 6
target/linux/bcm27xx/patches-5.15/950-0422-drm-vc4-plane-Add-support-for-DRM_FORMAT_P030.patch

@@ -26,7 +26,7 @@ Link: https://lore.kernel.org/r/[email protected]
  } hvs_formats[] = {
  } hvs_formats[] = {
  	{
  	{
  		.drm = DRM_FORMAT_XRGB8888,
  		.drm = DRM_FORMAT_XRGB8888,
-@@ -128,6 +129,12 @@ static const struct hvs_format {
+@@ -130,6 +131,12 @@ static const struct hvs_format {
  		.hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_2PLANE,
  		.hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_2PLANE,
  		.pixel_order = HVS_PIXEL_ORDER_XYCRCB,
  		.pixel_order = HVS_PIXEL_ORDER_XYCRCB,
  	},
  	},
@@ -39,7 +39,7 @@ Link: https://lore.kernel.org/r/[email protected]
  };
  };
  
  
  static const struct hvs_format *vc4_get_hvs_format(u32 drm_format)
  static const struct hvs_format *vc4_get_hvs_format(u32 drm_format)
-@@ -758,47 +765,90 @@ static int vc4_plane_mode_set(struct drm
+@@ -760,47 +767,90 @@ static int vc4_plane_mode_set(struct drm
  	case DRM_FORMAT_MOD_BROADCOM_SAND128:
  	case DRM_FORMAT_MOD_BROADCOM_SAND128:
  	case DRM_FORMAT_MOD_BROADCOM_SAND256: {
  	case DRM_FORMAT_MOD_BROADCOM_SAND256: {
  		uint32_t param = fourcc_mod_broadcom_param(fb->modifier);
  		uint32_t param = fourcc_mod_broadcom_param(fb->modifier);
@@ -157,7 +157,7 @@ Link: https://lore.kernel.org/r/[email protected]
  		}
  		}
  
  
  		pitch0 = VC4_SET_FIELD(param, SCALER_TILE_HEIGHT);
  		pitch0 = VC4_SET_FIELD(param, SCALER_TILE_HEIGHT);
-@@ -951,7 +1001,8 @@ static int vc4_plane_mode_set(struct drm
+@@ -953,7 +1003,8 @@ static int vc4_plane_mode_set(struct drm
  
  
  	/* Pitch word 1/2 */
  	/* Pitch word 1/2 */
  	for (i = 1; i < num_planes; i++) {
  	for (i = 1; i < num_planes; i++) {
@@ -167,7 +167,7 @@ Link: https://lore.kernel.org/r/[email protected]
  			vc4_dlist_write(vc4_state,
  			vc4_dlist_write(vc4_state,
  					VC4_SET_FIELD(fb->pitches[i],
  					VC4_SET_FIELD(fb->pitches[i],
  						      SCALER_SRC_PITCH));
  						      SCALER_SRC_PITCH));
-@@ -1311,6 +1362,13 @@ static bool vc4_format_mod_supported(str
+@@ -1313,6 +1364,13 @@ static bool vc4_format_mod_supported(str
  		default:
  		default:
  			return false;
  			return false;
  		}
  		}
@@ -181,7 +181,7 @@ Link: https://lore.kernel.org/r/[email protected]
  	case DRM_FORMAT_RGBX1010102:
  	case DRM_FORMAT_RGBX1010102:
  	case DRM_FORMAT_BGRX1010102:
  	case DRM_FORMAT_BGRX1010102:
  	case DRM_FORMAT_RGBA1010102:
  	case DRM_FORMAT_RGBA1010102:
-@@ -1343,8 +1401,11 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1345,8 +1403,11 @@ struct drm_plane *vc4_plane_init(struct
  	struct drm_plane *plane = NULL;
  	struct drm_plane *plane = NULL;
  	struct vc4_plane *vc4_plane;
  	struct vc4_plane *vc4_plane;
  	u32 formats[ARRAY_SIZE(hvs_formats)];
  	u32 formats[ARRAY_SIZE(hvs_formats)];
@@ -193,7 +193,7 @@ Link: https://lore.kernel.org/r/[email protected]
  	static const uint64_t modifiers[] = {
  	static const uint64_t modifiers[] = {
  		DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
  		DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
  		DRM_FORMAT_MOD_BROADCOM_SAND128,
  		DRM_FORMAT_MOD_BROADCOM_SAND128,
-@@ -1359,13 +1420,17 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1361,13 +1422,17 @@ struct drm_plane *vc4_plane_init(struct
  	if (!vc4_plane)
  	if (!vc4_plane)
  		return ERR_PTR(-ENOMEM);
  		return ERR_PTR(-ENOMEM);
  
  

+ 6 - 6
target/linux/bcm27xx/patches-5.15/950-0423-drm-vc4-plane-Add-support-for-YUV-color-encodings-an.patch

@@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/[email protected]
 
 
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -619,6 +619,51 @@ static int vc4_plane_allocate_lbm(struct
+@@ -621,6 +621,51 @@ static int vc4_plane_allocate_lbm(struct
  	return 0;
  	return 0;
  }
  }
  
  
@@ -73,7 +73,7 @@ Link: https://lore.kernel.org/r/[email protected]
  /* Writes out a full display list for an active plane to the plane's
  /* Writes out a full display list for an active plane to the plane's
   * private dlist state.
   * private dlist state.
   */
   */
-@@ -1013,9 +1058,20 @@ static int vc4_plane_mode_set(struct drm
+@@ -1015,9 +1060,20 @@ static int vc4_plane_mode_set(struct drm
  
  
  	/* Colorspace conversion words */
  	/* Colorspace conversion words */
  	if (vc4_state->is_yuv) {
  	if (vc4_state->is_yuv) {
@@ -97,7 +97,7 @@ Link: https://lore.kernel.org/r/[email protected]
  	}
  	}
  
  
  	vc4_state->lbm_offset = 0;
  	vc4_state->lbm_offset = 0;
-@@ -1444,6 +1500,15 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1446,6 +1502,15 @@ struct drm_plane *vc4_plane_init(struct
  					   DRM_MODE_REFLECT_X |
  					   DRM_MODE_REFLECT_X |
  					   DRM_MODE_REFLECT_Y);
  					   DRM_MODE_REFLECT_Y);
  
  
@@ -115,7 +115,7 @@ Link: https://lore.kernel.org/r/[email protected]
  
  
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -983,7 +983,10 @@ enum hvs_pixel_format {
+@@ -989,7 +989,10 @@ enum hvs_pixel_format {
  #define SCALER_CSC0_COEF_CR_OFS_SHIFT		0
  #define SCALER_CSC0_COEF_CR_OFS_SHIFT		0
  #define SCALER_CSC0_ITR_R_601_5			0x00f00000
  #define SCALER_CSC0_ITR_R_601_5			0x00f00000
  #define SCALER_CSC0_ITR_R_709_3			0x00f00000
  #define SCALER_CSC0_ITR_R_709_3			0x00f00000
@@ -126,7 +126,7 @@ Link: https://lore.kernel.org/r/[email protected]
  
  
  /* S2.8 contribution of Cb to Green */
  /* S2.8 contribution of Cb to Green */
  #define SCALER_CSC1_COEF_CB_GRN_MASK		VC4_MASK(31, 22)
  #define SCALER_CSC1_COEF_CB_GRN_MASK		VC4_MASK(31, 22)
-@@ -998,8 +1001,11 @@ enum hvs_pixel_format {
+@@ -1004,8 +1007,11 @@ enum hvs_pixel_format {
  #define SCALER_CSC1_COEF_CR_BLU_MASK		VC4_MASK(1, 0)
  #define SCALER_CSC1_COEF_CR_BLU_MASK		VC4_MASK(1, 0)
  #define SCALER_CSC1_COEF_CR_BLU_SHIFT		0
  #define SCALER_CSC1_COEF_CR_BLU_SHIFT		0
  #define SCALER_CSC1_ITR_R_601_5			0xe73304a8
  #define SCALER_CSC1_ITR_R_601_5			0xe73304a8
@@ -140,7 +140,7 @@ Link: https://lore.kernel.org/r/[email protected]
  
  
  /* S2.8 contribution of Cb to Red */
  /* S2.8 contribution of Cb to Red */
  #define SCALER_CSC2_COEF_CB_RED_MASK		VC4_MASK(29, 20)
  #define SCALER_CSC2_COEF_CB_RED_MASK		VC4_MASK(29, 20)
-@@ -1010,9 +1016,12 @@ enum hvs_pixel_format {
+@@ -1016,9 +1022,12 @@ enum hvs_pixel_format {
  /* S2.8 contribution of Cb to Blue */
  /* S2.8 contribution of Cb to Blue */
  #define SCALER_CSC2_COEF_CB_BLU_MASK		VC4_MASK(19, 10)
  #define SCALER_CSC2_COEF_CB_BLU_MASK		VC4_MASK(19, 10)
  #define SCALER_CSC2_COEF_CB_BLU_SHIFT		10
  #define SCALER_CSC2_COEF_CB_BLU_SHIFT		10

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0426-drm-vc4-Add-debugfs-node-that-dumps-the-current-disp.patch

@@ -59,7 +59,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  /* The filter kernel is composed of dwords each containing 3 9-bit
  /* The filter kernel is composed of dwords each containing 3 9-bit
   * signed integers packed next to each other.
   * signed integers packed next to each other.
   */
   */
-@@ -728,6 +767,8 @@ static int vc4_hvs_bind(struct device *d
+@@ -739,6 +778,8 @@ static int vc4_hvs_bind(struct device *d
  	vc4_debugfs_add_regset32(drm, "hvs_regs", &hvs->regset);
  	vc4_debugfs_add_regset32(drm, "hvs_regs", &hvs->regset);
  	vc4_debugfs_add_file(drm, "hvs_underrun", vc4_hvs_debugfs_underrun,
  	vc4_debugfs_add_file(drm, "hvs_underrun", vc4_hvs_debugfs_underrun,
  			     NULL);
  			     NULL);

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0427-drm-vc4-Add-all-the-HDMI-registers-into-the-debugfs-.patch

@@ -29,7 +29,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  
  
  	return 0;
  	return 0;
  }
  }
-@@ -2369,6 +2375,7 @@ static int vc5_hdmi_init_resources(struc
+@@ -2370,6 +2376,7 @@ static int vc5_hdmi_init_resources(struc
  	struct platform_device *pdev = vc4_hdmi->pdev;
  	struct platform_device *pdev = vc4_hdmi->pdev;
  	struct device *dev = &pdev->dev;
  	struct device *dev = &pdev->dev;
  	struct resource *res;
  	struct resource *res;
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  
  
  	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi");
  	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi");
  	if (!res)
  	if (!res)
-@@ -2465,6 +2472,38 @@ static int vc5_hdmi_init_resources(struc
+@@ -2466,6 +2473,38 @@ static int vc5_hdmi_init_resources(struc
  		return PTR_ERR(vc4_hdmi->reset);
  		return PTR_ERR(vc4_hdmi->reset);
  	}
  	}
  
  

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0431-drm-vc4-Change-the-default-DPI-format-to-being-18bpp.patch

@@ -21,9 +21,9 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
-@@ -188,8 +188,8 @@ static void vc4_dpi_encoder_enable(struc
- 			break;
- 		}
+@@ -198,8 +198,8 @@ static void vc4_dpi_encoder_enable(struc
+ 		if (connector->display_info.bus_flags & DRM_BUS_FLAG_DE_LOW)
+ 			dpi_c |= DPI_OUTPUT_ENABLE_INVERT;
  	} else {
  	} else {
 -		/* Default to 24bit if no connector found. */
 -		/* Default to 24bit if no connector found. */
 -		dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT);
 -		dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT);

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0442-drm-vc4-hdmi-Simplify-the-connector-state-retrieval.patch

@@ -15,7 +15,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1011,30 +1011,15 @@ static void vc4_hdmi_recenter_fifo(struc
+@@ -1012,30 +1012,15 @@ static void vc4_hdmi_recenter_fifo(struc
  		  "VC4_HDMI_FIFO_CTL_RECENTER_DONE");
  		  "VC4_HDMI_FIFO_CTL_RECENTER_DONE");
  }
  }
  
  

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0535-media-i2c-imx219-Sensor-should-report-RAW-color-spac.patch

@@ -13,7 +13,7 @@ Signed-off-by: David Plowman <[email protected]>
 
 
 --- a/drivers/media/i2c/imx219.c
 --- a/drivers/media/i2c/imx219.c
 +++ b/drivers/media/i2c/imx219.c
 +++ b/drivers/media/i2c/imx219.c
-@@ -674,7 +674,7 @@ static void imx219_set_default_format(st
+@@ -584,7 +584,7 @@ static void imx219_set_default_format(st
  
  
  	fmt = &imx219->fmt;
  	fmt = &imx219->fmt;
  	fmt->code = MEDIA_BUS_FMT_SRGGB10_1X10;
  	fmt->code = MEDIA_BUS_FMT_SRGGB10_1X10;
@@ -22,7 +22,7 @@ Signed-off-by: David Plowman <[email protected]>
  	fmt->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(fmt->colorspace);
  	fmt->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(fmt->colorspace);
  	fmt->quantization = V4L2_MAP_QUANTIZATION_DEFAULT(true,
  	fmt->quantization = V4L2_MAP_QUANTIZATION_DEFAULT(true,
  							  fmt->colorspace,
  							  fmt->colorspace,
-@@ -844,7 +844,7 @@ static int imx219_enum_frame_size(struct
+@@ -754,7 +754,7 @@ static int imx219_enum_frame_size(struct
  
  
  static void imx219_reset_colorspace(struct v4l2_mbus_framefmt *fmt)
  static void imx219_reset_colorspace(struct v4l2_mbus_framefmt *fmt)
  {
  {

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0551-drm-vc4-Add-support-for-gamma-on-BCM2711.patch

@@ -241,7 +241,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  			/* Unsetting DISPBKGND_GAMMA skips the gamma lut step
  			/* Unsetting DISPBKGND_GAMMA skips the gamma lut step
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -499,6 +499,28 @@
+@@ -505,6 +505,28 @@
  #define SCALER_DLIST_START                      0x00002000
  #define SCALER_DLIST_START                      0x00002000
  #define SCALER_DLIST_SIZE                       0x00004000
  #define SCALER_DLIST_SIZE                       0x00004000
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0552-drm-vc4-Add-debugfs-node-that-dumps-the-vc5-gamma-PW.patch

@@ -102,7 +102,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  /* The filter kernel is composed of dwords each containing 3 9-bit
  /* The filter kernel is composed of dwords each containing 3 9-bit
   * signed integers packed next to each other.
   * signed integers packed next to each other.
   */
   */
-@@ -848,6 +926,9 @@ static int vc4_hvs_bind(struct device *d
+@@ -859,6 +937,9 @@ static int vc4_hvs_bind(struct device *d
  			     NULL);
  			     NULL);
  	vc4_debugfs_add_file(drm, "hvs_dlists", vc4_hvs_debugfs_dlist,
  	vc4_debugfs_add_file(drm, "hvs_dlists", vc4_hvs_debugfs_dlist,
  			     NULL);
  			     NULL);

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0572-drm-vc4-Don-t-try-disabling-SCDC-on-Pi0-3.patch

@@ -20,7 +20,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2557,7 +2557,8 @@ static int vc4_hdmi_bind(struct device *
+@@ -2558,7 +2558,8 @@ static int vc4_hdmi_bind(struct device *
  	 * vc4_hdmi_disable_scrambling() will thus run at boot, make
  	 * vc4_hdmi_disable_scrambling() will thus run at boot, make
  	 * sure it's disabled, and avoid any inconsistency.
  	 * sure it's disabled, and avoid any inconsistency.
  	 */
  	 */

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0579-drm-vc4-Add-support-for-composite-syncs-to-vc4_dpi.patch

@@ -22,7 +22,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  	int ret;
  	int ret;
  
  
  	/* Look up the connector attached to DPI so we can get the
  	/* Look up the connector attached to DPI so we can get the
-@@ -192,15 +192,22 @@ static void vc4_dpi_encoder_enable(struc
+@@ -202,15 +202,22 @@ static void vc4_dpi_encoder_enable(struc
  		dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT);
  		dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT);
  	}
  	}
  
  

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0580-drm-vc4-Ensure-vc4_hdmi-doesn-t-use-2711-HPD-registe.patch

@@ -36,7 +36,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  			connected = true;
  			connected = true;
  	}
  	}
  
  
-@@ -1355,6 +1349,18 @@ static u32 vc5_hdmi_channel_map(struct v
+@@ -1356,6 +1350,18 @@ static u32 vc5_hdmi_channel_map(struct v
  	return channel_map;
  	return channel_map;
  }
  }
  
  
@@ -55,7 +55,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  /* HDMI audio codec callbacks */
  /* HDMI audio codec callbacks */
  static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi,
  static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi,
  					 unsigned int samplerate)
  					 unsigned int samplerate)
-@@ -2777,6 +2783,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2778,6 +2784,7 @@ static const struct vc4_hdmi_variant bcm
  	.phy_rng_disable	= vc5_hdmi_phy_rng_disable,
  	.phy_rng_disable	= vc5_hdmi_phy_rng_disable,
  	.channel_map		= vc5_hdmi_channel_map,
  	.channel_map		= vc5_hdmi_channel_map,
  	.supports_hdr		= true,
  	.supports_hdr		= true,
@@ -63,7 +63,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  };
  };
  
  
  static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
  static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
-@@ -2805,6 +2812,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2806,6 +2813,7 @@ static const struct vc4_hdmi_variant bcm
  	.phy_rng_disable	= vc5_hdmi_phy_rng_disable,
  	.phy_rng_disable	= vc5_hdmi_phy_rng_disable,
  	.channel_map		= vc5_hdmi_channel_map,
  	.channel_map		= vc5_hdmi_channel_map,
  	.supports_hdr		= true,
  	.supports_hdr		= true,

+ 5 - 5
target/linux/bcm27xx/patches-5.15/950-0590-drm-vc4-Move-HDMI-reset-to-pm_resume.patch

@@ -22,7 +22,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2193,7 +2193,6 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2194,7 +2194,6 @@ static int vc4_hdmi_cec_init(struct vc4_
  	struct platform_device *pdev = vc4_hdmi->pdev;
  	struct platform_device *pdev = vc4_hdmi->pdev;
  	struct device *dev = &pdev->dev;
  	struct device *dev = &pdev->dev;
  	unsigned long flags;
  	unsigned long flags;
@@ -30,7 +30,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  	int ret;
  	int ret;
  
  
  	if (!of_find_property(dev->of_node, "interrupts", NULL)) {
  	if (!of_find_property(dev->of_node, "interrupts", NULL)) {
-@@ -2213,15 +2212,6 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2214,15 +2213,6 @@ static int vc4_hdmi_cec_init(struct vc4_
  	cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
  	cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
  	cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
  	cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
  
  
@@ -46,7 +46,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  	if (vc4_hdmi->variant->external_irq_controller) {
  	if (vc4_hdmi->variant->external_irq_controller) {
  		ret = request_threaded_irq(platform_get_irq_byname(pdev, "cec-rx"),
  		ret = request_threaded_irq(platform_get_irq_byname(pdev, "cec-rx"),
  					   vc4_cec_irq_handler_rx_bare,
  					   vc4_cec_irq_handler_rx_bare,
-@@ -2284,6 +2274,29 @@ static void vc4_hdmi_cec_exit(struct vc4
+@@ -2285,6 +2275,29 @@ static void vc4_hdmi_cec_exit(struct vc4
  
  
  	cec_unregister_adapter(vc4_hdmi->cec_adap);
  	cec_unregister_adapter(vc4_hdmi->cec_adap);
  }
  }
@@ -76,7 +76,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  #else
  #else
  static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
  static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
  {
  {
-@@ -2292,6 +2305,10 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2293,6 +2306,10 @@ static int vc4_hdmi_cec_init(struct vc4_
  
  
  static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
  static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
  
  
@@ -87,7 +87,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  #endif
  #endif
  
  
  static int vc4_hdmi_build_regset(struct vc4_hdmi *vc4_hdmi,
  static int vc4_hdmi_build_regset(struct vc4_hdmi *vc4_hdmi,
-@@ -2526,6 +2543,15 @@ static int vc4_hdmi_runtime_resume(struc
+@@ -2527,6 +2544,15 @@ static int vc4_hdmi_runtime_resume(struc
  	if (ret)
  	if (ret)
  		return ret;
  		return ret;
  
  

+ 0 - 114
target/linux/bcm27xx/patches-5.15/950-0596-drm-vc4-dpi-Add-option-for-inverting-pixel-clock-and.patch

@@ -1,114 +0,0 @@
-From e664a91ea54b3488d6c08dd82dac2af1239c3275 Mon Sep 17 00:00:00 2001
-From: Dave Stevenson <[email protected]>
-Date: Thu, 2 Dec 2021 18:21:46 +0000
-Subject: [PATCH] drm/vc4: dpi: Add option for inverting pixel clock
- and output enable
-
-DRM provides flags for inverting pixel clock and output enable
-signals, but these were not mapped to the relevant registers.
-
-Add those mappings.
-
-Signed-off-by: Dave Stevenson <[email protected]>
----
- drivers/gpu/drm/vc4/vc4_dpi.c | 89 ++++++++++++++++++++---------------
- 1 file changed, 51 insertions(+), 38 deletions(-)
-
---- a/drivers/gpu/drm/vc4/vc4_dpi.c
-+++ b/drivers/gpu/drm/vc4/vc4_dpi.c
-@@ -148,45 +148,58 @@ static void vc4_dpi_encoder_enable(struc
- 	}
- 	drm_connector_list_iter_end(&conn_iter);
- 
--	if (connector && connector->display_info.num_bus_formats) {
--		u32 bus_format = connector->display_info.bus_formats[0];
-+	if (connector) {
-+		if (connector->display_info.num_bus_formats) {
-+			u32 bus_format = connector->display_info.bus_formats[0];
- 
--		switch (bus_format) {
--		case MEDIA_BUS_FMT_RGB888_1X24:
--			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB,
--					       DPI_FORMAT);
--			break;
--		case MEDIA_BUS_FMT_BGR888_1X24:
--			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB,
--					       DPI_FORMAT);
--			dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
--			break;
--		case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
--			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
--					       DPI_FORMAT);
--			break;
--		case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
--			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
--					       DPI_FORMAT);
--			dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
--			break;
--		case MEDIA_BUS_FMT_RGB666_1X18:
--			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
--					       DPI_FORMAT);
--			break;
--		case MEDIA_BUS_FMT_BGR666_1X18:
--			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
--					       DPI_FORMAT);
--			dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
--			break;
--		case MEDIA_BUS_FMT_RGB565_1X16:
--			dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_3,
--					       DPI_FORMAT);
--			break;
--		default:
--			DRM_ERROR("Unknown media bus format %d\n", bus_format);
--			break;
-+			switch (bus_format) {
-+			case MEDIA_BUS_FMT_RGB888_1X24:
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB,
-+						       DPI_FORMAT);
-+				break;
-+			case MEDIA_BUS_FMT_BGR888_1X24:
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB,
-+						       DPI_FORMAT);
-+				dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
-+						       DPI_ORDER);
-+				break;
-+			case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
-+						       DPI_FORMAT);
-+				break;
-+			case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
-+						       DPI_FORMAT);
-+				dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
-+						       DPI_ORDER);
-+				break;
-+			case MEDIA_BUS_FMT_RGB666_1X18:
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
-+						       DPI_FORMAT);
-+				break;
-+			case MEDIA_BUS_FMT_BGR666_1X18:
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
-+						       DPI_FORMAT);
-+				dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
-+						       DPI_ORDER);
-+				break;
-+			case MEDIA_BUS_FMT_RGB565_1X16:
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_3,
-+						       DPI_FORMAT);
-+				break;
-+			default:
-+				DRM_ERROR("Unknown media bus format %d\n",
-+					  bus_format);
-+				break;
-+			}
- 		}
-+
-+		if (connector->display_info.bus_flags &
-+					DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE)
-+			dpi_c |= DPI_PIXEL_CLK_INVERT;
-+
-+		if (connector->display_info.bus_flags & DRM_BUS_FLAG_DE_LOW)
-+			dpi_c |= DPI_OUTPUT_ENABLE_INVERT;
- 	} else {
- 		/* Default to 18bit if no connector found. */
- 		dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT);

+ 6 - 6
target/linux/bcm27xx/patches-5.15/950-0597-drm-vc4-dpi-Ensure-a-default-format-is-selected.patch

@@ -15,9 +15,9 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
-@@ -173,6 +173,10 @@ static void vc4_dpi_encoder_enable(struc
- 				dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
- 						       DPI_ORDER);
+@@ -172,6 +172,10 @@ static void vc4_dpi_encoder_enable(struc
+ 						DPI_FORMAT);
+ 				dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
  				break;
  				break;
 +			default:
 +			default:
 +				DRM_ERROR("Unknown media bus format %d\n",
 +				DRM_ERROR("Unknown media bus format %d\n",
@@ -26,8 +26,8 @@ Signed-off-by: Dave Stevenson <[email protected]>
  			case MEDIA_BUS_FMT_RGB666_1X18:
  			case MEDIA_BUS_FMT_RGB666_1X18:
  				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
  				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
  						       DPI_FORMAT);
  						       DPI_FORMAT);
-@@ -187,11 +191,12 @@ static void vc4_dpi_encoder_enable(struc
- 				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_3,
+@@ -185,11 +189,12 @@ static void vc4_dpi_encoder_enable(struc
+ 				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_1,
  						       DPI_FORMAT);
  						       DPI_FORMAT);
  				break;
  				break;
 -			default:
 -			default:
@@ -42,4 +42,4 @@ Signed-off-by: Dave Stevenson <[email protected]>
 +
 +
  		}
  		}
  
  
- 		if (connector->display_info.bus_flags &
+ 		if (connector->display_info.bus_flags & DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE)

+ 16 - 16
target/linux/bcm27xx/patches-5.15/950-0602-media-imx219-Advertise-embedded-data-node-on-media-p.patch

@@ -22,7 +22,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
 
 
 --- a/drivers/media/i2c/imx219.c
 --- a/drivers/media/i2c/imx219.c
 +++ b/drivers/media/i2c/imx219.c
 +++ b/drivers/media/i2c/imx219.c
-@@ -118,6 +118,16 @@
+@@ -124,6 +124,16 @@
  #define IMX219_PIXEL_ARRAY_WIDTH	3280U
  #define IMX219_PIXEL_ARRAY_WIDTH	3280U
  #define IMX219_PIXEL_ARRAY_HEIGHT	2464U
  #define IMX219_PIXEL_ARRAY_HEIGHT	2464U
  
  
@@ -39,7 +39,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  struct imx219_reg {
  struct imx219_reg {
  	u16 address;
  	u16 address;
  	u8 val;
  	u8 val;
-@@ -538,7 +548,7 @@ static const struct imx219_mode supporte
+@@ -448,7 +458,7 @@ static const struct imx219_mode supporte
  
  
  struct imx219 {
  struct imx219 {
  	struct v4l2_subdev sd;
  	struct v4l2_subdev sd;
@@ -48,7 +48,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  
  
  	struct v4l2_mbus_framefmt fmt;
  	struct v4l2_mbus_framefmt fmt;
  
  
-@@ -688,18 +698,26 @@ static void imx219_set_default_format(st
+@@ -598,18 +608,26 @@ static void imx219_set_default_format(st
  static int imx219_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
  static int imx219_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
  {
  {
  	struct imx219 *imx219 = to_imx219(sd);
  	struct imx219 *imx219 = to_imx219(sd);
@@ -83,7 +83,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  
  
  	/* Initialize try_crop rectangle. */
  	/* Initialize try_crop rectangle. */
  	try_crop = v4l2_subdev_get_try_crop(sd, fh->state, 0);
  	try_crop = v4l2_subdev_get_try_crop(sd, fh->state, 0);
-@@ -808,12 +826,21 @@ static int imx219_enum_mbus_code(struct
+@@ -718,12 +736,21 @@ static int imx219_enum_mbus_code(struct
  {
  {
  	struct imx219 *imx219 = to_imx219(sd);
  	struct imx219 *imx219 = to_imx219(sd);
  
  
@@ -109,7 +109,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  
  
  	return 0;
  	return 0;
  }
  }
-@@ -823,21 +850,30 @@ static int imx219_enum_frame_size(struct
+@@ -733,21 +760,30 @@ static int imx219_enum_frame_size(struct
  				  struct v4l2_subdev_frame_size_enum *fse)
  				  struct v4l2_subdev_frame_size_enum *fse)
  {
  {
  	struct imx219 *imx219 = to_imx219(sd);
  	struct imx219 *imx219 = to_imx219(sd);
@@ -151,7 +151,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  
  
  	return 0;
  	return 0;
  }
  }
-@@ -852,9 +888,9 @@ static void imx219_reset_colorspace(stru
+@@ -762,9 +798,9 @@ static void imx219_reset_colorspace(stru
  	fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace);
  	fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace);
  }
  }
  
  
@@ -164,7 +164,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  {
  {
  	fmt->format.width = mode->width;
  	fmt->format.width = mode->width;
  	fmt->format.height = mode->height;
  	fmt->format.height = mode->height;
-@@ -862,21 +898,39 @@ static void imx219_update_pad_format(str
+@@ -772,21 +808,39 @@ static void imx219_update_pad_format(str
  	imx219_reset_colorspace(&fmt->format);
  	imx219_reset_colorspace(&fmt->format);
  }
  }
  
  
@@ -208,7 +208,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  	}
  	}
  
  
  	return 0;
  	return 0;
-@@ -906,51 +960,74 @@ static int imx219_set_pad_format(struct
+@@ -816,51 +870,74 @@ static int imx219_set_pad_format(struct
  	int exposure_max, exposure_def, hblank;
  	int exposure_max, exposure_def, hblank;
  	unsigned int i;
  	unsigned int i;
  
  
@@ -326,7 +326,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  	}
  	}
  
  
  	mutex_unlock(&imx219->mutex);
  	mutex_unlock(&imx219->mutex);
-@@ -1037,9 +1114,11 @@ static int imx219_start_streaming(struct
+@@ -976,9 +1053,11 @@ static int imx219_start_streaming(struct
  	const struct imx219_reg_list *reg_list;
  	const struct imx219_reg_list *reg_list;
  	int ret;
  	int ret;
  
  
@@ -338,9 +338,9 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  		return ret;
  		return ret;
 +	}
 +	}
  
  
- 	/* Apply default values of current mode */
- 	reg_list = &imx219->mode->reg_list;
-@@ -1133,21 +1212,22 @@ err_unlock:
+ 	/* Send all registers that are common to all modes */
+ 	ret = imx219_write_regs(imx219, imx219_common_regs, ARRAY_SIZE(imx219_common_regs));
+@@ -1086,21 +1165,22 @@ err_unlock:
  /* Power/clock management functions */
  /* Power/clock management functions */
  static int imx219_power_on(struct device *dev)
  static int imx219_power_on(struct device *dev)
  {
  {
@@ -366,7 +366,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  			__func__);
  			__func__);
  		goto reg_off;
  		goto reg_off;
  	}
  	}
-@@ -1166,7 +1246,8 @@ reg_off:
+@@ -1119,7 +1199,8 @@ reg_off:
  
  
  static int imx219_power_off(struct device *dev)
  static int imx219_power_off(struct device *dev)
  {
  {
@@ -376,7 +376,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  	struct imx219 *imx219 = to_imx219(sd);
  	struct imx219 *imx219 = to_imx219(sd);
  
  
  	gpiod_set_value_cansleep(imx219->reset_gpio, 0);
  	gpiod_set_value_cansleep(imx219->reset_gpio, 0);
-@@ -1178,7 +1259,8 @@ static int imx219_power_off(struct devic
+@@ -1131,7 +1212,8 @@ static int imx219_power_off(struct devic
  
  
  static int __maybe_unused imx219_suspend(struct device *dev)
  static int __maybe_unused imx219_suspend(struct device *dev)
  {
  {
@@ -386,7 +386,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  	struct imx219 *imx219 = to_imx219(sd);
  	struct imx219 *imx219 = to_imx219(sd);
  
  
  	if (imx219->streaming)
  	if (imx219->streaming)
-@@ -1189,7 +1271,8 @@ static int __maybe_unused imx219_suspend
+@@ -1142,7 +1224,8 @@ static int __maybe_unused imx219_suspend
  
  
  static int __maybe_unused imx219_resume(struct device *dev)
  static int __maybe_unused imx219_resume(struct device *dev)
  {
  {
@@ -396,7 +396,7 @@ Signed-off-by: Jean-Michel Hautbois <[email protected]>
  	struct imx219 *imx219 = to_imx219(sd);
  	struct imx219 *imx219 = to_imx219(sd);
  	int ret;
  	int ret;
  
  
-@@ -1525,13 +1608,14 @@ static int imx219_probe(struct i2c_clien
+@@ -1478,13 +1561,14 @@ static int imx219_probe(struct i2c_clien
  			    V4L2_SUBDEV_FL_HAS_EVENTS;
  			    V4L2_SUBDEV_FL_HAS_EVENTS;
  	imx219->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
  	imx219->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
  
  

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch

@@ -38,7 +38,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable)
  static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable)
  {
  {
  	unsigned long flags;
  	unsigned long flags;
-@@ -1219,15 +1211,6 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1220,15 +1212,6 @@ static void vc4_hdmi_encoder_post_crtc_e
  	mutex_unlock(&vc4_hdmi->mutex);
  	mutex_unlock(&vc4_hdmi->mutex);
  }
  }
  
  
@@ -54,7 +54,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder,
  static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder,
  					     struct drm_crtc_state *crtc_state,
  					     struct drm_crtc_state *crtc_state,
  					     struct drm_connector_state *conn_state)
  					     struct drm_connector_state *conn_state)
-@@ -1321,8 +1304,6 @@ static const struct drm_encoder_helper_f
+@@ -1322,8 +1305,6 @@ static const struct drm_encoder_helper_f
  	.atomic_check = vc4_hdmi_encoder_atomic_check,
  	.atomic_check = vc4_hdmi_encoder_atomic_check,
  	.atomic_mode_set = vc4_hdmi_encoder_atomic_mode_set,
  	.atomic_mode_set = vc4_hdmi_encoder_atomic_mode_set,
  	.mode_valid = vc4_hdmi_encoder_mode_valid,
  	.mode_valid = vc4_hdmi_encoder_mode_valid,
@@ -63,7 +63,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  };
  };
  
  
  static u32 vc4_hdmi_channel_map(struct vc4_hdmi *vc4_hdmi, u32 channel_mask)
  static u32 vc4_hdmi_channel_map(struct vc4_hdmi *vc4_hdmi, u32 channel_mask)
-@@ -1422,16 +1403,10 @@ static bool vc4_hdmi_audio_can_stream(st
+@@ -1423,16 +1404,10 @@ static bool vc4_hdmi_audio_can_stream(st
  	lockdep_assert_held(&vc4_hdmi->mutex);
  	lockdep_assert_held(&vc4_hdmi->mutex);
  
  
  	/*
  	/*

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0607-drm-vc4-Fix-build-without-DRM_VC4_HDMI_CEC.patch

@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2280,7 +2280,7 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2281,7 +2281,7 @@ static int vc4_hdmi_cec_init(struct vc4_
  
  
  static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
  static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
  
  

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0622-drm-vc4-Skip-writes-to-disabled-packet-RAM.patch

@@ -23,7 +23,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  
  
  	HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0);
  	HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0);
-@@ -1201,6 +1202,7 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1202,6 +1203,7 @@ static void vc4_hdmi_encoder_post_crtc_e
  			   VC4_HDMI_RAM_PACKET_ENABLE);
  			   VC4_HDMI_RAM_PACKET_ENABLE);
  
  
  		spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
  		spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
@@ -31,7 +31,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  
  
  		vc4_hdmi_set_infoframes(encoder);
  		vc4_hdmi_set_infoframes(encoder);
  	}
  	}
-@@ -1606,7 +1608,8 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -1607,7 +1609,8 @@ static int vc4_hdmi_audio_prepare(struct
  	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
  	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
  
  
  	memcpy(&vc4_hdmi->audio.infoframe, &params->cea, sizeof(params->cea));
  	memcpy(&vc4_hdmi->audio.infoframe, &params->cea, sizeof(params->cea));

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0623-drm-edid-Rename-drm_hdmi_avi_infoframe_colorspace-to.patch

@@ -26,7 +26,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/drm_edid.c
 --- a/drivers/gpu/drm/drm_edid.c
 +++ b/drivers/gpu/drm/drm_edid.c
 +++ b/drivers/gpu/drm/drm_edid.c
-@@ -5743,13 +5743,13 @@ static const u32 hdmi_colorimetry_val[]
+@@ -5746,13 +5746,13 @@ static const u32 hdmi_colorimetry_val[]
  #undef ACE
  #undef ACE
  
  
  /**
  /**
@@ -43,7 +43,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  				  const struct drm_connector_state *conn_state)
  				  const struct drm_connector_state *conn_state)
  {
  {
  	u32 colorimetry_val;
  	u32 colorimetry_val;
-@@ -5768,7 +5768,7 @@ drm_hdmi_avi_infoframe_colorspace(struct
+@@ -5771,7 +5771,7 @@ drm_hdmi_avi_infoframe_colorspace(struct
  	frame->extended_colorimetry = (colorimetry_val >> 2) &
  	frame->extended_colorimetry = (colorimetry_val >> 2) &
  					EXTENDED_COLORIMETRY_MASK;
  					EXTENDED_COLORIMETRY_MASK;
  }
  }

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0624-drm-vc4-hdmi-Add-full-range-RGB-helper.patch

@@ -31,7 +31,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)
  static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)
  {
  {
  	struct drm_info_node *node = (struct drm_info_node *)m->private;
  	struct drm_info_node *node = (struct drm_info_node *)m->private;
-@@ -1116,8 +1125,7 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1117,8 +1126,7 @@ static void vc4_hdmi_encoder_pre_crtc_en
  
  
  	mutex_lock(&vc4_hdmi->mutex);
  	mutex_lock(&vc4_hdmi->mutex);
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0625-drm-vc4-hdmi-Use-full-range-helper-in-csc-functions.patch

@@ -79,7 +79,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		/* CEA VICs other than #1 requre limited range RGB
  		/* CEA VICs other than #1 requre limited range RGB
  		 * output unless overridden by an AVI infoframe.
  		 * output unless overridden by an AVI infoframe.
  		 * Apply a colorspace conversion to squash 0-255 down
  		 * Apply a colorspace conversion to squash 0-255 down
-@@ -1120,22 +1121,12 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1121,22 +1122,12 @@ static void vc4_hdmi_encoder_pre_crtc_en
  {
  {
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode;
  	struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode;

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0626-drm-vc4-hdmi-Move-XBAR-setup-to-csc_setup.patch

@@ -24,7 +24,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	if (!vc4_hdmi_is_full_range_rgb(vc4_hdmi, mode)) {
  	if (!vc4_hdmi_is_full_range_rgb(vc4_hdmi, mode)) {
  		/* CEA VICs other than #1 requre limited range RGB
  		/* CEA VICs other than #1 requre limited range RGB
  		 * output unless overridden by an AVI infoframe.
  		 * output unless overridden by an AVI infoframe.
-@@ -906,7 +908,6 @@ static void vc5_hdmi_set_timings(struct
+@@ -907,7 +909,6 @@ static void vc5_hdmi_set_timings(struct
  
  
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0627-drm-vc4-hdmi-Replace-CSC_CTL-hardcoded-value-by-defi.patch

@@ -30,7 +30,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -804,6 +804,9 @@ enum {
+@@ -810,6 +810,9 @@ enum {
  # define VC4_HD_CSC_CTL_RGB2YCC			BIT(1)
  # define VC4_HD_CSC_CTL_RGB2YCC			BIT(1)
  # define VC4_HD_CSC_CTL_ENABLE			BIT(0)
  # define VC4_HD_CSC_CTL_ENABLE			BIT(0)
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0629-drm-vc4-hdmi-Change-CSC-callback-prototype.patch

@@ -33,7 +33,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  			       const struct drm_display_mode *mode)
  			       const struct drm_display_mode *mode)
  {
  {
  	unsigned long flags;
  	unsigned long flags;
-@@ -1141,13 +1143,16 @@ static void vc4_hdmi_encoder_pre_crtc_en
+@@ -1142,13 +1144,16 @@ static void vc4_hdmi_encoder_pre_crtc_en
  					     struct drm_atomic_state *state)
  					     struct drm_atomic_state *state)
  {
  {
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0630-drm-vc4-hdmi-Move-clock-validation-to-its-own-functi.patch

@@ -14,7 +14,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1251,6 +1251,19 @@ static void vc4_hdmi_encoder_atomic_mode
+@@ -1252,6 +1252,19 @@ static void vc4_hdmi_encoder_atomic_mode
  	mutex_unlock(&vc4_hdmi->mutex);
  	mutex_unlock(&vc4_hdmi->mutex);
  }
  }
  
  
@@ -34,7 +34,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  
  
-@@ -1295,10 +1308,7 @@ static int vc4_hdmi_encoder_atomic_check
+@@ -1296,10 +1309,7 @@ static int vc4_hdmi_encoder_atomic_check
  	if (mode->flags & DRM_MODE_FLAG_DBLCLK)
  	if (mode->flags & DRM_MODE_FLAG_DBLCLK)
  		pixel_rate = pixel_rate * 2;
  		pixel_rate = pixel_rate * 2;
  
  
@@ -46,7 +46,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		return -EINVAL;
  		return -EINVAL;
  
  
  	vc4_state->pixel_rate = pixel_rate;
  	vc4_state->pixel_rate = pixel_rate;
-@@ -1318,13 +1328,7 @@ vc4_hdmi_encoder_mode_valid(struct drm_e
+@@ -1319,13 +1329,7 @@ vc4_hdmi_encoder_mode_valid(struct drm_e
  	     (mode->hsync_end % 2) || (mode->htotal % 2)))
  	     (mode->hsync_end % 2) || (mode->htotal % 2)))
  		return MODE_H_ILLEGAL;
  		return MODE_H_ILLEGAL;
  
  

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0631-drm-vc4-hdmi-Move-clock-calculation-into-its-own-fun.patch

@@ -15,7 +15,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1264,6 +1264,35 @@ vc4_hdmi_encoder_clock_valid(const struc
+@@ -1265,6 +1265,35 @@ vc4_hdmi_encoder_clock_valid(const struc
  	return MODE_OK;
  	return MODE_OK;
  }
  }
  
  
@@ -51,7 +51,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  
  
-@@ -1276,6 +1305,7 @@ static int vc4_hdmi_encoder_atomic_check
+@@ -1277,6 +1306,7 @@ static int vc4_hdmi_encoder_atomic_check
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	unsigned long long pixel_rate = mode->clock * 1000;
  	unsigned long long pixel_rate = mode->clock * 1000;
  	unsigned long long tmds_rate;
  	unsigned long long tmds_rate;
@@ -59,7 +59,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	if (vc4_hdmi->variant->unsupported_odd_h_timings &&
  	if (vc4_hdmi->variant->unsupported_odd_h_timings &&
  	    !(mode->flags & DRM_MODE_FLAG_DBLCLK) &&
  	    !(mode->flags & DRM_MODE_FLAG_DBLCLK) &&
-@@ -1297,21 +1327,10 @@ static int vc4_hdmi_encoder_atomic_check
+@@ -1298,21 +1328,10 @@ static int vc4_hdmi_encoder_atomic_check
  		pixel_rate = mode->clock * 1000;
  		pixel_rate = mode->clock * 1000;
  	}
  	}
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0632-drm-vc4-hdmi-Take-the-sink-maximum-TMDS-clock-into-a.patch

@@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1255,12 +1255,18 @@ static enum drm_mode_status
+@@ -1256,12 +1256,18 @@ static enum drm_mode_status
  vc4_hdmi_encoder_clock_valid(const struct vc4_hdmi *vc4_hdmi,
  vc4_hdmi_encoder_clock_valid(const struct vc4_hdmi *vc4_hdmi,
  			     unsigned long long clock)
  			     unsigned long long clock)
  {
  {

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0633-drm-vc4-hdmi-Take-bpp-into-account-for-the-scrambler.patch

@@ -57,7 +57,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		return;
  		return;
  
  
  	drm_scdc_set_high_tmds_clock_ratio(vc4_hdmi->ddc, true);
  	drm_scdc_set_high_tmds_clock_ratio(vc4_hdmi->ddc, true);
-@@ -1245,6 +1253,7 @@ static void vc4_hdmi_encoder_atomic_mode
+@@ -1246,6 +1254,7 @@ static void vc4_hdmi_encoder_atomic_mode
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  
  
  	mutex_lock(&vc4_hdmi->mutex);
  	mutex_lock(&vc4_hdmi->mutex);

+ 4 - 4
target/linux/bcm27xx/patches-5.15/950-0634-drm-vc4-hdmi-Always-try-to-have-the-highest-bpc.patch

@@ -38,7 +38,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
  	bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
  	bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
  	bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
  	bool interlaced = mode->flags & DRM_MODE_FLAG_INTERLACE;
  	bool interlaced = mode->flags & DRM_MODE_FLAG_INTERLACE;
-@@ -961,7 +964,7 @@ static void vc5_hdmi_set_timings(struct
+@@ -962,7 +965,7 @@ static void vc5_hdmi_set_timings(struct
  	HDMI_WRITE(HDMI_VERTB0, vertb_even);
  	HDMI_WRITE(HDMI_VERTB0, vertb_even);
  	HDMI_WRITE(HDMI_VERTB1, vertb);
  	HDMI_WRITE(HDMI_VERTB1, vertb);
  
  
@@ -47,7 +47,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	case 12:
  	case 12:
  		gcp = 6;
  		gcp = 6;
  		gcp_en = true;
  		gcp_en = true;
-@@ -1251,9 +1254,11 @@ static void vc4_hdmi_encoder_atomic_mode
+@@ -1252,9 +1255,11 @@ static void vc4_hdmi_encoder_atomic_mode
  					     struct drm_connector_state *conn_state)
  					     struct drm_connector_state *conn_state)
  {
  {
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
@@ -60,7 +60,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	memcpy(&vc4_hdmi->saved_adjusted_mode,
  	memcpy(&vc4_hdmi->saved_adjusted_mode,
  	       &crtc_state->adjusted_mode,
  	       &crtc_state->adjusted_mode,
  	       sizeof(vc4_hdmi->saved_adjusted_mode));
  	       sizeof(vc4_hdmi->saved_adjusted_mode));
-@@ -1308,6 +1313,38 @@ vc4_hdmi_encoder_compute_clock(const str
+@@ -1309,6 +1314,38 @@ vc4_hdmi_encoder_compute_clock(const str
  	return 0;
  	return 0;
  }
  }
  
  
@@ -99,7 +99,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MIN_FREQ	2400000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  #define WIFI_2_4GHz_CH1_MAX_FREQ	2422000000ULL
  
  
-@@ -1342,8 +1379,7 @@ static int vc4_hdmi_encoder_atomic_check
+@@ -1343,8 +1380,7 @@ static int vc4_hdmi_encoder_atomic_check
  		pixel_rate = mode->clock * 1000;
  		pixel_rate = mode->clock * 1000;
  	}
  	}
  
  

+ 7 - 7
target/linux/bcm27xx/patches-5.15/950-0635-drm-vc4-hdmi-Support-HDMI-YUV-output.patch

@@ -234,7 +234,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	HDMI_WRITE(HDMI_CSC_CTL, csc_ctl);
  	HDMI_WRITE(HDMI_CSC_CTL, csc_ctl);
  
  
  	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
  	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
-@@ -980,6 +1093,15 @@ static void vc5_hdmi_set_timings(struct
+@@ -981,6 +1094,15 @@ static void vc5_hdmi_set_timings(struct
  		break;
  		break;
  	}
  	}
  
  
@@ -250,7 +250,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	reg = HDMI_READ(HDMI_DEEP_COLOR_CONFIG_1);
  	reg = HDMI_READ(HDMI_DEEP_COLOR_CONFIG_1);
  	reg &= ~(VC5_HDMI_DEEP_COLOR_CONFIG_1_INIT_PACK_PHASE_MASK |
  	reg &= ~(VC5_HDMI_DEEP_COLOR_CONFIG_1_INIT_PACK_PHASE_MASK |
  		 VC5_HDMI_DEEP_COLOR_CONFIG_1_COLOR_DEPTH_MASK);
  		 VC5_HDMI_DEEP_COLOR_CONFIG_1_COLOR_DEPTH_MASK);
-@@ -1259,12 +1381,97 @@ static void vc4_hdmi_encoder_atomic_mode
+@@ -1260,12 +1382,97 @@ static void vc4_hdmi_encoder_atomic_mode
  
  
  	mutex_lock(&vc4_hdmi->mutex);
  	mutex_lock(&vc4_hdmi->mutex);
  	vc4_hdmi->output_bpc = vc4_state->output_bpc;
  	vc4_hdmi->output_bpc = vc4_state->output_bpc;
@@ -348,7 +348,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  static enum drm_mode_status
  static enum drm_mode_status
  vc4_hdmi_encoder_clock_valid(const struct vc4_hdmi *vc4_hdmi,
  vc4_hdmi_encoder_clock_valid(const struct vc4_hdmi *vc4_hdmi,
  			     unsigned long long clock)
  			     unsigned long long clock)
-@@ -1286,13 +1493,17 @@ vc4_hdmi_encoder_clock_valid(const struc
+@@ -1287,13 +1494,17 @@ vc4_hdmi_encoder_clock_valid(const struc
  
  
  static unsigned long long
  static unsigned long long
  vc4_hdmi_encoder_compute_mode_clock(const struct drm_display_mode *mode,
  vc4_hdmi_encoder_compute_mode_clock(const struct drm_display_mode *mode,
@@ -367,7 +367,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	return clock * bpc / 8;
  	return clock * bpc / 8;
  }
  }
  
  
-@@ -1300,11 +1511,11 @@ static int
+@@ -1301,11 +1512,11 @@ static int
  vc4_hdmi_encoder_compute_clock(const struct vc4_hdmi *vc4_hdmi,
  vc4_hdmi_encoder_compute_clock(const struct vc4_hdmi *vc4_hdmi,
  			       struct vc4_hdmi_connector_state *vc4_state,
  			       struct vc4_hdmi_connector_state *vc4_state,
  			       const struct drm_display_mode *mode,
  			       const struct drm_display_mode *mode,
@@ -381,7 +381,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	if (vc4_hdmi_encoder_clock_valid(vc4_hdmi, clock) != MODE_OK)
  	if (vc4_hdmi_encoder_clock_valid(vc4_hdmi, clock) != MODE_OK)
  		return -EINVAL;
  		return -EINVAL;
  
  
-@@ -1314,10 +1525,55 @@ vc4_hdmi_encoder_compute_clock(const str
+@@ -1315,10 +1526,55 @@ vc4_hdmi_encoder_compute_clock(const str
  }
  }
  
  
  static int
  static int
@@ -437,7 +437,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	struct drm_connector_state *conn_state = &vc4_state->base;
  	struct drm_connector_state *conn_state = &vc4_state->base;
  	unsigned int max_bpc = clamp_t(unsigned int, conn_state->max_bpc, 8, 12);
  	unsigned int max_bpc = clamp_t(unsigned int, conn_state->max_bpc, 8, 12);
  	unsigned int bpc;
  	unsigned int bpc;
-@@ -1326,17 +1582,18 @@ vc4_hdmi_encoder_compute_config(const st
+@@ -1327,17 +1583,18 @@ vc4_hdmi_encoder_compute_config(const st
  	for (bpc = max_bpc; bpc >= 8; bpc -= 2) {
  	for (bpc = max_bpc; bpc >= 8; bpc -= 2) {
  		drm_dbg(dev, "Trying with a %d bpc output\n", bpc);
  		drm_dbg(dev, "Trying with a %d bpc output\n", bpc);
  
  
@@ -548,7 +548,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  static inline
  static inline
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -804,11 +804,27 @@ enum {
+@@ -810,11 +810,27 @@ enum {
  # define VC4_HD_CSC_CTL_RGB2YCC			BIT(1)
  # define VC4_HD_CSC_CTL_RGB2YCC			BIT(1)
  # define VC4_HD_CSC_CTL_ENABLE			BIT(0)
  # define VC4_HD_CSC_CTL_ENABLE			BIT(0)
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0643-drm-vc4-hdmi-Fix-no-video-output-on-DVI-monitors.patch

@@ -17,7 +17,7 @@ Signed-off-by: Matthias Reichl <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1415,9 +1415,6 @@ vc4_hdmi_sink_supports_format_bpc(const
+@@ -1416,9 +1416,6 @@ vc4_hdmi_sink_supports_format_bpc(const
  	case VC4_HDMI_OUTPUT_RGB:
  	case VC4_HDMI_OUTPUT_RGB:
  		drm_dbg(dev, "RGB Format, checking the constraints.\n");
  		drm_dbg(dev, "RGB Format, checking the constraints.\n");
  
  

+ 4 - 4
target/linux/bcm27xx/patches-5.15/950-0650-drm-vc4-Add-alpha_blend_mode-property-to-each-plane.patch

@@ -14,7 +14,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -664,6 +664,48 @@ static const u32 colorspace_coeffs[2][DR
+@@ -666,6 +666,48 @@ static const u32 colorspace_coeffs[2][DR
  	}
  	}
  };
  };
  
  
@@ -63,7 +63,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  /* Writes out a full display list for an active plane to the plane's
  /* Writes out a full display list for an active plane to the plane's
   * private dlist state.
   * private dlist state.
   */
   */
-@@ -946,13 +988,8 @@ static int vc4_plane_mode_set(struct drm
+@@ -948,13 +990,8 @@ static int vc4_plane_mode_set(struct drm
  		/* Position Word 2: Source Image Size, Alpha */
  		/* Position Word 2: Source Image Size, Alpha */
  		vc4_state->pos2_offset = vc4_state->dlist_count;
  		vc4_state->pos2_offset = vc4_state->dlist_count;
  		vc4_dlist_write(vc4_state,
  		vc4_dlist_write(vc4_state,
@@ -78,7 +78,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  				VC4_SET_FIELD(vc4_state->src_w[0],
  				VC4_SET_FIELD(vc4_state->src_w[0],
  					      SCALER_POS2_WIDTH) |
  					      SCALER_POS2_WIDTH) |
  				VC4_SET_FIELD(vc4_state->src_h[0],
  				VC4_SET_FIELD(vc4_state->src_h[0],
-@@ -997,14 +1034,9 @@ static int vc4_plane_mode_set(struct drm
+@@ -999,14 +1036,9 @@ static int vc4_plane_mode_set(struct drm
  		vc4_dlist_write(vc4_state,
  		vc4_dlist_write(vc4_state,
  				VC4_SET_FIELD(state->alpha >> 4,
  				VC4_SET_FIELD(state->alpha >> 4,
  					      SCALER5_CTL2_ALPHA) |
  					      SCALER5_CTL2_ALPHA) |
@@ -95,7 +95,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  			       );
  			       );
  
  
  		/* Position Word 1: Scaled Image Dimensions. */
  		/* Position Word 1: Scaled Image Dimensions. */
-@@ -1494,6 +1526,10 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1496,6 +1528,10 @@ struct drm_plane *vc4_plane_init(struct
  	drm_plane_helper_add(plane, &vc4_plane_helper_funcs);
  	drm_plane_helper_add(plane, &vc4_plane_helper_funcs);
  
  
  	drm_plane_create_alpha_property(plane);
  	drm_plane_create_alpha_property(plane);

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0655-drm-vc4-hdmi-Fix-clock-value-used-for-validating-hdm.patch

@@ -18,7 +18,7 @@ Signed-off-by: Dom Cobley <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1496,7 +1496,7 @@ vc4_hdmi_encoder_compute_mode_clock(cons
+@@ -1497,7 +1497,7 @@ vc4_hdmi_encoder_compute_mode_clock(cons
  				    unsigned int bpc,
  				    unsigned int bpc,
  				    enum vc4_hdmi_output_format fmt)
  				    enum vc4_hdmi_output_format fmt)
  {
  {

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0657-mfd-simple-mfd-i2c-Add-configuration-for-RPi-POE-HAT.patch

@@ -18,7 +18,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/mfd/Kconfig
 --- a/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
-@@ -1093,6 +1093,16 @@ config MFD_SPMI_PMIC
+@@ -1094,6 +1094,16 @@ config MFD_SPMI_PMIC
  	  Say M here if you want to include support for the SPMI PMIC
  	  Say M here if you want to include support for the SPMI PMIC
  	  series as a module.  The module will be called "qcom-spmi-pmic".
  	  series as a module.  The module will be called "qcom-spmi-pmic".
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0669-drm-vc4_hdmi-Add-Broadcast-RGB-property-to-allow-ove.patch

@@ -167,7 +167,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  	drm_connector_attach_encoder(connector, encoder);
  	drm_connector_attach_encoder(connector, encoder);
  
  
  	return 0;
  	return 0;
-@@ -1385,6 +1487,7 @@ static void vc4_hdmi_encoder_atomic_mode
+@@ -1386,6 +1488,7 @@ static void vc4_hdmi_encoder_atomic_mode
  	mutex_lock(&vc4_hdmi->mutex);
  	mutex_lock(&vc4_hdmi->mutex);
  	vc4_hdmi->output_bpc = vc4_state->output_bpc;
  	vc4_hdmi->output_bpc = vc4_state->output_bpc;
  	vc4_hdmi->output_format = vc4_state->output_format;
  	vc4_hdmi->output_format = vc4_state->output_format;

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0678-drm-vc4-Add-DRM-210101010-RGB-formats-for-hvs5.patch

@@ -14,7 +14,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -135,6 +135,34 @@ static const struct hvs_format {
+@@ -137,6 +137,34 @@ static const struct hvs_format {
  		.pixel_order = HVS_PIXEL_ORDER_XYCBCR,
  		.pixel_order = HVS_PIXEL_ORDER_XYCBCR,
  		.hvs5_only = true,
  		.hvs5_only = true,
  	},
  	},

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0683-drm-vc4-dpi-Support-DPI-interface-in-mode3-for-RGB56.patch

@@ -18,8 +18,8 @@ Reviewed-by: Dave Stevenson <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 --- a/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
 +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
-@@ -191,6 +191,10 @@ static void vc4_dpi_encoder_enable(struc
- 				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_3,
+@@ -189,6 +189,10 @@ static void vc4_dpi_encoder_enable(struc
+ 				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_1,
  						       DPI_FORMAT);
  						       DPI_FORMAT);
  				break;
  				break;
 +			case MEDIA_BUS_FMT_RGB565_1X24_CPADHI:
 +			case MEDIA_BUS_FMT_RGB565_1X24_CPADHI:

+ 21 - 21
target/linux/bcm27xx/patches-5.15/950-0706-media-i2c-imx219-Scale-the-pixel-clock-rate-for-the-.patch

@@ -15,53 +15,53 @@ Signed-off-by: Naushir Patuck <[email protected]>
 
 
 --- a/drivers/media/i2c/imx219.c
 --- a/drivers/media/i2c/imx219.c
 +++ b/drivers/media/i2c/imx219.c
 +++ b/drivers/media/i2c/imx219.c
-@@ -153,6 +153,9 @@ struct imx219_mode {
+@@ -162,6 +162,9 @@ struct imx219_mode {
  
  
- 	/* Default register values */
- 	struct imx219_reg_list reg_list;
+ 	/* 2x2 binning is used */
+ 	bool binning;
 +
 +
 +	/* Relative pixel clock rate factor for the mode. */
 +	/* Relative pixel clock rate factor for the mode. */
 +	unsigned int rate_factor;
 +	unsigned int rate_factor;
  };
  };
  
  
- /*
-@@ -495,6 +498,7 @@ static const struct imx219_mode supporte
- 			.num_of_regs = ARRAY_SIZE(mode_3280x2464_regs),
+ static const struct imx219_reg imx219_common_regs[] = {
+@@ -402,6 +405,7 @@ static const struct imx219_mode supporte
  			.regs = mode_3280x2464_regs,
  			.regs = mode_3280x2464_regs,
  		},
  		},
+ 		.binning = false,
 +		.rate_factor = 1,
 +		.rate_factor = 1,
  	},
  	},
  	{
  	{
  		/* 1080P 30fps cropped */
  		/* 1080P 30fps cropped */
-@@ -511,6 +515,7 @@ static const struct imx219_mode supporte
- 			.num_of_regs = ARRAY_SIZE(mode_1920_1080_regs),
+@@ -419,6 +423,7 @@ static const struct imx219_mode supporte
  			.regs = mode_1920_1080_regs,
  			.regs = mode_1920_1080_regs,
  		},
  		},
+ 		.binning = false,
 +		.rate_factor = 1,
 +		.rate_factor = 1,
  	},
  	},
  	{
  	{
  		/* 2x2 binned 30fps mode */
  		/* 2x2 binned 30fps mode */
-@@ -527,6 +532,7 @@ static const struct imx219_mode supporte
- 			.num_of_regs = ARRAY_SIZE(mode_1640_1232_regs),
+@@ -436,6 +441,7 @@ static const struct imx219_mode supporte
  			.regs = mode_1640_1232_regs,
  			.regs = mode_1640_1232_regs,
  		},
  		},
+ 		.binning = true,
 +		.rate_factor = 1,
 +		.rate_factor = 1,
  	},
  	},
  	{
  	{
  		/* 640x480 30fps mode */
  		/* 640x480 30fps mode */
-@@ -543,6 +549,11 @@ static const struct imx219_mode supporte
- 			.num_of_regs = ARRAY_SIZE(mode_640_480_regs),
+@@ -453,6 +459,11 @@ static const struct imx219_mode supporte
  			.regs = mode_640_480_regs,
  			.regs = mode_640_480_regs,
  		},
  		},
+ 		.binning = true,
 +		/*
 +		/*
-+		 * This mode uses a special 2x2 binning that doubles the
-+		 * the internal pixel clock rate.
-+		 */
++		* This mode uses a special 2x2 binning that doubles the
++		* the internal pixel clock rate.
++		*/
 +		.rate_factor = 2,
 +		.rate_factor = 2,
  	},
  	},
  };
  };
  
  
-@@ -765,7 +776,8 @@ static int imx219_set_ctrl(struct v4l2_c
+@@ -675,7 +686,8 @@ static int imx219_set_ctrl(struct v4l2_c
  		break;
  		break;
  	case V4L2_CID_EXPOSURE:
  	case V4L2_CID_EXPOSURE:
  		ret = imx219_write_reg(imx219, IMX219_REG_EXPOSURE,
  		ret = imx219_write_reg(imx219, IMX219_REG_EXPOSURE,
@@ -71,7 +71,7 @@ Signed-off-by: Naushir Patuck <[email protected]>
  		break;
  		break;
  	case V4L2_CID_DIGITAL_GAIN:
  	case V4L2_CID_DIGITAL_GAIN:
  		ret = imx219_write_reg(imx219, IMX219_REG_DIGITAL_GAIN,
  		ret = imx219_write_reg(imx219, IMX219_REG_DIGITAL_GAIN,
-@@ -785,7 +797,8 @@ static int imx219_set_ctrl(struct v4l2_c
+@@ -695,7 +707,8 @@ static int imx219_set_ctrl(struct v4l2_c
  	case V4L2_CID_VBLANK:
  	case V4L2_CID_VBLANK:
  		ret = imx219_write_reg(imx219, IMX219_REG_VTS,
  		ret = imx219_write_reg(imx219, IMX219_REG_VTS,
  				       IMX219_REG_VALUE_16BIT,
  				       IMX219_REG_VALUE_16BIT,
@@ -81,7 +81,7 @@ Signed-off-by: Naushir Patuck <[email protected]>
  		break;
  		break;
  	case V4L2_CID_TEST_PATTERN_RED:
  	case V4L2_CID_TEST_PATTERN_RED:
  		ret = imx219_write_reg(imx219, IMX219_REG_TESTP_RED,
  		ret = imx219_write_reg(imx219, IMX219_REG_TESTP_RED,
-@@ -957,7 +970,7 @@ static int imx219_set_pad_format(struct
+@@ -867,7 +880,7 @@ static int imx219_set_pad_format(struct
  	struct imx219 *imx219 = to_imx219(sd);
  	struct imx219 *imx219 = to_imx219(sd);
  	const struct imx219_mode *mode;
  	const struct imx219_mode *mode;
  	struct v4l2_mbus_framefmt *framefmt;
  	struct v4l2_mbus_framefmt *framefmt;
@@ -90,7 +90,7 @@ Signed-off-by: Naushir Patuck <[email protected]>
  	unsigned int i;
  	unsigned int i;
  
  
  	if (fmt->pad >= NUM_PADS)
  	if (fmt->pad >= NUM_PADS)
-@@ -1018,6 +1031,12 @@ static int imx219_set_pad_format(struct
+@@ -928,6 +941,12 @@ static int imx219_set_pad_format(struct
  			hblank = IMX219_PPL_DEFAULT - mode->width;
  			hblank = IMX219_PPL_DEFAULT - mode->width;
  			__v4l2_ctrl_modify_range(imx219->hblank, hblank, hblank,
  			__v4l2_ctrl_modify_range(imx219->hblank, hblank, hblank,
  						 1, hblank);
  						 1, hblank);
@@ -103,7 +103,7 @@ Signed-off-by: Naushir Patuck <[email protected]>
  		}
  		}
  	} else {
  	} else {
  		if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
  		if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
-@@ -1362,7 +1381,7 @@ static int imx219_init_controls(struct i
+@@ -1315,7 +1334,7 @@ static int imx219_init_controls(struct i
  	struct v4l2_ctrl_handler *ctrl_hdlr;
  	struct v4l2_ctrl_handler *ctrl_hdlr;
  	unsigned int height = imx219->mode->height;
  	unsigned int height = imx219->mode->height;
  	struct v4l2_fwnode_device_properties props;
  	struct v4l2_fwnode_device_properties props;
@@ -112,7 +112,7 @@ Signed-off-by: Naushir Patuck <[email protected]>
  	int i, ret;
  	int i, ret;
  
  
  	ctrl_hdlr = &imx219->ctrl_handler;
  	ctrl_hdlr = &imx219->ctrl_handler;
-@@ -1374,11 +1393,11 @@ static int imx219_init_controls(struct i
+@@ -1327,11 +1346,11 @@ static int imx219_init_controls(struct i
  	ctrl_hdlr->lock = &imx219->mutex;
  	ctrl_hdlr->lock = &imx219->mutex;
  
  
  	/* By default, PIXEL_RATE is read only */
  	/* By default, PIXEL_RATE is read only */

+ 0 - 25
target/linux/bcm27xx/patches-5.15/950-0707-drm-vc4-For-DPI-MEDIA_BUS_FMT_RGB565_1X16-is-mode-1-.patch

@@ -1,25 +0,0 @@
-From 4626e370de018aed097d54247bae5a29391198ee Mon Sep 17 00:00:00 2001
-From: Dave Stevenson <[email protected]>
-Date: Mon, 14 Feb 2022 15:34:51 +0000
-Subject: [PATCH] drm/vc4: For DPI, MEDIA_BUS_FMT_RGB565_1X16 is mode
- 1, not 3.
-
-The mapping is incorrect for RGB565_1X16 as it should be
-DPI_FORMAT_18BIT_666_RGB_1 instead of DPI_FORMAT_18BIT_666_RGB_3.
-
-Signed-off-by: Dave Stevenson <[email protected]>
----
- drivers/gpu/drm/vc4/vc4_dpi.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/gpu/drm/vc4/vc4_dpi.c
-+++ b/drivers/gpu/drm/vc4/vc4_dpi.c
-@@ -188,7 +188,7 @@ static void vc4_dpi_encoder_enable(struc
- 						       DPI_ORDER);
- 				break;
- 			case MEDIA_BUS_FMT_RGB565_1X16:
--				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_3,
-+				dpi_c |= VC4_SET_FIELD(DPI_FORMAT_16BIT_565_RGB_1,
- 						       DPI_FORMAT);
- 				break;
- 			case MEDIA_BUS_FMT_RGB565_1X24_CPADHI:

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0742-drm-vc4-hvs-Defer-dlist-slots-deallocation.patch

@@ -399,7 +399,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	 * overwrite the setup from the bootloader (just 128b out of
  	 * overwrite the setup from the bootloader (just 128b out of
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -234,6 +234,7 @@
+@@ -240,6 +240,7 @@
  # define SCALER_DISPCTRL_DSPEIEOLN(x)		BIT(8 + ((x) * 2))
  # define SCALER_DISPCTRL_DSPEIEOLN(x)		BIT(8 + ((x) * 2))
  /* Enables Display 0 EOF contribution to SCALER_DISPSTAT_IRQDISP0 */
  /* Enables Display 0 EOF contribution to SCALER_DISPSTAT_IRQDISP0 */
  # define SCALER_DISPCTRL_DSPEIEOF(x)		BIT(7 + ((x) * 2))
  # define SCALER_DISPCTRL_DSPEIEOF(x)		BIT(7 + ((x) * 2))

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0781-drm-vc4-Support-zpos-on-all-planes.patch

@@ -88,7 +88,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  	if (ret)
  	if (ret)
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1573,9 +1573,14 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1575,9 +1575,14 @@ struct drm_plane *vc4_plane_init(struct
  					  DRM_COLOR_YCBCR_BT709,
  					  DRM_COLOR_YCBCR_BT709,
  					  DRM_COLOR_YCBCR_LIMITED_RANGE);
  					  DRM_COLOR_YCBCR_LIMITED_RANGE);
  
  
@@ -103,7 +103,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  int vc4_plane_create_additional_planes(struct drm_device *drm)
  int vc4_plane_create_additional_planes(struct drm_device *drm)
  {
  {
  	struct drm_plane *cursor_plane;
  	struct drm_plane *cursor_plane;
-@@ -1591,7 +1596,7 @@ int vc4_plane_create_additional_planes(s
+@@ -1593,7 +1598,7 @@ int vc4_plane_create_additional_planes(s
  	 * modest number of planes to expose, that should hopefully
  	 * modest number of planes to expose, that should hopefully
  	 * still cover any sane usecase.
  	 * still cover any sane usecase.
  	 */
  	 */
@@ -112,7 +112,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  		struct drm_plane *plane =
  		struct drm_plane *plane =
  			vc4_plane_init(drm, DRM_PLANE_TYPE_OVERLAY);
  			vc4_plane_init(drm, DRM_PLANE_TYPE_OVERLAY);
  
  
-@@ -1600,17 +1605,28 @@ int vc4_plane_create_additional_planes(s
+@@ -1602,17 +1607,28 @@ int vc4_plane_create_additional_planes(s
  
  
  		plane->possible_crtcs =
  		plane->possible_crtcs =
  			GENMASK(drm->mode_config.num_crtc - 1, 0);
  			GENMASK(drm->mode_config.num_crtc - 1, 0);

+ 16 - 16
target/linux/bcm27xx/patches-5.15/950-0787-vc4-drm-vc4_plane-Keep-fractional-source-coords-insi.patch

@@ -23,7 +23,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  	u32 src_w[2], src_h[2];
  	u32 src_w[2], src_h[2];
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -179,9 +179,9 @@ static const struct hvs_format *vc4_get_
+@@ -181,9 +181,9 @@ static const struct hvs_format *vc4_get_
  
  
  static enum vc4_scaling_mode vc4_get_scaling_mode(u32 src, u32 dst)
  static enum vc4_scaling_mode vc4_get_scaling_mode(u32 src, u32 dst)
  {
  {
@@ -35,7 +35,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		return VC4_SCALING_PPF;
  		return VC4_SCALING_PPF;
  	else
  	else
  		return VC4_SCALING_TPZ;
  		return VC4_SCALING_TPZ;
-@@ -388,15 +388,10 @@ static int vc4_plane_setup_clipping_and_
+@@ -390,15 +390,10 @@ static int vc4_plane_setup_clipping_and_
  	for (i = 0; i < num_planes; i++)
  	for (i = 0; i < num_planes; i++)
  		vc4_state->offsets[i] = bo->paddr + fb->offsets[i];
  		vc4_state->offsets[i] = bo->paddr + fb->offsets[i];
  
  
@@ -55,7 +55,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  
  
  	vc4_state->crtc_x = state->dst.x1;
  	vc4_state->crtc_x = state->dst.x1;
  	vc4_state->crtc_y = state->dst.y1;
  	vc4_state->crtc_y = state->dst.y1;
-@@ -449,7 +444,7 @@ static void vc4_write_tpz(struct vc4_pla
+@@ -451,7 +446,7 @@ static void vc4_write_tpz(struct vc4_pla
  {
  {
  	u32 scale, recip;
  	u32 scale, recip;
  
  
@@ -64,7 +64,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  
  
  	/* The specs note that while the reciprocal would be defined
  	/* The specs note that while the reciprocal would be defined
  	 * as (1<<32)/scale, ~0 is close enough.
  	 * as (1<<32)/scale, ~0 is close enough.
-@@ -495,7 +490,7 @@ static u32 vc4_lbm_size(struct drm_plane
+@@ -497,7 +492,7 @@ static u32 vc4_lbm_size(struct drm_plane
  	if (vc4_state->x_scaling[0] == VC4_SCALING_TPZ)
  	if (vc4_state->x_scaling[0] == VC4_SCALING_TPZ)
  		pix_per_line = vc4_state->crtc_w;
  		pix_per_line = vc4_state->crtc_w;
  	else
  	else
@@ -73,7 +73,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  
  
  	if (!vc4_state->is_yuv) {
  	if (!vc4_state->is_yuv) {
  		if (vc4_state->y_scaling[0] == VC4_SCALING_TPZ)
  		if (vc4_state->y_scaling[0] == VC4_SCALING_TPZ)
-@@ -586,7 +581,8 @@ static void vc4_plane_calc_load(struct d
+@@ -588,7 +583,8 @@ static void vc4_plane_calc_load(struct d
  	for (i = 0; i < fb->format->num_planes; i++) {
  	for (i = 0; i < fb->format->num_planes; i++) {
  		/* Even if the bandwidth/plane required for a single frame is
  		/* Even if the bandwidth/plane required for a single frame is
  		 *
  		 *
@@ -83,7 +83,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		 *
  		 *
  		 * when downscaling, we have to read more pixels per line in
  		 * when downscaling, we have to read more pixels per line in
  		 * the time frame reserved for a single line, so the bandwidth
  		 * the time frame reserved for a single line, so the bandwidth
-@@ -595,11 +591,11 @@ static void vc4_plane_calc_load(struct d
+@@ -597,11 +593,11 @@ static void vc4_plane_calc_load(struct d
  		 * load by this number. We're likely over-estimating the read
  		 * load by this number. We're likely over-estimating the read
  		 * demand, but that's better than under-estimating it.
  		 * demand, but that's better than under-estimating it.
  		 */
  		 */
@@ -99,7 +99,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		vc4_state->hvs_load += vc4_state->crtc_h * vc4_state->crtc_w;
  		vc4_state->hvs_load += vc4_state->crtc_h * vc4_state->crtc_w;
  	}
  	}
  
  
-@@ -752,7 +748,8 @@ static int vc4_plane_mode_set(struct drm
+@@ -754,7 +750,8 @@ static int vc4_plane_mode_set(struct drm
  	bool mix_plane_alpha;
  	bool mix_plane_alpha;
  	bool covers_screen;
  	bool covers_screen;
  	u32 scl0, scl1, pitch0;
  	u32 scl0, scl1, pitch0;
@@ -109,7 +109,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  	u32 hvs_format = format->hvs;
  	u32 hvs_format = format->hvs;
  	unsigned int rotation;
  	unsigned int rotation;
  	int ret, i;
  	int ret, i;
-@@ -764,6 +761,9 @@ static int vc4_plane_mode_set(struct drm
+@@ -766,6 +763,9 @@ static int vc4_plane_mode_set(struct drm
  	if (ret)
  	if (ret)
  		return ret;
  		return ret;
  
  
@@ -119,7 +119,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  	/* SCL1 is used for Cb/Cr scaling of planar formats.  For RGB
  	/* SCL1 is used for Cb/Cr scaling of planar formats.  For RGB
  	 * and 4:4:4, scl1 should be set to scl0 so both channels of
  	 * and 4:4:4, scl1 should be set to scl0 so both channels of
  	 * the scaler do the same thing.  For YUV, the Y plane needs
  	 * the scaler do the same thing.  For YUV, the Y plane needs
-@@ -784,9 +784,11 @@ static int vc4_plane_mode_set(struct drm
+@@ -786,9 +786,11 @@ static int vc4_plane_mode_set(struct drm
  					 DRM_MODE_REFLECT_Y);
  					 DRM_MODE_REFLECT_Y);
  
  
  	/* We must point to the last line when Y reflection is enabled. */
  	/* We must point to the last line when Y reflection is enabled. */
@@ -133,7 +133,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  
  
  	switch (base_format_mod) {
  	switch (base_format_mod) {
  	case DRM_FORMAT_MOD_LINEAR:
  	case DRM_FORMAT_MOD_LINEAR:
-@@ -801,7 +803,7 @@ static int vc4_plane_mode_set(struct drm
+@@ -803,7 +805,7 @@ static int vc4_plane_mode_set(struct drm
  						 (i ? v_subsample : 1) *
  						 (i ? v_subsample : 1) *
  						 fb->pitches[i];
  						 fb->pitches[i];
  
  
@@ -142,7 +142,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  						 (i ? h_subsample : 1) *
  						 (i ? h_subsample : 1) *
  						 fb->format->cpp[i];
  						 fb->format->cpp[i];
  		}
  		}
-@@ -824,7 +826,7 @@ static int vc4_plane_mode_set(struct drm
+@@ -826,7 +828,7 @@ static int vc4_plane_mode_set(struct drm
  		 *	pitch * tile_h == tile_size * tiles_per_row
  		 *	pitch * tile_h == tile_size * tiles_per_row
  		 */
  		 */
  		u32 tiles_w = fb->pitches[0] >> (tile_size_shift - tile_h_shift);
  		u32 tiles_w = fb->pitches[0] >> (tile_size_shift - tile_h_shift);
@@ -151,7 +151,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		u32 tiles_r = tiles_w - tiles_l;
  		u32 tiles_r = tiles_w - tiles_l;
  		u32 tiles_t = src_y >> tile_h_shift;
  		u32 tiles_t = src_y >> tile_h_shift;
  		/* Intra-tile offsets, which modify the base address (the
  		/* Intra-tile offsets, which modify the base address (the
-@@ -834,7 +836,7 @@ static int vc4_plane_mode_set(struct drm
+@@ -836,7 +838,7 @@ static int vc4_plane_mode_set(struct drm
  		u32 tile_y = (src_y >> 4) & 1;
  		u32 tile_y = (src_y >> 4) & 1;
  		u32 subtile_y = (src_y >> 2) & 3;
  		u32 subtile_y = (src_y >> 2) & 3;
  		u32 utile_y = src_y & 3;
  		u32 utile_y = src_y & 3;
@@ -160,7 +160,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		u32 y_off = src_y & tile_h_mask;
  		u32 y_off = src_y & tile_h_mask;
  
  
  		/* When Y reflection is requested we must set the
  		/* When Y reflection is requested we must set the
-@@ -930,7 +932,7 @@ static int vc4_plane_mode_set(struct drm
+@@ -932,7 +934,7 @@ static int vc4_plane_mode_set(struct drm
  				 * of the 12-pixels in that 128-bit word is the
  				 * of the 12-pixels in that 128-bit word is the
  				 * first pixel to be used
  				 * first pixel to be used
  				 */
  				 */
@@ -169,7 +169,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  				u32 aligned = remaining_pixels / 12;
  				u32 aligned = remaining_pixels / 12;
  				u32 last_bits = remaining_pixels % 12;
  				u32 last_bits = remaining_pixels % 12;
  
  
-@@ -952,12 +954,12 @@ static int vc4_plane_mode_set(struct drm
+@@ -954,12 +956,12 @@ static int vc4_plane_mode_set(struct drm
  					return -EINVAL;
  					return -EINVAL;
  				}
  				}
  				pix_per_tile = tile_w / fb->format->cpp[0];
  				pix_per_tile = tile_w / fb->format->cpp[0];
@@ -184,7 +184,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  
  
  			vc4_state->offsets[i] += param * tile_w * tile;
  			vc4_state->offsets[i] += param * tile_w * tile;
  			vc4_state->offsets[i] += src_y /
  			vc4_state->offsets[i] += src_y /
-@@ -1018,10 +1020,8 @@ static int vc4_plane_mode_set(struct drm
+@@ -1020,10 +1022,8 @@ static int vc4_plane_mode_set(struct drm
  		vc4_dlist_write(vc4_state,
  		vc4_dlist_write(vc4_state,
  				(mix_plane_alpha ? SCALER_POS2_ALPHA_MIX : 0) |
  				(mix_plane_alpha ? SCALER_POS2_ALPHA_MIX : 0) |
  				vc4_hvs4_get_alpha_blend_mode(state) |
  				vc4_hvs4_get_alpha_blend_mode(state) |
@@ -197,7 +197,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  
  
  		/* Position Word 3: Context.  Written by the HVS. */
  		/* Position Word 3: Context.  Written by the HVS. */
  		vc4_dlist_write(vc4_state, 0xc0c0c0c0);
  		vc4_dlist_write(vc4_state, 0xc0c0c0c0);
-@@ -1079,10 +1079,8 @@ static int vc4_plane_mode_set(struct drm
+@@ -1081,10 +1081,8 @@ static int vc4_plane_mode_set(struct drm
  		/* Position Word 2: Source Image Size */
  		/* Position Word 2: Source Image Size */
  		vc4_state->pos2_offset = vc4_state->dlist_count;
  		vc4_state->pos2_offset = vc4_state->dlist_count;
  		vc4_dlist_write(vc4_state,
  		vc4_dlist_write(vc4_state,

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0788-vc4-drm-Handle-fractional-coordinates-using-the-phas.patch

@@ -11,7 +11,7 @@ Signed-off-by: Dom Cobley <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -458,14 +458,47 @@ static void vc4_write_tpz(struct vc4_pla
+@@ -460,14 +460,47 @@ static void vc4_write_tpz(struct vc4_pla
  			VC4_SET_FIELD(recip, SCALER_TPZ1_RECIP));
  			VC4_SET_FIELD(recip, SCALER_TPZ1_RECIP));
  }
  }
  
  
@@ -62,7 +62,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  }
  }
  
  
  static u32 vc4_lbm_size(struct drm_plane_state *state)
  static u32 vc4_lbm_size(struct drm_plane_state *state)
-@@ -524,13 +557,13 @@ static void vc4_write_scaling_parameters
+@@ -526,13 +559,13 @@ static void vc4_write_scaling_parameters
  	/* Ch0 H-PPF Word 0: Scaling Parameters */
  	/* Ch0 H-PPF Word 0: Scaling Parameters */
  	if (vc4_state->x_scaling[channel] == VC4_SCALING_PPF) {
  	if (vc4_state->x_scaling[channel] == VC4_SCALING_PPF) {
  		vc4_write_ppf(vc4_state,
  		vc4_write_ppf(vc4_state,
@@ -78,7 +78,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		vc4_dlist_write(vc4_state, 0xc0c0c0c0);
  		vc4_dlist_write(vc4_state, 0xc0c0c0c0);
  	}
  	}
  
  
-@@ -978,6 +1011,24 @@ static int vc4_plane_mode_set(struct drm
+@@ -980,6 +1013,24 @@ static int vc4_plane_mode_set(struct drm
  		return -EINVAL;
  		return -EINVAL;
  	}
  	}
  
  

+ 3 - 3
target/linux/bcm27xx/patches-5.15/950-0790-vc4-drm-plane-Make-use-of-chroma-siting-parameter.patch

@@ -10,7 +10,7 @@ Signed-off-by: Dom Cobley <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -461,17 +461,18 @@ static void vc4_write_tpz(struct vc4_pla
+@@ -463,17 +463,18 @@ static void vc4_write_tpz(struct vc4_pla
  /* phase magnitude bits */
  /* phase magnitude bits */
  #define PHASE_BITS 6
  #define PHASE_BITS 6
  
  
@@ -31,7 +31,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		offset += -(1 << PHASE_BITS >> 2);
  		offset += -(1 << PHASE_BITS >> 2);
  	} else {
  	} else {
  		/* the phase is relative to scale_src->x, so shift it for display list's x value */
  		/* the phase is relative to scale_src->x, so shift it for display list's x value */
-@@ -557,13 +558,15 @@ static void vc4_write_scaling_parameters
+@@ -559,13 +560,15 @@ static void vc4_write_scaling_parameters
  	/* Ch0 H-PPF Word 0: Scaling Parameters */
  	/* Ch0 H-PPF Word 0: Scaling Parameters */
  	if (vc4_state->x_scaling[channel] == VC4_SCALING_PPF) {
  	if (vc4_state->x_scaling[channel] == VC4_SCALING_PPF) {
  		vc4_write_ppf(vc4_state,
  		vc4_write_ppf(vc4_state,
@@ -49,7 +49,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  		vc4_dlist_write(vc4_state, 0xc0c0c0c0);
  		vc4_dlist_write(vc4_state, 0xc0c0c0c0);
  	}
  	}
  
  
-@@ -1622,6 +1625,8 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1624,6 +1627,8 @@ struct drm_plane *vc4_plane_init(struct
  					  DRM_COLOR_YCBCR_BT709,
  					  DRM_COLOR_YCBCR_BT709,
  					  DRM_COLOR_YCBCR_LIMITED_RANGE);
  					  DRM_COLOR_YCBCR_LIMITED_RANGE);
  
  

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0801-pinctrl-bcm2835-Only-return-non-GPIOs-to-inputs.patch

@@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 
 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
 +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -910,9 +910,12 @@ static int bcm2835_pmx_free(struct pinct
+@@ -908,9 +908,12 @@ static int bcm2835_pmx_free(struct pinct
  		unsigned offset)
  		unsigned offset)
  {
  {
  	struct bcm2835_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev);
  	struct bcm2835_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev);
@@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <[email protected]>
  	return 0;
  	return 0;
  }
  }
  
  
-@@ -954,10 +957,7 @@ static void bcm2835_pmx_gpio_disable_fre
+@@ -952,10 +955,7 @@ static void bcm2835_pmx_gpio_disable_fre
  		struct pinctrl_gpio_range *range,
  		struct pinctrl_gpio_range *range,
  		unsigned offset)
  		unsigned offset)
  {
  {

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0807-Revert-drm-vc4-hvs-Defer-dlist-slots-deallocation.patch

@@ -332,7 +332,7 @@ This reverts commit e99a1b69da07ee3b89a6b8005b854e6c04bfb450.
  	 * overwrite the setup from the bootloader (just 128b out of
  	 * overwrite the setup from the bootloader (just 128b out of
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 --- a/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
 +++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -234,7 +234,6 @@
+@@ -240,7 +240,6 @@
  # define SCALER_DISPCTRL_DSPEIEOLN(x)		BIT(8 + ((x) * 2))
  # define SCALER_DISPCTRL_DSPEIEOLN(x)		BIT(8 + ((x) * 2))
  /* Enables Display 0 EOF contribution to SCALER_DISPSTAT_IRQDISP0 */
  /* Enables Display 0 EOF contribution to SCALER_DISPSTAT_IRQDISP0 */
  # define SCALER_DISPCTRL_DSPEIEOF(x)		BIT(7 + ((x) * 2))
  # define SCALER_DISPCTRL_DSPEIEOF(x)		BIT(7 + ((x) * 2))

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0808-drm-vc4_hdmi-Force-modeset-when-bpc-changes.patch

@@ -25,7 +25,7 @@ Signed-off-by: Dom Cobley <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1809,6 +1809,9 @@ static int vc4_hdmi_encoder_atomic_check
+@@ -1810,6 +1810,9 @@ static int vc4_hdmi_encoder_atomic_check
  	struct vc4_hdmi_connector_state *vc4_state = conn_state_to_vc4_hdmi_conn_state(conn_state);
  	struct vc4_hdmi_connector_state *vc4_state = conn_state_to_vc4_hdmi_conn_state(conn_state);
  	struct drm_display_mode *mode = &crtc_state->adjusted_mode;
  	struct drm_display_mode *mode = &crtc_state->adjusted_mode;
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
  	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
@@ -35,7 +35,7 @@ Signed-off-by: Dom Cobley <[email protected]>
  	unsigned long long pixel_rate = mode->clock * 1000;
  	unsigned long long pixel_rate = mode->clock * 1000;
  	unsigned long long tmds_rate;
  	unsigned long long tmds_rate;
  	int ret;
  	int ret;
-@@ -1837,6 +1840,11 @@ static int vc4_hdmi_encoder_atomic_check
+@@ -1838,6 +1841,11 @@ static int vc4_hdmi_encoder_atomic_check
  	if (ret)
  	if (ret)
  		return ret;
  		return ret;
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0829-vc4_hdmi-Remove-VC4_HDMI_SCHEDULER_CONTROL_VERT_ALWA.patch

@@ -14,7 +14,7 @@ Signed-off-by: Dom Cobley <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1551,9 +1551,6 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1552,9 +1552,6 @@ static void vc4_hdmi_encoder_post_crtc_e
  
  
  		WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  		WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
  			  VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE));
  			  VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE));

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0868-drm-vc4-hdmi-Rework-hdmi_enable_4kp60-detection.patch

@@ -65,7 +65,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		struct drm_device *drm = connector->dev;
  		struct drm_device *drm = connector->dev;
  		struct drm_display_mode *mode;
  		struct drm_display_mode *mode;
  
  
-@@ -1672,11 +1673,12 @@ vc4_hdmi_encoder_clock_valid(const struc
+@@ -1673,11 +1674,12 @@ vc4_hdmi_encoder_clock_valid(const struc
  {
  {
  	const struct drm_connector *connector = &vc4_hdmi->connector;
  	const struct drm_connector *connector = &vc4_hdmi->connector;
  	const struct drm_display_info *info = &connector->display_info;
  	const struct drm_display_info *info = &connector->display_info;
@@ -79,7 +79,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		return MODE_CLOCK_HIGH;
  		return MODE_CLOCK_HIGH;
  
  
  	if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000))
  	if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000))
-@@ -3157,14 +3159,6 @@ static int vc4_hdmi_bind(struct device *
+@@ -3158,14 +3160,6 @@ static int vc4_hdmi_bind(struct device *
  	vc4_hdmi->disable_wifi_frequencies =
  	vc4_hdmi->disable_wifi_frequencies =
  		of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence");
  		of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence");
  
  

+ 1 - 1
target/linux/bcm27xx/patches-5.15/950-0897-drm-vc4-plane-Prevent-async-update-if-we-don-t-have-.patch

@@ -24,7 +24,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1429,6 +1429,10 @@ static int vc4_plane_atomic_async_check(
+@@ -1431,6 +1431,10 @@ static int vc4_plane_atomic_async_check(
  
  
  	old_vc4_state = to_vc4_plane_state(plane->state);
  	old_vc4_state = to_vc4_plane_state(plane->state);
  	new_vc4_state = to_vc4_plane_state(new_plane_state);
  	new_vc4_state = to_vc4_plane_state(new_plane_state);

+ 6 - 6
target/linux/bcm27xx/patches-5.15/950-0898-drm-vc4-Consolidate-Hardware-Revision-Check.patch

@@ -227,7 +227,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  		/* 48k words of 2x12-bit pixels */
  		/* 48k words of 2x12-bit pixels */
  		drm_mm_init(&hvs->lbm_mm, 0, 48 * 1024);
  		drm_mm_init(&hvs->lbm_mm, 0, 48 * 1024);
  	else
  	else
-@@ -1008,7 +1008,7 @@ static int vc4_hvs_bind(struct device *d
+@@ -1019,7 +1019,7 @@ static int vc4_hvs_bind(struct device *d
  			     NULL);
  			     NULL);
  	vc4_debugfs_add_file(drm, "hvs_dlists", vc4_hvs_debugfs_dlist,
  	vc4_debugfs_add_file(drm, "hvs_dlists", vc4_hvs_debugfs_dlist,
  			     NULL);
  			     NULL);
@@ -294,7 +294,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	} else {
  	} else {
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -542,10 +542,10 @@ static u32 vc4_lbm_size(struct drm_plane
+@@ -544,10 +544,10 @@ static u32 vc4_lbm_size(struct drm_plane
  	}
  	}
  
  
  	/* Align it to 64 or 128 (hvs5) bytes */
  	/* Align it to 64 or 128 (hvs5) bytes */
@@ -307,7 +307,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  
  
  	return lbm;
  	return lbm;
  }
  }
-@@ -664,7 +664,7 @@ static int vc4_plane_allocate_lbm(struct
+@@ -666,7 +666,7 @@ static int vc4_plane_allocate_lbm(struct
  		ret = drm_mm_insert_node_generic(&vc4->hvs->lbm_mm,
  		ret = drm_mm_insert_node_generic(&vc4->hvs->lbm_mm,
  						 &vc4_state->lbm,
  						 &vc4_state->lbm,
  						 lbm_size,
  						 lbm_size,
@@ -316,7 +316,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  						 0, 0);
  						 0, 0);
  		spin_unlock_irqrestore(&vc4->hvs->mm_lock, irqflags);
  		spin_unlock_irqrestore(&vc4->hvs->mm_lock, irqflags);
  
  
-@@ -1039,7 +1039,7 @@ static int vc4_plane_mode_set(struct drm
+@@ -1041,7 +1041,7 @@ static int vc4_plane_mode_set(struct drm
  	mix_plane_alpha = state->alpha != DRM_BLEND_ALPHA_OPAQUE &&
  	mix_plane_alpha = state->alpha != DRM_BLEND_ALPHA_OPAQUE &&
  			  fb->format->has_alpha;
  			  fb->format->has_alpha;
  
  
@@ -325,7 +325,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	/* Control word */
  	/* Control word */
  		vc4_dlist_write(vc4_state,
  		vc4_dlist_write(vc4_state,
  				SCALER_CTL0_VALID |
  				SCALER_CTL0_VALID |
-@@ -1570,14 +1570,13 @@ static const struct drm_plane_funcs vc4_
+@@ -1572,14 +1572,13 @@ static const struct drm_plane_funcs vc4_
  struct drm_plane *vc4_plane_init(struct drm_device *dev,
  struct drm_plane *vc4_plane_init(struct drm_device *dev,
  				 enum drm_plane_type type)
  				 enum drm_plane_type type)
  {
  {
@@ -341,7 +341,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  	static const uint64_t modifiers[] = {
  	static const uint64_t modifiers[] = {
  		DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
  		DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
  		DRM_FORMAT_MOD_BROADCOM_SAND128,
  		DRM_FORMAT_MOD_BROADCOM_SAND128,
-@@ -1593,7 +1592,7 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1595,7 +1594,7 @@ struct drm_plane *vc4_plane_init(struct
  		return ERR_PTR(-ENOMEM);
  		return ERR_PTR(-ENOMEM);
  
  
  	for (i = 0; i < ARRAY_SIZE(hvs_formats); i++) {
  	for (i = 0; i < ARRAY_SIZE(hvs_formats); i++) {

+ 2 - 2
target/linux/bcm27xx/patches-5.15/950-0903-drm-vc4-plane-Register-a-different-drm_plane_helper_.patch

@@ -20,7 +20,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
 
 
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 --- a/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1502,6 +1502,13 @@ static const struct drm_plane_helper_fun
+@@ -1504,6 +1504,13 @@ static const struct drm_plane_helper_fun
  	.atomic_async_update = vc4_plane_atomic_async_update,
  	.atomic_async_update = vc4_plane_atomic_async_update,
  };
  };
  
  
@@ -34,7 +34,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
  static bool vc4_format_mod_supported(struct drm_plane *plane,
  static bool vc4_format_mod_supported(struct drm_plane *plane,
  				     uint32_t format,
  				     uint32_t format,
  				     uint64_t modifier)
  				     uint64_t modifier)
-@@ -1606,7 +1613,10 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1608,7 +1615,10 @@ struct drm_plane *vc4_plane_init(struct
  	if (ret)
  	if (ret)
  		return ERR_PTR(ret);
  		return ERR_PTR(ret);
  
  

+ 1 - 1
target/linux/generic/backport-5.15/005-v5.17-01-Kbuild-use-Wdeclaration-after-statement.patch

@@ -37,7 +37,7 @@ Signed-off-by: Masahiro Yamada <[email protected]>
 
 
 --- a/Makefile
 --- a/Makefile
 +++ b/Makefile
 +++ b/Makefile
-@@ -433,7 +433,8 @@ endif
+@@ -440,7 +440,8 @@ endif
  HOSTPKG_CONFIG	= pkg-config
  HOSTPKG_CONFIG	= pkg-config
  
  
  export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
  export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \

+ 1 - 1
target/linux/generic/backport-5.15/005-v5.17-02-Kbuild-move-to-std-gnu11.patch

@@ -49,7 +49,7 @@ Signed-off-by: Masahiro Yamada <[email protected]>
 
 
 --- a/Makefile
 --- a/Makefile
 +++ b/Makefile
 +++ b/Makefile
-@@ -517,7 +517,7 @@ KBUILD_CFLAGS   := -Wall -Wundef -Werror
+@@ -524,7 +524,7 @@ KBUILD_CFLAGS   := -Wall -Wundef -Werror
  		   -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
  		   -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
  		   -Werror=implicit-function-declaration -Werror=implicit-int \
  		   -Werror=implicit-function-declaration -Werror=implicit-int \
  		   -Werror=return-type -Wno-format-security \
  		   -Werror=return-type -Wno-format-security \

+ 1 - 1
target/linux/generic/backport-5.15/005-v5.17-03-Kbuild-use-std-gnu11-for-KBUILD_USERCFLAGS.patch

@@ -32,7 +32,7 @@ Signed-off-by: Masahiro Yamada <[email protected]>
 
 
 --- a/Makefile
 --- a/Makefile
 +++ b/Makefile
 +++ b/Makefile
-@@ -433,7 +433,7 @@ endif
+@@ -440,7 +440,7 @@ endif
  HOSTPKG_CONFIG	= pkg-config
  HOSTPKG_CONFIG	= pkg-config
  
  
  export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
  export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \

+ 1 - 1
target/linux/generic/backport-5.15/020-v6.1-04-mm-multigenerational-lru-groundwork.patch

@@ -593,7 +593,7 @@ Change-Id: I71de7cd15b8dfa6f9fdd838023474693c4fee0a7
  	VM_BUG_ON_PAGE(tail > 2 && page_tail->mapping != TAIL_MAPPING,
  	VM_BUG_ON_PAGE(tail > 2 && page_tail->mapping != TAIL_MAPPING,
 --- a/mm/memcontrol.c
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -5237,6 +5237,7 @@ static struct mem_cgroup *mem_cgroup_all
+@@ -5241,6 +5241,7 @@ static struct mem_cgroup *mem_cgroup_all
  	memcg->deferred_split_queue.split_queue_len = 0;
  	memcg->deferred_split_queue.split_queue_len = 0;
  #endif
  #endif
  	idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
  	idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);

+ 3 - 3
target/linux/generic/backport-5.15/020-v6.1-05-mm-multigenerational-lru-mm_struct-list.patch

@@ -339,7 +339,7 @@ Change-Id: I25d9eda8c6bdc7c3653b9f210a159d6c247c81e8
  			/* will mmdrop() in finish_task_switch(). */
  			/* will mmdrop() in finish_task_switch(). */
 --- a/mm/memcontrol.c
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -5174,6 +5174,7 @@ static void __mem_cgroup_free(struct mem
+@@ -5178,6 +5178,7 @@ static void __mem_cgroup_free(struct mem
  
  
  static void mem_cgroup_free(struct mem_cgroup *memcg)
  static void mem_cgroup_free(struct mem_cgroup *memcg)
  {
  {
@@ -347,7 +347,7 @@ Change-Id: I25d9eda8c6bdc7c3653b9f210a159d6c247c81e8
  	memcg_wb_domain_exit(memcg);
  	memcg_wb_domain_exit(memcg);
  	__mem_cgroup_free(memcg);
  	__mem_cgroup_free(memcg);
  }
  }
-@@ -6206,6 +6207,29 @@ static void mem_cgroup_move_task(void)
+@@ -6210,6 +6211,29 @@ static void mem_cgroup_move_task(void)
  }
  }
  #endif
  #endif
  
  
@@ -377,7 +377,7 @@ Change-Id: I25d9eda8c6bdc7c3653b9f210a159d6c247c81e8
  static int seq_puts_memcg_tunable(struct seq_file *m, unsigned long value)
  static int seq_puts_memcg_tunable(struct seq_file *m, unsigned long value)
  {
  {
  	if (value == PAGE_COUNTER_MAX)
  	if (value == PAGE_COUNTER_MAX)
-@@ -6549,6 +6573,7 @@ struct cgroup_subsys memory_cgrp_subsys
+@@ -6553,6 +6577,7 @@ struct cgroup_subsys memory_cgrp_subsys
  	.css_reset = mem_cgroup_css_reset,
  	.css_reset = mem_cgroup_css_reset,
  	.css_rstat_flush = mem_cgroup_css_rstat_flush,
  	.css_rstat_flush = mem_cgroup_css_rstat_flush,
  	.can_attach = mem_cgroup_can_attach,
  	.can_attach = mem_cgroup_can_attach,

+ 1 - 1
target/linux/generic/backport-5.15/702-v5.19-01-arm64-dts-mediatek-mt7622-add-support-for-coherent-D.patch

@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  			interface-type = "ace";
  			interface-type = "ace";
  			reg = <0x5000 0x1000>;
  			reg = <0x5000 0x1000>;
  		};
  		};
-@@ -937,6 +937,8 @@
+@@ -938,6 +938,8 @@
  		power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
  		power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
  		mediatek,ethsys = <&ethsys>;
  		mediatek,ethsys = <&ethsys>;
  		mediatek,sgmiisys = <&sgmiisys>;
  		mediatek,sgmiisys = <&sgmiisys>;

+ 3 - 3
target/linux/generic/backport-5.15/702-v5.19-04-arm64-dts-mediatek-mt7622-introduce-nodes-for-Wirele.patch

@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 
 
 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-@@ -893,6 +893,11 @@
+@@ -894,6 +894,11 @@
  		};
  		};
  	};
  	};
  
  
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	ethsys: syscon@1b000000 {
  	ethsys: syscon@1b000000 {
  		compatible = "mediatek,mt7622-ethsys",
  		compatible = "mediatek,mt7622-ethsys",
  			     "syscon";
  			     "syscon";
-@@ -911,6 +916,26 @@
+@@ -912,6 +917,26 @@
  		#dma-cells = <1>;
  		#dma-cells = <1>;
  	};
  	};
  
  
@@ -50,7 +50,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	eth: ethernet@1b100000 {
  	eth: ethernet@1b100000 {
  		compatible = "mediatek,mt7622-eth",
  		compatible = "mediatek,mt7622-eth",
  			     "mediatek,mt2701-eth",
  			     "mediatek,mt2701-eth",
-@@ -938,6 +963,9 @@
+@@ -939,6 +964,9 @@
  		mediatek,ethsys = <&ethsys>;
  		mediatek,ethsys = <&ethsys>;
  		mediatek,sgmiisys = <&sgmiisys>;
  		mediatek,sgmiisys = <&sgmiisys>;
  		mediatek,cci-control = <&cci_control2>;
  		mediatek,cci-control = <&cci_control2>;

+ 1 - 1
target/linux/generic/backport-5.15/702-v5.19-13-net-ethernet-mtk_eth_soc-use-standard-property-for-c.patch

@@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <[email protected]>
 
 
 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-@@ -962,7 +962,7 @@
+@@ -963,7 +963,7 @@
  		power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
  		power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
  		mediatek,ethsys = <&ethsys>;
  		mediatek,ethsys = <&ethsys>;
  		mediatek,sgmiisys = <&sgmiisys>;
  		mediatek,sgmiisys = <&sgmiisys>;

+ 2 - 2
target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch

@@ -17,7 +17,7 @@ Signed-off-by: Marcel Holtmann <[email protected]>
 
 
 --- a/drivers/bluetooth/btusb.c
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -2268,6 +2268,23 @@ struct btmtk_section_map {
+@@ -2272,6 +2272,23 @@ struct btmtk_section_map {
  	};
  	};
  } __packed;
  } __packed;
  
  
@@ -41,7 +41,7 @@ Signed-off-by: Marcel Holtmann <[email protected]>
  static void btusb_mtk_wmt_recv(struct urb *urb)
  static void btusb_mtk_wmt_recv(struct urb *urb)
  {
  {
  	struct hci_dev *hdev = urb->context;
  	struct hci_dev *hdev = urb->context;
-@@ -3919,6 +3936,7 @@ static int btusb_probe(struct usb_interf
+@@ -3923,6 +3940,7 @@ static int btusb_probe(struct usb_interf
  		hdev->shutdown = btusb_mtk_shutdown;
  		hdev->shutdown = btusb_mtk_shutdown;
  		hdev->manufacturer = 70;
  		hdev->manufacturer = 70;
  		hdev->cmd_timeout = btusb_mtk_cmd_timeout;
  		hdev->cmd_timeout = btusb_mtk_cmd_timeout;

+ 1 - 1
target/linux/generic/backport-5.15/822-v5.17-Bluetooth-btusb-Fix-application-of-sizeof-to-pointer.patch

@@ -18,7 +18,7 @@ Signed-off-by: Marcel Holtmann <[email protected]>
 
 
 --- a/drivers/bluetooth/btusb.c
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -2273,7 +2273,7 @@ static int btusb_set_bdaddr_mtk(struct h
+@@ -2277,7 +2277,7 @@ static int btusb_set_bdaddr_mtk(struct h
  	struct sk_buff *skb;
  	struct sk_buff *skb;
  	long ret;
  	long ret;
  
  

+ 1 - 1
target/linux/generic/backport-5.15/823-v5.18-Bluetooth-btusb-Add-a-new-PID-VID-13d3-3567-for-MT79.patch

@@ -58,7 +58,7 @@ Signed-off-by: Marcel Holtmann <[email protected]>
 
 
 --- a/drivers/bluetooth/btusb.c
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -460,6 +460,9 @@ static const struct usb_device_id blackl
+@@ -464,6 +464,9 @@ static const struct usb_device_id blackl
  	{ USB_DEVICE(0x13d3, 0x3564), .driver_info = BTUSB_MEDIATEK |
  	{ USB_DEVICE(0x13d3, 0x3564), .driver_info = BTUSB_MEDIATEK |
  						     BTUSB_WIDEBAND_SPEECH |
  						     BTUSB_WIDEBAND_SPEECH |
  						     BTUSB_VALID_LE_STATES },
  						     BTUSB_VALID_LE_STATES },

+ 1 - 1
target/linux/generic/backport-5.15/824-v5.19-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0c8-for-MT79.patch

@@ -56,7 +56,7 @@ Signed-off-by: Marcel Holtmann <[email protected]>
 
 
 --- a/drivers/bluetooth/btusb.c
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -451,6 +451,9 @@ static const struct usb_device_id blackl
+@@ -455,6 +455,9 @@ static const struct usb_device_id blackl
  						     BTUSB_VALID_LE_STATES },
  						     BTUSB_VALID_LE_STATES },
  
  
  	/* Additional MediaTek MT7921 Bluetooth devices */
  	/* Additional MediaTek MT7921 Bluetooth devices */

+ 1 - 1
target/linux/generic/backport-5.15/825-v6.1-Bluetooth-btusb-Add-a-new-VID-PID-0e8d-0608-for-MT79.patch

@@ -54,7 +54,7 @@ Signed-off-by: Luiz Augusto von Dentz <[email protected]>
 
 
 --- a/drivers/bluetooth/btusb.c
 --- a/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
 +++ b/drivers/bluetooth/btusb.c
-@@ -469,6 +469,9 @@ static const struct usb_device_id blackl
+@@ -473,6 +473,9 @@ static const struct usb_device_id blackl
  	{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |
  	{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |
  						     BTUSB_WIDEBAND_SPEECH |
  						     BTUSB_WIDEBAND_SPEECH |
  						     BTUSB_VALID_LE_STATES },
  						     BTUSB_VALID_LE_STATES },

+ 1 - 1
target/linux/generic/hack-5.15/721-net-add-packet-mangeling.patch

@@ -116,7 +116,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	help
  	help
 --- a/net/core/dev.c
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -3588,6 +3588,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3590,6 +3590,11 @@ static int xmit_one(struct sk_buff *skb,
  	if (dev_nit_active(dev))
  	if (dev_nit_active(dev))
  		dev_queue_xmit_nit(skb, dev);
  		dev_queue_xmit_nit(skb, dev);
  
  

+ 1 - 1
target/linux/generic/hack-5.15/902-debloat_proc.patch

@@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  
  
 --- a/net/core/sock.c
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -3857,6 +3857,8 @@ static __net_initdata struct pernet_oper
+@@ -3866,6 +3866,8 @@ static __net_initdata struct pernet_oper
  
  
  static int __init proto_init(void)
  static int __init proto_init(void)
  {
  {

+ 1 - 1
target/linux/generic/pending-5.15/103-kbuild-export-SUBARCH.patch

@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 
 
 --- a/Makefile
 --- a/Makefile
 +++ b/Makefile
 +++ b/Makefile
-@@ -527,7 +527,7 @@ KBUILD_LDFLAGS_MODULE :=
+@@ -534,7 +534,7 @@ KBUILD_LDFLAGS_MODULE :=
  KBUILD_LDFLAGS :=
  KBUILD_LDFLAGS :=
  CLANG_FLAGS :=
  CLANG_FLAGS :=
  
  

+ 3 - 3
target/linux/generic/pending-5.15/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch

@@ -202,7 +202,7 @@ Reported-by: Dan Carpenter <[email protected]>
  	return !!nor->params->erase_map.uniform_erase_type;
  	return !!nor->params->erase_map.uniform_erase_type;
  }
  }
  
  
-@@ -2391,6 +2393,7 @@ static int spi_nor_select_erase(struct s
+@@ -2400,6 +2402,7 @@ static int spi_nor_select_erase(struct s
  {
  {
  	struct spi_nor_erase_map *map = &nor->params->erase_map;
  	struct spi_nor_erase_map *map = &nor->params->erase_map;
  	const struct spi_nor_erase_type *erase = NULL;
  	const struct spi_nor_erase_type *erase = NULL;
@@ -210,7 +210,7 @@ Reported-by: Dan Carpenter <[email protected]>
  	struct mtd_info *mtd = &nor->mtd;
  	struct mtd_info *mtd = &nor->mtd;
  	u32 wanted_size = nor->info->sector_size;
  	u32 wanted_size = nor->info->sector_size;
  	int i;
  	int i;
-@@ -2423,8 +2426,9 @@ static int spi_nor_select_erase(struct s
+@@ -2432,8 +2435,9 @@ static int spi_nor_select_erase(struct s
  	 */
  	 */
  	for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
  	for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
  		if (map->erase_type[i].size) {
  		if (map->erase_type[i].size) {
@@ -222,7 +222,7 @@ Reported-by: Dan Carpenter <[email protected]>
  		}
  		}
  	}
  	}
  
  
-@@ -2432,6 +2436,9 @@ static int spi_nor_select_erase(struct s
+@@ -2441,6 +2445,9 @@ static int spi_nor_select_erase(struct s
  		return -EINVAL;
  		return -EINVAL;
  
  
  	mtd->erasesize = erase->size;
  	mtd->erasesize = erase->size;

+ 2 - 2
target/linux/generic/pending-5.15/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch

@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <[email protected]>
 
 
 --- a/drivers/mtd/ubi/build.c
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
-@@ -1184,6 +1184,73 @@ static struct mtd_info * __init open_mtd
+@@ -1191,6 +1191,73 @@ static struct mtd_info * __init open_mtd
  	return mtd;
  	return mtd;
  }
  }
  
  
@@ -82,7 +82,7 @@ Signed-off-by: Daniel Golle <[email protected]>
  static int __init ubi_init(void)
  static int __init ubi_init(void)
  {
  {
  	int err, i, k;
  	int err, i, k;
-@@ -1267,6 +1334,12 @@ static int __init ubi_init(void)
+@@ -1274,6 +1341,12 @@ static int __init ubi_init(void)
  		}
  		}
  	}
  	}
  
  

+ 1 - 1
target/linux/generic/pending-5.15/610-netfilter_match_bypass_default_checks.patch

@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  		for (i = sizeof(struct ipt_entry);
  		for (i = sizeof(struct ipt_entry);
  		     i < e->target_offset;
  		     i < e->target_offset;
  		     i += m->u.match_size) {
  		     i += m->u.match_size) {
-@@ -1223,12 +1260,15 @@ compat_copy_entry_to_user(struct ipt_ent
+@@ -1222,12 +1259,15 @@ compat_copy_entry_to_user(struct ipt_ent
  	compat_uint_t origsize;
  	compat_uint_t origsize;
  	const struct xt_entry_match *ematch;
  	const struct xt_entry_match *ematch;
  	int ret = 0;
  	int ret = 0;

+ 7 - 7
target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch

@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
  		cfg->fc_flags |= RTF_REJECT;
  		cfg->fc_flags |= RTF_REJECT;
  
  
  	if (rtm->rtm_type == RTN_LOCAL)
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -6300,6 +6331,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6301,6 +6332,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
  #endif
-@@ -6311,6 +6344,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6312,6 +6345,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  #endif
  	}
  	}
-@@ -6502,6 +6536,8 @@ static int __net_init ip6_route_net_init
+@@ -6503,6 +6537,8 @@ static int __net_init ip6_route_net_init
  
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	net->ipv6.fib6_has_custom_rules = false;
  	net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
  					       sizeof(*net->ipv6.ip6_prohibit_entry),
  					       sizeof(*net->ipv6.ip6_prohibit_entry),
  					       GFP_KERNEL);
  					       GFP_KERNEL);
-@@ -6512,11 +6548,21 @@ static int __net_init ip6_route_net_init
+@@ -6513,11 +6549,21 @@ static int __net_init ip6_route_net_init
  			 ip6_template_metrics, true);
  			 ip6_template_metrics, true);
  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
  
  
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
  			 ip6_template_metrics, true);
-@@ -6543,6 +6589,8 @@ out:
+@@ -6544,6 +6590,8 @@ out:
  	return ret;
  	return ret;
  
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
  out_ip6_prohibit_entry:
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
  out_ip6_null_entry:
-@@ -6562,6 +6610,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6563,6 +6611,7 @@ static void __net_exit ip6_route_net_exi
  	kfree(net->ipv6.ip6_null_entry);
  	kfree(net->ipv6.ip6_null_entry);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
  	kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
  	kfree(net->ipv6.ip6_blk_hole_entry);
  	kfree(net->ipv6.ip6_blk_hole_entry);
  #endif
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6645,6 +6694,9 @@ void __init ip6_route_init_special_entri
+@@ -6646,6 +6695,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);

+ 5 - 5
target/linux/generic/pending-5.15/680-NET-skip-GRO-for-foreign-MAC-addresses.patch

@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	__u8			inner_protocol_type:1;
  	__u8			inner_protocol_type:1;
 --- a/net/core/dev.c
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -6063,6 +6063,9 @@ static enum gro_result dev_gro_receive(s
+@@ -6065,6 +6065,9 @@ static enum gro_result dev_gro_receive(s
  	int same_flow;
  	int same_flow;
  	int grow;
  	int grow;
  
  
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	if (netif_elide_gro(skb->dev))
  	if (netif_elide_gro(skb->dev))
  		goto normal;
  		goto normal;
  
  
-@@ -8077,6 +8080,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -8079,6 +8082,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  					   &upper_dev->adj_list.lower);
  }
  }
  
  
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  static int __netdev_upper_dev_link(struct net_device *dev,
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   struct net_device *upper_dev, bool master,
  				   void *upper_priv, void *upper_info,
  				   void *upper_priv, void *upper_info,
-@@ -8128,6 +8173,7 @@ static int __netdev_upper_dev_link(struc
+@@ -8130,6 +8175,7 @@ static int __netdev_upper_dev_link(struc
  	if (ret)
  	if (ret)
  		return ret;
  		return ret;
  
  
@@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  					    &changeupper_info.info);
  					    &changeupper_info.info);
  	ret = notifier_to_errno(ret);
  	ret = notifier_to_errno(ret);
-@@ -8224,6 +8270,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -8226,6 +8272,7 @@ static void __netdev_upper_dev_unlink(st
  
  
  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
  
  
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  				      &changeupper_info.info);
  				      &changeupper_info.info);
  
  
-@@ -9043,6 +9090,7 @@ int dev_set_mac_address(struct net_devic
+@@ -9045,6 +9092,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  	if (err)
  		return err;
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;
  	dev->addr_assign_type = NET_ADDR_SET;

+ 1 - 1
target/linux/ipq806x/patches-5.15/110-01-thermal-qcom-tsens-init-debugfs-only-with-successful.patch

@@ -25,7 +25,7 @@ Acked-by: Thara Gopinath <[email protected]>
  err_put_device:
  err_put_device:
  	put_device(&op->dev);
  	put_device(&op->dev);
  	return ret;
  	return ret;
-@@ -1157,7 +1155,12 @@ static int tsens_probe(struct platform_d
+@@ -1163,7 +1161,12 @@ static int tsens_probe(struct platform_d
  		}
  		}
  	}
  	}
  
  

+ 1 - 1
target/linux/ipq807x/patches-5.15/0001-v5.16-arm64-dts-qcom-ipq8074-add-SPMI-bus.patch

@@ -15,7 +15,7 @@ Link: https://lore.kernel.org/r/[email protected]
 
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -293,6 +293,25 @@
+@@ -320,6 +320,25 @@
  			#reset-cells = <0x1>;
  			#reset-cells = <0x1>;
  		};
  		};
  
  

+ 1 - 1
target/linux/ipq807x/patches-5.15/0002-v5.16-arm64-dts-qcom-Update-BAM-DMA-node-name-per-DT-schem.patch

@@ -15,7 +15,7 @@ Link: https://lore.kernel.org/r/[email protected]
 
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -212,7 +212,7 @@
+@@ -239,7 +239,7 @@
  			status = "disabled";
  			status = "disabled";
  		};
  		};
  
  

+ 1 - 1
target/linux/ipq807x/patches-5.15/0003-v5.16-arm64-dts-qcom-ipq8074-Add-QUP5-I2C-node.patch

@@ -16,7 +16,7 @@ Link: https://lore.kernel.org/r/[email protected]
 
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -430,6 +430,21 @@
+@@ -457,6 +457,21 @@
  			status = "disabled";
  			status = "disabled";
  		};
  		};
  
  

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác