From 7cb231a546797bab45a976aba90ef38f321659a4 Mon Sep 17 00:00:00 2001 From: Pablo Greco Date: Apr 09 2023 12:10:05 +0000 Subject: Update to 6.1.8 --- diff --git a/.raspberrypi2.metadata b/.raspberrypi2.metadata index f84738d..6ff4780 100644 --- a/.raspberrypi2.metadata +++ b/.raspberrypi2.metadata @@ -1,3 +1,3 @@ -ac61f2459040c09af1d5abd4ed100c3d316b443e SOURCES/linux-5.15.tar.xz -07a0fcc5c81b542672eea7cb4de87ab3fbbe1fe3 SOURCES/b8a7365c70c68a85a52200cd84b94ea7332bce94.tar.gz -bf6af28b5d342790975e9a5a899e8a91b484b403 SOURCES/patch-5.15.80.xz +30996d7c1c59ddbd495bd9eb37c8dfdb1a67c1c3 SOURCES/linux-6.1.tar.xz +319f1807d96063d19ad3cd4bcad5459494711b30 SOURCES/52cf38d0ae55a8b7426e55974292a920265b7927.tar.gz +f5653345a39d854949a2287b9bf896304fa9d369 SOURCES/patch-6.1.8.xz diff --git a/SOURCES/bcm2709_selinux_config.patch b/SOURCES/bcm2709_selinux_config.patch index d844b92..60ae082 100644 --- a/SOURCES/bcm2709_selinux_config.patch +++ b/SOURCES/bcm2709_selinux_config.patch @@ -8,10 +8,10 @@ Subject: [PATCH 1/2] configs 2709 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 0267c16..3b92fcf 100644 +index 4b1f46c..537c622 100644 --- a/arch/arm/configs/bcm2709_defconfig +++ b/arch/arm/configs/bcm2709_defconfig -@@ -1523,8 +1523,6 @@ CONFIG_NLS_KOI8_R=m +@@ -1530,8 +1530,6 @@ CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m CONFIG_DLM=m CONFIG_SECURITY=y @@ -20,7 +20,7 @@ index 0267c16..3b92fcf 100644 CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_DES=y -@@ -1562,3 +1560,36 @@ CONFIG_IRQSOFF_TRACER=y +@@ -1569,3 +1567,38 @@ CONFIG_IRQSOFF_TRACER=y CONFIG_SCHED_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y # CONFIG_UPROBE_EVENTS is not set @@ -57,6 +57,8 @@ index 0267c16..3b92fcf 100644 +# CONFIG_WIREGUARD_DEBUG is not set +CONFIG_WIREGUARD=m +CONFIG_FW_LOADER_COMPRESS=y ++CONFIG_FW_LOADER_COMPRESS_XZ=y ++CONFIG_FW_LOADER_COMPRESS_ZSTD=y -- -2.18.4 +2.39.0 diff --git a/SOURCES/bcm2711_selinux_config.patch b/SOURCES/bcm2711_selinux_config.patch index 2c29515..cfc88b0 100644 --- a/SOURCES/bcm2711_selinux_config.patch +++ b/SOURCES/bcm2711_selinux_config.patch @@ -9,10 +9,10 @@ Subject: [PATCH 2/2] configs 2711 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig -index c457d1b..fc27e88 100644 +index d31636c..28e0bbd 100644 --- a/arch/arm/configs/bcm2711_defconfig +++ b/arch/arm/configs/bcm2711_defconfig -@@ -1549,8 +1549,6 @@ CONFIG_NLS_KOI8_R=m +@@ -1556,8 +1556,6 @@ CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m CONFIG_DLM=m CONFIG_SECURITY=y @@ -21,7 +21,7 @@ index c457d1b..fc27e88 100644 CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_DES=y -@@ -1588,3 +1586,36 @@ CONFIG_IRQSOFF_TRACER=y +@@ -1595,3 +1593,38 @@ CONFIG_IRQSOFF_TRACER=y CONFIG_SCHED_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y # CONFIG_UPROBE_EVENTS is not set @@ -58,11 +58,13 @@ index c457d1b..fc27e88 100644 +# CONFIG_WIREGUARD_DEBUG is not set +CONFIG_WIREGUARD=m +CONFIG_FW_LOADER_COMPRESS=y ++CONFIG_FW_LOADER_COMPRESS_XZ=y ++CONFIG_FW_LOADER_COMPRESS_ZSTD=y diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig -index 5e91594..f005eff 100644 +index 55e6082..b9acdbc 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig -@@ -1566,8 +1566,6 @@ CONFIG_NLS_KOI8_R=m +@@ -1573,8 +1573,6 @@ CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m CONFIG_DLM=m CONFIG_SECURITY=y @@ -71,7 +73,7 @@ index 5e91594..f005eff 100644 CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_AES=m -@@ -1607,3 +1605,37 @@ CONFIG_IRQSOFF_TRACER=y +@@ -1614,3 +1612,39 @@ CONFIG_IRQSOFF_TRACER=y CONFIG_SCHED_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y # CONFIG_UPROBE_EVENTS is not set @@ -109,6 +111,8 @@ index 5e91594..f005eff 100644 +CONFIG_WIREGUARD=m +CONFIG_BLK_DEV_RBD=m +CONFIG_FW_LOADER_COMPRESS=y ++CONFIG_FW_LOADER_COMPRESS_XZ=y ++CONFIG_FW_LOADER_COMPRESS_ZSTD=y -- -2.31.1 +2.39.0 diff --git a/SOURCES/rpi-6.1.x.patch b/SOURCES/rpi-6.1.x.patch index c0b13b9..9d72a0d 100644 --- a/SOURCES/rpi-6.1.x.patch +++ b/SOURCES/rpi-6.1.x.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Quinten Date: Fri, 18 Jun 2021 13:02:29 +0200 -Subject: [PATCH 001/545] Support RPi DPI interface in mode6 for 18-bit color +Subject: [PATCH 001/590] Support RPi DPI interface in mode6 for 18-bit color A matching media bus format was added and an overlay for using it, both with FB and VC4 was added as well. @@ -33,13 +33,13 @@ index 1f8f44b7b5a5..13f500fa23dd 100644 dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 19 May 2020 16:20:30 +0100 -Subject: [PATCH 002/545] drm/vc4: Add FKMS as an acceptable node for dma +Subject: [PATCH 002/590] drm/vc4: Add FKMS as an acceptable node for dma ranges. Under FKMS, the firmware (via FKMS) also requires the VideoCore cache @@ -66,13 +66,13 @@ index 8c329c071c62..5a1c2f3ded30 100644 { .compatible = "brcm,cygnus-v3d" }, { .compatible = "brcm,vc4-v3d" }, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 26 Oct 2020 12:38:27 +0000 -Subject: [PATCH 003/545] drm/vc4: Add the 2711 HVS as a suitable DMA node +Subject: [PATCH 003/590] drm/vc4: Add the 2711 HVS as a suitable DMA node With vc4-drv node not being under /soc on Pi4, we need to adopt the correct DMA parameters from a suitable sub-component. @@ -96,13 +96,13 @@ index 5a1c2f3ded30..f8053b591317 100644 { .compatible = "brcm,bcm2835-v3d" }, { .compatible = "brcm,cygnus-v3d" }, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 12 Feb 2021 17:31:37 +0000 -Subject: [PATCH 004/545] drm/vc4: Change the default DPI format to being +Subject: [PATCH 004/590] drm/vc4: Change the default DPI format to being 18bpp, not 24. DPI hasn't really been used up until now, so the default has @@ -136,13 +136,13 @@ index 13f500fa23dd..d45fe879a47f 100644 if (connector) { if (connector->display_info.num_bus_formats) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 16:30:55 +0000 -Subject: [PATCH 005/545] drm/atomic: Don't fixup modes that haven't been reset +Subject: [PATCH 005/590] drm/atomic: Don't fixup modes that haven't been reset Signed-off-by: Dave Stevenson --- @@ -150,7 +150,7 @@ Signed-off-by: Dave Stevenson 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c -index 98cc3137c062..be515b175800 100644 +index 02b4a7dc92f5..f3e59236a8ee 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -438,6 +438,11 @@ mode_fixup(struct drm_atomic_state *state) @@ -166,13 +166,13 @@ index 98cc3137c062..be515b175800 100644 * Each encoder has at most one connector (since we always steal * it away), so we won't call ->mode_fixup twice. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:07:30 +0200 -Subject: [PATCH 006/545] drm/vc4: Fix timings for VEC modes +Subject: [PATCH 006/590] drm/vc4: Fix timings for VEC modes This commit fixes vertical timings of the VEC (composite output) modes to accurately represent the 525-line ("NTSC") and 625-line ("PAL") ITU-R @@ -299,13 +299,13 @@ index 0108613e79d5..805ea659a997 100644 CRTC_WRITE(PV_HACT_ACT, mode->hdisplay * pixel_rep); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:07:53 +0200 -Subject: [PATCH 007/545] drm/vc4: Fix definition of PAL-M mode +Subject: [PATCH 007/590] drm/vc4: Fix definition of PAL-M mode PAL-M is a Brazilian analog TV standard that uses a PAL-style chroma subcarrier at 3.575611[888111] MHz on top of 525-line (480i60) timings. @@ -382,13 +382,13 @@ index 0b3333865702..de4dec160e72 100644 }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:07:58 +0200 -Subject: [PATCH 008/545] drm/vc4: Add support for more analog TV standards +Subject: [PATCH 008/590] drm/vc4: Add support for more analog TV standards Add support for the following composite output modes (all of them are somewhat more obscure than the previously defined ones): @@ -536,13 +536,13 @@ index de4dec160e72..edf73378bfe6 100644 static int vc4_vec_bind(struct device *dev, struct device *master, void *data) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:08:01 +0200 -Subject: [PATCH 009/545] drm/vc4: Allow setting the TV norm via module +Subject: [PATCH 009/590] drm/vc4: Allow setting the TV norm via module parameter Similar to the ch7006 and nouveau drivers, introduce a "tv_mode" module @@ -685,13 +685,13 @@ index edf73378bfe6..369a5e79676b 100644 + "\t\tDefault: PAL if a 50 Hz mode has been set via video=,\n" + "\t\t\tNTSC otherwise"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:08:05 +0200 -Subject: [PATCH 010/545] drm/vc4: Refactor mode checking logic +Subject: [PATCH 010/590] drm/vc4: Refactor mode checking logic Replace drm_encoder_helper_funcs::atomic_check with drm_connector_helper_funcs::atomic_check - the former is not called @@ -773,13 +773,13 @@ index 369a5e79676b..c613f930f079 100644 .atomic_enable = vc4_vec_encoder_enable, }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 7 Sep 2020 17:32:27 +0100 -Subject: [PATCH 011/545] drm/vc4: Add firmware-kms mode +Subject: [PATCH 011/590] drm/vc4: Add firmware-kms mode This is a squash of all firmware-kms related patches from previous branches, up to and including @@ -3269,13 +3269,13 @@ index 000000000000..e8d2b4b162f7 + VC_IMAGE_YUVINFO_CSC_REC_2020 = 9, +}; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 27 Apr 2021 14:24:21 +0200 -Subject: [PATCH 012/545] drm/vc4: Add support for gamma on BCM2711 +Subject: [PATCH 012/590] drm/vc4: Add support for gamma on BCM2711 BCM2711 changes from a 256 entry lookup table to a 16 point piecewise linear function as the pipeline bitdepth has increased @@ -3557,13 +3557,13 @@ index f0290fad991d..133845cb5c8a 100644 # define VC4_HDMI_SW_RESET_FORMAT_DETECT BIT(1) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 28 Apr 2021 12:32:10 +0200 -Subject: [PATCH 013/545] drm/vc4: Add debugfs node that dumps the vc5 gamma +Subject: [PATCH 013/590] drm/vc4: Add debugfs node that dumps the vc5 gamma PWL entries This helps with debugging the conversion from a 256 point gamma LUT to @@ -3685,13 +3685,13 @@ index 9e41f8c73abe..56237a9278ba 100644 vc4_hvs_debugfs_dlist, NULL); if (ret) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 14 Jun 2021 15:28:30 +0200 -Subject: [PATCH 014/545] drm/vc4: hvs: Force modeset on gamma lut change +Subject: [PATCH 014/590] drm/vc4: hvs: Force modeset on gamma lut change The HVS Gamma block can only be updated when idle, so we need to disable the HVS channel when the gamma property is set in an atomic commit. @@ -3800,13 +3800,13 @@ index 56237a9278ba..8d7cad62b8f0 100644 static void vc4_hvs_install_dlist(struct drm_crtc *crtc) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:08:08 +0200 -Subject: [PATCH 015/545] drm/vc4: Relax VEC modeline requirements and add +Subject: [PATCH 015/590] drm/vc4: Relax VEC modeline requirements and add progressive mode support Make vc4_vec_encoder_atomic_check() accept arbitrary modelines, as long @@ -3957,13 +3957,13 @@ index c613f930f079..e32a7b45b2b9 100644 .atomic_enable = vc4_vec_encoder_enable, }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:08:11 +0200 -Subject: [PATCH 016/545] drm/vc4: Make VEC progressive modes readily +Subject: [PATCH 016/590] drm/vc4: Make VEC progressive modes readily accessible Add predefined modelines for the 240p (NTSC) and 288p (PAL) progressive @@ -4129,13 +4129,13 @@ index e32a7b45b2b9..32ca0b3d1549 100644 if (crtc_state->adjusted_mode.crtc_clock != reference_mode->clock || crtc_state->adjusted_mode.crtc_htotal != reference_mode->htotal || -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 2 Nov 2021 16:01:36 +0000 -Subject: [PATCH 017/545] drm: Check whether the gamma lut has changed before +Subject: [PATCH 017/590] drm: Check whether the gamma lut has changed before updating drm_crtc_legacy_gamma_set updates the gamma_lut blob unconditionally, @@ -4165,13 +4165,13 @@ index d021497841b8..996f12438016 100644 crtc_state->color_mgmt_changed |= replaced; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 8 Nov 2021 17:32:45 +0000 -Subject: [PATCH 018/545] drm/vc4: Enable gamma block only when required. +Subject: [PATCH 018/590] drm/vc4: Enable gamma block only when required. With HVS5 the gamma block is now only reprogrammed with a disable/enable. Loading the table from vc4_hvs_init_channel @@ -4238,13 +4238,13 @@ index 8d7cad62b8f0..dd96b49febcd 100644 HVS_WRITE(SCALER_DISPBKGNDX(channel), dispbkgndx); } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 8 Nov 2021 18:25:49 +0000 -Subject: [PATCH 019/545] drm/vc4: Only add gamma properties once. +Subject: [PATCH 019/590] drm/vc4: Only add gamma properties once. Two calls were made to drm_crtc_enable_color_mgmt to add gamma and CTM, however they were both set to add the gamma properties, @@ -4270,13 +4270,13 @@ index 4ef12a598758..925970a53642 100644 /* Initialize the VC4 gamma LUTs */ for (i = 0; i < crtc->gamma_size; i++) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 10 Nov 2021 16:36:12 +0000 -Subject: [PATCH 020/545] drm/vc4: Validate the size of the gamma_lut +Subject: [PATCH 020/590] drm/vc4: Validate the size of the gamma_lut Add a check to vc4_hvs_gamma_check to ensure a new non-empty gamma LUT is of the correct length before accepting it. @@ -4308,13 +4308,13 @@ index dd96b49febcd..04ca9e9d308f 100644 if (!connector) return -EINVAL; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 13 Jan 2022 11:30:42 +0000 -Subject: [PATCH 021/545] drm/vc4: Disable Gamma control on HVS5 due to issues +Subject: [PATCH 021/590] drm/vc4: Disable Gamma control on HVS5 due to issues writing the table Still under investigation, but the conditions under which the HVS @@ -4350,13 +4350,13 @@ index 925970a53642..9655dffc1513 100644 if (!vc4->is_vc5) { /* We support CTM, but only for one CRTC at a time. It's therefore -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Apr 2020 16:12:02 +0100 -Subject: [PATCH 022/545] drm/vc4_hdmi: Add Broadcast RGB property to allow +Subject: [PATCH 022/590] drm/vc4_hdmi: Add Broadcast RGB property to allow override of RGB range Copy Intel's "Broadcast RGB" property semantics to add manual override @@ -4581,13 +4581,13 @@ index 1ad8e8c377e2..f57bfb13fc41 100644 struct vc4_hdmi_connector_state *vc4_conn_state); void vc4_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 31 Jan 2022 16:28:43 +0000 -Subject: [PATCH 023/545] drm/vc4: Add DRM 210101010 RGB formats for hvs5. +Subject: [PATCH 023/590] drm/vc4: Add DRM 210101010 RGB formats for hvs5. HVS5 supports the 210101010 RGB[A|X] formats, but they were missing from the DRM to HVS mapping list, so weren't available. @@ -4638,13 +4638,13 @@ index 8b92a45a3c89..004ff144ec70 100644 static const struct hvs_format *vc4_get_hvs_format(u32 drm_format) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Chris Morgan Date: Fri, 28 Jan 2022 17:39:54 -0600 -Subject: [PATCH 024/545] drm/vc4: dpi: Support DPI interface in mode3 for +Subject: [PATCH 024/590] drm/vc4: dpi: Support DPI interface in mode3 for RGB565 Add support for the VC4 DPI driver to utilize DPI mode 3. This is @@ -4675,13 +4675,13 @@ index d45fe879a47f..fdae02760b6d 100644 DRM_ERROR("Unknown media bus format %d\n", bus_format); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 1 Feb 2022 12:20:20 +0000 -Subject: [PATCH 025/545] drm/panel: Add and initialise an orientation field to +Subject: [PATCH 025/590] drm/panel: Add and initialise an orientation field to drm_panel Current usage of drm_connector_set_panel_orientation is from a panel's @@ -4774,13 +4774,13 @@ index 994bfcdd84c5..8ea3885cd93f 100644 * @list: * -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 14 Feb 2022 15:34:51 +0000 -Subject: [PATCH 026/545] drm/vc4: For DPI, MEDIA_BUS_FMT_RGB565_1X16 is mode +Subject: [PATCH 026/590] 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 @@ -4805,13 +4805,13 @@ index fdae02760b6d..a7bebfa5d5b0 100644 break; case MEDIA_BUS_FMT_RGB565_1X24_CPADHI: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 17 Dec 2021 13:36:52 +0000 -Subject: [PATCH 027/545] drm/dsi: Document the meaning and spec references for +Subject: [PATCH 027/590] drm/dsi: Document the meaning and spec references for MIPI_DSI_MODE_* The MIPI_DSI_MODE_* flags have fairly terse descriptions and no reference @@ -4887,13 +4887,13 @@ index 20b21b577dea..9b6cb0ef75f6 100644 /* transmit data ending at the same time for all lanes within one hsync */ #define MIPI_DSI_HS_PKT_END_ALIGNED BIT(12) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 20 Jan 2022 17:29:36 +0000 -Subject: [PATCH 028/545] drm/bridge: tc358762: Ignore EPROBE_DEFER when +Subject: [PATCH 028/590] drm/bridge: tc358762: Ignore EPROBE_DEFER when logging errors mipi_dsi_attach can fail due to resources not being available @@ -4918,13 +4918,13 @@ index 7f4fce1aa998..0adc4864beea 100644 return ret; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 30 Sep 2021 17:51:16 +0100 -Subject: [PATCH 029/545] drm/vc4: Rename bridge to out_bridge +Subject: [PATCH 029/590] drm/vc4: Rename bridge to out_bridge In preparation for converting the encoder to being a bridge, rename the variable holding the next bridge in the chain to @@ -4980,13 +4980,13 @@ index 878e05d79e81..d9d951e9ab7c 100644 return ret; /* Disable the atomic helper calls into the bridge. We -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 7 Feb 2022 17:14:51 +0000 -Subject: [PATCH 030/545] drm/vc4: Move DSI initialisation to encoder_mode_set. +Subject: [PATCH 030/590] drm/vc4: Move DSI initialisation to encoder_mode_set. Breaking the bridge chain does not work for atomic bridges/panels and generally causes issues. @@ -5050,13 +5050,13 @@ index d9d951e9ab7c..c1bdd903f1ad 100644 static int vc4_dsi_late_register(struct drm_encoder *encoder) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Dec 2021 17:44:49 +0000 -Subject: [PATCH 031/545] drm/vc4: Remove splitting the bridge chain from the +Subject: [PATCH 031/590] drm/vc4: Remove splitting the bridge chain from the driver. Splitting the bridge chain fails for atomic bridges as the @@ -5174,13 +5174,13 @@ index c1bdd903f1ad..9109bee6c7d2 100644 static int vc4_dsi_dev_probe(struct platform_device *pdev) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Dec 2021 17:47:14 +0000 -Subject: [PATCH 032/545] drm/vc4: Convert vc4_dsi to use atomic +Subject: [PATCH 032/590] drm/vc4: Convert vc4_dsi to use atomic enable/disable/mode_set. The atomic calls are preferred as the non-atomic ones @@ -5264,13 +5264,13 @@ index 9109bee6c7d2..4fd4b05d7530 100644 static int vc4_dsi_late_register(struct drm_encoder *encoder) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Dec 2021 17:57:45 +0000 -Subject: [PATCH 033/545] drm/vc4: Convert vc4_dsi to using a bridge instead of +Subject: [PATCH 033/590] drm/vc4: Convert vc4_dsi to using a bridge instead of encoder. Remove the encoder functions, and create a bridge attached to @@ -5536,13 +5536,13 @@ index 4fd4b05d7530..a7b8ffd995b0 100644 dsi->dsi_host.dev = dev; mipi_dsi_host_register(&dsi->dsi_host); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 11 Feb 2022 14:15:26 +0000 -Subject: [PATCH 034/545] drm/vc4: Remove entry to ULPS from vc4_dsi +Subject: [PATCH 034/590] drm/vc4: Remove entry to ULPS from vc4_dsi post_disable Post_disable was sending the D-PHY sequence to put any device @@ -5574,13 +5574,13 @@ index a7b8ffd995b0..4f3805528aa1 100644 clk_disable_unprepare(dsi->escape_clock); clk_disable_unprepare(dsi->pixel_clock); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 16 Dec 2021 15:25:35 +0000 -Subject: [PATCH 035/545] drm/bridge: Introduce pre_enable_upstream_first to +Subject: [PATCH 035/590] drm/bridge: Introduce pre_enable_upstream_first to alter bridge init order DSI sink devices typically want the DSI host powered up and configured @@ -5890,13 +5890,13 @@ index 6b65b0dfb4fb..8a5e03e4c264 100644 * @ddc: Associated I2C adapter for DDC access, if any. */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 23 Feb 2022 15:36:56 +0000 -Subject: [PATCH 036/545] drm/panel: Add prepare_upstream_first flag to +Subject: [PATCH 036/590] drm/panel: Add prepare_upstream_first flag to drm_panel Mapping to the drm_bridge flag pre_enable_upstream_first, @@ -5946,13 +5946,13 @@ index 8ea3885cd93f..81ea5e5b272e 100644 void drm_panel_init(struct drm_panel *panel, struct device *dev, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 11 Mar 2022 17:24:37 +0000 -Subject: [PATCH 037/545] drm: Include drm_connector.h from drm_panel.h +Subject: [PATCH 037/590] drm: Include drm_connector.h from drm_panel.h drm_panel.h wants to reference enum drm_panel_orientation which is defined in drm_connector.h (despite the name). @@ -5988,13 +5988,13 @@ index 81ea5e5b272e..451f88efcd1c 100644 * struct drm_panel_funcs - perform operations on a given panel * -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 16 Dec 2021 15:33:43 +0000 -Subject: [PATCH 038/545] drm/tc358762: Set the pre_enable_upstream_first flag +Subject: [PATCH 038/590] drm/tc358762: Set the pre_enable_upstream_first flag to configure DSI host TC358762 wants the DSI host to be prepared before it is powered up, so @@ -6019,13 +6019,13 @@ index 0adc4864beea..9914cfb05b11 100644 drm_bridge_add(&ctx->bridge); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 25 Jan 2022 17:28:18 +0000 -Subject: [PATCH 039/545] drm/vc4: Support zpos on all planes +Subject: [PATCH 039/590] drm/vc4: Support zpos on all planes Adds the zpos property to all planes, and creates the dlist by placing the fragments in the correct order based on zpos. @@ -6173,13 +6173,13 @@ index 004ff144ec70..f9a356da4b47 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 7 Mar 2022 15:19:38 +0000 -Subject: [PATCH 040/545] drm/vc4: hdmi: Add CSC for BT601/709/2020 limited and +Subject: [PATCH 040/590] drm/vc4: hdmi: Add CSC for BT601/709/2020 limited and full range output The HVS always composes in the RGB domain, but there is a colourspace @@ -6479,13 +6479,13 @@ index 2bc17f957762..6f9e3db0ceb0 100644 default: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 14 Mar 2022 17:56:10 +0000 -Subject: [PATCH 041/545] vc4/drm: vc4_plane: Keep fractional source coords +Subject: [PATCH 041/590] vc4/drm: vc4_plane: Keep fractional source coords inside state Signed-off-by: Dom Cobley @@ -6699,13 +6699,13 @@ index f9a356da4b47..137ab1c9321a 100644 /* Position Word 3: Context. Written by the HVS. */ vc4_dlist_write(vc4_state, 0xc0c0c0c0); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 9 Apr 2021 15:00:40 +0100 -Subject: [PATCH 042/545] vc4/drm: Handle fractional coordinates using the +Subject: [PATCH 042/590] vc4/drm: Handle fractional coordinates using the phase field Signed-off-by: Dom Cobley @@ -6810,13 +6810,13 @@ index 137ab1c9321a..bc54cc27d38a 100644 * is opaque or there is no per-pixel alpha information. * In any case we use the alpha property value as the fixed alpha. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 26 Jan 2022 15:58:13 +0000 -Subject: [PATCH 043/545] drm: Add chroma siting properties +Subject: [PATCH 043/590] drm: Add chroma siting properties Signed-off-by: Dom Cobley --- @@ -6994,13 +6994,13 @@ index 447e664e49d5..fba2bb6731df 100644 #define obj_to_plane(x) container_of(x, struct drm_plane, base) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 27 Jan 2022 15:32:04 +0000 -Subject: [PATCH 044/545] vc4/drm:plane: Make use of chroma siting parameter +Subject: [PATCH 044/590] vc4/drm:plane: Make use of chroma siting parameter Signed-off-by: Dom Cobley --- @@ -7060,13 +7060,13 @@ index bc54cc27d38a..474fe3f25077 100644 drm_plane_create_zpos_immutable_property(plane, 0); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 1 Apr 2022 11:31:38 +0100 -Subject: [PATCH 045/545] drm/vc4: Force trigger of dlist update on margins +Subject: [PATCH 045/590] drm/vc4: Force trigger of dlist update on margins change When the margins are changed, the dlist needs to be regenerated @@ -7126,13 +7126,13 @@ index 3be66ba8ecdd..a3d058d3c788 100644 unsigned long hvs_load; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Fri, 23 Oct 2020 14:39:23 +0200 -Subject: [PATCH 046/545] drm/atomic-helpers: remove legacy_cursor_update hacks +Subject: [PATCH 046/590] drm/atomic-helpers: remove legacy_cursor_update hacks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -7189,10 +7189,10 @@ Signed-off-by: Maxime Ripard 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c -index be515b175800..be892888cb48 100644 +index f3e59236a8ee..e8d77ab10389 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c -@@ -1616,13 +1616,6 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, +@@ -1608,13 +1608,6 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, int i, ret; unsigned int crtc_mask = 0; @@ -7206,7 +7206,7 @@ index be515b175800..be892888cb48 100644 for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) { if (!new_crtc_state->active) continue; -@@ -2273,12 +2266,6 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, +@@ -2265,12 +2258,6 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, continue; } @@ -7257,13 +7257,13 @@ index 1686fbb611fd..b3cfabebe5d6 100644 * Start timer if we don't already have an update pending * on this crtc: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 5 May 2022 18:50:04 +0100 -Subject: [PATCH 047/545] drm/vc4_hdmi: Force a modeset when Broadcast RGB +Subject: [PATCH 047/590] drm/vc4_hdmi: Force a modeset when Broadcast RGB setting changes Without this the change is not visible until the next modeset @@ -7296,13 +7296,13 @@ index 6f9e3db0ceb0..8871c60a7cd5 100644 struct drm_crtc_state *crtc_state; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 1 Apr 2022 17:10:37 +0100 -Subject: [PATCH 048/545] drm/atomic: If margins are updated, update all +Subject: [PATCH 048/590] drm/atomic: If margins are updated, update all planes. Margins may be implemented by scaling the planes, but as there @@ -7362,13 +7362,13 @@ index 4531f7441578..f6856df35093 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 6 Dec 2021 16:32:10 +0100 -Subject: [PATCH 049/545] drm/vc4: hvs: Ignore atomic_flush if we're disabled +Subject: [PATCH 049/590] drm/vc4: hvs: Ignore atomic_flush if we're disabled atomic_flush will be called for each CRTC even if they aren't enabled. @@ -7395,13 +7395,13 @@ index 9e599c32557d..c8da0af2f3c4 100644 DRM_INFO("CRTC %d HVS before:\n", drm_crtc_index(crtc)); vc4_hvs_dump_state(hvs); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 3 Jun 2022 16:45:10 +0100 -Subject: [PATCH 050/545] drm: vc4: Fix colour order for xRGB1555 on HVS5 +Subject: [PATCH 050/590] drm: vc4: Fix colour order for xRGB1555 on HVS5 Same as the xRGB8888 formats, HVS5 has managed to swap the colour channels for the xRGB1555 formats as well. Add the relevant @@ -7432,13 +7432,13 @@ index 474fe3f25077..d79505d7d8f9 100644 { .drm = DRM_FORMAT_RGB888, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 3 Jun 2022 16:49:09 +0100 -Subject: [PATCH 051/545] drm: vc4: 0 is a valid value for pixel_order_hvs5, so +Subject: [PATCH 051/590] drm: vc4: 0 is a valid value for pixel_order_hvs5, so fix conditionals vc4_plane_mode_set for HVS5 was using pixel_order unless pixel_order_hvs5 @@ -7556,13 +7556,13 @@ index d79505d7d8f9..6d9d31ed01bc 100644 VC4_SET_FIELD(tiling, SCALER_CTL0_TILING) | (vc4_state->is_unity ? -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 6 Jun 2022 12:23:28 +0100 -Subject: [PATCH 052/545] drm: vc4: Omit pixel_order from the hvs_format for +Subject: [PATCH 052/590] drm: vc4: Omit pixel_order from the hvs_format for hvs5 only formats pixel_order is used for the earlier versions of the HVS, so is @@ -7616,13 +7616,13 @@ index 6d9d31ed01bc..544653161146 100644 .hvs5_only = true, }, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 3 Jun 2022 16:57:04 +0100 -Subject: [PATCH 053/545] drm: vc4: Add 3:3:2 and 4:4:4:4 RGB/RGBX/RGBA formats +Subject: [PATCH 053/590] drm: vc4: Add 3:3:2 and 4:4:4:4 RGB/RGBX/RGBA formats The hardware supports the 332 8bpp and 4:4:4:4 16bpp formats, but the table of supported formats didn't include them. @@ -7726,13 +7726,13 @@ index 544653161146..2987bfd95c08 100644 case DRM_FORMAT_YVU422: case DRM_FORMAT_YUV420: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 6 Jun 2022 14:53:56 +0100 -Subject: [PATCH 054/545] drm: vc4: Add comments for which HVS_PIXEL_ORDER_xxx +Subject: [PATCH 054/590] drm: vc4: Add comments for which HVS_PIXEL_ORDER_xxx defines apply The HVS_PIXEL_ORDER_xxx defines apply to specific HVS_PIXEL_FORMAT_xxx @@ -7768,13 +7768,13 @@ index 133845cb5c8a..f9f4204b6e06 100644 #define HVS_PIXEL_ORDER_XYCRCB 1 #define HVS_PIXEL_ORDER_YXCBCR 2 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 1 Jul 2022 15:51:49 +0100 -Subject: [PATCH 055/545] drm/vc4: Correct interlaced timings again +Subject: [PATCH 055/590] drm/vc4: Correct interlaced timings again The back porch timings were correct, only the sync offset was wrong. Correct timing is now reported for 1080i and 576i, but the h offset is @@ -7806,13 +7806,13 @@ index 8871c60a7cd5..cd7e6243d919 100644 unsigned long flags; unsigned char gcp; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell <8911409+pelwell@users.noreply.github.com> Date: Wed, 24 Aug 2022 11:14:40 +0100 -Subject: [PATCH 056/545] drm/vc4: Add async update support for cursor planes +Subject: [PATCH 056/590] drm/vc4: Add async update support for cursor planes Now that cursors are implemented as regular planes, all cursor movements result in atomic updates. As the firmware-kms driver @@ -7899,13 +7899,13 @@ index 6856de434928..e7f56b3eb213 100644 static struct drm_plane *vc4_fkms_plane_init(struct drm_device *dev, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Aug 2022 13:49:16 +0100 -Subject: [PATCH 057/545] drm/vc4: Configure the HVS COB allocations +Subject: [PATCH 057/590] drm/vc4: Configure the HVS COB allocations The HVS Composite Output Buffer (COB) is the memory used to generate the output pixel data. @@ -8001,13 +8001,13 @@ index c8da0af2f3c4..419faffc4b85 100644 vc4_hvs_irq_handler, 0, "vc4 hvs", drm); if (ret) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Aug 2022 13:59:34 +0100 -Subject: [PATCH 058/545] drm/vc4: Set AXI panic modes for the HVS +Subject: [PATCH 058/590] drm/vc4: Set AXI panic modes for the HVS The HVS can change AXI request mode based on how full the COB FIFOs are. @@ -8064,13 +8064,13 @@ index f9f4204b6e06..3a2ae2daa698 100644 # define SCALER_DISPCTRL_DSP3_MUX_SHIFT 18 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Aug 2022 15:49:16 +0100 -Subject: [PATCH 059/545] drm/vc4: SCALER_DISPBKGND_AUTOHS is only valid on +Subject: [PATCH 059/590] drm/vc4: SCALER_DISPBKGND_AUTOHS is only valid on HVS4 The bit used for SCALER_DISPBKGND_AUTOHS in SCALER_DISPBKGNDX @@ -8141,13 +8141,13 @@ index 3a2ae2daa698..0aad6265e8cc 100644 # define SCALER_DISPBKGND_GAMMA BIT(29) # define SCALER_DISPBKGND_TESTMODE_MASK VC4_MASK(28, 25) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Aug 2022 15:52:28 +0100 -Subject: [PATCH 060/545] drm/vc4: Correct interrupt masking bit assignment for +Subject: [PATCH 060/590] drm/vc4: Correct interrupt masking bit assignment for HVS5 HVS5 has moved the interrupt enable bits around within the @@ -8282,13 +8282,13 @@ index 0aad6265e8cc..098173290411 100644 /* Enables interrupt generation on the enabled EOF/EOLN/EISLUR * bits and short frames.. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jul 2022 10:38:25 +0200 -Subject: [PATCH 061/545] drm/vc4: hvs: Skip DebugFS Registration for FKMS +Subject: [PATCH 061/590] drm/vc4: hvs: Skip DebugFS Registration for FKMS FKMS doesn't have an HVS and it's expected. Return from the debugfs init function immediately if we're running with fkms. @@ -8313,13 +8313,13 @@ index 23f8da10ea53..3d4bca723d85 100644 return -ENODEV; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 15 Aug 2022 13:34:02 +0200 -Subject: [PATCH 062/545] media: uapi: Add some RGB bus formats for VC4 DPI +Subject: [PATCH 062/590] media: uapi: Add some RGB bus formats for VC4 DPI output The VC4 DPI controller can output more RGB formats that aren't described @@ -8359,13 +8359,13 @@ index ec3323dbb927..d4228d038b54 100644 #define MEDIA_BUS_FMT_RGB666_1X7X3_SPWG 0x1010 #define MEDIA_BUS_FMT_BGR888_1X24 0x1013 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 7 Apr 2022 18:23:07 +0100 -Subject: [PATCH 063/545] raspberrypi-firmware: Update mailbox commands +Subject: [PATCH 063/590] raspberrypi-firmware: Update mailbox commands Signed-off-by: Dom Cobley --- @@ -8464,13 +8464,13 @@ index 811ea668c4a1..dd3bbc75e531 100644 int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, void *data, size_t len); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jul 2022 15:58:36 +0200 -Subject: [PATCH 064/545] clk: bcm: rpi: Create helper to retrieve private data +Subject: [PATCH 064/590] clk: bcm: rpi: Create helper to retrieve private data The RaspberryPi firmware clocks driver uses in several instances a container_of to retrieve the struct raspberrypi_clk_data from a pointer @@ -8540,13 +8540,13 @@ index 679f4649a7ef..b967c7b714db 100644 /* -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 6 Jun 2022 11:02:16 +0200 -Subject: [PATCH 065/545] arm64: setup: Fix build warning +Subject: [PATCH 065/590] arm64: setup: Fix build warning Signed-off-by: Maxime Ripard --- @@ -8570,13 +8570,13 @@ index fea3223704b6..a2dd48655bc4 100644 insert_resource(&iomem_resource, &kernel_data); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 -Subject: [PATCH 066/545] BCM2708: Add core Device Tree support +Subject: [PATCH 066/590] BCM2708: Add core Device Tree support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -46437,13 +46437,13 @@ index 3aa384cec76b..ed87353646bf 100644 # Bzip2 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 13 Apr 2015 17:16:29 +0100 -Subject: [PATCH 067/545] config: Add default configs +Subject: [PATCH 067/590] config: Add default configs --- arch/arm/configs/bcm2709_defconfig | 1557 +++++++++++++++++++++++++ @@ -54277,13 +54277,13 @@ index 000000000000..e089eb07e98e +CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_UPROBE_EVENTS is not set -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 12 Apr 2022 20:07:20 +0100 -Subject: [PATCH 068/545] clk-raspberrypi: Add ISP to exported clocks +Subject: [PATCH 068/590] clk-raspberrypi: Add ISP to exported clocks Signed-off-by: Dom Cobley --- @@ -54305,13 +54305,13 @@ index b967c7b714db..9c4af1e70cae 100644 .export = true, }, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Fri, 2 Sep 2016 16:45:27 +0100 -Subject: [PATCH 069/545] Register the clocks early during the boot process, so +Subject: [PATCH 069/590] Register the clocks early during the boot process, so that special/critical clocks can get enabled early on in the boot process avoiding the risk of disabling a clock, pll_divider or pll when a claiming driver fails to install propperly - maybe it needs to defer. @@ -54356,13 +54356,13 @@ index e74fe6219d14..1e629fa834bd 100644 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Feb 2017 17:20:08 +0000 -Subject: [PATCH 070/545] clk-bcm2835: Mark used PLLs and dividers CRITICAL +Subject: [PATCH 070/590] clk-bcm2835: Mark used PLLs and dividers CRITICAL The VPU configures and relies on several PLLs and dividers. Mark all enabled dividers and their PLLs as CRITICAL to prevent the kernel from @@ -54390,13 +54390,13 @@ index 1e629fa834bd..03e583d07702 100644 divider->data = divider_data; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Feb 2017 17:20:08 +0000 -Subject: [PATCH 071/545] clk-bcm2835: Add claim-clocks property +Subject: [PATCH 071/590] clk-bcm2835: Add claim-clocks property The claim-clocks property can be used to prevent PLLs and dividers from being marked as critical. It contains a vector of clock IDs, @@ -54514,13 +54514,13 @@ index 03e583d07702..b6cdb19ef059 100644 sizeof(cprman_parent_names)); of_clk_parent_fill(dev->of_node, cprman->real_parent_names, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 6 Mar 2017 09:06:18 +0000 -Subject: [PATCH 072/545] clk-bcm2835: Read max core clock from firmware +Subject: [PATCH 072/590] clk-bcm2835: Read max core clock from firmware The VPU is responsible for managing the core clock, usually under direction from the bcm2835-cpufreq driver but not via the clk-bcm2835 @@ -54635,13 +54635,13 @@ index b6cdb19ef059..406ac78b08a6 100644 for (i = 0; !of_property_read_u32_index(pdev->dev.of_node, "claim-clocks", -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 24 Jan 2019 15:09:28 +0000 -Subject: [PATCH 073/545] clk: clk-bcm2835: Use %zd when printing size_t +Subject: [PATCH 073/590] clk: clk-bcm2835: Use %zd when printing size_t The debug text for how many clocks have been registered uses "%d" with a size_t. Correct it to "%zd". @@ -54665,13 +54665,13 @@ index 406ac78b08a6..060a45a59b70 100644 return 0; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 23 Jan 2019 16:11:50 +0000 -Subject: [PATCH 074/545] clk-bcm2835: Don't wait for pllh lock +Subject: [PATCH 074/590] clk-bcm2835: Don't wait for pllh lock Signed-off-by: Phil Elwell --- @@ -54709,13 +54709,13 @@ index 060a45a59b70..a808f35b75b9 100644 cprman_write(cprman, data->a2w_ctrl_reg, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 2 May 2019 15:11:05 -0700 -Subject: [PATCH 075/545] clk: bcm2835: Add support for setting leaf clock +Subject: [PATCH 075/590] clk: bcm2835: Add support for setting leaf clock rates while running. As long as you wait for !BUSY, you can do glitch-free updates of clock @@ -54768,13 +54768,13 @@ index a808f35b75b9..bc029be289dc 100644 /* If the clock wasn't actually enabled at boot, it's not * critical. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 2 May 2019 15:24:04 -0700 -Subject: [PATCH 076/545] clk: bcm2835: Allow reparenting leaf clocks while +Subject: [PATCH 076/590] clk: bcm2835: Allow reparenting leaf clocks while they're running. This falls under the same "we can reprogram glitch-free as long as we @@ -54845,13 +54845,13 @@ index bc029be289dc..971f0ad84b6b 100644 /* If the clock wasn't actually enabled at boot, it's not * critical. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 6 Aug 2019 15:23:14 +0100 -Subject: [PATCH 077/545] clk-bcm2835: Avoid null pointer exception +Subject: [PATCH 077/590] clk-bcm2835: Avoid null pointer exception clk_desc_array[BCM2835_PLLB] doesn't exist so we dereference null when iterating @@ -54880,13 +54880,13 @@ index 971f0ad84b6b..3c59e5c29ec4 100644 return false; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 3 Sep 2019 20:28:00 +0100 -Subject: [PATCH 078/545] clk-bcm2835: Disable v3d clock +Subject: [PATCH 078/590] clk-bcm2835: Disable v3d clock This is controlled by firmware, see clk-raspberrypi.c @@ -54944,13 +54944,13 @@ index 3c59e5c29ec4..90e16822f1d5 100644 * VPU clock. This doesn't have an enable bit, since it drives * the bus for everything else, and is special so it doesn't need -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 8 Jul 2021 09:37:10 +0100 -Subject: [PATCH 079/545] clk: bcm2835: Pass DT node to rpi_firmware_get +Subject: [PATCH 079/590] clk: bcm2835: Pass DT node to rpi_firmware_get The fw_node pointer has already been retrieved, and using it allows us to remove a downstream patch to the firmware driver. @@ -54974,13 +54974,13 @@ index 90e16822f1d5..448c5fcedbdf 100644 return -EPROBE_DEFER; cprman->fw = fw; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 19 Oct 2021 14:14:55 +0100 -Subject: [PATCH 080/545] clk-bcm2835: Remove VEC clock support +Subject: [PATCH 080/590] clk-bcm2835: Remove VEC clock support Signed-off-by: Dom Cobley --- @@ -55014,13 +55014,13 @@ index 448c5fcedbdf..fdef9aa7401e 100644 [BCM2835_CLOCK_DSI0E] = REGISTER_PER_CLK( SOC_ALL, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dan Pasanen Date: Thu, 21 Sep 2017 09:55:42 -0500 -Subject: [PATCH 081/545] arm: partially revert +Subject: [PATCH 081/590] arm: partially revert 702b94bff3c50542a6e4ab9a4f4cef093262fe65 * Re-expose some dmi APIs for use in VCSM @@ -55125,13 +55125,13 @@ index e21249548e9f..33e4a9b8f1ba 100644 EXPORT_SYMBOL(cpu_cache); #endif -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 25 Aug 2017 19:18:13 +0100 -Subject: [PATCH 082/545] cache: export clean and invalidate +Subject: [PATCH 082/590] cache: export clean and invalidate hack: cache: Fix linker error --- @@ -55186,13 +55186,13 @@ index 7c9499b728c4..499e55bda16f 100644 sub r3, r2, #1 bic r0, r0, r3 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 20 Apr 2020 13:41:10 +0100 -Subject: [PATCH 083/545] Revert "spi: spidev: Fix CS polarity if GPIO +Subject: [PATCH 083/590] Revert "spi: spidev: Fix CS polarity if GPIO descriptors are used" This reverts commit 83b2a8fe43bda0c11981ad6afa5dd0104d78be28. @@ -55201,10 +55201,10 @@ This reverts commit 83b2a8fe43bda0c11981ad6afa5dd0104d78be28. 1 file changed, 5 deletions(-) diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index b2775d82d2d7..fc4c76513d2d 100644 +index 6313e7d0cdf8..cf21d9a5849f 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -403,7 +403,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +@@ -414,7 +414,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) else retval = get_user(tmp, (u32 __user *)arg); if (retval == 0) { @@ -55212,7 +55212,7 @@ index b2775d82d2d7..fc4c76513d2d 100644 u32 save = spi->mode; if (tmp & ~SPI_MODE_MASK) { -@@ -411,10 +410,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +@@ -422,10 +421,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) break; } @@ -55224,13 +55224,13 @@ index b2775d82d2d7..fc4c76513d2d 100644 spi->mode = tmp & SPI_MODE_USER_MASK; retval = spi_setup(spi); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 1 Mar 2021 09:12:44 +0000 -Subject: [PATCH 084/545] Revert "Bluetooth: Always request for user +Subject: [PATCH 084/590] Revert "Bluetooth: Always request for user confirmation for Just Works (LE SC)" This reverts commit ffee202a78c2980688bc5d2f7d56480e69a5e0c9. @@ -55275,13 +55275,13 @@ index 11f853d0500f..3efb60918dda 100644 hcon->dst_type, passkey, confirm_hint); if (err) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 1 Mar 2021 09:14:35 +0000 -Subject: [PATCH 085/545] Revert "Bluetooth: Always request for user +Subject: [PATCH 085/590] Revert "Bluetooth: Always request for user confirmation for Just Works" This reverts commit 92516cd97fd4d8ad5b1421a0d51771044f453a5f. @@ -55324,13 +55324,13 @@ index 3efb60918dda..6f555b3c96a6 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 7 Mar 2022 16:18:55 +0000 -Subject: [PATCH 086/545] Revert "net: bcmgenet: Request APD, DLL disable and +Subject: [PATCH 086/590] Revert "net: bcmgenet: Request APD, DLL disable and IDDQ-SR" This reverts commit c3a4c69360ab43560f212eed326c9d8bde35b14c, which @@ -55359,13 +55359,13 @@ index 7ded559842e8..948ef1dacdd3 100644 /* Communicate the integrated PHY revision */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Steve Glendinning Date: Thu, 19 Feb 2015 18:47:12 +0000 -Subject: [PATCH 087/545] smsx95xx: fix crimes against truesize +Subject: [PATCH 087/590] smsx95xx: fix crimes against truesize smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings. @@ -55412,13 +55412,13 @@ index 32d2c60d334d..7c817d9007c8 100644 usbnet_skb_return(dev, ax_skb); } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sam Nazarko Date: Fri, 1 Apr 2016 17:27:21 +0100 -Subject: [PATCH 088/545] smsc95xx: Experimental: Enable turbo_mode and +Subject: [PATCH 088/590] smsc95xx: Experimental: Enable turbo_mode and packetsize=2560 by default See: http://forum.kodi.tv/showthread.php?tid=285288 @@ -55461,13 +55461,13 @@ index 7c817d9007c8..89490cc451ac 100644 netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 -Subject: [PATCH 089/545] Allow mac address to be set in smsc95xx +Subject: [PATCH 089/590] Allow mac address to be set in smsc95xx Signed-off-by: popcornmix @@ -55566,13 +55566,13 @@ index 89490cc451ac..caebb97289ea 100644 eth_hw_addr_random(dev->net); netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 27 Nov 2017 17:14:54 +0000 -Subject: [PATCH 090/545] cgroup: Disable cgroup "memory" by default +Subject: [PATCH 090/590] cgroup: Disable cgroup "memory" by default Some Raspberry Pis have limited RAM and most users won't use the cgroup memory support so it is disabled by default. Enable with: @@ -55657,13 +55657,13 @@ index 2319946715e0..0bd2f8acde59 100644 static int __init enable_cgroup_debug(char *str) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 12:43:36 +0000 -Subject: [PATCH 091/545] Protect __release_resource against resources without +Subject: [PATCH 091/590] Protect __release_resource against resources without parents Without this patch, removing a device tree overlay can crash here. @@ -55691,13 +55691,13 @@ index 4c5e80b92f2f..4d4757cf89be 100644 for (;;) { tmp = *p; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 9 Feb 2017 14:33:30 +0000 -Subject: [PATCH 092/545] irq-bcm2836: Avoid "Invalid trigger warning" +Subject: [PATCH 092/590] irq-bcm2836: Avoid "Invalid trigger warning" Initialise the level for each IRQ to avoid a warning from the arm arch timer code. @@ -55721,13 +55721,13 @@ index 51491c3c6fdd..d8d61a136225 100644 return 0; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 12 Jun 2015 19:01:05 +0200 -Subject: [PATCH 093/545] irqchip: bcm2835: Add FIQ support +Subject: [PATCH 093/590] irqchip: bcm2835: Add FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -55856,13 +55856,13 @@ index e94e2882286c..c593c4020b61 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 23 Oct 2015 16:26:55 +0200 -Subject: [PATCH 094/545] irqchip: irq-bcm2835: Add 2836 FIQ support +Subject: [PATCH 094/590] irqchip: irq-bcm2835: Add 2836 FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -55961,13 +55961,13 @@ index c593c4020b61..71994904a3c7 100644 for (b = 0; b < NR_BANKS; b++) { for (i = 0; i < bank_irqs[b]; i++) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 24 Jan 2022 13:41:16 +0000 -Subject: [PATCH 095/545] spi: spidev: Completely disable the spidev warning +Subject: [PATCH 095/590] spi: spidev: Completely disable the spidev warning An alternative strategy would be to use "rpi,spidev" instead, but that would require many Raspberry Pi Device Tree changes. @@ -55978,10 +55978,10 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index fc4c76513d2d..332710e7f26a 100644 +index cf21d9a5849f..43b516bd104e 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -696,7 +696,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids); +@@ -707,7 +707,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids); */ static int spidev_of_check(struct device *dev) { @@ -55991,13 +55991,13 @@ index fc4c76513d2d..332710e7f26a 100644 dev_err(dev, "spidev listed directly in DT is not supported\n"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 3 Oct 2015 22:22:55 +0200 -Subject: [PATCH 096/545] dmaengine: bcm2835: Load driver early and support +Subject: [PATCH 096/590] dmaengine: bcm2835: Load driver early and support legacy API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -56100,13 +56100,13 @@ index 630dfbb01a40..bf7ba96a39f9 100644 MODULE_ALIAS("platform:bcm2835-dma"); MODULE_DESCRIPTION("BCM2835 DMA engine driver"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 15 Jun 2016 16:48:41 +0100 -Subject: [PATCH 097/545] rtc: Add SPI alias for pcf2123 driver +Subject: [PATCH 097/590] rtc: Add SPI alias for pcf2123 driver Without this alias, Device Tree won't cause the driver to be loaded. @@ -56126,13 +56126,13 @@ index e13b5e695d06..939a00c3dbc8 100644 MODULE_LICENSE("GPL"); +MODULE_ALIAS("spi:rtc-pcf2123"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 7 Oct 2016 16:50:59 +0200 -Subject: [PATCH 098/545] watchdog: bcm2835: Support setting reboot partition +Subject: [PATCH 098/590] watchdog: bcm2835: Support setting reboot partition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -56234,13 +56234,13 @@ index 94907176a0e4..58d5a1b89584 100644 static int bcm2835_wdt_probe(struct platform_device *pdev) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 Apr 2016 19:40:12 +0100 -Subject: [PATCH 099/545] reboot: Use power off rather than busy spinning when +Subject: [PATCH 099/590] reboot: Use power off rather than busy spinning when halt is requested --- @@ -56263,13 +56263,13 @@ index 3f0d5c3dae11..cfdbcc9826c0 100644 /* -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 9 Nov 2016 13:02:52 +0000 -Subject: [PATCH 100/545] bcm: Make RASPBERRYPI_POWER depend on PM +Subject: [PATCH 100/590] bcm: Make RASPBERRYPI_POWER depend on PM --- drivers/soc/bcm/Kconfig | 1 + @@ -56288,13 +56288,13 @@ index 24f92a6e882a..a6a705ec30c7 100644 help This enables support for the RPi power domains which can be enabled -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 6 Dec 2016 17:05:39 +0000 -Subject: [PATCH 101/545] bcm2835-rng: Avoid initialising if already enabled +Subject: [PATCH 101/590] bcm2835-rng: Avoid initialising if already enabled Avoids the 0x40000 cycles of warmup again if firmware has already used it --- @@ -56319,13 +56319,13 @@ index e98fcac578d6..cd1713c2d058 100644 return ret; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 9 Feb 2017 14:36:44 +0000 -Subject: [PATCH 102/545] sound: Demote deferral errors to INFO level +Subject: [PATCH 102/590] sound: Demote deferral errors to INFO level At present there is no mechanism to specify driver load order, which can lead to deferrals and repeated retries until successful. @@ -56360,13 +56360,13 @@ index a409fbed8f34..e6ba3df17ed8 100644 goto _err_defer; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Claggy3 Date: Sat, 11 Feb 2017 14:00:30 +0000 -Subject: [PATCH 103/545] Update vfpmodule.c +Subject: [PATCH 103/590] Update vfpmodule.c Christopher Alexander Tobias Schulze - May 2, 2015, 11:57 a.m. This patch fixes a problem with VFP state save and restore related @@ -56503,13 +56503,13 @@ index 2cb355c1b5b7..1e2dcf81aefa 100644 /* * Save the userland NEON/VFP state. Under UP, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Tue, 1 Nov 2016 15:15:41 +0100 -Subject: [PATCH 104/545] i2c: bcm2835: Add debug support +Subject: [PATCH 104/590] i2c: bcm2835: Add debug support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -56698,13 +56698,13 @@ index f72c6576d8a3..394282a37f67 100644 if (i2c_dev->msg_err & BCM2835_I2C_S_ERR) return -EREMOTEIO; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Jan 2018 16:52:45 +0000 -Subject: [PATCH 105/545] irqchip: irq-bcm2836: Remove regmap and syscon use +Subject: [PATCH 105/590] irqchip: irq-bcm2836: Remove regmap and syscon use The syscon node defines a register range that duplicates that used by the local_intc node on bcm2836/7. Since irq-bcm2835 and irq-bcm2836 are @@ -56818,13 +56818,13 @@ index d8d61a136225..f049397bd00d 100644 intc.domain = irq_domain_add_linear(node, LAST_IRQ + 1, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 17 Oct 2017 15:04:29 +0100 -Subject: [PATCH 106/545] lan78xx: Enable LEDs and auto-negotiation +Subject: [PATCH 106/590] lan78xx: Enable LEDs and auto-negotiation For applications of the LAN78xx that don't have valid programmed EEPROMs or OTPs, enabling both LEDs and auto-negotiation by default @@ -56873,13 +56873,13 @@ index f18ab8e220db..b342e26221c4 100644 if (ret < 0) return ret; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Feb 2016 17:26:48 +0000 -Subject: [PATCH 107/545] amba_pl011: Don't use DT aliases for numbering +Subject: [PATCH 107/590] amba_pl011: Don't use DT aliases for numbering The pl011 driver looks for DT aliases of the form "serial", and if found uses as the device ID. This can cause @@ -56891,10 +56891,10 @@ use the same logic. 1 file changed, 5 insertions(+) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 5cdced39eafd..2086ef61860b 100644 +index 0a1cc36f93aa..74bd00adbc27 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -2719,7 +2719,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, +@@ -2731,7 +2731,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, if (IS_ERR(base)) return PTR_ERR(base); @@ -56908,13 +56908,13 @@ index 5cdced39eafd..2086ef61860b 100644 uap->port.dev = dev; uap->port.mapbase = mmiobase->start; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 1 Mar 2017 16:07:39 +0000 -Subject: [PATCH 108/545] amba_pl011: Round input clock up +Subject: [PATCH 108/590] amba_pl011: Round input clock up The UART clock is initialised to be as close to the requested frequency as possible without exceeding it. Now that there is a @@ -56938,10 +56938,10 @@ Signed-off-by: Phil Elwell 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 2086ef61860b..71c6d9d0368d 100644 +index 74bd00adbc27..302749bb2470 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -1722,6 +1722,23 @@ static void pl011_put_poll_char(struct uart_port *port, +@@ -1725,6 +1725,23 @@ static void pl011_put_poll_char(struct uart_port *port, #endif /* CONFIG_CONSOLE_POLL */ @@ -56965,7 +56965,7 @@ index 2086ef61860b..71c6d9d0368d 100644 static int pl011_hwinit(struct uart_port *port) { struct uart_amba_port *uap = -@@ -1738,7 +1755,7 @@ static int pl011_hwinit(struct uart_port *port) +@@ -1741,7 +1758,7 @@ static int pl011_hwinit(struct uart_port *port) if (retval) return retval; @@ -56974,7 +56974,7 @@ index 2086ef61860b..71c6d9d0368d 100644 /* Clear pending error and receive interrupts */ pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS | -@@ -2420,7 +2437,7 @@ static int pl011_console_setup(struct console *co, char *options) +@@ -2432,7 +2449,7 @@ static int pl011_console_setup(struct console *co, char *options) plat->init(); } @@ -56983,7 +56983,7 @@ index 2086ef61860b..71c6d9d0368d 100644 if (uap->vendor->fixed_options) { baud = uap->fixed_baud; -@@ -2637,6 +2654,7 @@ static struct uart_driver amba_reg = { +@@ -2649,6 +2666,7 @@ static struct uart_driver amba_reg = { .cons = AMBA_CONSOLE, }; @@ -56991,7 +56991,7 @@ index 2086ef61860b..71c6d9d0368d 100644 static int pl011_probe_dt_alias(int index, struct device *dev) { struct device_node *np; -@@ -2668,6 +2686,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev) +@@ -2680,6 +2698,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev) return ret; } @@ -57000,13 +57000,13 @@ index 2086ef61860b..71c6d9d0368d 100644 /* unregisters the driver also if no more ports are left */ static void pl011_unregister_port(struct uart_amba_port *uap) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Sep 2017 10:32:19 +0100 -Subject: [PATCH 109/545] amba_pl011: Insert mb() for correct FIFO handling +Subject: [PATCH 109/590] amba_pl011: Insert mb() for correct FIFO handling The pl011 register accessor functions use the _relaxed versions of the standard readl() and writel() functions, meaning that there are no @@ -57021,10 +57021,10 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 71c6d9d0368d..9b566a21840a 100644 +index 302749bb2470..5d4e0bc232dc 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -1427,6 +1427,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, +@@ -1430,6 +1430,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, return false; /* unable to transmit character */ pl011_write(c, uap, REG_DR); @@ -57033,13 +57033,13 @@ index 71c6d9d0368d..9b566a21840a 100644 return true; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Sep 2017 10:32:19 +0100 -Subject: [PATCH 110/545] amba_pl011: Add cts-event-workaround DT property +Subject: [PATCH 110/590] amba_pl011: Add cts-event-workaround DT property The BCM2835 PL011 implementation seems to have a bug that can lead to a transmission lockup if CTS changes frequently. A workaround was added to @@ -57075,10 +57075,10 @@ index 80af72859876..116ebba0bb37 100644 - compatible - reg diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 9b566a21840a..70611b6f20e5 100644 +index 5d4e0bc232dc..7245c4a5db56 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -2817,6 +2817,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) +@@ -2829,6 +2829,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) if (IS_ERR(uap->clk)) return PTR_ERR(uap->clk); @@ -57091,13 +57091,13 @@ index 9b566a21840a..70611b6f20e5 100644 uap->vendor = vendor; uap->fifosize = vendor->get_fifosize(dev); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 29 Jan 2020 09:35:19 +0000 -Subject: [PATCH 111/545] tty: amba-pl011: Avoid rare write-when-full error +Subject: [PATCH 111/590] tty: amba-pl011: Avoid rare write-when-full error Under some circumstances on BCM283x processors data loss can be observed - a single byte missing from the TX output stream. These bytes @@ -57124,10 +57124,10 @@ Signed-off-by: Phil Elwell 1 file changed, 4 insertions(+) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 70611b6f20e5..41a90a12bbab 100644 +index 7245c4a5db56..6f92f581e18c 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c -@@ -1488,6 +1488,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) +@@ -1491,6 +1491,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) if (likely(from_irq) && count-- == 0) break; @@ -57139,13 +57139,13 @@ index 70611b6f20e5..41a90a12bbab 100644 break; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 -Subject: [PATCH 112/545] pinctrl-bcm2835: Set base to 0 give expected gpio +Subject: [PATCH 112/590] pinctrl-bcm2835: Set base to 0 give expected gpio numbering Signed-off-by: Noralf Tronnes @@ -57185,13 +57185,13 @@ index 7857e612a100..4d3de6ffb60c 100644 .can_sleep = false, .of_gpio_ranges_fallback = bcm2835_of_gpio_ranges_fallback, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 -Subject: [PATCH 113/545] Main bcm2708/bcm2709 linux port +Subject: [PATCH 113/590] Main bcm2708/bcm2709 linux port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -57347,13 +57347,13 @@ index fbfd0202047c..7e0d62fbc83e 100644 MODULE_AUTHOR("Lubomir Rintel "); MODULE_DESCRIPTION("BCM2835 mailbox IPC driver"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 -Subject: [PATCH 114/545] Add dwc_otg driver +Subject: [PATCH 114/590] Add dwc_otg driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -58544,10 +58544,10 @@ index 740342a2812a..30f8ce75fe1d 100644 return i; } diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index bbab424b0d55..2fb33a1c9d24 100644 +index 0aaaadb02cc6..bde789c766ec 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5578,7 +5578,7 @@ static void port_event(struct usb_hub *hub, int port1) +@@ -5581,7 +5581,7 @@ static void port_event(struct usb_hub *hub, int port1) port_dev->over_current_count++; port_over_current_notify(port_dev); @@ -118574,13 +118574,13 @@ index 000000000000..cdc9963176e5 +test_main(); +0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 17:06:34 +0100 -Subject: [PATCH 115/545] bcm2708 framebuffer driver +Subject: [PATCH 115/590] bcm2708 framebuffer driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -118682,7 +118682,7 @@ Signed-off-by: Dave Stevenson create mode 100644 drivers/video/fbdev/bcm2708_fb.c diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig -index cfc55273dc5d..88f01ac7ceb2 100644 +index 974e862cd20d..191a4a888a01 100644 --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig @@ -212,6 +212,20 @@ config FB_TILEBLITTING @@ -122135,13 +122135,13 @@ index 3c14e43b82fe..7626beb6a5bb 100644 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Thu, 14 Mar 2019 13:27:54 +0000 -Subject: [PATCH 116/545] Pulled in the multi frame buffer support from the Pi3 +Subject: [PATCH 116/590] Pulled in the multi frame buffer support from the Pi3 repo --- @@ -122918,13 +122918,13 @@ index 831e9a7b6818..f66957d48dc3 100644 static int __init bcm2708_fb_init(void) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 -Subject: [PATCH 117/545] fbdev: add FBIOCOPYAREA ioctl +Subject: [PATCH 117/590] fbdev: add FBIOCOPYAREA ioctl Based on the patch authored by Ali Gholami Rudi at https://lkml.org/lkml/2009/7/13/153 @@ -123265,13 +123265,13 @@ index 3a49913d006c..d9960887cf9e 100644 __u32 dx; /* screen-relative */ __u32 dy; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 -Subject: [PATCH 118/545] dmaengine: Add support for BCM2708 +Subject: [PATCH 118/590] dmaengine: Add support for BCM2708 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -123931,13 +123931,13 @@ index 000000000000..6ca874d332a8 + +#endif /* _PLAT_BCM2708_DMA_H */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 -Subject: [PATCH 119/545] MMC: added alternative MMC driver +Subject: [PATCH 119/590] MMC: added alternative MMC driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -125928,7 +125928,7 @@ index 6db35b1b8557..460bdf25ab74 100644 .reset = sdhci_reset, .set_uhs_signaling = sdhci_set_uhs_signaling, diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c -index c7ad32a75b57..d677bc095df8 100644 +index 632341911b6e..8502247010b2 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -40,7 +40,7 @@ @@ -125940,7 +125940,7 @@ index c7ad32a75b57..d677bc095df8 100644 #define MAX_TUNING_LOOP 40 -@@ -3228,7 +3228,7 @@ static void sdhci_timeout_timer(struct timer_list *t) +@@ -3233,7 +3233,7 @@ static void sdhci_timeout_timer(struct timer_list *t) spin_lock_irqsave(&host->lock, flags); if (host->cmd && !sdhci_data_line_cmd(host->cmd)) { @@ -125949,7 +125949,7 @@ index c7ad32a75b57..d677bc095df8 100644 mmc_hostname(host->mmc)); sdhci_err_stats_inc(host, REQ_TIMEOUT); sdhci_dumpregs(host); -@@ -3251,7 +3251,7 @@ static void sdhci_timeout_data_timer(struct timer_list *t) +@@ -3256,7 +3256,7 @@ static void sdhci_timeout_data_timer(struct timer_list *t) if (host->data || host->data_cmd || (host->cmd && sdhci_data_line_cmd(host->cmd))) { @@ -125972,13 +125972,13 @@ index c726ea781255..a228f33a1e69 100644 unsigned int erase_size; /* erase size in sectors */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 25 Mar 2015 17:49:47 +0000 -Subject: [PATCH 120/545] Adding bcm2835-sdhost driver, and an overlay to +Subject: [PATCH 120/590] Adding bcm2835-sdhost driver, and an overlay to enable it BCM2835 has two SD card interfaces. This driver uses the other one. @@ -128485,13 +128485,13 @@ index 000000000000..c29ef052425d +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Phil Elwell"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 28 Oct 2016 15:36:43 +0100 -Subject: [PATCH 121/545] vc_mem: Add vc_mem driver for querying firmware +Subject: [PATCH 121/590] vc_mem: Add vc_mem driver for querying firmware memory addresses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -128994,13 +128994,13 @@ index 000000000000..3c7079237496 + +#endif /* _VC_MEM_H */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Fri, 21 Aug 2015 23:14:48 +0100 -Subject: [PATCH 122/545] Add /dev/gpiomem device for rootless user GPIO access +Subject: [PATCH 122/590] Add /dev/gpiomem device for rootless user GPIO access Signed-off-by: Luke Wren @@ -129304,13 +129304,13 @@ index 000000000000..f5e7f1ba8fb6 +MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace"); +MODULE_AUTHOR("Luke Wren "); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:14:45 +0100 -Subject: [PATCH 123/545] Add SMI driver +Subject: [PATCH 123/590] Add SMI driver Signed-off-by: Luke Wren @@ -131298,13 +131298,13 @@ index 000000000000..ee3a75edfc03 + +#endif /* BCM2835_SMI_H */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 15:44:08 +0100 -Subject: [PATCH 124/545] Add Chris Boot's i2c driver +Subject: [PATCH 124/590] Add Chris Boot's i2c driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -131969,13 +131969,13 @@ index 000000000000..962f2e5c7455 +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 26 Jun 2015 14:27:06 +0200 -Subject: [PATCH 125/545] char: broadcom: Add vcio module +Subject: [PATCH 125/590] char: broadcom: Add vcio module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -132253,13 +132253,13 @@ index 000000000000..ac314617229c +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:rpi-vcio"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 26 Jun 2015 14:25:01 +0200 -Subject: [PATCH 126/545] firmware: bcm2835: Support ARCH_BCM270x +Subject: [PATCH 126/590] firmware: bcm2835: Support ARCH_BCM270x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -132284,7 +132284,7 @@ Signed-off-by: Noralf Trønnes 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index 4b8978b254f9..54619623fe86 100644 +index dba315f675bc..2ace1a4e4822 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -32,6 +32,8 @@ struct rpi_firmware { @@ -132296,7 +132296,7 @@ index 4b8978b254f9..54619623fe86 100644 static DEFINE_MUTEX(transaction_lock); static void response_callback(struct mbox_client *cl, void *msg) -@@ -279,6 +281,7 @@ static int rpi_firmware_probe(struct platform_device *pdev) +@@ -280,6 +282,7 @@ static int rpi_firmware_probe(struct platform_device *pdev) kref_init(&fw->consumers); platform_set_drvdata(pdev, fw); @@ -132304,7 +132304,7 @@ index 4b8978b254f9..54619623fe86 100644 rpi_firmware_print_firmware_revision(fw); rpi_register_hwmon_driver(dev, fw); -@@ -307,6 +310,7 @@ static int rpi_firmware_remove(struct platform_device *pdev) +@@ -308,6 +311,7 @@ static int rpi_firmware_remove(struct platform_device *pdev) rpi_clk = NULL; rpi_firmware_put(fw); @@ -132312,7 +132312,7 @@ index 4b8978b254f9..54619623fe86 100644 return 0; } -@@ -381,7 +385,18 @@ static struct platform_driver rpi_firmware_driver = { +@@ -382,7 +386,18 @@ static struct platform_driver rpi_firmware_driver = { .shutdown = rpi_firmware_shutdown, .remove = rpi_firmware_remove, }; @@ -132333,13 +132333,13 @@ index 4b8978b254f9..54619623fe86 100644 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("Raspberry Pi firmware driver"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 Feb 2015 13:50:57 +0000 -Subject: [PATCH 127/545] leds: Add the "input" trigger, for pwr_led +Subject: [PATCH 127/590] leds: Add the "input" trigger, for pwr_led The "input" trigger makes the associated GPIO an input. This is to support the Raspberry Pi PWR LED, which is driven by external hardware in normal use. @@ -132516,13 +132516,13 @@ index ba4861ec73d3..3f57ad16cefc 100644 /* set_brightness_work / blink_timer flags, atomic, private. */ unsigned long work_flags; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:54:08 +0100 -Subject: [PATCH 128/545] Added Device IDs for August DVB-T 205 +Subject: [PATCH 128/590] Added Device IDs for August DVB-T 205 --- drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 ++++ @@ -132544,13 +132544,13 @@ index 795a012d4020..adb1028d5f25 100644 &rtl28xxu_props, "Leadtek WinFast DTV Dongle mini", NULL) }, { DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 28 Nov 2016 16:50:04 +0000 -Subject: [PATCH 129/545] Improve __copy_to_user and __copy_from_user +Subject: [PATCH 129/590] Improve __copy_to_user and __copy_from_user performance Provide a __copy_from_user that uses memcpy. On BCM2708, use @@ -134192,13 +134192,13 @@ index 780704f29dd4..d3206a2a257b 100644 bool "Broadcom BCM7XXX based boards" depends on ARCH_MULTI_V7 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 25 Jun 2015 12:16:11 +0100 -Subject: [PATCH 130/545] gpio-poweroff: Allow it to work on Raspberry Pi +Subject: [PATCH 130/590] gpio-poweroff: Allow it to work on Raspberry Pi The Raspberry Pi firmware manages the power-down and reboot process. To do this it installs a pm_power_off handler, causing @@ -134233,13 +134233,13 @@ index 1c5af2fef142..3e670131f2a8 100644 "%s: pm_power_off function already registered\n", __func__); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 14:32:47 +0100 -Subject: [PATCH 131/545] mfd: Add Raspberry Pi Sense HAT core driver +Subject: [PATCH 131/590] mfd: Add Raspberry Pi Sense HAT core driver mfd: Add rpi_sense_core of compatible string --- @@ -134264,10 +134264,10 @@ mfd: Add rpi_sense_core of compatible string create mode 100644 include/linux/mfd/rpisense/joystick.h diff --git a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig -index 9dcf3f51f2dd..bed90ca1d680 100644 +index 04ca3d1c2816..a09e85199040 100644 --- a/drivers/input/joystick/Kconfig +++ b/drivers/input/joystick/Kconfig -@@ -411,4 +411,12 @@ config JOYSTICK_SENSEHAT +@@ -412,4 +412,12 @@ config JOYSTICK_SENSEHAT To compile this driver as a module, choose M here: the module will be called sensehat_joystick. @@ -134449,7 +134449,7 @@ index 000000000000..6a416769065d +MODULE_AUTHOR("Serge Schneider "); +MODULE_LICENSE("GPL"); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 8b93856de432..9a6b0ee1b877 100644 +index 9940e2724c05..b126bce1dc74 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -11,6 +11,14 @@ config MFD_CORE @@ -134650,7 +134650,7 @@ index 000000000000..084fa503c903 +MODULE_LICENSE("GPL"); + diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig -index 88f01ac7ceb2..79e714821318 100644 +index 191a4a888a01..edefe39d88e2 100644 --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig @@ -2251,6 +2251,19 @@ config FB_SM712 @@ -135117,13 +135117,13 @@ index 000000000000..56196dc2af10 + +#endif -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 25 Jan 2016 15:48:59 +0000 -Subject: [PATCH 132/545] Add support for all the downstream rpi sound card +Subject: [PATCH 132/590] Add support for all the downstream rpi sound card drivers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -152249,7 +152249,7 @@ index 000000000000..36b5b6c26655 +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c -index 767463e82665..c6cb2d620055 100644 +index 89059a673cf0..ad2866e05361 100644 --- a/sound/soc/codecs/pcm512x.c +++ b/sound/soc/codecs/pcm512x.c @@ -536,7 +536,7 @@ static unsigned long pcm512x_ncp_target(struct pcm512x_priv *pcm512x, @@ -152886,26 +152886,26 @@ index 26268ffb8274..fa2586fc5fdb 100644 /* * For devices with more than one control interface, we assume the diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c -index 0f4dd3503a6a..d4ea52810828 100644 +index 3d13fdf7590c..c9c12215b596 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c -@@ -2150,6 +2150,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { - QUIRK_FLAG_GENERIC_IMPLICIT_FB), - DEVICE_FLG(0x0525, 0xa4ad, /* Hamedal C20 usb camero */ +@@ -2154,6 +2154,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_IFACE_SKIP_CLOSE), + DEVICE_FLG(0x0ecb, 0x2069, /* JBL Quantum810 Wireless */ + QUIRK_FLAG_FIXED_RATE), + DEVICE_FLG(0x09da, 0x2695, /* A4Tech FHD 1080p webcam */ + QUIRK_FLAG_DISABLE_AUTOSUSPEND | QUIRK_FLAG_GET_SAMPLE_RATE), /* Vendor matches */ VENDOR_FLG(0x045e, /* MS Lifecam */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 21 Oct 2015 14:55:21 +0100 -Subject: [PATCH 133/545] rpi_display: add backlight driver and overlay +Subject: [PATCH 133/590] rpi_display: add backlight driver and overlay Add a mailbox-driven backlight controller for the Raspberry Pi DSI touchscreen display. Requires updated GPU firmware to recognise the @@ -153082,13 +153082,13 @@ index 000000000000..14a0d9b03739 +MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver"); +MODULE_LICENSE("GPL"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 23 Feb 2016 19:56:04 +0000 -Subject: [PATCH 134/545] bcm2835-virtgpio: Virtual GPIO driver +Subject: [PATCH 134/590] bcm2835-virtgpio: Virtual GPIO driver Add a virtual GPIO driver that uses the firmware mailbox interface to request that the VPU toggles LEDs. @@ -153361,13 +153361,13 @@ index 000000000000..55c40190e88a +MODULE_DESCRIPTION("brcmvirt GPIO driver"); +MODULE_ALIAS("platform:brcmvirt-gpio"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Pantelis Antoniou Date: Wed, 3 Dec 2014 13:23:28 +0200 -Subject: [PATCH 135/545] OF: DT-Overlay configfs interface +Subject: [PATCH 135/590] OF: DT-Overlay configfs interface This is a port of Pantelis Antoniou's v3 port that makes use of the new upstreamed configfs support for binary attributes. @@ -153779,13 +153779,13 @@ index 000000000000..ac04301dabe1 +} +late_initcall(of_cfs_init); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Cheong2K Date: Fri, 26 Feb 2016 18:20:10 +0800 -Subject: [PATCH 136/545] brcm: adds support for BCM43341 wifi +Subject: [PATCH 136/590] brcm: adds support for BCM43341 wifi brcmfmac: Disable power management @@ -153857,7 +153857,7 @@ index dfcfb3333369..11b45bc0e285 100644 err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, pm); if (err) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -index 74020fa10065..e0884c7e0c59 100644 +index 22344e68fd59..40d46f262b4e 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c @@ -59,7 +59,7 @@ static int brcmf_fcmode; @@ -153870,7 +153870,7 @@ index 74020fa10065..e0884c7e0c59 100644 MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index 465d95d83759..4d170815dabc 100644 +index e265a2e411a0..fba766873a33 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -611,6 +611,7 @@ BRCMF_FW_DEF(4329, "brcmfmac4329-sdio"); @@ -153891,13 +153891,13 @@ index 465d95d83759..4d170815dabc 100644 BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362), BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339), -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 17 Dec 2015 13:37:07 +0000 -Subject: [PATCH 137/545] hci_h5: Don't send conf_req when ACTIVE +Subject: [PATCH 137/590] hci_h5: Don't send conf_req when ACTIVE Without this patch, a modem and kernel can continuously bombard each other with conf_req and conf_rsp messages, in a demented game of tag. @@ -153906,7 +153906,7 @@ other with conf_req and conf_rsp messages, in a demented game of tag. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/hci_h5.c b/drivers/bluetooth/hci_h5.c -index c5a0409ef84f..b9b0bf79980c 100644 +index 6455bc4fb5bb..a006b12def07 100644 --- a/drivers/bluetooth/hci_h5.c +++ b/drivers/bluetooth/hci_h5.c @@ -357,7 +357,8 @@ static void h5_handle_internal_rx(struct hci_uart *hu) @@ -153920,13 +153920,13 @@ index c5a0409ef84f..b9b0bf79980c 100644 if (H5_HDR_LEN(hdr) > 2) h5->tx_win = (data[2] & 0x07); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Michael Zoran Date: Sat, 14 Jan 2017 21:43:57 -0800 -Subject: [PATCH 138/545] ARM64: Round-Robin dispatch IRQs between CPUs. +Subject: [PATCH 138/590] ARM64: Round-Robin dispatch IRQs between CPUs. IRQ-CPU mapping is round robined on ARM64 to increase concurrency and allow multiple interrupts to be serviced @@ -154000,13 +154000,13 @@ index f049397bd00d..ed7fdf27abfa 100644 .name = "bcm2836-gpu", .irq_mask = bcm2836_arm_irqchip_mask_gpu_irq, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Michael Zoran Date: Sat, 11 Feb 2017 01:18:31 -0800 -Subject: [PATCH 139/545] ARM64: Force hardware emulation of deprecated +Subject: [PATCH 139/590] ARM64: Force hardware emulation of deprecated instructions. --- @@ -154034,13 +154034,13 @@ index fb0e7c7b2e20..ac473d6dea78 100644 case INSN_OBSOLETE: insn->current_mode = INSN_UNDEF; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Tue, 14 Nov 2017 15:13:15 +0000 -Subject: [PATCH 140/545] AXI performance monitor driver (#2222) +Subject: [PATCH 140/590] AXI performance monitor driver (#2222) Uses the debugfs I/F to provide access to the AXI bus performance monitors. @@ -154736,13 +154736,13 @@ index 000000000000..5ae2bdaa88b4 +MODULE_LICENSE("GPL"); + -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Wed, 3 Jun 2015 12:26:13 +0200 -Subject: [PATCH 141/545] ARM: bcm2835: Set Serial number and Revision +Subject: [PATCH 141/590] ARM: bcm2835: Set Serial number and Revision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -154805,13 +154805,13 @@ index bfc556f76720..73ec2427fbcf 100644 .smp = smp_ops(bcm2836_smp_ops), MACHINE_END -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 16 Jul 2018 14:40:13 +0100 -Subject: [PATCH 142/545] dwc-otg: FIQ: Fix "bad mode in data abort handler" +Subject: [PATCH 142/590] dwc-otg: FIQ: Fix "bad mode in data abort handler" Create a semi-static mapping for the USB registers early in the boot process, before additional kernel threads are started, so all threads @@ -154927,13 +154927,13 @@ index 73ec2427fbcf..9b6c921106b5 100644 .dt_compat = bcm2835_compat, .smp = smp_ops(bcm2836_smp_ops), -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 Dec 2017 09:18:32 +0000 -Subject: [PATCH 143/545] ARM: Activate FIQs to avoid __irq_startup warnings +Subject: [PATCH 143/590] ARM: Activate FIQs to avoid __irq_startup warnings There is a new test in __irq_startup that the IRQ is activated, which hasn't been the case for FIQs since they bypass some of the usual setup. @@ -154969,13 +154969,13 @@ index 98ca3e3fa847..c3fe7d3cf482 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 20 Feb 2018 10:07:27 +0000 -Subject: [PATCH 144/545] i2c-gpio: Also set bus numbers from reg property +Subject: [PATCH 144/590] i2c-gpio: Also set bus numbers from reg property I2C busses can be assigned specific bus numbers using aliases in Device Tree - string properties where the name is the alias and the @@ -155010,13 +155010,13 @@ index b1985c1667e1..7ff74c018463 100644 if (ret) return ret; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: hdoverobinson Date: Tue, 13 Mar 2018 06:58:39 -0400 -Subject: [PATCH 145/545] added capture_clear option to pps-gpio via dtoverlay +Subject: [PATCH 145/590] added capture_clear option to pps-gpio via dtoverlay (#2433) --- @@ -155038,13 +155038,13 @@ index 2f4b11b4dfcd..b10b43538542 100644 if (IS_ERR(data->echo_pin)) return dev_err_probe(dev, PTR_ERR(data->echo_pin), -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 9 Mar 2018 12:01:00 +0000 -Subject: [PATCH 146/545] lan78xx: Read initial EEE status from DT +Subject: [PATCH 146/590] lan78xx: Read initial EEE status from DT Add two new DT properties: * microchip,eee-enabled - a boolean to enable EEE @@ -155084,13 +155084,13 @@ index b342e26221c4..3ccf48ccd08c 100644 if (dev->urb_intr) { ret = usb_submit_urb(dev->urb_intr, GFP_KERNEL); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 -Subject: [PATCH 147/545] hid: Reduce default mouse polling interval to 60Hz +Subject: [PATCH 147/590] hid: Reduce default mouse polling interval to 60Hz Reduces overhead when using X --- @@ -155122,13 +155122,13 @@ index be4c731aaa65..ffbe95c9a00d 100644 break; case HID_GD_JOYSTICK: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nick Bulleid Date: Thu, 10 May 2018 21:57:02 +0100 -Subject: [PATCH 148/545] Add ability to export gpio used by gpio-poweroff +Subject: [PATCH 148/590] Add ability to export gpio used by gpio-poweroff Signed-off-by: Nick Bulleid @@ -155224,13 +155224,13 @@ index 3e670131f2a8..e5dca66360a7 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sat, 12 May 2018 21:35:43 +0100 -Subject: [PATCH 149/545] firmware/raspberrypi: Notify firmware of a reboot +Subject: [PATCH 149/590] firmware/raspberrypi: Notify firmware of a reboot Register for reboot notifications, sending RPI_FIRMWARE_NOTIFY_REBOOT over the mailbox interface on reception. @@ -155241,7 +155241,7 @@ Signed-off-by: Phil Elwell 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index 54619623fe86..48d724aba308 100644 +index 2ace1a4e4822..11df82a893ef 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -12,6 +12,7 @@ @@ -155279,7 +155279,7 @@ index 54619623fe86..48d724aba308 100644 static void rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) { -@@ -386,15 +407,32 @@ static struct platform_driver rpi_firmware_driver = { +@@ -387,15 +408,32 @@ static struct platform_driver rpi_firmware_driver = { .remove = rpi_firmware_remove, }; @@ -155314,13 +155314,13 @@ index 54619623fe86..48d724aba308 100644 module_exit(rpi_firmware_exit); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 14 Jun 2018 11:21:04 +0100 -Subject: [PATCH 150/545] irqchip: irq-bcm2835: Calc. FIQ_START at boot-time +Subject: [PATCH 150/590] irqchip: irq-bcm2835: Calc. FIQ_START at boot-time ad83c7cb2f37 ("irqchip/irq-bcm2836: Add support for DT interrupt polarity") changed the way that the BCM2836/7 local interrupts are mapped; instead @@ -155386,13 +155386,13 @@ index ada3d9d2ed97..b91ce4b6a107 100644 return 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 13 Jun 2018 15:21:10 +0100 -Subject: [PATCH 151/545] net: lan78xx: Disable TCP Segmentation Offload (TSO) +Subject: [PATCH 151/590] net: lan78xx: Disable TCP Segmentation Offload (TSO) TSO seems to be having issues when packets are dropped and the remote end uses Selective Acknowledge (SACK) to denote that @@ -155448,13 +155448,13 @@ index 3ccf48ccd08c..dae2c83a861f 100644 if (DEFAULT_VLAN_RX_OFFLOAD) dev->net->features |= NETIF_F_HW_VLAN_CTAG_RX; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 20 Jun 2018 12:20:01 +0100 -Subject: [PATCH 152/545] brcmfmac: Re-enable firmware roaming support +Subject: [PATCH 152/590] brcmfmac: Re-enable firmware roaming support As of 4.18, a firmware that implements the update_connect_params method but doesn't claim to support roaming causes an error. We @@ -155470,7 +155470,7 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -index e0884c7e0c59..74020fa10065 100644 +index 40d46f262b4e..22344e68fd59 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c @@ -59,7 +59,7 @@ static int brcmf_fcmode; @@ -155483,13 +155483,13 @@ index e0884c7e0c59..74020fa10065 100644 MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 5 Apr 2018 14:46:11 +0100 -Subject: [PATCH 153/545] lan78xx: Move enabling of EEE into PHY init code +Subject: [PATCH 153/590] lan78xx: Move enabling of EEE into PHY init code Enable EEE mode as soon as possible after connecting to the PHY, and before phy_start. This avoids a second link negotiation, which speeds @@ -155553,13 +155553,13 @@ index dae2c83a861f..f7cea9e19498 100644 if (dev->urb_intr) { ret = usb_submit_urb(dev->urb_intr, GFP_KERNEL); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 17 Sep 2018 17:31:18 +0100 -Subject: [PATCH 154/545] cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 +Subject: [PATCH 154/590] cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with MEDIA_SUBDRV_AUTOSELECT --- @@ -155579,13 +155579,13 @@ index 4656afae5bb4..328ea94d14f9 100644 help Choose if you would like to have SPI interface support for Sony CXD2880. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Sat, 13 Oct 2018 13:31:21 +0200 -Subject: [PATCH 155/545] firmware: raspberrypi: Add backward compatible +Subject: [PATCH 155/590] firmware: raspberrypi: Add backward compatible get_throttled Avoid a hard userspace ABI change by adding a compatible get_throttled @@ -155599,7 +155599,7 @@ Signed-off-by: Stefan Wahren 1 file changed, 33 insertions(+) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index 48d724aba308..2a9edea7f0f1 100644 +index 11df82a893ef..24eeb1700ed7 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -31,6 +31,7 @@ struct rpi_firmware { @@ -155664,13 +155664,13 @@ index 48d724aba308..2a9edea7f0f1 100644 static void rpi_register_clk_driver(struct device *dev) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 6 Nov 2018 12:57:48 +0000 -Subject: [PATCH 156/545] sc16is7xx: Don't spin if no data received +Subject: [PATCH 156/590] sc16is7xx: Don't spin if no data received See: https://github.com/raspberrypi/linux/issues/2676 @@ -155693,13 +155693,13 @@ index 524921360ca7..222c705ccfcb 100644 /* CTSRTS interrupt comes only when CTS goes inactive */ case SC16IS7XX_IIR_CTSRTS_SRC: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ram Chandrasekar Date: Mon, 7 May 2018 11:54:08 -0600 -Subject: [PATCH 157/545] drivers: thermal: step_wise: add support for +Subject: [PATCH 157/590] drivers: thermal: step_wise: add support for hysteresis Step wise governor increases the mitigation level when the temperature @@ -155787,13 +155787,13 @@ index cdd3354bc27f..d5097e2cd6cc 100644 dev_dbg(&instance->cdev->device, "old_target=%d, target=%d\n", old_target, (int)instance->target); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 2 Oct 2018 11:14:15 +0100 -Subject: [PATCH 158/545] drivers: thermal: step_wise: avoid throttling at +Subject: [PATCH 158/590] drivers: thermal: step_wise: avoid throttling at hysteresis temperature after dropping below it Signed-off-by: Serge Schneider @@ -155815,13 +155815,13 @@ index d5097e2cd6cc..e68791e2667f 100644 trace_thermal_zone_trip(tz, trip, trip_type); } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Fri, 2 Nov 2018 11:55:49 +0000 -Subject: [PATCH 159/545] Update issue templates (#2736) +Subject: [PATCH 159/590] Update issue templates (#2736) --- .github/ISSUE_TEMPLATE/bug_report.md | 34 ++++++++++++++++++++++++++++ @@ -155869,13 +155869,13 @@ index 000000000000..09bdc4a96838 +**Additional context** +Add any other relevant context for the problem. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Nov 2018 19:46:58 +0000 -Subject: [PATCH 160/545] net: lan78xx: Support auto-downshift to 100Mb/s +Subject: [PATCH 160/590] net: lan78xx: Support auto-downshift to 100Mb/s Ethernet cables with faulty or missing pairs (specifically pairs C and D) allow auto-negotiation to 1000Mbs, but do not support the successful @@ -155970,13 +155970,13 @@ index 517288da19fd..626c450d71f4 100644 #define PHY_ARDENNES_MMD_DEV_3_PHY_CFG (0x806A) #define PHY_ARDENNES_MMD_DEV_3_PHY_CFG_ZD_DLY_EN_ (0x2000) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 10 Jan 2019 17:58:06 +0000 -Subject: [PATCH 161/545] firmware: raspberrypi: Report the fw variant during +Subject: [PATCH 161/590] firmware: raspberrypi: Report the fw variant during probe The driver already reported the firmware build date during probe. @@ -156000,7 +156000,7 @@ Signed-off-by: Dave Stevenson 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index 2a9edea7f0f1..2a7a0a9933d7 100644 +index 24eeb1700ed7..843a77a0aaf3 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -233,6 +233,15 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) @@ -156056,7 +156056,7 @@ index 2a9edea7f0f1..2a7a0a9933d7 100644 } static void -@@ -338,6 +375,7 @@ static int rpi_firmware_probe(struct platform_device *pdev) +@@ -339,6 +376,7 @@ static int rpi_firmware_probe(struct platform_device *pdev) g_pdev = pdev; rpi_firmware_print_firmware_revision(fw); @@ -156065,13 +156065,13 @@ index 2a9edea7f0f1..2a7a0a9933d7 100644 rpi_register_clk_driver(dev); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joshua Emele Date: Wed, 7 Nov 2018 16:07:40 -0800 -Subject: [PATCH 162/545] lan78xx: Debounce link events to minimize poll storm +Subject: [PATCH 162/590] lan78xx: Debounce link events to minimize poll storm The bInterval is set to 4 (i.e. 8 microframes => 1ms) and the only bit that the driver pays attention to is "link was reset". If there's a @@ -156116,13 +156116,13 @@ index f7cea9e19498..9a4a191f8f77 100644 buf = kmalloc(maxp, GFP_KERNEL); if (!buf) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 5 Mar 2019 09:51:22 +0000 -Subject: [PATCH 163/545] lan78xx: EEE support is now a PHY property +Subject: [PATCH 163/590] lan78xx: EEE support is now a PHY property Now that EEE support is a property of the PHY, use the PHY's DT node when querying the EEE-related properties. @@ -156148,13 +156148,13 @@ index 9a4a191f8f77..5a39deabe613 100644 struct ethtool_eee edata; memset(&edata, 0, sizeof(edata)); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 20 Jul 2018 22:03:41 +0100 -Subject: [PATCH 164/545] bcm2835-dma: Add support for per-channel flags +Subject: [PATCH 164/590] bcm2835-dma: Add support for per-channel flags Add the ability to interpret the high bits of the dreq specifier as flags to be included in the DMA_CS register. The motivation for this @@ -156202,36 +156202,29 @@ index bf7ba96a39f9..87b5d0bef355 100644 d = c->desc; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Fri, 29 Mar 2019 10:53:14 +0000 -Subject: [PATCH 165/545] rtc: rv3028: Add backup switchover mode support +Subject: [PATCH 165/590] rtc: rv3028: Add backup switchover mode support Signed-off-by: Phil Howard --- - drivers/rtc/rtc-rv3028.c | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) + drivers/rtc/rtc-rv3028.c | 45 +++++++++++++++++++++++++++++++++++----- + 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/drivers/rtc/rtc-rv3028.c b/drivers/rtc/rtc-rv3028.c -index dd170e3efd83..0150284d4880 100644 +index dd170e3efd83..14b701a00e6a 100644 --- a/drivers/rtc/rtc-rv3028.c +++ b/drivers/rtc/rtc-rv3028.c -@@ -85,6 +85,7 @@ - - #define RV3028_BACKUP_BSM_DSM 0x1 - #define RV3028_BACKUP_BSM_LSM 0x3 -+#define RV3028_BACKUP_BSM_MASK 0x0C - - #define OFFSET_STEP_PPT 953674 - -@@ -860,6 +861,7 @@ static int rv3028_probe(struct i2c_client *client) +@@ -860,6 +860,8 @@ static int rv3028_probe(struct i2c_client *client) struct rv3028_data *rv3028; int ret, status; u32 ohms; -+ u8 bsm; ++ u32 bsm; ++ u8 backup, backup_bits, backup_mask; struct nvmem_config nvmem_cfg = { .name = "rv3028_nvram", .word_size = 1, @@ -156239,16 +156232,16 @@ index dd170e3efd83..0150284d4880 100644 if (ret) return ret; ++ backup_bits = 0; ++ backup_mask = 0; ++ + /* setup backup switchover mode */ -+ if (!device_property_read_u8(&client->dev, "backup-switchover-mode", -+ &bsm)) { ++ if (!device_property_read_u32(&client->dev, ++ "backup-switchover-mode", ++ &bsm)) { + if (bsm <= 3) { -+ ret = regmap_update_bits(rv3028->regmap, RV3028_BACKUP, -+ RV3028_BACKUP_BSM_MASK, -+ (bsm & 0x03) << 2); -+ -+ if (ret) -+ return ret; ++ backup_bits |= (u8)(bsm << 2); ++ backup_mask |= RV3028_BACKUP_BSM; + } else { + dev_warn(&client->dev, "invalid backup switchover mode value\n"); + } @@ -156257,14 +156250,51 @@ index dd170e3efd83..0150284d4880 100644 /* setup trickle charger */ if (!device_property_read_u32(&client->dev, "trickle-resistor-ohms", &ohms)) { +@@ -936,13 +953,31 @@ static int rv3028_probe(struct i2c_client *client) + break; + + if (i < ARRAY_SIZE(rv3028_trickle_resistors)) { +- ret = rv3028_update_cfg(rv3028, RV3028_BACKUP, RV3028_BACKUP_TCE | +- RV3028_BACKUP_TCR_MASK, RV3028_BACKUP_TCE | i); +- if (ret) +- return ret; ++ backup_bits |= RV3028_BACKUP_TCE | i; ++ backup_mask |= RV3028_BACKUP_TCE | ++ RV3028_BACKUP_TCR_MASK; + } else { +- dev_warn(&client->dev, "invalid trickle resistor value\n"); ++ dev_warn(&client->dev, ++ "invalid trickle resistor value\n"); ++ } ++ } ++ ++ if (backup_mask) { ++ ret = rv3028_eeprom_read((void *)rv3028, RV3028_BACKUP, ++ (void *)&backup, 1); ++ /* Write register and EEPROM if needed */ ++ if (!ret && (backup & backup_mask) != backup_bits) { ++ backup = (backup & ~backup_mask) | backup_bits; ++ ret = rv3028_update_cfg(rv3028, RV3028_BACKUP, ++ backup_mask, backup_bits); + } ++ ++ /* In the event of an EEPROM failure, just update the register */ ++ if (ret) ++ ret = regmap_update_bits(rv3028->regmap, RV3028_BACKUP, ++ backup_mask, backup_bits); ++ if (ret) ++ return ret; + } + + ret = rtc_add_group(rv3028->rtc, &rv3028_attr_group); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:56:59 +0000 -Subject: [PATCH 166/545] media: tc358743: Increase FIFO level to 374. +Subject: [PATCH 166/590] media: tc358743: Increase FIFO level to 374. The existing fixed value of 16 worked for UYVY 720P60 over 2 lanes at 594MHz, or UYVY 1080P60 over 4 lanes. (RGB888 @@ -156295,13 +156325,13 @@ index 200841c1f5cf..76503a00772b 100644 * The PLL input clock is obtained by dividing refclk by pll_prd. * It must be between 6 MHz and 40 MHz, lower frequency is better. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:21 +0000 -Subject: [PATCH 167/545] media: tc358743: Add support for 972Mbit/s link freq. +Subject: [PATCH 167/590] media: tc358743: Add support for 972Mbit/s link freq. Adds register setups for running the CSI lanes at 972Mbit/s, which allows 1080P50 UYVY down 2 lanes. @@ -156380,13 +156410,13 @@ index 76503a00772b..17254fe6283a 100644 state->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:34 +0000 -Subject: [PATCH 168/545] media: tc358743: Check I2C succeeded during probe. +Subject: [PATCH 168/590] media: tc358743: Check I2C succeeded during probe. The probe for the TC358743 reads the CHIPID register from the device and compares it to the expected value of 0. @@ -156484,13 +156514,13 @@ index 17254fe6283a..60708532e042 100644 client->addr << 1); return -ENODEV; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:46 +0000 -Subject: [PATCH 169/545] media: adv7180: Default to the first valid input +Subject: [PATCH 169/590] media: adv7180: Default to the first valid input The hardware default is differential CVBS on AIN1 & 2, which isn't very useful. @@ -156535,13 +156565,13 @@ index 216fe396973f..88af88f16c42 100644 mutex_unlock(&state->mutex); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:56 +0000 -Subject: [PATCH 170/545] media: adv7180: Add YPrPb support for ADV7282M +Subject: [PATCH 170/590] media: adv7180: Add YPrPb support for ADV7282M The ADV7282M can support YPbPr on AIN1-3, but this was not selectable from the driver. Add it to the list of @@ -156565,13 +156595,13 @@ index 88af88f16c42..2aa29616081f 100644 BIT(ADV7182_INPUT_DIFF_CVBS_AIN3_AIN4) | BIT(ADV7182_INPUT_DIFF_CVBS_AIN7_AIN8), -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:58:08 +0000 -Subject: [PATCH 171/545] media: videodev2: Add helper defines for printing +Subject: [PATCH 171/590] media: videodev2: Add helper defines for printing FOURCCs New helper defines that allow printing of a FOURCC using @@ -156599,13 +156629,13 @@ index 29da1f4b4578..2b5f166b1ce7 100644 * E N U M S */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:59:06 +0000 -Subject: [PATCH 172/545] dt-bindings: Document BCM283x CSI2/CCP2 receiver +Subject: [PATCH 172/590] dt-bindings: Document BCM283x CSI2/CCP2 receiver Document the DT bindings for the CSI2/CCP2 receiver peripheral (known as Unicam) on BCM283x SoCs. @@ -156709,13 +156739,13 @@ index 000000000000..7714fb374b34 + }; + }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:59:40 +0000 -Subject: [PATCH 173/545] MAINTAINERS: Add entry for BCM2835 Unicam driver +Subject: [PATCH 173/590] MAINTAINERS: Add entry for BCM2835 Unicam driver Adds entry for the new BCM2835 Unicam (CSI-2 receiver) driver @@ -156725,7 +156755,7 @@ Signed-off-by: Dave Stevenson 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS -index 886d3f69ee64..60e865a1d7e0 100644 +index d4822ae39e39..8ec7a1974da3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4030,6 +4030,13 @@ N: bcm113* @@ -156743,13 +156773,13 @@ index 886d3f69ee64..60e865a1d7e0 100644 M: Hauke Mehrtens M: RafaÅ‚ MiÅ‚ecki -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 22 Nov 2018 17:31:06 +0000 -Subject: [PATCH 174/545] media: tc358743: Return an appropriate colorspace +Subject: [PATCH 174/590] media: tc358743: Return an appropriate colorspace from tc358743_set_fmt When calling tc358743_set_fmt, the code was calling tc358743_get_fmt @@ -156847,13 +156877,13 @@ index 60708532e042..69127833f4c7 100644 return 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 29 Oct 2018 16:20:46 +0000 -Subject: [PATCH 175/545] staging: mmal-vchiq: Avoid use of bool in structures +Subject: [PATCH 175/590] staging: mmal-vchiq: Avoid use of bool in structures Fixes up a checkpatch error "Avoid using bool structure members because of possible alignment issues". @@ -156877,13 +156907,13 @@ index cb921c94996a..17f8ceda87ca 100644 mutex_unlock(&instance->vchiq_mutex); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 24 Sep 2018 18:15:38 +0100 -Subject: [PATCH 176/545] staging: mmal-vchiq: Add support for event callbacks. +Subject: [PATCH 176/590] staging: mmal-vchiq: Add support for event callbacks. (Preparation for the codec driver). The codec uses the event mechanism to report things such as @@ -157245,13 +157275,13 @@ index 6006e29232b3..e3ecd70b9951 100644 struct vchiq_mmal_component { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 24 Sep 2018 18:26:02 +0100 -Subject: [PATCH 177/545] staging: vc04_services: Support sending data to MMAL +Subject: [PATCH 177/590] staging: vc04_services: Support sending data to MMAL ports Add the ability to send data to ports. This only supports @@ -157293,13 +157323,13 @@ index c2867f98afe5..f5bdd991721d 100644 /* clear buffer type specific data */ memset(&m.u.buffer_from_host.buffer_header_type_specific, 0, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 29 Oct 2018 17:57:45 +0000 -Subject: [PATCH 178/545] media: videobuf2: Allow exporting of a struct dmabuf +Subject: [PATCH 178/590] media: videobuf2: Allow exporting of a struct dmabuf videobuf2 only allowed exporting a dmabuf as a file descriptor, but there are instances where having the struct dma_buf is @@ -157384,13 +157414,13 @@ index 3253bd2f6fee..caf574d26288 100644 * vb2_core_expbuf() - Export a buffer as a file descriptor. * @q: pointer to &struct vb2_queue with videobuf2 queue. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 22 Jan 2019 12:04:09 +0000 -Subject: [PATCH 179/545] staging: mmal-vchiq: Fix client_component for 64 bit +Subject: [PATCH 179/590] staging: mmal-vchiq: Fix client_component for 64 bit kernel The MMAL client_component field is used with the event @@ -157425,13 +157455,13 @@ index f5bdd991721d..94ec3c2c342a 100644 struct mmal_msg_context *msg_context; u32 port_num = msg->u.event_to_host.port_num; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 13 Feb 2019 12:33:29 +0000 -Subject: [PATCH 180/545] staging: mmal_vchiq: Add in the Bayer encoding +Subject: [PATCH 180/590] staging: mmal_vchiq: Add in the Bayer encoding formats The list of formats was copied before Bayer support was added. @@ -157482,13 +157512,13 @@ index e15ae7b24f73..feca1c3d8878 100644 */ #define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E', 'G', 'L', 'I') -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 18 Feb 2019 15:52:29 +0000 -Subject: [PATCH 181/545] staging: mmal-vchiq: Update mmal_parameters.h with +Subject: [PATCH 181/590] staging: mmal-vchiq: Update mmal_parameters.h with recently defined params mmal_parameters.h hasn't been updated to reflect additions made @@ -157544,13 +157574,13 @@ index a0cdd28101f2..33f4179d7712 100644 /** Valid mirror modes */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 1 May 2019 13:27:23 +0100 -Subject: [PATCH 182/545] staging: mmal-vchiq: Free the event context for +Subject: [PATCH 182/590] staging: mmal-vchiq: Free the event context for control ports vchiq_mmal_component_init calls init_event_context for the @@ -157578,13 +157608,13 @@ index 94ec3c2c342a..34f6ca423c7b 100644 return ret; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 2 May 2019 15:50:01 +0100 -Subject: [PATCH 183/545] staging: mmal-vchiq: Fix memory leak in error path +Subject: [PATCH 183/590] staging: mmal-vchiq: Fix memory leak in error path On error, vchiq_mmal_component_init could leave the event context allocated for ports. @@ -157660,13 +157690,13 @@ index 34f6ca423c7b..22ddd0c7d1db 100644 mutex_unlock(&instance->vchiq_mutex); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 12 Jun 2019 17:15:05 +0100 -Subject: [PATCH 184/545] w1: w1-gpio: Make GPIO an output for strong pullup +Subject: [PATCH 184/590] w1: w1-gpio: Make GPIO an output for strong pullup The logic to drive the data line high to implement a strong pullup assumed that the pin was already an output - setting a value does @@ -157693,13 +157723,13 @@ index d4632aace402..4832cd8c2596 100644 /* * This will simply set the line as input since we are doing -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 20 Feb 2019 08:49:39 +0000 -Subject: [PATCH 185/545] arm: bcm2835: Fix FIQ early ioremap +Subject: [PATCH 185/590] arm: bcm2835: Fix FIQ early ioremap The ioremapping creates mappings within the vmalloc area. The equivalent early function, create_mapping, now checks that the @@ -157772,13 +157802,13 @@ index 9b6c921106b5..9bd9842da59f 100644 /* Now search for bcm2708-usb node in device tree */ of_scan_flat_dt(bcm2835_map_usb, &p2b_offset); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 29 May 2019 15:47:42 +0100 -Subject: [PATCH 186/545] arm: bcm2835: DMA can only address 1GB +Subject: [PATCH 186/590] arm: bcm2835: DMA can only address 1GB The legacy peripherals can only address the first gigabyte of RAM, so ensure that DMA allocations are restricted to that region. @@ -157803,13 +157833,13 @@ index 9bd9842da59f..7d59a9364175 100644 .init_machine = bcm2835_init, .dt_compat = bcm2835_compat, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Sat, 4 May 2019 17:06:15 +0200 -Subject: [PATCH 187/545] hwrng: iproc-rng200: Add BCM2838 support +Subject: [PATCH 187/590] hwrng: iproc-rng200: Add BCM2838 support The HWRNG on the BCM2838 is compatible to iproc-rng200, so add the support to this driver instead of bcm2835-rng. @@ -157964,13 +157994,13 @@ index 06bc060534d8..eb9cca3de7a9 100644 ret = devm_hwrng_register(dev, &priv->rng); if (ret) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 12 Sep 2018 14:44:53 +0100 -Subject: [PATCH 188/545] bcmgenet: constrain max DMA burst length +Subject: [PATCH 188/590] bcmgenet: constrain max DMA burst length --- drivers/net/ethernet/broadcom/genet/bcmgenet.h | 2 +- @@ -157990,13 +158020,13 @@ index 946f6e283c4e..5253c3f66098 100644 /* misc. configuration */ #define MAX_NUM_OF_FS_RULES 16 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 27 Mar 2019 13:45:46 +0000 -Subject: [PATCH 189/545] bcmgenet: Better coalescing parameter defaults +Subject: [PATCH 189/590] bcmgenet: Better coalescing parameter defaults Set defaults for TX and RX packet coalescing to be equivalent to: @@ -158039,13 +158069,13 @@ index 25c450606985..87e370c4a663 100644 /* libphy will determine the link state */ netif_carrier_off(dev); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 14 May 2019 17:17:59 +0100 -Subject: [PATCH 190/545] net: genet: enable link energy detect powerdown for +Subject: [PATCH 190/590] net: genet: enable link energy detect powerdown for external PHYs There are several warts surrounding bcmgenet_mii_probe() as this @@ -158076,13 +158106,13 @@ index 948ef1dacdd3..db54030c8166 100644 /* This is an ugly quirk but we have not been correctly interpreting * the phy_interface values and we have done that across different -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 11 Jun 2019 10:55:00 +0100 -Subject: [PATCH 191/545] usb: add plumbing for updating interrupt endpoint +Subject: [PATCH 191/590] usb: add plumbing for updating interrupt endpoint interval state xHCI caches device and endpoint data after the interface is configured, @@ -158107,7 +158137,7 @@ Signed-off-by: Jonathan Bell 4 files changed, 34 insertions(+) diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c -index faeaace0d197..3e224a791911 100644 +index 8300baedafd2..4e240151c06a 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1973,6 +1973,16 @@ int usb_hcd_alloc_bandwidth(struct usb_device *udev, @@ -158154,10 +158184,10 @@ index 7a32053e941f..e8045997d6ec 100644 * usb_disable_endpoint -- Disable an endpoint by address * @dev: the device whose endpoint is being disabled diff --git a/include/linux/usb.h b/include/linux/usb.h -index 9ff1ad4dfad1..41e1a60023f1 100644 +index 6c95af3317f7..8907b5063f03 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h -@@ -1835,6 +1835,8 @@ extern int usb_clear_halt(struct usb_device *dev, int pipe); +@@ -1838,6 +1838,8 @@ extern int usb_clear_halt(struct usb_device *dev, int pipe); extern int usb_reset_configuration(struct usb_device *dev); extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr); @@ -158192,13 +158222,13 @@ index 78cd566ee238..7824240e629b 100644 struct usb_host_endpoint *ep); extern void usb_hcd_reset_endpoint(struct usb_device *udev, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 11 Jun 2019 11:33:39 +0100 -Subject: [PATCH 192/545] xhci: implement xhci_fixup_endpoint for interval +Subject: [PATCH 192/590] xhci: implement xhci_fixup_endpoint for interval adjustments Must be called in a non-atomic context, after the endpoint @@ -158211,7 +158241,7 @@ Signed-off-by: Jonathan Bell 1 file changed, 104 insertions(+) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index 79d7931c048a..adaf13580af3 100644 +index 2b280beb0011..c7aaba91062d 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1636,6 +1636,109 @@ static int xhci_check_maxpacket(struct xhci_hcd *xhci, unsigned int slot_id, @@ -158324,7 +158354,7 @@ index 79d7931c048a..adaf13580af3 100644 /* * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it -@@ -5450,6 +5553,7 @@ static const struct hc_driver xhci_hc_driver = { +@@ -5464,6 +5567,7 @@ static const struct hc_driver xhci_hc_driver = { .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, @@ -158333,13 +158363,13 @@ index 79d7931c048a..adaf13580af3 100644 .enable_device = xhci_enable_device, .update_hub_device = xhci_update_hub_device, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 11 Jun 2019 11:42:03 +0100 -Subject: [PATCH 193/545] usbhid: call usb_fixup_endpoint after mangling +Subject: [PATCH 193/590] usbhid: call usb_fixup_endpoint after mangling intervals Lets the mousepoll override mechanism work with xhci. @@ -158362,13 +158392,13 @@ index ffbe95c9a00d..88eda0a36c4c 100644 ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 11 Jun 2019 17:38:28 +0100 -Subject: [PATCH 194/545] arm: bcm2835: Add bcm2838 compatible string. +Subject: [PATCH 194/590] arm: bcm2835: Add bcm2838 compatible string. Signed-off-by: Phil Elwell --- @@ -158388,13 +158418,13 @@ index 7d59a9364175..282a023027fc 100644 NULL }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 12 Jul 2019 15:38:35 +0100 -Subject: [PATCH 195/545] i2c: bcm2835: Set clock-stretch timeout to 35ms +Subject: [PATCH 195/590] i2c: bcm2835: Set clock-stretch timeout to 35ms The BCM2835 I2C blocks have a register to set the clock-stretch timeout - how long the device is allowed to hold SCL low - in bus @@ -158441,13 +158471,13 @@ index 394282a37f67..d768247c7e50 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 2 May 2019 13:22:53 -0700 -Subject: [PATCH 196/545] drm/v3d: Clock V3D down when not in use. +Subject: [PATCH 196/590] drm/v3d: Clock V3D down when not in use. My various attempts at re-enabling runtime PM have failed, so just crank the clock down when V3D is idle to reduce power consumption. @@ -158609,13 +158639,13 @@ index b8980440d137..9044690c55b1 100644 * treat 0 as special, such as the occlusion query counters * where 0 means "disabled". -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 9 May 2019 14:30:37 +0100 -Subject: [PATCH 197/545] drivers: char: add chardev for mmap'ing the RPiVid +Subject: [PATCH 197/590] drivers: char: add chardev for mmap'ing the RPiVid control registers Based on the gpiomem driver, allow mapping of the decoder register @@ -158992,13 +159022,13 @@ index 000000000000..9f38083f4cb6 +MODULE_DESCRIPTION("Driver for accessing RPiVid decoder registers from userspace"); +MODULE_AUTHOR("Jonathan Bell "); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 1 Aug 2019 16:41:20 +0100 -Subject: [PATCH 198/545] hid: usb: Add device quirks for Freeway Airmouse T3 +Subject: [PATCH 198/590] hid: usb: Add device quirks for Freeway Airmouse T3 and MX3 These wireless mouse/keyboard combo remote control devices specify @@ -159019,7 +159049,7 @@ Signed-off-by: Jonathan Bell 2 files changed, 8 insertions(+) diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h -index 8f58c3c1bec3..2496cd7cb482 100644 +index 82713ef3aaa6..a4935a2a3a15 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -238,6 +238,9 @@ @@ -159032,7 +159062,7 @@ index 8f58c3c1bec3..2496cd7cb482 100644 #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1356,6 +1359,9 @@ +@@ -1360,6 +1363,9 @@ #define USB_VENDOR_ID_XIAOMI 0x2717 #define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014 @@ -159063,13 +159093,13 @@ index 0e9702c7f7d6..8367d2821514 100644 { 0 } }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 9 Aug 2019 08:51:43 +0100 -Subject: [PATCH 199/545] net: bcmgenet: Workaround #2 for Pi4 Ethernet fail +Subject: [PATCH 199/590] net: bcmgenet: Workaround #2 for Pi4 Ethernet fail Some combinations of Pi 4Bs and Ethernet switches don't reliably get a DCHP-assigned IP address, leaving the unit with a self=assigned 169.254 @@ -159120,13 +159150,13 @@ index 87e370c4a663..f707a31eac9b 100644 bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD); udelay(2); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 13 Aug 2019 15:53:29 +0100 -Subject: [PATCH 200/545] xhci: Use more event ring segment table entries +Subject: [PATCH 200/590] xhci: Use more event ring segment table entries Users have reported log spam created by "Event Ring Full" xHC event TRBs. These are caused by interrupt latency in conjunction with a very @@ -159173,7 +159203,7 @@ index 81ca2bc1f0be..2221aba82579 100644 "// Write ERST size = %i to ir_set 0 (some bits preserved)", val); diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index cc084d9505cd..566376b92fa9 100644 +index dcee7f3207ad..b762a7123935 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1671,8 +1671,8 @@ struct urb_priv { @@ -159188,13 +159218,13 @@ index cc084d9505cd..566376b92fa9 100644 #define POLL_TIMEOUT 60 /* Stop endpoint command timeout (secs) for URB cancellation watchdog timer */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 3 Sep 2019 18:16:56 +0100 -Subject: [PATCH 201/545] arch/arm: Add model string to cpuinfo +Subject: [PATCH 201/590] arch/arm: Add model string to cpuinfo Signed-off-by: Phil Elwell --- @@ -159230,13 +159260,13 @@ index cb88c6e69377..9f8cdbfb993d 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 3 Sep 2019 18:17:25 +0100 -Subject: [PATCH 202/545] arch/arm64: Add Revision, Serial, Model to cpuinfo +Subject: [PATCH 202/590] arch/arm64: Add Revision, Serial, Model to cpuinfo Signed-off-by: Phil Elwell --- @@ -159294,13 +159324,13 @@ index 28d4f442b0bc..21836c76a3b3 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 28 Aug 2019 13:34:30 +0100 -Subject: [PATCH 203/545] media: i2c: imx219: Support for the Sony IMX219 +Subject: [PATCH 203/590] media: i2c: imx219: Support for the Sony IMX219 sensor media: dt-bindings: Add binding for the Sony IMX219 sensor @@ -160030,13 +160060,13 @@ index 77bd79a5954e..13bf7f0e759f 100644 dev_err(dev, "failed to init entity pads: %d\n", ret); goto error_handler_free; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 15 Jun 2021 18:18:42 +0100 -Subject: [PATCH 204/545] media: i2c: imx258: Support for the Sony IMX258 +Subject: [PATCH 204/590] media: i2c: imx258: Support for the Sony IMX258 sensor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -161659,13 +161689,13 @@ index eab5fc1ee2f7..40ba66bf0985 100644 static struct i2c_driver imx258_i2c_driver = { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Fri, 12 Jun 2020 15:53:46 +0200 -Subject: [PATCH 205/545] media: i2c: imx290: Support for the Sony IMX290 +Subject: [PATCH 205/590] media: i2c: imx290: Support for the Sony IMX290 sensor media: i2c: imx290: set the format before VIDIOC_SUBDEV_G_FMT is called @@ -162958,13 +162988,13 @@ index 1ce64dcdf7f0..2c7103cb6933 100644 static struct i2c_driver imx290_i2c_driver = { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Manivannan Sadhasivam Date: Mon, 20 Dec 2021 00:09:47 +0200 -Subject: [PATCH 206/545] media: i2c: imx296: Support for the Sony IMX296 +Subject: [PATCH 206/590] media: i2c: imx296: Support for the Sony IMX296 sensor dt-bindings: media: i2c: Add IMX296 CMOS sensor binding @@ -163149,10 +163179,10 @@ index 000000000000..e8f9a73bf2db + +... diff --git a/MAINTAINERS b/MAINTAINERS -index 60e865a1d7e0..c80531e36ac8 100644 +index 8ec7a1974da3..df9168ddc258 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -19224,6 +19224,15 @@ T: git git://linuxtv.org/media_tree.git +@@ -19226,6 +19226,15 @@ T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/imx290.txt F: drivers/media/i2c/imx290.c @@ -164503,13 +164533,13 @@ index 000000000000..d7fedcd28dc5 +MODULE_AUTHOR("Laurent Pinchart "); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 7 May 2020 15:50:54 +0100 -Subject: [PATCH 207/545] media: i2c: imx477: Support for the Sony IMX477 +Subject: [PATCH 207/590] media: i2c: imx477: Support for the Sony IMX477 sensor dt-bindings: media: i2c: Add IMX477 CMOS sensor binding @@ -164853,10 +164883,10 @@ index 000000000000..0994e13e67f6 + +... diff --git a/MAINTAINERS b/MAINTAINERS -index c80531e36ac8..3cbb9962eb6d 100644 +index df9168ddc258..74720f162c33 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -19274,6 +19274,14 @@ T: git git://linuxtv.org/media_tree.git +@@ -19276,6 +19276,14 @@ T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml F: drivers/media/i2c/imx412.c @@ -167220,13 +167250,13 @@ index 000000000000..b62fa1b53762 +MODULE_DESCRIPTION("Sony IMX477 sensor driver"); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Fri, 27 Aug 2021 14:36:55 +0800 -Subject: [PATCH 208/545] media: i2c: imx519: Support for the Sony IMX519 +Subject: [PATCH 208/590] media: i2c: imx519: Support for the Sony IMX519 sensor dt-bindings: media: i2c: Add IMX519 CMOS sensor binding @@ -167404,10 +167434,10 @@ index 000000000000..717230a21764 + +... diff --git a/MAINTAINERS b/MAINTAINERS -index 3cbb9962eb6d..113fceb27636 100644 +index 74720f162c33..634488feb0fd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -19282,6 +19282,14 @@ T: git git://linuxtv.org/media_tree.git +@@ -19284,6 +19284,14 @@ T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/imx477.yaml F: drivers/media/i2c/imx477.c @@ -169553,13 +169583,13 @@ index 000000000000..fb25c57ced7e +MODULE_DESCRIPTION("Sony IMX519 sensor driver"); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 29 Jun 2021 14:38:23 +0100 -Subject: [PATCH 209/545] Documentation: devicetree: Add documentation for +Subject: [PATCH 209/590] Documentation: devicetree: Add documentation for imx378 sensor The imx378 sensor is compatible with the imx477 and shares common @@ -169692,10 +169722,10 @@ index 000000000000..f832b4bfab93 + +... diff --git a/MAINTAINERS b/MAINTAINERS -index 113fceb27636..5bebab6a4e67 100644 +index 634488feb0fd..4e33abfe5847 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -19279,6 +19279,7 @@ M: Raspberry Pi Kernel Maintenance +@@ -19281,6 +19281,7 @@ M: Raspberry Pi Kernel Maintenance L: linux-media@vger.kernel.org S: Maintained T: git git://linuxtv.org/media_tree.git @@ -169704,13 +169734,13 @@ index 113fceb27636..5bebab6a4e67 100644 F: drivers/media/i2c/imx477.c -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Sep 2019 15:04:51 +0100 -Subject: [PATCH 210/545] v4l2: Add a Greyworld AWB mode. +Subject: [PATCH 210/590] v4l2: Add a Greyworld AWB mode. Adds a simple greyworld white balance preset, mainly for use with cameras without an IR filter (eg Raspberry Pi NoIR) @@ -169733,13 +169763,13 @@ index b5e7d082b8ad..e1f09a8cf69c 100644 #define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Sep 2019 15:13:06 +0100 -Subject: [PATCH 211/545] staging: bcm2835-camera: Add greyworld AWB mode +Subject: [PATCH 211/590] staging: bcm2835-camera: Add greyworld AWB mode This is mainly used for the NoIR camera which has no IR filter and can completely confuse normal AWB presets. @@ -169778,13 +169808,13 @@ index 33f4179d7712..045eba62e9de 100644 enum mmal_parameter_imagefx { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 6 Aug 2021 14:32:44 +0100 -Subject: [PATCH 212/545] media: v4l2: Add Greyworld AWB control name +Subject: [PATCH 212/590] media: v4l2: Add Greyworld AWB control name Add name for greyworld to white_balance preset names. This patch previously applied to v4l2-ctrl.c but that was split @@ -169808,13 +169838,13 @@ index e22921e7ea61..25f528dcbe24 100644 }; static const char * const camera_iso_sensitivity_auto[] = { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 8 Feb 2021 11:48:35 +0000 -Subject: [PATCH 213/545] staging:bcm2835-camera: Fix the cherry-pick of AWB +Subject: [PATCH 213/590] staging:bcm2835-camera: Fix the cherry-pick of AWB Greyworld The cherry-pick of the patch that added the greyworld AWB mode @@ -169842,13 +169872,13 @@ index f0e0f2dff447..65577e3322e2 100644 .step = 0, .imenu = NULL, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Thu, 19 Sep 2019 20:45:30 +0200 -Subject: [PATCH 214/545] ARM: bcm: Switch board, clk and pinctrl to bcm2711 +Subject: [PATCH 214/590] ARM: bcm: Switch board, clk and pinctrl to bcm2711 compatible After the decision to use bcm2711 compatible for upstream, we should @@ -169874,13 +169904,13 @@ index 282a023027fc..e538e0f899a5 100644 NULL }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Thu, 10 Oct 2019 19:12:08 +0200 -Subject: [PATCH 215/545] dt-bindings: Add binding for the Infineon IRS1125 +Subject: [PATCH 215/590] dt-bindings: Add binding for the Infineon IRS1125 sensor Adds a binding for the Infineon IRS1125 time-of-flight depth @@ -169947,13 +169977,13 @@ index 000000000000..25a48028c957 + }; + }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Thu, 10 Oct 2019 19:12:36 +0200 -Subject: [PATCH 216/545] media: i2c: Add a driver for the Infineon IRS1125 +Subject: [PATCH 216/590] media: i2c: Add a driver for the Infineon IRS1125 depth sensor The Infineon IRS1125 is a time of flight depth sensor that @@ -171192,13 +171222,13 @@ index 000000000000..dccaca23aa76 +#endif /* IRS1125 */ + -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 Nov 2019 20:18:08 +0000 -Subject: [PATCH 217/545] drm/v3d: Suppress all but the first MMU error +Subject: [PATCH 217/590] drm/v3d: Suppress all but the first MMU error The v3d driver currently encounters a lot of MMU PTE exceptions, so only log the first to avoid swamping the kernel log. @@ -171237,13 +171267,13 @@ index e714d5318f30..0f7a23f051df 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 12 Nov 2019 16:41:21 +0000 -Subject: [PATCH 218/545] drm/v3d: Plug dma_fence leak +Subject: [PATCH 218/590] drm/v3d: Plug dma_fence leak The irq_fence and done_fence are given a reference that is never released. The necessary dma_fence_put()s seem to have been @@ -171271,13 +171301,13 @@ index 9044690c55b1..4e7ba9d83db0 100644 if (job->perfmon) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 Nov 2019 13:57:48 +0000 -Subject: [PATCH 219/545] staging: vchiq_arm: Register vcsm-cma as a platform +Subject: [PATCH 219/590] staging: vchiq_arm: Register vcsm-cma as a platform driver Following the same pattern as bcm2835-camera and bcm2835-audio, @@ -171317,13 +171347,13 @@ index dc33490ba7fb..642fdbc0d654 100644 vchiq_deregister_chrdev(); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 Nov 2019 13:57:58 +0000 -Subject: [PATCH 220/545] staging: vchiq_arm: Register bcm2835-codec as a +Subject: [PATCH 220/590] staging: vchiq_arm: Register bcm2835-codec as a platform driver Following the same pattern as bcm2835-camera and bcm2835-audio, @@ -171363,13 +171393,13 @@ index 642fdbc0d654..bdc4bd4d5b96 100644 vchiq_debugfs_deinit(); vchiq_deregister_chrdev(); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Thu, 31 Oct 2019 14:39:44 +0000 -Subject: [PATCH 221/545] net:phy:2711 Allow ethernet LED mode to be set via +Subject: [PATCH 221/590] net:phy:2711 Allow ethernet LED mode to be set via device tree Add device tree entries and code to allow the specification of @@ -171424,13 +171454,13 @@ index ad71c88c87e7..257aa900fd2f 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 23 Aug 2019 16:34:38 +0100 -Subject: [PATCH 222/545] v3d_drv: Handle missing clock more gracefully +Subject: [PATCH 222/590] v3d_drv: Handle missing clock more gracefully Signed-off-by: popcornmix --- @@ -171457,13 +171487,13 @@ index de5808f814d8..fd648199bfa5 100644 v3d->clk_up_rate = clk_get_rate(v3d->clk); /* For downclocking, drop it to the minimum frequency we can get from -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 5 Sep 2019 17:59:14 +0100 -Subject: [PATCH 223/545] v3d_gem: Kick the clock so firmware knows we are +Subject: [PATCH 223/590] v3d_gem: Kick the clock so firmware knows we are using firmware clock interface Setting the v3d clock to low value allows firmware to handle dvfs in case @@ -171490,13 +171520,13 @@ index 4e7ba9d83db0..4817e57b21d0 100644 * treat 0 as special, such as the occlusion query counters * where 0 means "disabled". -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 9 Sep 2019 15:49:56 +0100 -Subject: [PATCH 224/545] clk-raspberrypi: Allow cpufreq driver to also adjust +Subject: [PATCH 224/590] clk-raspberrypi: Allow cpufreq driver to also adjust gpu clocks For performance/power it is beneficial to adjust gpu clocks with arm clock. @@ -171521,13 +171551,13 @@ index 9c4af1e70cae..6c426f34dd24 100644 int ret; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 29 Jan 2019 16:13:25 +0000 -Subject: [PATCH 225/545] staging: vchiq_arm: Set up dma ranges on child +Subject: [PATCH 225/590] staging: vchiq_arm: Set up dma ranges on child devices The VCHIQ driver now loads the audio, camera, codec, and vc-sm @@ -171560,13 +171590,13 @@ index bdc4bd4d5b96..5d937ee1086d 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 18 Jun 2019 12:15:50 +0100 -Subject: [PATCH 226/545] staging: vchiq: Use the old dma controller for OF +Subject: [PATCH 226/590] staging: vchiq: Use the old dma controller for OF config on platform devices vchiq on Pi4 is no longer under the soc node, therefore it @@ -171617,13 +171647,13 @@ index 5d937ee1086d..e05028bcb1a8 100644 return child; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Fri, 27 Dec 2019 11:40:56 +0100 -Subject: [PATCH 227/545] ARM: bcm: Backport BCM2711 support from upstream +Subject: [PATCH 227/590] ARM: bcm: Backport BCM2711 support from upstream Make the BCM2711 a different machine, but keep it in board_bcm2835. @@ -171670,13 +171700,13 @@ index e538e0f899a5..91a758c61f48 100644 .smp = smp_ops(bcm2836_smp_ops), MACHINE_END -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Luke Hinds <7058938+lukehinds@users.noreply.github.com> Date: Wed, 22 Jan 2020 16:03:00 +0000 -Subject: [PATCH 228/545] Initialise rpi-firmware before clk-bcm2835 +Subject: [PATCH 228/590] Initialise rpi-firmware before clk-bcm2835 The IMA (Integrity Measurement Architecture) looks for a TPM (Trusted Platform Module) having been registered when it initialises; otherwise @@ -171712,10 +171742,10 @@ index fdef9aa7401e..71129e60df9a 100644 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index 2a7a0a9933d7..fa105074f05f 100644 +index 843a77a0aaf3..02513603d148 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c -@@ -498,7 +498,7 @@ static int __init rpi_firmware_init(void) +@@ -499,7 +499,7 @@ static int __init rpi_firmware_init(void) out1: return ret; } @@ -171725,13 +171755,13 @@ index 2a7a0a9933d7..fa105074f05f 100644 static void __init rpi_firmware_exit(void) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 3 Feb 2020 17:30:46 +0000 -Subject: [PATCH 229/545] staging: vchiq_arm: Give vchiq children DT nodes +Subject: [PATCH 229/590] staging: vchiq_arm: Give vchiq children DT nodes vchiq kernel clients are now instantiated as platform drivers rather than using DT, but the children of the vchiq interface may still @@ -171770,13 +171800,13 @@ index e05028bcb1a8..716e52752752 100644 * We want the dma-ranges etc to be copied from a device with the * correct dma-ranges for the VPU. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 6 Jan 2020 16:04:30 +0000 -Subject: [PATCH 230/545] pinctrl: bcm2835: Remove gpiochip on error +Subject: [PATCH 230/590] pinctrl: bcm2835: Remove gpiochip on error A failure in gpiochip_irqchip_add leads to a leak of a gpiochip. Fix the leak with the use of devm_gpiochip_add_data. @@ -171801,13 +171831,13 @@ index 4d3de6ffb60c..2063804e70ff 100644 dev_err(dev, "could not add GPIO chip\n"); goto out_remove; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 2 Mar 2020 14:42:23 +0000 -Subject: [PATCH 231/545] video: fbdev: bcm2708_fb: Use common compat header +Subject: [PATCH 231/590] video: fbdev: bcm2708_fb: Use common compat header The definition of compat_ptr is now common for most platforms, but requires the inclusion of . @@ -171830,13 +171860,13 @@ index 0e9ec3f593b8..17e9260655e4 100644 //#define BCM2708_FB_DEBUG #define MODULE_NAME "bcm2708_fb" -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 6 Feb 2020 12:23:15 +0000 -Subject: [PATCH 232/545] of: overlay: Correct symbol path fixups +Subject: [PATCH 232/590] of: overlay: Correct symbol path fixups When symbols from overlays are added to the live tree their paths must be rebased. The translated symbol is normally the result of joining @@ -171860,7 +171890,7 @@ Signed-off-by: Phil Elwell 1 file changed, 2 insertions(+) diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c -index bd8ff4df723d..470b37a9848b 100644 +index ed4e6c144a68..170a23ed16ba 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -241,6 +241,8 @@ static struct property *dup_and_fixup_symbol_prop( @@ -171873,13 +171903,13 @@ index bd8ff4df723d..470b37a9848b 100644 new_prop = kzalloc(sizeof(*new_prop), GFP_KERNEL); if (!new_prop) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jim Quinlan Date: Mon, 15 Jan 2018 18:28:39 -0500 -Subject: [PATCH 233/545] dt-bindings: pci: Add DT docs for Brcmstb PCIe device +Subject: [PATCH 233/590] dt-bindings: pci: Add DT docs for Brcmstb PCIe device The DT bindings description of the Brcmstb PCIe device is described. This node can be used by almost all Broadcom settop box chips, using @@ -171957,13 +171987,13 @@ index 000000000000..a1a9ad5e70ca + linux,pci-domain = <0>; + }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 Apr 2020 11:22:44 +0100 -Subject: [PATCH 234/545] bcmgenet: Disable skip_umac_reset by default +Subject: [PATCH 234/590] bcmgenet: Disable skip_umac_reset by default Possible fixed upstream by 'net: bcmgenet: keep MAC in reset until PHY is up' @@ -171986,13 +172016,13 @@ index f707a31eac9b..6c187df9c16c 100644 MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 24 Jan 2020 14:28:21 +0000 -Subject: [PATCH 235/545] media: videodev2.h: Add a format for column YUV4:2:0 +Subject: [PATCH 235/590] media: videodev2.h: Add a format for column YUV4:2:0 modes Some of the Broadcom codec blocks use a column based YUV4:2:0 image @@ -172282,14 +172312,14 @@ index 24b34cdfa6fe..458e07782c8d 100644 + pixfmt-nv24 pixfmt-m420 diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index fddba75d9074..4f2c37010a1d 100644 +index 6876ec25bc51..f12a5b82230a 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1364,6 +1364,8 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_PIX_FMT_NV61M: descr = "Y/CrCb 4:2:2 (N-C)"; break; - case V4L2_PIX_FMT_NV12MT: descr = "Y/CbCr 4:2:0 (64x32 MB, N-C)"; break; - case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/CbCr 4:2:0 (16x16 MB, N-C)"; break; -+ case V4L2_PIX_FMT_NV12_COL128: descr = "Y/CbCr 4:2:0 (128b cols)"; break; + case V4L2_PIX_FMT_NV61M: descr = "Y/VU 4:2:2 (N-C)"; break; + case V4L2_PIX_FMT_NV12MT: descr = "Y/UV 4:2:0 (64x32 MB, N-C)"; break; + case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/UV 4:2:0 (16x16 MB, N-C)"; break; ++ case V4L2_PIX_FMT_NV12_COL128: descr = "Y/CbCr 4:2:0 (128b cols)"; break; + case V4L2_PIX_FMT_NV12_10_COL128: descr = "10-bit Y/CbCr 4:2:0 (128b cols)"; break; case V4L2_PIX_FMT_YUV420M: descr = "Planar YUV 4:2:0 (N-C)"; break; case V4L2_PIX_FMT_YVU420M: descr = "Planar YVU 4:2:0 (N-C)"; break; @@ -172310,13 +172340,13 @@ index 2b5f166b1ce7..128dbf862302 100644 /* 10bit raw packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 17 Mar 2020 10:53:16 +0000 -Subject: [PATCH 236/545] media: dt-bindings: media: Add binding for the +Subject: [PATCH 236/590] media: dt-bindings: media: Add binding for the Raspberry PI HEVC decoder Adds a binding for the HEVC decoder found on the BCM2711 / Raspberry Pi 4. @@ -172407,7 +172437,7 @@ index 000000000000..ce6b81a10303 + +... diff --git a/MAINTAINERS b/MAINTAINERS -index 5bebab6a4e67..c7389a99120a 100644 +index 4e33abfe5847..492160550a74 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4030,6 +4030,13 @@ N: bcm113* @@ -172425,13 +172455,13 @@ index 5bebab6a4e67..c7389a99120a 100644 M: Dave Stevenson L: linux-media@vger.kernel.org -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ezequiel Garcia Date: Sun, 21 Mar 2021 16:38:54 -0300 -Subject: [PATCH 237/545] RFC: media: Add media_request_{pin,unpin} API +Subject: [PATCH 237/590] RFC: media: Add media_request_{pin,unpin} API This is probably not the API we will want to add, but it should show what semantics are needed by drivers. @@ -172527,13 +172557,13 @@ index 3cd25a2717ce..0de5c2c94188 100644 media_request_get_by_fd(struct media_device *mdev, int request_fd) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 5 Mar 2020 18:30:41 +0000 -Subject: [PATCH 238/545] staging: media: rpivid: Add Raspberry Pi V4L2 H265 +Subject: [PATCH 238/590] staging: media: rpivid: Add Raspberry Pi V4L2 H265 decoder This driver is for the HEVC/H265 decoder block on the Raspberry @@ -177808,13 +177838,13 @@ index 000000000000..e22cc0e32aa3 + +#endif -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 17 Apr 2020 10:46:19 +0100 -Subject: [PATCH 239/545] spi: Force CS_HIGH if GPIO descriptors are used +Subject: [PATCH 239/590] spi: Force CS_HIGH if GPIO descriptors are used Commit f3186dd87669 ("spi: Optionally use GPIO descriptors for CS GPIOs") amended of_spi_parse_dt() to always set SPI_CS_HIGH for SPI slaves whose @@ -177871,13 +177901,13 @@ index 5f9aedd1f0b6..728e1f7e4be3 100644 * Help drivers fail *cleanly* when they need options * that aren't supported with their current controller. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 1 Apr 2020 08:46:29 +0100 -Subject: [PATCH 240/545] media: uapi: v4l2-core: Add sensor ancillary data +Subject: [PATCH 240/590] media: uapi: v4l2-core: Add sensor ancillary data V4L2 foucc type. Add V4L2_META_FMT_SENSOR_DATA format 4CC. @@ -177945,7 +177975,7 @@ index 000000000000..4a67e204d08a +and cannot be modified with a call to :c:type:`VIDIOC_SUBDEV_S_FMT`. + diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 4f2c37010a1d..06fca27763c9 100644 +index f12a5b82230a..1b03c983e9e7 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1448,6 +1448,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) @@ -177969,13 +177999,13 @@ index 128dbf862302..c15a06440121 100644 /* Vendor specific - used for RK_ISP1 camera sub-system */ #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 21 Jan 2020 14:06:47 +0000 -Subject: [PATCH 241/545] media: uapi: Add MEDIA_BUS_FMT_SENSOR_DATA media bus +Subject: [PATCH 241/590] media: uapi: Add MEDIA_BUS_FMT_SENSOR_DATA media bus format This patch adds MEDIA_BUS_FMT_SENSOR_DATA used by the bcm2835-unicam @@ -178040,13 +178070,13 @@ index d4228d038b54..72b2d893c849 100644 + #endif /* __LINUX_MEDIA_BUS_FORMAT_H */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 23 Apr 2020 10:20:26 +0100 -Subject: [PATCH 242/545] media: uapi: v4l2-core: Add ISP statistics output +Subject: [PATCH 242/590] media: uapi: v4l2-core: Add ISP statistics output V4L2 fourcc type Add V4L2_META_FMT_BCM2835_ISP_STATS V4L2 format type. @@ -178123,7 +178153,7 @@ index 000000000000..f974774c8252 + bcm2835_isp_stats_focus bcm2835_isp_stats + diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 06fca27763c9..540ab03f3e64 100644 +index 1b03c983e9e7..f163fd05477c 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1449,6 +1449,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) @@ -178147,13 +178177,13 @@ index c15a06440121..2b2c2b73bc4f 100644 /* Vendor specific - used for RK_ISP1 camera sub-system */ #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 21 Apr 2020 15:06:19 +0100 -Subject: [PATCH 243/545] media: uapi: v4l-ctrls: Add CID base for the +Subject: [PATCH 243/590] media: uapi: v4l-ctrls: Add CID base for the bcm2835-isp driver We are reserving controls for the new bcm2835-isp driver. @@ -178327,13 +178357,13 @@ index e1f09a8cf69c..ea7e229cd245 100644 /* The MPEG controls are applicable to all codec controls * and the 'MPEG' part of the define is historical */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 22 Apr 2020 08:32:32 +0100 -Subject: [PATCH 244/545] staging: vchiq: Load bcm2835_isp driver from vchiq +Subject: [PATCH 244/590] staging: vchiq: Load bcm2835_isp driver from vchiq bcmn2835_isp is a platform driver dependent on vchiq, therefore add the load/unload functions for it to vchiq. @@ -178372,13 +178402,13 @@ index 716e52752752..004ad2e7f168 100644 platform_device_unregister(bcm2835_camera); platform_device_unregister(bcm2835_codec); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 4 Apr 2019 13:33:47 +0100 -Subject: [PATCH 245/545] bcm2835-dma: Add proper 40-bit DMA support +Subject: [PATCH 245/590] bcm2835-dma: Add proper 40-bit DMA support BCM2711 has 4 DMA channels with a 40-bit address range, allowing them to access the full 4GB of memory on a Pi 4. @@ -179178,13 +179208,13 @@ index 87b5d0bef355..ac0458a8027f 100644 return 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jacko Dirks Date: Tue, 5 May 2020 14:28:14 +0200 -Subject: [PATCH 246/545] media: i2c: tc358743: Fix fallthrough warning +Subject: [PATCH 246/590] media: i2c: tc358743: Fix fallthrough warning Signed-off-by: Jacko Dirks --- @@ -179204,13 +179234,13 @@ index 69127833f4c7..618fbdc51794 100644 state->pdata.lineinitcnt = 0xe80; state->pdata.lptxtimecnt = 0x003; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 5 May 2020 19:45:41 +0100 -Subject: [PATCH 247/545] video: bcm2708_fb: Disable FB if no displays found +Subject: [PATCH 247/590] video: bcm2708_fb: Disable FB if no displays found If the firmware hasn't detected a display, the driver would assume one display was available, but because it had failed to retrieve the @@ -179244,13 +179274,13 @@ index 17e9260655e4..dac5c021ce52 100644 fbdev->firmware_supports_multifb = 1; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 15 May 2020 13:42:10 +0100 -Subject: [PATCH 248/545] staging: vc04_services: mmal-vchiq: Update parameters +Subject: [PATCH 248/590] staging: vc04_services: mmal-vchiq: Update parameters list Adds in a couple of new MMAL parameter defines. @@ -179278,13 +179308,13 @@ index 045eba62e9de..3ede6be20633 100644 /** Valid mirror modes */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 15 May 2020 13:48:59 +0100 -Subject: [PATCH 249/545] staging:vc04_services: bcm2835-camera: Request +Subject: [PATCH 249/590] staging:vc04_services: bcm2835-camera: Request headers with I-frame V4L2 wishes to have the codec header bytes in the same buffer as the @@ -179314,13 +179344,13 @@ index fd456d1f7061..8bcf5956a916 100644 ret = bcm2835_mmal_set_all_camera_controls(dev); if (ret < 0) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 5 May 2020 15:23:32 +0100 -Subject: [PATCH 250/545] zswap: Defer zswap initialisation +Subject: [PATCH 250/590] zswap: Defer zswap initialisation Enabling zswap support in the kernel configuration costs about 1.5MB of RAM, even when zswap is not enabled at runtime. This cost can be @@ -179449,13 +179479,13 @@ index 2d48fd59cc7a..f5d30557f788 100644 cpuhp_remove_state(CPUHP_MM_ZSWP_MEM_PREPARE); dstmem_fail: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 24 Apr 2018 14:42:27 +0100 -Subject: [PATCH 251/545] gpiolib: Don't prevent IRQ usage of output GPIOs +Subject: [PATCH 251/590] gpiolib: Don't prevent IRQ usage of output GPIOs Upstream Linux deems using output GPIOs to generate IRQs as a bogus use case, even though the BCM2835 GPIO controller is capable of doing @@ -179470,7 +179500,7 @@ Signed-off-by: Phil Elwell 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index a70522aef355..f716b58d2e75 100644 +index 5974cfc61b41..ed3df6f43f05 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -52,6 +52,8 @@ @@ -179482,7 +179512,7 @@ index a70522aef355..f716b58d2e75 100644 /* Device and char device-related information */ static DEFINE_IDA(gpio_ida); static dev_t gpio_devt; -@@ -2410,8 +2412,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) +@@ -2414,8 +2416,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) value = !!value; /* GPIOs used for enabled IRQs shall not be set as output */ @@ -179493,7 +179523,7 @@ index a70522aef355..f716b58d2e75 100644 gpiod_err(desc, "%s: tried to set a GPIO tied to an IRQ as output\n", __func__); -@@ -3289,8 +3291,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) +@@ -3293,8 +3295,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) } /* To be valid for IRQ the line needs to be input or open drain */ @@ -179505,13 +179535,13 @@ index a70522aef355..f716b58d2e75 100644 "%s: tried to flag a GPIO set as output for IRQ\n", __func__); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 11 Jun 2020 09:57:03 +0100 -Subject: [PATCH 252/545] PCI: brcmstb: Add DT property to control L1SS +Subject: [PATCH 252/590] PCI: brcmstb: Add DT property to control L1SS The BRCM PCIe block has controls to enable control of the CLKREQ# signal by the L1SS, and to gate the refclk with the CLKREQ# input. @@ -179586,13 +179616,13 @@ index 521acd632f1a..d64219d210f3 100644 ret = clk_prepare_enable(pcie->clk); if (ret) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:24:31 +0200 -Subject: [PATCH 253/545] media: irs1125: Using i2c_transfer for ic2 reads +Subject: [PATCH 253/590] media: irs1125: Using i2c_transfer for ic2 reads Reading data over i2c is done by using i2c_transfer to ensure that this operation can't be interrupted. @@ -179657,13 +179687,13 @@ index 25e1dd5a08ef..6680afea5894 100644 static int irs1125_write_array(struct v4l2_subdev *sd, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:27:42 +0200 -Subject: [PATCH 254/545] media: irs1125: Refactoring and debug messages +Subject: [PATCH 254/590] media: irs1125: Refactoring and debug messages Changed some variable names to comply with checkpatch --strict mode. Debug messages added. @@ -179786,13 +179816,13 @@ index 6680afea5894..289f0c25b141 100644 mutex_init(&sensor->lock); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:31:36 +0200 -Subject: [PATCH 255/545] media: irs1125: Atomic access to imager +Subject: [PATCH 255/590] media: irs1125: Atomic access to imager reconfiguration Instead of changing the exposure and framerate settings for all sequences, @@ -180175,13 +180205,13 @@ index dccaca23aa76..96d676123d5e 100644 __u16 pllcfg1; __u16 pllcfg2; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:33:56 +0200 -Subject: [PATCH 256/545] media: irs1125: Keep HW in sync after imager reset +Subject: [PATCH 256/590] media: irs1125: Keep HW in sync after imager reset When closing the video device, the irs1125 is put in power down state. To keep V4L2 ctrls and the HW in sync, v4l2_ctrl_handler_setup is @@ -180362,13 +180392,13 @@ index d59e05004a03..30c3d2640386 100644 struct irs1125_seq_cfg *cfg_new; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 26 Jun 2020 11:51:05 +0100 -Subject: [PATCH 257/545] brcmfmac: Prefer a ccode from OTP over nvram file +Subject: [PATCH 257/590] brcmfmac: Prefer a ccode from OTP over nvram file Allow the nvram file to set a default ccode (regulatory domain) without overriding one set in OTP. @@ -180450,7 +180480,7 @@ index 11b45bc0e285..0ba8904f7894 100644 return; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -index f2207793f6e2..91a3f531eb24 100644 +index 09d2f2dc2b46..da413308a564 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c @@ -10,6 +10,7 @@ @@ -180500,13 +180530,13 @@ index f2207793f6e2..91a3f531eb24 100644 if (free_bcm47xx_nvram) bcm47xx_nvram_release_contents(data); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 4 May 2020 12:25:41 +0300 -Subject: [PATCH 258/545] media: bcm2835-unicam: Driver for CCP2/CSI2 camera +Subject: [PATCH 258/590] media: bcm2835-unicam: Driver for CCP2/CSI2 camera interface Add a driver for the Unicam camera receiver block on BCM283x processors. @@ -180535,7 +180565,7 @@ Reported-by: kbuild test robot create mode 100644 drivers/media/platform/bcm2835/vc4-regs-unicam.h diff --git a/MAINTAINERS b/MAINTAINERS -index c7389a99120a..4a06ece3d40f 100644 +index 492160550a74..da20c4162847 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4042,7 +4042,7 @@ M: Dave Stevenson @@ -183676,13 +183706,13 @@ index 000000000000..ae059a171d0f + +#endif -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 1 Apr 2020 08:39:49 +0100 -Subject: [PATCH 259/545] media: bcm2835-unicam: Kconfig/Makefile for CCP2/CSI2 +Subject: [PATCH 259/590] media: bcm2835-unicam: Kconfig/Makefile for CCP2/CSI2 camera interface Signed-off-by: Dave Stevenson @@ -183694,7 +183724,7 @@ Signed-off-by: Naushir Patuck 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS -index 4a06ece3d40f..6c63a95e6a4f 100644 +index da20c4162847..c6fb41c77b4a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4038,7 +4038,7 @@ F: Documentation/devicetree/bindings/media/rpivid_hevc.jaml @@ -183731,13 +183761,13 @@ index a91f42024273..c829ae68cecf 100644 obj-y += chips-media/ obj-y += intel/ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 23 Jun 2020 14:32:51 +0100 -Subject: [PATCH 260/545] media: bcm2835-unicam: Add support for +Subject: [PATCH 260/590] media: bcm2835-unicam: Add support for get_mbus_config to set num lanes Use the get_mbus_config pad subdev call to allow a source to use @@ -183793,13 +183823,13 @@ index 1edc32282fb0..fd441219c575 100644 if (ret) { unicam_err(dev, "failed to set up clock\n"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Jun 2020 15:53:44 +0100 -Subject: [PATCH 261/545] media: bcm2835-unicam: Avoid gcc warning over {0} on +Subject: [PATCH 261/590] media: bcm2835-unicam: Avoid gcc warning over {0} on endpoint Older gcc versions object to = { 0 } initialisation if the first @@ -183826,13 +183856,13 @@ index fd441219c575..86ac379650d3 100644 struct device_node *sensor_node; unsigned int lane; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 2 Jul 2020 13:53:20 +0100 -Subject: [PATCH 262/545] serial: 8250: bcm2835aux - defer if clock is zero +Subject: [PATCH 262/590] serial: 8250: bcm2835aux - defer if clock is zero See: https://github.com/raspberrypi/linux/issues/3700 @@ -183860,13 +183890,13 @@ index 15a2387a5b25..43db1816fad6 100644 ret = serial8250_register_8250_port(&up); if (ret < 0) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 May 2020 16:59:03 +0100 -Subject: [PATCH 263/545] media: Add a pixel format for MIPI packed 12bit luma +Subject: [PATCH 263/590] media: Add a pixel format for MIPI packed 12bit luma only. This is the format used by monochrome 12bit image sensors. @@ -183944,7 +183974,7 @@ index 458e07782c8d..390996d95fe5 100644 pixfmt-y12i pixfmt-uv8 diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 540ab03f3e64..365c31fc4964 100644 +index f163fd05477c..db71eb68933b 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1314,6 +1314,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) @@ -183968,13 +183998,13 @@ index 2b2c2b73bc4f..9300ba4cbe57 100644 /* Palette formats */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 17:51:03 +0100 -Subject: [PATCH 264/545] media: Add a pixel format for MIPI packed 14bit luma +Subject: [PATCH 264/590] media: Add a pixel format for MIPI packed 14bit luma only. This is the format used by monochrome 14bit image sensors. @@ -184061,7 +184091,7 @@ index 390996d95fe5..44589ac3e909 100644 pixfmt-y12i pixfmt-uv8 diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 365c31fc4964..a6bf1d3ea41d 100644 +index db71eb68933b..3ca8d8a6c679 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1315,6 +1315,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) @@ -184085,13 +184115,13 @@ index 9300ba4cbe57..ececbc57315e 100644 /* Palette formats */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 17:53:32 +0100 -Subject: [PATCH 265/545] media: bcm2835-unicam: Add support for 12bit mono +Subject: [PATCH 265/590] media: bcm2835-unicam: Add support for 12bit mono packed format Now that V4L2_PIX_FMT_Y12P is defined, allow passing raw 12bit @@ -184116,13 +184146,13 @@ index 86ac379650d3..e73827ccf6a6 100644 .code = MEDIA_BUS_FMT_Y12_1X12, .depth = 12, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 18:03:47 +0100 -Subject: [PATCH 266/545] media: bcm2835-unicam: Add support for 14bit mono +Subject: [PATCH 266/590] media: bcm2835-unicam: Add support for 14bit mono sources Now that V4L2_PIX_FMT_Y14 and V4L2_PIX_FMT_Y14P are defined, @@ -184151,13 +184181,13 @@ index e73827ccf6a6..db0ad09454b1 100644 /* Embedded data format */ { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 1 Jul 2020 10:57:57 +0100 -Subject: [PATCH 267/545] media: bcm2835-unicam: Add support for unpacked 14bit +Subject: [PATCH 267/590] media: bcm2835-unicam: Add support for unpacked 14bit Bayer formats Now that the 14bit non-packed Bayer formats are defined, add them @@ -184199,13 +184229,13 @@ index db0ad09454b1..0282c5fb7a5c 100644 .depth = 14, .csi_dt = 0x2d, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 1 Jul 2020 20:28:27 +0100 -Subject: [PATCH 268/545] bcm2835-dma: Add NO_WAIT_RESP flag +Subject: [PATCH 268/590] bcm2835-dma: Add NO_WAIT_RESP flag Use bit 27 of the dreq value (the second cell of the DT DMA descriptor) to request that the WAIT_RESP bit is not set. @@ -184259,13 +184289,13 @@ index ac0458a8027f..84b1009da23b 100644 size_t max_len = bcm2835_dma_max_frame_length(c); size_t frames; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 14:23:40 +0100 -Subject: [PATCH 269/545] media: bcm2835-unicam: Reinstate V4L2_CAP_READWRITE +Subject: [PATCH 269/590] media: bcm2835-unicam: Reinstate V4L2_CAP_READWRITE in the caps v4l2-compliance throws a failure if the device doesn't advertise @@ -184293,13 +184323,13 @@ index 0282c5fb7a5c..4118bf7ca042 100644 /* Define the device names */ snprintf(vdev->name, sizeof(vdev->name), "%s-%s", UNICAM_MODULE_NAME, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 14:52:43 +0100 -Subject: [PATCH 270/545] media: bcm2835-unicam: Ensure type is VIDEO_CAPTURE +Subject: [PATCH 270/590] media: bcm2835-unicam: Ensure type is VIDEO_CAPTURE in [g|s]_selection [g|s]_selection pass in a buffer type that needs to be validated @@ -184335,13 +184365,13 @@ index 4118bf7ca042..efa83443aa53 100644 if (!ret) sel->r = sdsel.r; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 11 May 2020 13:02:22 +0100 -Subject: [PATCH 271/545] media: bcm2835: unicam: Set VPU min clock freq to +Subject: [PATCH 271/590] media: bcm2835: unicam: Set VPU min clock freq to 250Mhz. When streaming with Unicam, the VPU must have a clock frequency of at @@ -184468,13 +184498,13 @@ index efa83443aa53..1e9c9f5e530b 100644 if (ret <= 0) { dev_err(&pdev->dev, "No IRQ resource\n"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 11 May 2020 13:06:27 +0100 -Subject: [PATCH 272/545] dt-bindings: bcm2835-unicam: Update documentation +Subject: [PATCH 272/590] dt-bindings: bcm2835-unicam: Update documentation with new clock params Update the documentation to reflect the new "VPU" clock needed @@ -184512,13 +184542,13 @@ index 7714fb374b34..164d0377dcd2 100644 csi1_ep: endpoint { remote-endpoint = <&tc358743_0>; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Jul 2020 10:33:19 +0100 -Subject: [PATCH 273/545] leds: Add the actpwr trigger +Subject: [PATCH 273/590] leds: Add the actpwr trigger The actpwr trigger is a meta trigger that cycles between an inverted mmc0 and default-on. It is written in a way that could fairly easily @@ -184758,13 +184788,13 @@ index 000000000000..1a52107ceb03 +MODULE_DESCRIPTION("ACT/PWR LED trigger"); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 22 Jul 2020 17:59:31 +0100 -Subject: [PATCH 274/545] bcm2835-dma: Advertise the full DMA range +Subject: [PATCH 274/590] bcm2835-dma: Advertise the full DMA range Unless the DMA mask is set wider than 32 bits, DMA mapping will use a bounce buffer. @@ -184841,13 +184871,13 @@ index 84b1009da23b..d1127b9058a4 100644 /* Request DMA channel mask from device tree */ if (of_property_read_u32(pdev->dev.of_node, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 27 Aug 2020 16:30:26 +0100 -Subject: [PATCH 275/545] media: bcm2835-unicam: Drop WARN on uing direct cache +Subject: [PATCH 275/590] media: bcm2835-unicam: Drop WARN on uing direct cache alias Pi 0&1 pass all ARM accesses through the VPU L2 cache, therefore @@ -184881,13 +184911,13 @@ index 1e9c9f5e530b..85e98ea89802 100644 reg_write(dev, UNICAM_IBSA0, dmaaddr); reg_write(dev, UNICAM_IBEA0, endaddr); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 10 Jul 2020 12:40:50 +0100 -Subject: [PATCH 276/545] media: i2c: tc358743: Only allow supported pixel fmts +Subject: [PATCH 276/590] media: i2c: tc358743: Only allow supported pixel fmts in set_fmt Fix commit "media: tc358743: Return an appropriate colorspace from @@ -184917,13 +184947,13 @@ index 618fbdc51794..cc699daf244c 100644 if (ret) return ret; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 13 May 2020 18:28:27 +0100 -Subject: [PATCH 277/545] media: bcm2835-unicam: Always service interrupts +Subject: [PATCH 277/590] media: bcm2835-unicam: Always service interrupts From when bringing up the driver, there was a check in the isr to ignore interrupts (claiming them handled) should the driver @@ -184974,13 +185004,13 @@ index 85e98ea89802..f189ddb75e85 100644 /* Write value back to clear the interrupts */ reg_write(unicam, UNICAM_STA, sta); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jacko Dirks Date: Tue, 5 May 2020 14:33:31 +0200 -Subject: [PATCH 278/545] media: bcm2835: unicam: Fix uninitialized warning +Subject: [PATCH 278/590] media: bcm2835: unicam: Fix uninitialized warning Signed-off-by: Jacko Dirks --- @@ -185001,13 +185031,13 @@ index f189ddb75e85..1cb3c87b0657 100644 for (i = 0; ret != -EINVAL && ret != -ENOIOCTLCMD; ++i) { memset(&mbus_code, 0, sizeof(mbus_code)); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 23 Jun 2020 15:14:05 +0100 -Subject: [PATCH 279/545] media: bcm2835-unicam: Fixup review comments from +Subject: [PATCH 279/590] media: bcm2835-unicam: Fixup review comments from Hans. Updates the driver based on the upstream review comments from @@ -185222,13 +185252,13 @@ index 1cb3c87b0657..596f78bbce31 100644 !v4l2_subdev_has_op(unicam->sensor, video, s_std)) { v4l2_disable_ioctl(&node->video_dev, VIDIOC_S_STD); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 19 May 2020 11:46:47 +0100 -Subject: [PATCH 280/545] media: bcm2835-unicam: Retain packing information on +Subject: [PATCH 280/590] media: bcm2835-unicam: Retain packing information on G_FMT The change to retrieve the pixel format always on g_fmt didn't @@ -185276,13 +185306,13 @@ index 596f78bbce31..629a8c12326a 100644 return 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 28 May 2020 11:09:48 +0100 -Subject: [PATCH 281/545] media: bcm2835-unicam: change minimum number of +Subject: [PATCH 281/590] media: bcm2835-unicam: change minimum number of vb2_queue buffers to 1 Since the unicam driver was modified to write to a dummy buffer when no @@ -185310,13 +185340,13 @@ index 629a8c12326a..8325f1fccd17 100644 ret = vb2_queue_init(q); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 1 Sep 2020 18:15:27 +0100 -Subject: [PATCH 282/545] staging/fbtft: Add support for display variants +Subject: [PATCH 282/590] staging/fbtft: Add support for display variants Display variants are intended as a replacement for the now-deleted fbtft_device drivers. Drivers can register additional compatible @@ -185613,13 +185643,13 @@ index 2c2b5f1c1df3..7492c1abfdec 100644 /* shorthand debug levels */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 3 Feb 2020 09:32:22 +0000 -Subject: [PATCH 283/545] brcmfmac: Increase power saving delay to 2s +Subject: [PATCH 283/590] brcmfmac: Increase power saving delay to 2s Increase the delay before entering the lower power state to 2 seconds (the maximum allowed) in order to reduce the packet latencies, @@ -185652,13 +185682,13 @@ index 0ba8904f7894..259aada177ec 100644 min_t(u32, timeout, BRCMF_PS_MAX_TIMEOUT_MS)); if (err) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 25 Sep 2020 15:07:23 +0100 -Subject: [PATCH 284/545] net: bcmgenet: Reset RBUF on first open +Subject: [PATCH 284/590] net: bcmgenet: Reset RBUF on first open If the RBUF logic is not reset when the kernel starts then there may be some data left over from any network boot loader. If the @@ -185728,13 +185758,13 @@ index 6c187df9c16c..1811d60ef453 100644 /* Reinitialize TDMA and RDMA and SW housekeeping */ ret = bcmgenet_init_dma(priv); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 28 Sep 2020 20:23:30 +0100 -Subject: [PATCH 285/545] char: Add broadcom char drivers back to build files +Subject: [PATCH 285/590] char: Add broadcom char drivers back to build files See: https://github.com/raspberrypi/linux/issues/3875 Signed-off-by: popcornmix @@ -185766,13 +185796,13 @@ index 1b35d1724565..25eb2d5dcadf 100644 obj-$(CONFIG_ADI) += adi.o +obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 8 Oct 2020 15:35:14 +0100 -Subject: [PATCH 286/545] staging: bcm2835-camera: Replace deprecated +Subject: [PATCH 286/590] staging: bcm2835-camera: Replace deprecated V4L2_PIX_FMT_BGR32 V4L2_PIX_FMT_BGR32 is deprecated as it is ambiguous over where @@ -185802,13 +185832,13 @@ index 8bcf5956a916..c9d5b009fa9d 100644 .depth = 32, .mmal_component = COMP_CAMERA, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 8 Oct 2020 18:49:52 +0100 -Subject: [PATCH 287/545] staging: vc04_services: Add new vc-sm-cma driver +Subject: [PATCH 287/590] staging: vc04_services: Add new vc-sm-cma driver Add Broadcom VideoCore Shared Memory support. @@ -188801,13 +188831,13 @@ index 000000000000..988fdd967922 + +#endif /* __VC_SM_KNL_H__INCLUDED__ */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 May 2020 18:09:04 +0100 -Subject: [PATCH 288/545] staging: vchiq-mmal: Add support for 14bit Bayer +Subject: [PATCH 288/590] staging: vchiq-mmal: Add support for 14bit Bayer Add in the missing defines. @@ -188834,13 +188864,13 @@ index feca1c3d8878..1a9bbd371026 100644 #define MMAL_ENCODING_BAYER_SBGGR16 MMAL_FOURCC('B', 'G', '1', '6') #define MMAL_ENCODING_BAYER_SGBRG16 MMAL_FOURCC('G', 'B', '1', '6') -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 May 2020 18:11:14 +0100 -Subject: [PATCH 289/545] staging: mmal-vchiq: Add monochrome image formats +Subject: [PATCH 289/590] staging: mmal-vchiq: Add monochrome image formats Adds support for monochrome image formats in the various MIPI packings. @@ -188869,13 +188899,13 @@ index 1a9bbd371026..6c19040b05df 100644 */ #define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E', 'G', 'L', 'I') -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 25 Sep 2018 16:07:55 +0100 -Subject: [PATCH 290/545] staging: mmal-vchiq: Use vc-sm-cma to support zero +Subject: [PATCH 290/590] staging: mmal-vchiq: Use vc-sm-cma to support zero copy With the vc-sm-cma driver we can support zero copy of buffers between @@ -189043,13 +189073,13 @@ index e3ecd70b9951..9addd627ff5b 100644 u32 type; /* port type, cached to use on port info set */ u32 index; /* port index, cached to use on port info set */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 8 Oct 2020 20:24:12 +0100 -Subject: [PATCH 291/545] staging: vc04_services: Add a V4L2 M2M codec driver +Subject: [PATCH 291/590] staging: vc04_services: Add a V4L2 M2M codec driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -193398,13 +193428,13 @@ index 3ede6be20633..5e3ce586945e 100644 /** Valid mirror modes */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 11 Oct 2020 00:48:55 +0200 -Subject: [PATCH 292/545] bcm2835-dma: only reserve channel 0 if legacy dma +Subject: [PATCH 292/590] bcm2835-dma: only reserve channel 0 if legacy dma driver is enabled If CONFIG_DMA_BCM2708 isn't enabled there's no need to mask out @@ -193436,13 +193466,13 @@ index d1127b9058a4..0cbfa9d559a2 100644 /* And possibly one for the 40-bit DMA memcpy API */ if (chans_available & od->cfg_data->chan_40bit_mask & -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 12 Oct 2020 17:03:14 +0100 -Subject: [PATCH 293/545] uapi: bcm2835-isp: Add bcm2835-isp uapi header file +Subject: [PATCH 293/590] uapi: bcm2835-isp: Add bcm2835-isp uapi header file This file defines the userland interface to the bcm2835-isp driver that will follow in a separate commit. @@ -193781,13 +193811,13 @@ index 000000000000..cf8c0437f159 + +#endif /* __BCM2835_ISP_H_ */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 23 Apr 2020 10:17:37 +0100 -Subject: [PATCH 294/545] staging: vc04_services: ISP: Add a more complex ISP +Subject: [PATCH 294/590] staging: vc04_services: ISP: Add a more complex ISP processing component Driver for the BCM2835 ISP hardware block. This driver uses the MMAL @@ -193820,7 +193850,7 @@ Signed-off-by: Naushir Patuck create mode 100644 drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c diff --git a/MAINTAINERS b/MAINTAINERS -index 6c63a95e6a4f..d2c02dbcceb4 100644 +index c6fb41c77b4a..be2c1873662f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4044,6 +4044,15 @@ S: Maintained @@ -196218,13 +196248,13 @@ index 5e3ce586945e..6ae26735a62d 100644 #endif -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 30 Sep 2020 12:00:54 +0100 -Subject: [PATCH 295/545] gpio: Add gpio-fsm driver +Subject: [PATCH 295/590] gpio: Add gpio-fsm driver The gpio-fsm driver implements simple state machines that allow GPIOs to be controlled in response to inputs from other GPIOs - real and @@ -197533,13 +197563,13 @@ index 000000000000..3a348f1c6514 +MODULE_DESCRIPTION("GPIO FSM driver"); +MODULE_ALIAS("platform:gpio-fsm"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 26 Oct 2020 16:38:21 +0000 -Subject: [PATCH 296/545] rpisense-fb: Set pseudo_pallete to prevent crash on +Subject: [PATCH 296/590] rpisense-fb: Set pseudo_pallete to prevent crash on fbcon takeover Signed-off-by: Serge Schneider @@ -197569,13 +197599,13 @@ index 26432a5a0b4b..325977def531 100644 if (lowlight) rpisense_fb_param.gamma = gamma_low; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Oct 2020 12:12:22 +0000 -Subject: [PATCH 297/545] bcm2708_fb: Fix a build warning +Subject: [PATCH 297/590] bcm2708_fb: Fix a build warning Signed-off-by: Phil Elwell --- @@ -197597,13 +197627,13 @@ index dac5c021ce52..365c5b96b8a0 100644 pr_err("[%s]: failed to copy-to-user\n", __func__); rc = -EFAULT; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Thu, 22 Oct 2020 15:30:55 +0100 -Subject: [PATCH 298/545] watchdog: bcm2835: Ignore params after the partition +Subject: [PATCH 298/590] watchdog: bcm2835: Ignore params after the partition number Use sscanf to extract the partition number and ignore extra parameters @@ -197632,13 +197662,13 @@ index 58d5a1b89584..e8d151d524fd 100644 __bcm2835_restart(wdt, partition); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 20 Oct 2020 11:55:37 +0100 -Subject: [PATCH 299/545] firmware: raspberrypi: Add support for tryonce reboot +Subject: [PATCH 299/590] firmware: raspberrypi: Add support for tryonce reboot flag Define a new mailbox (SET_REBOOT_FLAGS) which may be used to @@ -197655,7 +197685,7 @@ mechanism to be implemented for OS upgrades. 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index fa105074f05f..1223e3173cff 100644 +index 02513603d148..81b6351fda83 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -193,6 +193,7 @@ static int rpi_firmware_notify_reboot(struct notifier_block *nb, @@ -197698,13 +197728,13 @@ index fa105074f05f..1223e3173cff 100644 return 0; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 14 May 2019 17:00:41 +0100 -Subject: [PATCH 300/545] phy: broadcom: split out the BCM54213PE from the +Subject: [PATCH 300/590] phy: broadcom: split out the BCM54213PE from the BCM54210E IDs The last nibble is a revision ID, and the 54213pe is a later rev @@ -197777,13 +197807,13 @@ index 9e77165f3ef6..31295e952c66 100644 #define PHY_ID_BCM5461 0x002060c0 #define PHY_ID_BCM54612E 0x03625e60 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 29 Oct 2020 14:10:56 +0000 -Subject: [PATCH 301/545] phy: broadcom: Add bcm54213pe configuration +Subject: [PATCH 301/590] phy: broadcom: Add bcm54213pe configuration Signed-off-by: Phil Elwell --- @@ -197817,13 +197847,13 @@ index 90c791524463..bb2143929885 100644 err = bcm54616s_config_init(phydev); break; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 11 Nov 2020 17:08:33 +0000 -Subject: [PATCH 302/545] PCI: brcmstb: Restore initial fundamental reset +Subject: [PATCH 302/590] PCI: brcmstb: Restore initial fundamental reset [1] replaced a single reset function with a pointer to one of two implementations, but also removed the call asserting the reset @@ -197858,13 +197888,13 @@ index d64219d210f3..85096bebc4b8 100644 /* Take the bridge out of reset */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Nov 2020 18:45:10 +0000 -Subject: [PATCH 303/545] Input: edt-ft5x06: Poll the device if no interrupt is +Subject: [PATCH 303/590] Input: edt-ft5x06: Poll the device if no interrupt is configured. Not all systems have the interrupt line wired up, so switch to @@ -197961,13 +197991,13 @@ index 9ac1378610bc..d5574835b198 100644 error = devm_device_add_group(&client->dev, &edt_ft5x06_attr_group); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 23 Apr 2020 10:17:18 +0100 -Subject: [PATCH 304/545] drm/panel/raspberrypi-touchscreen: Use independent +Subject: [PATCH 304/590] drm/panel/raspberrypi-touchscreen: Use independent I2C actions with delay. We now have the hardware I2C controller pinmuxed to the drive the @@ -198025,13 +198055,13 @@ index 79f852465a84..704bd10c8716 100644 static void rpi_touchscreen_i2c_write(struct rpi_touchscreen *ts, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 10 Nov 2020 11:21:56 +0000 -Subject: [PATCH 305/545] drm/panel/raspberrypi-ts: Insert delay before polling +Subject: [PATCH 305/590] drm/panel/raspberrypi-ts: Insert delay before polling for startup state In switching to the hardware I2C controller there is an issue @@ -198057,13 +198087,13 @@ index 704bd10c8716..6ce5ea3cd5b1 100644 for (i = 0; i < 100; i++) { if (rpi_touchscreen_i2c_read(ts, REG_PORTB) & 1) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 12 Nov 2020 17:01:52 +0000 -Subject: [PATCH 306/545] dt-bindings: Add compatible for BCM2711 DSI1 +Subject: [PATCH 306/590] dt-bindings: Add compatible for BCM2711 DSI1 DSI1 on BCM2711 doesn't require the DMA workaround that is used on BCM2835/6/7, therefore it needs a new compatible string. @@ -198086,13 +198116,13 @@ index c8b2459d64f6..af638b224619 100644 reg: maxItems: 1 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 2 Dec 2020 15:22:23 +0000 -Subject: [PATCH 307/545] media: bcm2835-unicam: Correctly handle error +Subject: [PATCH 307/590] media: bcm2835-unicam: Correctly handle error propagation for stream on On a failure in start_streaming(), the error code would not propagate to @@ -198119,13 +198149,13 @@ index 8325f1fccd17..6979a13b5166 100644 clk_disable_unprepare(dev->vpu_clock); err_pm_put: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 2 Dec 2020 15:26:09 +0000 -Subject: [PATCH 308/545] media: bcm2835-unicam: Return early from +Subject: [PATCH 308/590] media: bcm2835-unicam: Return early from stop_streaming() if stopped clk_disable_unprepare() is called unconditionally in stop_streaming(). @@ -198189,13 +198219,13 @@ index 6979a13b5166..8f5e5927af0b 100644 } else if (node->pad_id == METADATA_PAD) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 2 Dec 2020 16:48:41 +0000 -Subject: [PATCH 309/545] media: bcm2835-unicam: Clear clock state when +Subject: [PATCH 309/590] media: bcm2835-unicam: Clear clock state when stopping streaming Commit 65e08c465020d4c5b51afb452efc2246d80fd66f failed to clear the @@ -198220,13 +198250,13 @@ index 8f5e5927af0b..5b505439ddb1 100644 unicam_runtime_put(dev); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 3 Dec 2020 13:44:42 +0000 -Subject: [PATCH 310/545] PCI: brcmstb: Advertise MSI-X support +Subject: [PATCH 310/590] PCI: brcmstb: Advertise MSI-X support Although the BRCMSTB PCIe interface doesn't technically support the MSI-X spec, in practise it seems to work provided no more than 32 @@ -198253,13 +198283,13 @@ index 85096bebc4b8..3e224a8db641 100644 }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 15 Dec 2020 16:38:37 +0000 -Subject: [PATCH 311/545] net: lan78xx: Ack pending PHY ints when resetting +Subject: [PATCH 311/590] net: lan78xx: Ack pending PHY ints when resetting lan78xx_link_reset explicitly clears the MAC's view of the PHY's IRQ status. In doing so it potentially leaves the PHY with a pending @@ -198291,13 +198321,13 @@ index 5a39deabe613..1ce889fdd3aa 100644 phy_read_status(phydev); link = phydev->link; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: gesangtome Date: Fri, 1 Jan 2021 18:03:17 +0800 -Subject: [PATCH 312/545] vc-sm-cma: fixed kbuild problem +Subject: [PATCH 312/590] vc-sm-cma: fixed kbuild problem error logs: drivers/staging/vc04_services/vc-sm-cma/Kconfig:1:error: recursive dependency detected! @@ -198327,13 +198357,13 @@ index a7c1a7bf516e..5df9198cdab1 100644 help Enables the MMAL API over VCHIQ interface as used for the -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 10:43:20 +0000 -Subject: [PATCH 313/545] staging/vc04_services: Add additional unpacked raw +Subject: [PATCH 313/590] staging/vc04_services: Add additional unpacked raw formats Support has been added for the unpacked (16bpp) versions of @@ -198384,13 +198414,13 @@ index bd0ddccfbbff..d8d7ec5b962c 100644 /** An EGL image handle */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 11:37:10 +0000 -Subject: [PATCH 314/545] staging/bcm2835-isp: Add the unpacked (16bpp) raw +Subject: [PATCH 314/590] staging/bcm2835-isp: Add the unpacked (16bpp) raw formats Now that the firmware supports the unpacked (16bpp) variants @@ -198566,13 +198596,13 @@ index 3ecb8a15207c..1e3ef82b1104 100644 /* Populate node->supported_fmts with the formats supported by those ports. */ static int bcm2835_isp_get_supported_fmts(struct bcm2835_isp_node *node) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 11:43:22 +0000 -Subject: [PATCH 315/545] staging/bcm2835-isp: Log the number of excess +Subject: [PATCH 315/590] staging/bcm2835-isp: Log the number of excess supported formats When logging that the firmware has provided more supported formats @@ -198601,13 +198631,13 @@ index 1e3ef82b1104..8fea61de3c49 100644 } else { v4l2_err(&dev->v4l2_dev, "%s: get_param ret %u.\n", -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 6 Jan 2021 18:16:10 +0000 -Subject: [PATCH 316/545] bcm2835-dma: Avoid losing CS flags after interrupt +Subject: [PATCH 316/590] bcm2835-dma: Avoid losing CS flags after interrupt Signed-off-by: Dom Cobley --- @@ -198628,13 +198658,13 @@ index 0cbfa9d559a2..9878d1bed589 100644 d = c->desc; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 30 Dec 2020 14:51:29 +0000 -Subject: [PATCH 317/545] bcm2835-dma: Add bcm2835-dma: Add DMA_WIDE_SOURCE and +Subject: [PATCH 317/590] bcm2835-dma: Add bcm2835-dma: Add DMA_WIDE_SOURCE and DMA_WIDE_DEST flags Use (reserved) bits 24 and 25 of the dreq value @@ -198698,13 +198728,13 @@ index 9878d1bed589..6aee9e97d207 100644 size_t max_len = bcm2835_dma_max_frame_length(c); size_t frames; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 14 Jan 2021 09:18:42 +0000 -Subject: [PATCH 318/545] uapi: bcm2835-isp: Add colour denoise configuration +Subject: [PATCH 318/590] uapi: bcm2835-isp: Add colour denoise configuration Add a configuration structure for colour denoise to the bcm2835_isp driver. @@ -198760,13 +198790,13 @@ index cf8c0437f159..c50e3ca81565 100644 * struct bcm2835_isp_denoise - Denoise parameters set with the * V4L2_CID_USER_BCM2835_ISP_DENOISE ctrl. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 14 Jan 2021 09:20:52 +0000 -Subject: [PATCH 319/545] staging: vc04_services: ISP: Add colour denoise +Subject: [PATCH 319/590] staging: vc04_services: ISP: Add colour denoise control Add colour denoise control to the bcm2835 driver through a new v4l2 @@ -198845,13 +198875,13 @@ index 6ae26735a62d..722af059ff9d 100644 u32 enabled; u32 constant; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 28 Jan 2021 11:30:04 +0000 -Subject: [PATCH 320/545] spi: bcm2835: Workaround/fix for zero-length +Subject: [PATCH 320/590] spi: bcm2835: Workaround/fix for zero-length transfers A relatively recent commit ([1]) contained optimisation for the PIO @@ -198901,13 +198931,13 @@ index 747e03228c48..7bc7eab92759 100644 spi_hz = tfr->speed_hz; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Jan 2021 10:34:11 +0000 -Subject: [PATCH 321/545] kbuild: Silence unavoidable dtc overlay warnings +Subject: [PATCH 321/590] kbuild: Silence unavoidable dtc overlay warnings Much effort has been put into finding ways to avoid warnings from dtc about overlays, usually to do with the presence of #address-cells and @@ -198938,13 +198968,13 @@ index ed87353646bf..8e90c3c38a83 100644 cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 12 Jan 2021 13:55:39 +0000 -Subject: [PATCH 322/545] bcm2835-isp: Allow formats with different colour +Subject: [PATCH 322/590] bcm2835-isp: Allow formats with different colour spaces. Each supported format now includes a mask showing the allowed colour @@ -199658,13 +199688,13 @@ index e8f3362d1fad..cc0b8f571f18 100644 queue->io_modes = VB2_MMAP | VB2_DMABUF; queue->drv_priv = node; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 5 Mar 2021 15:40:45 +0000 -Subject: [PATCH 323/545] media: bcm2835-unicam: Fix bug in buffer swapping +Subject: [PATCH 323/590] media: bcm2835-unicam: Fix bug in buffer swapping logic If multiple sets of interrupts occur simultaneously, it may be unsafe @@ -199740,13 +199770,13 @@ index 5b505439ddb1..dee06ecef394 100644 if (!unicam->node[i].streaming) continue; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 8 Mar 2021 15:32:25 +0000 -Subject: [PATCH 324/545] Assign crypto aliases to different AES implementation +Subject: [PATCH 324/590] Assign crypto aliases to different AES implementation modules The kernel modules aes-neon-blk and aes-neon-bs perform poorly, at least on @@ -199857,13 +199887,13 @@ index bac4cabef607..937189bc155c 100644 asmlinkage void aesbs_ecb_encrypt(u8 out[], u8 const in[], u8 const rk[], -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 1 Feb 2021 18:48:47 +0000 -Subject: [PATCH 325/545] media/v4l2_m2m: In buffered mode run jobs if either +Subject: [PATCH 325/590] media/v4l2_m2m: In buffered mode run jobs if either port is streaming In order to get the intended behaviour of the stateful video @@ -199896,13 +199926,13 @@ index b71284728ac3..8fb6d3354f54 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Fri, 17 May 2019 18:23:03 +0800 -Subject: [PATCH 326/545] media: i2c: add ov9281 driver. +Subject: [PATCH 326/590] media: i2c: add ov9281 driver. Change-Id: I7b77250bbc56d2f861450cf77271ad15f9b88ab1 Signed-off-by: Zefa Chen @@ -201646,13 +201676,13 @@ index cc0b8f571f18..7d98096af459 100644 v4l2_device_unregister(&dev->v4l2_dev); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 15 Jan 2020 13:40:38 +0000 -Subject: [PATCH 327/545] media: ov5647: Fix return codes from +Subject: [PATCH 327/590] media: ov5647: Fix return codes from ov5647_write/ov5647_read functions. Previously they were returning positive non-zero codes for success, @@ -201741,13 +201771,13 @@ index 847a7bbb69c5..d59d2408751b 100644 return 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 4 Jul 2020 01:45:08 +0300 -Subject: [PATCH 328/545] media: i2c: ov5647: Parse and register properties +Subject: [PATCH 328/590] media: i2c: ov5647: Parse and register properties Parse device properties and register controls for them using the V4L2 fwnode properties helpers. @@ -201796,13 +201826,13 @@ index d59d2408751b..51adcbf54db2 100644 goto mutex_destroy; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 17 Mar 2021 12:34:57 +0000 -Subject: [PATCH 329/545] staging/bcm2835-camera: Add support for DMABUFs +Subject: [PATCH 329/590] staging/bcm2835-camera: Add support for DMABUFs DMABUFs are all handled by videobuf2, so there is no reason not to enable support for them. @@ -201839,13 +201869,13 @@ index c9d5b009fa9d..430e5c42d09d 100644 q->buf_struct_size = sizeof(struct vb2_mmal_buffer); q->ops = &bcm2835_mmal_video_qops; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 19 Feb 2021 10:25:01 +0000 -Subject: [PATCH 330/545] staging: fbtft: Add minipitft13 variant +Subject: [PATCH 330/590] staging: fbtft: Add minipitft13 variant The Adafruit Mini-PiTFT13 display needs offsets applying when rotated, so use the "variant" mechanism to select a custom set_addr_win method @@ -201949,13 +201979,13 @@ index 861a154144e6..3bcd9ee17b6c 100644 MODULE_ALIAS("spi:" DRVNAME); MODULE_ALIAS("platform:" DRVNAME); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Apr 2021 17:30:35 +0100 -Subject: [PATCH 331/545] drm/panel: jdi-lt070me05000: Use +Subject: [PATCH 331/590] drm/panel: jdi-lt070me05000: Use gpiod_set_value_cansleep There is no reason why the control GPIOs for the panel can not @@ -202022,13 +202052,13 @@ index 8f4f137a2af6..74350f95d1cf 100644 return ret; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Mar 2021 18:34:50 +0000 -Subject: [PATCH 332/545] staging/bcm2835-camera: Add support for H264 levels +Subject: [PATCH 332/590] staging/bcm2835-camera: Add support for H264 levels 4.1 and 4.2 Whilst the hardware can't achieve the limits of level 4.2 under @@ -202086,13 +202116,13 @@ index 65577e3322e2..ccb4317074f5 100644 .step = 1, .imenu = NULL, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 23 Apr 2021 16:16:49 +0100 -Subject: [PATCH 333/545] staging/bcm2835-isp: Fix compiler warning +Subject: [PATCH 333/590] staging/bcm2835-isp: Fix compiler warning The result of dividing a u32 by a size_t is an unsigned int on arm32 and a long unsigned int on arm64. Use "%zu" (the size_t format) to @@ -202117,13 +202147,13 @@ index 7d98096af459..f22f0e154667 100644 MAX_SUPPORTED_ENCODINGS); num_encodings = MAX_SUPPORTED_ENCODINGS; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Apr 2021 08:59:01 +0100 -Subject: [PATCH 334/545] gpio-poweroff: Remember the old poweroff handler +Subject: [PATCH 334/590] gpio-poweroff: Remember the old poweroff handler Keeping a copy of the old poweroff handler allows it to be restored should this module be unloaded, but also provides a fallback if the @@ -202176,13 +202206,13 @@ index e5dca66360a7..81e7acb8acb5 100644 gpiod_unexport(reset_gpio); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 11 May 2021 12:52:26 +0100 -Subject: [PATCH 335/545] media: i2c: ov5647: Correct pixel array offset +Subject: [PATCH 335/590] media: i2c: ov5647: Correct pixel array offset The top offset in the pixel array is actually 6 (see page 3-1 of the OV5647 data sheet). @@ -202207,13 +202237,13 @@ index 51adcbf54db2..904fbfd27f1d 100644 #define OV5647_PIXEL_ARRAY_HEIGHT 1944U -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 11 May 2021 12:57:22 +0100 -Subject: [PATCH 336/545] media: i2c: ov5647: Correct minimum VBLANK value +Subject: [PATCH 336/590] media: i2c: ov5647: Correct minimum VBLANK value Trial and error reveals that the minimum vblank value appears to be 24 (the OV5647 data sheet does not give any clues). This fixes streaming @@ -202239,13 +202269,13 @@ index 904fbfd27f1d..222f6ea95051 100644 #define OV5647_EXPOSURE_MIN 4 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 12 May 2021 07:39:21 +0100 -Subject: [PATCH 337/545] media: i2c: ov5647: Fix v4l2-compliance failure +Subject: [PATCH 337/590] media: i2c: ov5647: Fix v4l2-compliance failure subscribing to events Fixes the following v4l2-compliance failure: @@ -202271,13 +202301,13 @@ index 222f6ea95051..1e769d53d9c2 100644 static const struct v4l2_rect * -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 29 Jun 2021 12:50:58 +0100 -Subject: [PATCH 338/545] staging: vc04_services: isp: Set the YUV420/YVU420 +Subject: [PATCH 338/590] staging: vc04_services: isp: Set the YUV420/YVU420 format stride to 64 bytes The bcm2835 ISP requires the base address of all input/output planes to have 32 @@ -202316,13 +202346,13 @@ index 7541fb316cb9..f6d6c88d13ba 100644 .size_multiplier_x2 = 3, .colorspace_mask = V4L2_COLORSPACE_MASK_YUV, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Van=C4=9Bk?= Date: Wed, 7 Jul 2021 22:48:20 +0200 -Subject: [PATCH 339/545] media: bcm2835-unicam: Forward input status from +Subject: [PATCH 339/590] media: bcm2835-unicam: Forward input status from subdevice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -202375,13 +202405,13 @@ index a684ea98d315..a1c85bdeab37 100644 return 0; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 3 Aug 2021 11:33:33 +0100 -Subject: [PATCH 340/545] media: i2c: ov7251: Add fwnode properties controls +Subject: [PATCH 340/590] media: i2c: ov7251: Add fwnode properties controls Add call to v4l2_ctrl_new_fwnode_properties to read and create the fwnode based controls. @@ -202429,13 +202459,13 @@ index 88e987435285..05cea92277ca 100644 ov7251->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; ov7251->pad.flags = MEDIA_PAD_FL_SOURCE; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 11 Aug 2021 15:33:57 +0100 -Subject: [PATCH 341/545] usb: xhci: workaround for bogus SET_DEQ_PENDING +Subject: [PATCH 341/590] usb: xhci: workaround for bogus SET_DEQ_PENDING endpoint state See https://github.com/raspberrypi/linux/issues/3981 @@ -202459,7 +202489,7 @@ Signed-off-by: Jonathan Bell 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index ad81e9a508b1..f64078d4e0eb 100644 +index dce02d0aad8d..2f4a4a64e875 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -677,9 +677,9 @@ static int xhci_move_dequeue_past_td(struct xhci_hcd *xhci, @@ -202476,13 +202506,13 @@ index ad81e9a508b1..f64078d4e0eb 100644 /* This function gets called from contexts where it cannot sleep */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 1 Nov 2018 17:31:37 +0000 -Subject: [PATCH 342/545] staging: vchiq_arm: Add 36-bit address support +Subject: [PATCH 342/590] staging: vchiq_arm: Add 36-bit address support Conditional on a new compatible string, change the pagelist encoding such that the top 24 bits are the pfn, leaving 8 bits for run length @@ -202738,13 +202768,13 @@ index 004ad2e7f168..08bf8ac019c5 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 21 Jul 2020 17:34:09 +0100 -Subject: [PATCH 343/545] staging: vchiq_arm: children inherit DMA config +Subject: [PATCH 343/590] staging: vchiq_arm: children inherit DMA config Although it is no longer necessary for vchiq's children to have a different DMA configuration to the parent, they do still need to @@ -202780,13 +202810,13 @@ index 08bf8ac019c5..1fded3fe2251 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: detule Date: Tue, 2 Oct 2018 04:10:08 -0400 -Subject: [PATCH 344/545] staging: vchiq_arm: Usa a DMA pool for small bulks +Subject: [PATCH 344/590] staging: vchiq_arm: Usa a DMA pool for small bulks During a bulk transfer we request a DMA allocation to hold the scatter-gather list. Most of the time, this allocation is small @@ -202904,13 +202934,13 @@ index 1fded3fe2251..021cc8c4d5b6 100644 vchiq_log_info(vchiq_arm_log_level, "vchiq_init - done (slots %pK, phys %pad)", vchiq_slot_zero, &slot_phys); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Sep 2021 14:21:38 +0100 -Subject: [PATCH 345/545] drm/panel/raspberrypi-touchscreen: Handle I2C errors. +Subject: [PATCH 345/590] drm/panel/raspberrypi-touchscreen: Handle I2C errors. rpi_touchscreen_i2c_read returns any errors from i2c_transfer, or the 8 bit received value. @@ -202944,13 +202974,13 @@ index 6ce5ea3cd5b1..310743ca2165 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Mar 2021 17:06:36 +0000 -Subject: [PATCH 346/545] drm/panel-simple: Add a timing for the Raspberry Pi +Subject: [PATCH 346/590] drm/panel-simple: Add a timing for the Raspberry Pi 7" panel The Raspberry Pi 7" 800x480 panel uses a Toshiba TC358762 DSI @@ -203009,13 +203039,13 @@ index 8a3b685c2fcc..930c3b9aa101 100644 .compatible = "rocktech,rk070er9427", .data = &rocktech_rk070er9427, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Sep 2021 14:46:17 +0100 -Subject: [PATCH 347/545] Input: edt-ft54x6: Clean up timer and workqueue on +Subject: [PATCH 347/590] Input: edt-ft54x6: Clean up timer and workqueue on remove If no interrupt is defined then a timer and workqueue are used @@ -203046,13 +203076,13 @@ index d5574835b198..06731d73ec28 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Sun, 10 Jan 2021 19:05:17 +0000 -Subject: [PATCH 348/545] staging/vchiq-mmal: Add buffer flags for interlaced +Subject: [PATCH 348/590] staging/vchiq-mmal: Add buffer flags for interlaced video Add the buffer flags that the firmware uses to identify fields @@ -203094,13 +203124,13 @@ index ef84b4e35608..baf37254645a 100644 u32 magic; u32 component_handle; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 5 Aug 2021 16:38:34 +0100 -Subject: [PATCH 349/545] staging/vchiq-mmal: Add parameters for interlaced +Subject: [PATCH 349/590] staging/vchiq-mmal: Add parameters for interlaced video support Adds enum mmal_interlace_type and struct @@ -203161,13 +203191,13 @@ index 722af059ff9d..3ef8e1e05902 100644 struct mmal_parameter_imagefx_parameters { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Aug 2021 15:44:21 +0100 -Subject: [PATCH 350/545] staging/vchiq-mmal: Add the deinterlace image effects +Subject: [PATCH 350/590] staging/vchiq-mmal: Add the deinterlace image effects enums As we're wanting to wrap the image_fx component for deinterlacing, @@ -203193,13 +203223,13 @@ index 3ef8e1e05902..825daadf2fea 100644 enum MMAL_PARAM_FLICKERAVOID { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 2 Dec 2019 14:48:05 +0000 -Subject: [PATCH 351/545] Add Raspberry Pi PoE+ HAT support +Subject: [PATCH 351/590] Add Raspberry Pi PoE+ HAT support Signed-off-by: Serge Schneider --- @@ -203472,13 +203502,13 @@ index 000000000000..0c96b2c1e8ab +MODULE_DESCRIPTION("Raspberry Pi PoE+ HAT power supply driver"); +MODULE_LICENSE("GPL"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Sep 2021 17:49:41 +0100 -Subject: [PATCH 352/545] staging/mmal-vchiq: Rationalise included headers +Subject: [PATCH 352/590] staging/mmal-vchiq: Rationalise included headers The list of includes was slightly over generic, and wasn't in alphabetical order. Clean it up. @@ -203514,13 +203544,13 @@ index 4a948d754185..6030680569a2 100644 #include "mmal-common.h" #include "mmal-parameters.h" -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Sep 2021 17:54:11 +0100 -Subject: [PATCH 353/545] staging/mmal-vchiq: Add module parameter to enable +Subject: [PATCH 353/590] staging/mmal-vchiq: Add module parameter to enable logging. Adds a module parameter "debug" to enable various logging levels. @@ -203831,13 +203861,13 @@ index 6030680569a2..8324897cb2ca 100644 if (ret) pr_err("%s: vcsm_free failed, ret %d\n", __func__, ret); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 21 Sep 2021 17:17:57 +0100 -Subject: [PATCH 354/545] staging: mmal-vchiq: Reset buffers_with_vpu on +Subject: [PATCH 354/590] staging: mmal-vchiq: Reset buffers_with_vpu on port_enable Should we go through the timeout failure case with port_disable @@ -203868,13 +203898,13 @@ index 8324897cb2ca..f112394b65d1 100644 /* send buffer headers to videocore */ hdr_count = 1; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 14 Oct 2021 11:09:18 +0100 -Subject: [PATCH 355/545] drivers/gpio: Add a driver that wraps the PWM API as +Subject: [PATCH 355/590] drivers/gpio: Add a driver that wraps the PWM API as a GPIO controller For cases where spare PWM outputs are available, but are desired @@ -204071,13 +204101,13 @@ index 000000000000..89f5d6b353ab +MODULE_AUTHOR("Dave Stevenson "); +MODULE_DESCRIPTION("PWM GPIO driver"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:47:00 +0100 -Subject: [PATCH 356/545] media: i2c: ov5647: Sensor should report RAW color +Subject: [PATCH 356/590] media: i2c: ov5647: Sensor should report RAW color space Tested on Raspberry Pi running libcamera. @@ -204128,13 +204158,13 @@ index 1e769d53d9c2..dea016035c90 100644 .width = 640, .height = 480 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:49:15 +0100 -Subject: [PATCH 357/545] vc04_services: isp: Report input node as wanting full +Subject: [PATCH 357/590] vc04_services: isp: Report input node as wanting full range RAW color space RAW color spaces are more usually reported as having full range @@ -204163,13 +204193,13 @@ index f22f0e154667..ee893f875c42 100644 f->fmt.pix.ycbcr_enc); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 23 Sep 2020 15:16:18 +0100 -Subject: [PATCH 358/545] media/bcm2835-unicam: Parse pad numbers correctly +Subject: [PATCH 358/590] media/bcm2835-unicam: Parse pad numbers correctly The driver was making big assumptions about the source device using pad 0 and 1, which doesn't follow for more complex @@ -204401,13 +204431,13 @@ index a1c85bdeab37..c183e07f4a35 100644 if (ret) { unicam_err(dev, "Error adding subdevice: %d\n", ret); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 15 Oct 2021 17:57:27 +0100 -Subject: [PATCH 359/545] media/bcm2835-unicam: Add support for configuration +Subject: [PATCH 359/590] media/bcm2835-unicam: Add support for configuration via MC API Adds Media Controller API support for more complex pipelines. @@ -207123,13 +207153,13 @@ index c183e07f4a35..58b3e14ecbaf 100644 if (IS_ERR(unicam->base)) { unicam_err(unicam, "Failed to get main io block\n"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: soyer Date: Sat, 23 Oct 2021 12:23:50 +0200 -Subject: [PATCH 360/545] staging/bcm2835-camera: Add support for H264_MIN_QP, +Subject: [PATCH 360/590] staging/bcm2835-camera: Add support for H264_MIN_QP, H264_MAX_QP Signed-off-by: Gergo Koteles @@ -207185,13 +207215,13 @@ index ccb4317074f5..7133791fda89 100644 int bcm2835_mmal_set_all_camera_controls(struct bcm2835_mmal_dev *dev) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Gergo Koteles Date: Sun, 24 Oct 2021 23:18:09 +0200 -Subject: [PATCH 361/545] staging/bcm2835-camera: Add support for +Subject: [PATCH 361/590] staging/bcm2835-camera: Add support for MPEG_VIDEO_FORCE_KEY_FRAME Signed-off-by: Gergo Koteles @@ -207236,13 +207266,13 @@ index 7133791fda89..4d1d6dc2a8d3 100644 int bcm2835_mmal_set_all_camera_controls(struct bcm2835_mmal_dev *dev) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 2 Nov 2021 11:13:42 +0000 -Subject: [PATCH 362/545] brcmfmac: Don't promote INFO logging to ERR +Subject: [PATCH 362/590] brcmfmac: Don't promote INFO logging to ERR An unwanted side effect of enabling the BRCMDBG config setting is redefining brcmf_info to be brcmf_err. This can be alarming to users @@ -207274,13 +207304,13 @@ index 9bb5f709d41a..ca49700cca50 100644 __printf(3, 4) void __brcmf_dbg(u32 level, const char *func, const char *fmt, ...); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Mon, 22 Nov 2021 13:10:39 +0000 -Subject: [PATCH 363/545] media: i2c: ov5647: Support HFLIP and VFLIP +Subject: [PATCH 363/590] media: i2c: ov5647: Support HFLIP and VFLIP Add these missing V4L2 controls. Tested binned and full resolution modes in all four orientations using Raspberry Pi running libcamera. @@ -207469,13 +207499,13 @@ index dea016035c90..30090697503a 100644 v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 16 Nov 2021 12:38:44 +0000 -Subject: [PATCH 364/545] drivers: bcm2835_isp: Allow multiple users for the +Subject: [PATCH 364/590] drivers: bcm2835_isp: Allow multiple users for the ISP driver. Add a second (identical) set of device nodes to allow concurrent use of the ISP @@ -207650,13 +207680,13 @@ index ee893f875c42..87cd10548564 100644 error: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 25 Nov 2021 08:59:58 +0000 -Subject: [PATCH 365/545] drivers: bcm2835_isp: Fix div by 0 bug. +Subject: [PATCH 365/590] drivers: bcm2835_isp: Fix div by 0 bug. Fix a possible division by 0 bug when setting up the mmal port for the stats port. @@ -207679,13 +207709,13 @@ index f6d6c88d13ba..a545dbf2b5dd 100644 /* The rest are not valid fields for stats. */ } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 29 Nov 2021 12:14:49 +0000 -Subject: [PATCH 366/545] spi: spidev: Restore loading from Device Tree +Subject: [PATCH 366/590] spi: spidev: Restore loading from Device Tree As happens occasionally, an upstream change has once again prevented spidev from being loaded via Device Tree. We now need "spidev" to be @@ -207698,10 +207728,10 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+) diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index 332710e7f26a..c7ddf0d38b20 100644 +index 43b516bd104e..83a6432c103b 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -678,6 +678,7 @@ static const struct file_operations spidev_fops = { +@@ -689,6 +689,7 @@ static const struct file_operations spidev_fops = { static struct class *spidev_class; static const struct spi_device_id spidev_spi_ids[] = { @@ -207710,13 +207740,13 @@ index 332710e7f26a..c7ddf0d38b20 100644 { .name = "ltc2488" }, { .name = "sx1301" }, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Nov 2021 14:37:40 +0000 -Subject: [PATCH 367/545] input: edt-ft5x06: Handle unreliable TOUCH_UP events +Subject: [PATCH 367/590] input: edt-ft5x06: Handle unreliable TOUCH_UP events The ft5x06 is unreliable in sending touch up events, so some touch IDs can become stuck in the detected state. @@ -207779,13 +207809,13 @@ index 06731d73ec28..f5202dafb458 100644 input_mt_report_pointer_emulation(tsdata->input, true); input_sync(tsdata->input); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 30 Nov 2021 10:39:41 +0000 -Subject: [PATCH 368/545] drivers: bcm2835_unicam: Add logging message when a +Subject: [PATCH 368/590] drivers: bcm2835_unicam: Add logging message when a frame is dropped. If a dummy buffer is still active on a frame start, it indicates that this frame @@ -207811,13 +207841,13 @@ index 58b3e14ecbaf..7d5559a863a4 100644 * Set the next frame output to go to a dummy frame * if we have not managed to obtain another frame -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 29 Nov 2021 18:31:37 +0000 -Subject: [PATCH 369/545] regulator/rpi-panel-attiny: Don't read the LCD power +Subject: [PATCH 369/590] regulator/rpi-panel-attiny: Don't read the LCD power status The I2C to the Atmel is very fussy, and locks up easily on @@ -207863,13 +207893,13 @@ index 308f7972941b..a2bc495bf076 100644 static const struct regulator_init_data attiny_regulator_default = { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 30 Nov 2021 17:28:50 +0000 -Subject: [PATCH 370/545] input: edt-ft5x06: Only look at the number of points +Subject: [PATCH 370/590] input: edt-ft5x06: Only look at the number of points reported Register 0x02 in the FT5x06 is TD_STATUS containing the number @@ -207913,13 +207943,13 @@ index f5202dafb458..8b7f3087aceb 100644 type = buf[0] >> 6; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 29 Oct 2018 14:45:45 +0000 -Subject: [PATCH 371/545] rtc: pcf8523: Fix oscillator stop bit handling +Subject: [PATCH 371/590] rtc: pcf8523: Fix oscillator stop bit handling See: https://github.com/raspberrypi/firmware/issues/1065 @@ -207976,13 +208006,13 @@ index 6174b3fd4b98..3a4eaa2dbb58 100644 tm->tm_sec = bcd2bin(regs[0] & 0x7f); tm->tm_min = bcd2bin(regs[1] & 0x7f); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 2 Dec 2021 18:10:55 +0000 -Subject: [PATCH 372/545] drm/panel-simple: Populate bpc when using panel-dpi +Subject: [PATCH 372/590] drm/panel-simple: Populate bpc when using panel-dpi panel-dpi doesn't know the bit depth, so in the same way that DPI is guessed for the connector type, guess that it'll be 8bpc. @@ -208006,13 +208036,13 @@ index 930c3b9aa101..8028dbff4990 100644 panel->desc = desc; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 2 Dec 2021 18:16:21 +0000 -Subject: [PATCH 373/545] drm/panel-simple: Allow the bus format to be read +Subject: [PATCH 373/590] drm/panel-simple: Allow the bus format to be read from DT for panel-dpi The "panel-dpi" compatible string configures panel from device tree, @@ -208040,13 +208070,13 @@ index 8028dbff4990..9f87f4c1f55a 100644 /* Extract bus_flags from display_timing */ bus_flags = 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Mon, 26 Oct 2020 14:03:35 +0000 -Subject: [PATCH 374/545] xhci: quirks: add link TRB quirk for VL805 +Subject: [PATCH 374/590] xhci: quirks: add link TRB quirk for VL805 The VL805 controller can't cope with the TR Dequeue Pointer for an endpoint being set to a Link TRB. The hardware-maintained endpoint context ends up @@ -208066,10 +208096,10 @@ Signed-off-by: Jonathan Bell 3 files changed, 11 insertions(+) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 7bccbe50bab1..d01ccdc072a4 100644 +index 232e175e4e96..f8cddf28c02c 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -290,6 +290,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) +@@ -295,6 +295,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; @@ -208078,7 +208108,7 @@ index 7bccbe50bab1..d01ccdc072a4 100644 if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index f64078d4e0eb..c5b374dfad21 100644 +index 2f4a4a64e875..97554ca8c789 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -667,6 +667,15 @@ static int xhci_move_dequeue_past_td(struct xhci_hcd *xhci, @@ -208098,10 +208128,10 @@ index f64078d4e0eb..c5b374dfad21 100644 /* Don't update the ring cycle state for the producer (us). */ addr = xhci_trb_virt_to_dma(new_seg, new_deq); diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 566376b92fa9..31879a73eb1b 100644 +index b762a7123935..829a40b063e1 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1898,6 +1898,7 @@ struct xhci_hcd { +@@ -1899,6 +1899,7 @@ struct xhci_hcd { #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(42) #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(43) #define XHCI_RESET_TO_DEFAULT BIT_ULL(44) @@ -208110,13 +208140,13 @@ index 566376b92fa9..31879a73eb1b 100644 unsigned int num_active_eps; unsigned int limit_active_eps; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Fri, 3 Dec 2021 14:32:05 +0000 -Subject: [PATCH 375/545] xhci: correct room_on_ring() for cases where there is +Subject: [PATCH 375/590] xhci: correct room_on_ring() for cases where there is a single segment Don't calculate space based on the number of TRBs in the current segment, @@ -208128,7 +208158,7 @@ Signed-off-by: Jonathan Bell 1 file changed, 6 insertions(+) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index c5b374dfad21..1ad88d8ee040 100644 +index 97554ca8c789..c2ba570a98b6 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -289,6 +289,12 @@ static inline int room_on_ring(struct xhci_hcd *xhci, struct xhci_ring *ring, @@ -208145,13 +208175,13 @@ index c5b374dfad21..1ad88d8ee040 100644 if (ring->num_trbs_free < num_trbs + num_trbs_in_deq_seg) return 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Mon, 13 Dec 2021 15:05:56 +0000 -Subject: [PATCH 376/545] xhci: refactor out TRBS_PER_SEGMENT define in runtime +Subject: [PATCH 376/590] xhci: refactor out TRBS_PER_SEGMENT define in runtime code In anticipation of adjusting the number of utilised TRBs in a ring @@ -208306,7 +208336,7 @@ index 2221aba82579..ac6e8957c894 100644 seg = seg->next; } diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index 1ad88d8ee040..4c60e442abe9 100644 +index c2ba570a98b6..323ca0dba61d 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -90,15 +90,16 @@ static bool trb_is_link(union xhci_trb *trb) @@ -208358,7 +208388,7 @@ index 1ad88d8ee040..4c60e442abe9 100644 xhci_err(xhci, "Tried to move enqueue past ring segment\n"); return; } -@@ -3087,7 +3090,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) +@@ -3096,7 +3099,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) * that clears the EHB. */ while (xhci_handle_event(xhci) > 0) { @@ -208367,7 +208397,7 @@ index 1ad88d8ee040..4c60e442abe9 100644 continue; xhci_update_erst_dequeue(xhci, event_ring_deq); event_ring_deq = xhci->event_ring->dequeue; -@@ -3229,7 +3232,8 @@ static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring, +@@ -3238,7 +3241,8 @@ static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring, } } @@ -208378,7 +208408,7 @@ index 1ad88d8ee040..4c60e442abe9 100644 return -EINVAL; } diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index adaf13580af3..e6107d126794 100644 +index c7aaba91062d..3e7ca9058df3 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -891,8 +891,8 @@ static void xhci_clear_command_ring(struct xhci_hcd *xhci) @@ -208402,7 +208432,7 @@ index adaf13580af3..e6107d126794 100644 * Ring is now zeroed, so the HW should look for change of ownership * when the cycle bit is set to 1. diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 31879a73eb1b..0bf828d97b63 100644 +index 829a40b063e1..4b6700b8e2ce 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1633,6 +1633,7 @@ struct xhci_ring { @@ -208414,13 +208444,13 @@ index 31879a73eb1b..0bf828d97b63 100644 bool last_td_was_short; struct radix_tree_root *trb_address_map; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Mon, 13 Dec 2021 16:04:03 +0000 -Subject: [PATCH 377/545] usb: xhci: add VLI_TRB_CACHE_BUG quirk +Subject: [PATCH 377/590] usb: xhci: add VLI_TRB_CACHE_BUG quirk The VL805 fetches up to 4 transfer TRBs at a time. TRB reads don't cross a 64B boundary, and if a TRB is fetched and is not on a 64B boundary, @@ -208473,10 +208503,10 @@ index ac6e8957c894..e9d81cb1d6b0 100644 &ring->last_seg, num_segs, ring->trbs_per_seg, cycle_state, type, max_packet, flags); diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index d01ccdc072a4..e4d70a64716f 100644 +index f8cddf28c02c..374a3f992884 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -291,6 +291,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) +@@ -296,6 +296,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; @@ -208485,10 +208515,10 @@ index d01ccdc072a4..e4d70a64716f 100644 if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 0bf828d97b63..9d294413745a 100644 +index 4b6700b8e2ce..ce8541d6c28f 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1900,6 +1900,7 @@ struct xhci_hcd { +@@ -1901,6 +1901,7 @@ struct xhci_hcd { #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(43) #define XHCI_RESET_TO_DEFAULT BIT_ULL(44) #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(45) @@ -208497,13 +208527,13 @@ index 0bf828d97b63..9d294413745a 100644 unsigned int num_active_eps; unsigned int limit_active_eps; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 22 Nov 2021 12:31:35 +0000 -Subject: [PATCH 378/545] media: i2c: ov5647: Add support for regulator +Subject: [PATCH 378/590] media: i2c: ov5647: Add support for regulator control. The driver supported using GPIOs to control the shutdown line, @@ -208614,13 +208644,13 @@ index 30090697503a..ccf1c28d3c8f 100644 sensor->mode = OV5647_DEFAULT_MODE; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 14 Dec 2021 17:18:49 +0000 -Subject: [PATCH 379/545] media: i2c: ov7251: Make the enable GPIO optional. +Subject: [PATCH 379/590] media: i2c: ov7251: Make the enable GPIO optional. Not all implementations wire up the enable GPIO and may just tie it to a supply rail. @@ -208646,13 +208676,13 @@ index 05cea92277ca..e5adaa17cddf 100644 dev_err(dev, "cannot get enable gpio\n"); return PTR_ERR(ov7251->enable_gpio); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 16 Dec 2021 16:25:00 +0000 -Subject: [PATCH 380/545] staging/bcm2835-isp: Fix cleanup after init fail +Subject: [PATCH 380/590] staging/bcm2835-isp: Fix cleanup after init fail bcm2835_isp_remove is called on an initialisation failure, but at that point the drvdata hasn't been set. This causes a crash when e.g. using @@ -208690,13 +208720,13 @@ index 87cd10548564..a512994b7267 100644 return 0; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 4 Jan 2022 13:56:42 +0000 -Subject: [PATCH 381/545] uapi/v4l2-controls: Reset +Subject: [PATCH 381/590] uapi/v4l2-controls: Reset V4L2_CID_USER_BCM2835_ISP_BASE to same as 5.10 https://github.com/raspberrypi/linux/issues/4440 @@ -208729,13 +208759,13 @@ index ea7e229cd245..af104013ac23 100644 /* MPEG-class control IDs */ /* The MPEG controls are applicable to all codec controls -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 4 Jan 2022 14:46:01 +0000 -Subject: [PATCH 382/545] media: i2c: ov9281: Increase diff between VTS and max +Subject: [PATCH 382/590] media: i2c: ov9281: Increase diff between VTS and max exposure The driver did allow the exposure to go up to VTS - 4 lines, @@ -208795,13 +208825,13 @@ index 041171e3a0c5..36ead3b3b584 100644 V4L2_CID_EXPOSURE, OV9281_EXPOSURE_MIN, exposure_max, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Andreas Blaesius Date: Wed, 5 Jan 2022 20:38:39 +0100 -Subject: [PATCH 383/545] Use GitHubs issue form for bug reports +Subject: [PATCH 383/590] Use GitHubs issue form for bug reports Use GitHubs issue form for bug reports. @@ -208971,13 +209001,13 @@ index 000000000000..338282d8eb46 + about: "If you have problems with the Raspbian distribution packages, please report them in the github.com/RPi-Distro/repo." + -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Padmanabha Srinivasaiah Date: Thu, 30 Dec 2021 21:45:10 +0100 -Subject: [PATCH 384/545] bcm2835-v4l2-isp: Add missing lock initialization +Subject: [PATCH 384/590] bcm2835-v4l2-isp: Add missing lock initialization ISP device allocation is dynamic hence the locks too. struct mutex queue_lock is not initialized which result in bug. @@ -209028,13 +209058,13 @@ index a512994b7267..8fa6971edce0 100644 node->dev = dev; vfd = &node->vfd; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 19 Jan 2022 17:22:57 +0000 -Subject: [PATCH 385/545] mfd: simple-mfd-i2c: Add configuration for RPi POE +Subject: [PATCH 385/590] mfd: simple-mfd-i2c: Add configuration for RPi POE HAT The Raspbery Pi PoE+ HAT exposes a fan controller and power @@ -209050,7 +209080,7 @@ Signed-off-by: Dave Stevenson 2 files changed, 20 insertions(+) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 9a6b0ee1b877..b992afbba192 100644 +index b126bce1dc74..b9d0d6565db0 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -1151,6 +1151,16 @@ config MFD_SY7636A @@ -209099,13 +209129,13 @@ index f4c8fc3ee463..9f60dfd35e9f 100644 }; MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 19 Jan 2022 17:26:22 +0000 -Subject: [PATCH 386/545] pwm: raspberrypi-poe: Add option of being created by +Subject: [PATCH 386/590] pwm: raspberrypi-poe: Add option of being created by MFD or FW The firmware can only use I2C0 if the kernel isn't, therefore @@ -209275,13 +209305,13 @@ index 6ff73029f367..117a061a7a3e 100644 }; MODULE_DEVICE_TABLE(of, raspberrypi_pwm_of_match); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 20 Jan 2022 15:48:03 +0000 -Subject: [PATCH 387/545] power: rpi-poe: Drop CURRENT_AVG as it is not +Subject: [PATCH 387/590] power: rpi-poe: Drop CURRENT_AVG as it is not hardware averaged As documented the _AVG parameters are meant to be hardware @@ -209324,13 +209354,13 @@ index 0c96b2c1e8ab..7cf1014aa524 100644 POWER_SUPPLY_PROP_CURRENT_MAX, }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 20 Jan 2022 15:50:27 +0000 -Subject: [PATCH 388/545] power: rpi-poe: Add option of being created by MFD or +Subject: [PATCH 388/590] power: rpi-poe: Add option of being created by MFD or FW The firmware can only use I2C0 if the kernel isn't, therefore @@ -209564,13 +209594,13 @@ index 7cf1014aa524..e96f98c39f0e 100644 psy_cfg.of_node = pdev->dev.of_node; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 18 Jan 2022 13:13:14 +0000 -Subject: [PATCH 389/545] drivers: bcm2835_unicam: Disable trigger mode +Subject: [PATCH 389/590] drivers: bcm2835_unicam: Disable trigger mode operation On a Pi3 B/B+ platform the imx219 sensor frequently generates a single corrupt @@ -209627,13 +209657,13 @@ index 7d5559a863a4..0a27ecf95818 100644 static void unicam_disable(struct unicam_device *dev) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Penk Chen Date: Mon, 20 Dec 2021 03:44:56 +0900 -Subject: [PATCH 390/545] Extending ili9881c driver support for nwe080 panel +Subject: [PATCH 390/590] Extending ili9881c driver support for nwe080 panel Signed-off-by: Penk Chen --- @@ -209929,13 +209959,13 @@ index cbb68caa36f2..4d1017a621bf 100644 { } }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nathan Chancellor Date: Mon, 31 Jan 2022 17:23:38 -0700 -Subject: [PATCH 391/545] media: bcm2835-unicam: Set ret on error path in +Subject: [PATCH 391/590] media: bcm2835-unicam: Set ret on error path in unicam_async_complete() Clang warns: @@ -209978,13 +210008,13 @@ index 0a27ecf95818..228d771e6597 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nathan Chancellor Date: Mon, 31 Jan 2022 17:50:43 -0700 -Subject: [PATCH 392/545] media: i2c: ov9281: Initialize id_msb to zero in +Subject: [PATCH 392/590] media: i2c: ov9281: Initialize id_msb to zero in ov9281_check_sensor_id() Clang warns: @@ -210032,13 +210062,13 @@ index 36ead3b3b584..028d96c97859 100644 ret = ov9281_read_reg(client, OV9281_REG_CHIP_ID + 1, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Alex Crawford Date: Fri, 28 Jan 2022 13:36:51 -0800 -Subject: [PATCH 393/545] i2c: bcm2835: Make clock-stretch timeout configurable +Subject: [PATCH 393/590] i2c: bcm2835: Make clock-stretch timeout configurable The default clock-stretch timeout is 35 mS, which works well for SMBus, but there are some I2C devices which can stretch the clock even @@ -210082,13 +210112,13 @@ index d768247c7e50..7408e2c136b0 100644 bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_CLKT, clk_tout); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: tiagofreire-pt <41837236+tiagofreire-pt@users.noreply.github.com> Date: Sat, 29 Jan 2022 10:01:36 +0000 -Subject: [PATCH 394/545] Patching lan78xx for SOF_TIMESTAMPING_TX_SOFTWARE +Subject: [PATCH 394/590] Patching lan78xx for SOF_TIMESTAMPING_TX_SOFTWARE support --- @@ -210108,13 +210138,13 @@ index 1ce889fdd3aa..9bbdd23311fe 100644 static void lan78xx_init_mac_address(struct lan78xx_net *dev) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Chris Morgan Date: Fri, 28 Jan 2022 17:37:43 -0600 -Subject: [PATCH 395/545] media: uapi: Document format +Subject: [PATCH 395/590] media: uapi: Document format MEDIA_BUS_FMT_RGB565_1X24_CPADHI Add support for MEDIA_BUS_FMT_RGB565_1X24_CPADHI. This format is used @@ -210174,13 +210204,13 @@ index d35b7cfbd2a9..8cdb545c887c 100644 - MEDIA_BUS_FMT_BGR565_2X8_BE -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Chris Morgan Date: Fri, 28 Jan 2022 17:40:50 -0600 -Subject: [PATCH 396/545] dt-bindings: vendor-prefixes: Add Geekworm +Subject: [PATCH 396/590] dt-bindings: vendor-prefixes: Add Geekworm Add vendor prefix for Geekworm (https://geekworm.com). @@ -210203,13 +210233,13 @@ index cf0e81449c58..dcaec826855e 100644 description: GE Fanuc Intelligent Platforms Embedded Systems, Inc. "^GEFanuc,.*": -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Chris Morgan Date: Fri, 28 Jan 2022 17:41:18 -0600 -Subject: [PATCH 397/545] dt-bindings: display: simple: add Geekworm MZP280 +Subject: [PATCH 397/590] dt-bindings: display: simple: add Geekworm MZP280 Panel The Geekworm MZP280 panel is a 480x640 (portrait) panel with a @@ -210243,13 +210273,13 @@ index 18241f4051d2..5b6a744d0371 100644 - giantplus,gpg48273qs5 # GiantPlus GPM940B0 3.0" QVGA TFT LCD panel -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Chris Morgan Date: Fri, 28 Jan 2022 17:42:12 -0600 -Subject: [PATCH 398/545] drm/panel: simple: add Geekworm MZP280 Panel +Subject: [PATCH 398/590] drm/panel: simple: add Geekworm MZP280 Panel Add support for the Geekworm MZP280 Panel @@ -210307,13 +210337,13 @@ index 9f87f4c1f55a..1e7a31b2f444 100644 .compatible = "giantplus,gpg482739qs5", .data = &giantplus_gpg482739qs5 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 1 Feb 2022 12:24:51 +0000 -Subject: [PATCH 399/545] drm/panel: simple: Remove custom handling of +Subject: [PATCH 399/590] drm/panel: simple: Remove custom handling of orientation Panel orientation is now handled by the drm_panel and @@ -210364,13 +210394,13 @@ index 1e7a31b2f444..1705b34ef76b 100644 if (ddc) { panel->ddc = of_find_i2c_adapter_by_node(ddc); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 5 Jan 2022 19:14:48 +0000 -Subject: [PATCH 400/545] drm/panel: Add panel driver for Ilitek ILI9806E panel +Subject: [PATCH 400/590] drm/panel: Add panel driver for Ilitek ILI9806E panel The Ilitek ILI9806E driver is used in the Pimoroni HyperPixel4 and potentially other displays. Whilst it can support multiple @@ -210910,13 +210940,13 @@ index 000000000000..80e5bbe7a041 +MODULE_DESCRIPTION("ili9806 LCD panel driver"); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 26 Jan 2022 16:02:31 +0000 -Subject: [PATCH 401/545] drm/panel: Add panel driver for TDO Y17B based panels +Subject: [PATCH 401/590] drm/panel: Add panel driver for TDO Y17B based panels The Top DisplayOptoelectronics (TDO) T17B driver chip is used in the TL040HDS20CT panel (found in the Pimoroni HyperPixel4 @@ -211250,13 +211280,13 @@ index 000000000000..28c2a33691fd +MODULE_DESCRIPTION("TDO Y17P LCD panel driver"); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 4 Feb 2022 11:33:28 +0000 -Subject: [PATCH 402/545] bindings: Add sck-idle-input to spi-gpio +Subject: [PATCH 402/590] bindings: Add sck-idle-input to spi-gpio Signed-off-by: Phil Elwell --- @@ -211279,13 +211309,13 @@ index 0d0b6d9dad1c..9136f081f420 100644 gpio-sck: false gpio-miso: false -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 12 Jan 2022 08:23:28 +0000 -Subject: [PATCH 403/545] spi: gpio: Add sck-idle-input property +Subject: [PATCH 403/590] spi: gpio: Add sck-idle-input property The sck-idle-input property indicates that the spi-gpio driver should return the SCK line to an input when the chip select signals are @@ -211297,7 +211327,7 @@ Signed-off-by: Phil Elwell 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-gpio.c b/drivers/spi/spi-gpio.c -index 4b12c4964a66..dcc1250601c5 100644 +index 9c8c7948044e..5b52159e2dc0 100644 --- a/drivers/spi/spi-gpio.c +++ b/drivers/spi/spi-gpio.c @@ -35,6 +35,7 @@ struct spi_gpio { @@ -211333,7 +211363,7 @@ index 4b12c4964a66..dcc1250601c5 100644 } static int spi_gpio_setup(struct spi_device *spi) -@@ -313,6 +321,7 @@ static int spi_gpio_request(struct device *dev, struct spi_gpio *spi_gpio) +@@ -323,6 +331,7 @@ static int spi_gpio_request(struct device *dev, struct spi_gpio *spi_gpio) if (IS_ERR(spi_gpio->miso)) return PTR_ERR(spi_gpio->miso); @@ -211342,13 +211372,13 @@ index 4b12c4964a66..dcc1250601c5 100644 return PTR_ERR_OR_ZERO(spi_gpio->sck); } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 4 Feb 2022 16:12:35 +0000 -Subject: [PATCH 404/545] media: bcm2835-unicam: Handle a repeated frame start +Subject: [PATCH 404/590] media: bcm2835-unicam: Handle a repeated frame start with no end In the case of 2 frame starts being received with no frame end @@ -211411,13 +211441,13 @@ index 228d771e6597..7b7de978a214 100644 unicam_queue_event_sof(unicam); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 16 Feb 2022 14:31:02 +0000 -Subject: [PATCH 405/545] usb: xhci: add a quirk for Superspeed bulk OUT +Subject: [PATCH 405/590] usb: xhci: add a quirk for Superspeed bulk OUT transfers on VL805 The VL805 has a bug in its internal FIFO space accounting that results @@ -211441,10 +211471,10 @@ Signed-off-by: Jonathan Bell 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index e4d70a64716f..c254e6503a81 100644 +index 374a3f992884..8a70e6097ab8 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -292,6 +292,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) +@@ -297,6 +297,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_VLI_TRB_CACHE_BUG; @@ -211453,10 +211483,10 @@ index e4d70a64716f..c254e6503a81 100644 if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index 4c60e442abe9..5a2d029c73c1 100644 +index 323ca0dba61d..dcb72ee18769 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3542,14 +3542,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3551,14 +3551,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, unsigned int num_trbs; unsigned int start_cycle, num_sgs = 0; unsigned int enqd_len, block_len, trb_buff_len, full_len; @@ -211474,7 +211504,7 @@ index 4c60e442abe9..5a2d029c73c1 100644 full_len = urb->transfer_buffer_length; /* If we have scatter/gather list, we use it. */ if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) { -@@ -3586,6 +3587,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3595,6 +3596,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, start_cycle = ring->cycle_state; send_addr = addr; @@ -211492,7 +211522,7 @@ index 4c60e442abe9..5a2d029c73c1 100644 /* Queue the TRBs, even if they are zero-length */ for (enqd_len = 0; first_trb || enqd_len < full_len; enqd_len += trb_buff_len) { -@@ -3598,6 +3610,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3607,6 +3619,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, if (enqd_len + trb_buff_len > full_len) trb_buff_len = full_len - enqd_len; @@ -211505,10 +211535,10 @@ index 4c60e442abe9..5a2d029c73c1 100644 if (first_trb) { first_trb = false; diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 9d294413745a..4a7e36d01b3b 100644 +index ce8541d6c28f..a8946c53110c 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1901,6 +1901,7 @@ struct xhci_hcd { +@@ -1902,6 +1902,7 @@ struct xhci_hcd { #define XHCI_RESET_TO_DEFAULT BIT_ULL(44) #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(45) #define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(46) @@ -211517,13 +211547,13 @@ index 9d294413745a..4a7e36d01b3b 100644 unsigned int num_active_eps; unsigned int limit_active_eps; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 17 Feb 2022 14:48:30 +0000 -Subject: [PATCH 406/545] media: i2c: ov7251: Reinstate setting +Subject: [PATCH 406/590] media: i2c: ov7251: Reinstate setting ov7251_global_init_setting "media: i2c: Remove .s_power() from ov7251" removed the call that @@ -211555,13 +211585,13 @@ index e5adaa17cddf..a96a7622d5e4 100644 if (ret) { dev_err(ov7251->dev, "error configuring PLLs\n"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 1 Mar 2022 15:12:15 +0000 -Subject: [PATCH 407/545] usb: xhci: rework XHCI_VLI_SS_BULK_OUT_BUG quirk +Subject: [PATCH 407/590] usb: xhci: rework XHCI_VLI_SS_BULK_OUT_BUG quirk Fix incorrectly applying the quirk for bulk IN endpoints and remove the commentary which is not completely accurate based on observed behaviour. @@ -211572,10 +211602,10 @@ Signed-off-by: Jonathan Bell 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index 5a2d029c73c1..b4ec985c5396 100644 +index dcb72ee18769..d058a644a97a 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3542,7 +3542,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3551,7 +3551,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, unsigned int num_trbs; unsigned int start_cycle, num_sgs = 0; unsigned int enqd_len, block_len, trb_buff_len, full_len; @@ -211584,7 +211614,7 @@ index 5a2d029c73c1..b4ec985c5396 100644 u32 field, length_field, remainder, maxpacket; u64 addr, send_addr; -@@ -3588,14 +3588,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3597,14 +3597,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, send_addr = addr; if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG && @@ -211602,7 +211632,7 @@ index 5a2d029c73c1..b4ec985c5396 100644 } /* Queue the TRBs, even if they are zero-length */ -@@ -3610,7 +3605,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3619,7 +3614,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, if (enqd_len + trb_buff_len > full_len) trb_buff_len = full_len - enqd_len; @@ -211612,13 +211642,13 @@ index 5a2d029c73c1..b4ec985c5396 100644 remainder = trb_buff_len & (maxpacket - 1); trb_buff_len -= remainder; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 25 Feb 2022 18:16:13 +0000 -Subject: [PATCH 408/545] media/i2c: Add driver for Omnivision OV2311 +Subject: [PATCH 408/590] media/i2c: Add driver for Omnivision OV2311 Omnivision OV2311 is a CSI2 1600x1300 global shutter image sensor. Add a driver for it. @@ -212851,13 +212881,13 @@ index 000000000000..6d63e6519960 +MODULE_DESCRIPTION("OmniVision OV2311 sensor driver"); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 2 Mar 2022 16:47:37 +0000 -Subject: [PATCH 409/545] staging: vc04_services: isp: Permit all sRGB colour +Subject: [PATCH 409/590] staging: vc04_services: isp: Permit all sRGB colour spaces on ISP outputs ISP outputs actually support all colour spaces that are fundamentally @@ -213018,13 +213048,13 @@ index a545dbf2b5dd..5ab232ff9bd9 100644 .step_size = 1, }, { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 3 Mar 2022 16:45:53 +0000 -Subject: [PATCH 410/545] drivers: staging: bcm2835-isp: Do not cleanup mmal +Subject: [PATCH 410/590] drivers: staging: bcm2835-isp: Do not cleanup mmal vcsm buffer on stop_streaming On stop_streaming() the vcsm buffer handle gets released by the buffer cleanup @@ -213067,13 +213097,13 @@ index 8fa6971edce0..44b1acff099e 100644 /* If all ports disabled, then disable the component */ if (atomic_read(&dev->num_streaming) == 0) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Sep 2021 12:33:35 +0100 -Subject: [PATCH 411/545] dt-bindings: media: i2c: Add binding for ad5398 VCM +Subject: [PATCH 411/590] dt-bindings: media: i2c: Add binding for ad5398 VCM Add a binding for Analog Devices AD5398 10bit current sinking DAC when used as a lens VCM driver. @@ -213113,13 +213143,13 @@ index 000000000000..446ac9717598 + }; + -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Sep 2021 14:04:28 +0100 -Subject: [PATCH 412/545] media: i2c: Add driver for AD5398 VCM lens driver +Subject: [PATCH 412/590] media: i2c: Add driver for AD5398 VCM lens driver Adds a driver for the Analog Devices AD5398 10 bit I2C DAC which is commonly used for driving VCM lens @@ -213511,13 +213541,13 @@ index 000000000000..f3e3dc770446 +MODULE_DESCRIPTION("AD5398 camera lens driver"); +MODULE_LICENSE("GPL"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 16 Mar 2022 12:15:41 +0000 -Subject: [PATCH 413/545] media: i2c: ov5647: Use +Subject: [PATCH 413/590] media: i2c: ov5647: Use v4l2_async_register_subdev_sensor for lens binding v4l2_async_register_subdev doesn't bind in lens or flash drivers, @@ -213543,13 +213573,13 @@ index ccf1c28d3c8f..60214c1342e3 100644 goto power_off; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 17 Mar 2022 15:13:10 +0000 -Subject: [PATCH 414/545] media: i2c: Rename ad5398 to ad5398_vcm +Subject: [PATCH 414/590] media: i2c: Rename ad5398 to ad5398_vcm There's already a regulator module called ad5398 that exposes this device through the regulator API. That is meaningless in @@ -213582,13 +213612,13 @@ similarity index 100% rename from drivers/media/i2c/ad5398.c rename to drivers/media/i2c/ad5398_vcm.c -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 22 Mar 2022 15:16:40 +0000 -Subject: [PATCH 415/545] drivers: staging: bcm2835-isp: Clear LS table handle +Subject: [PATCH 415/590] drivers: staging: bcm2835-isp: Clear LS table handle in the firmware When all nodes have stopped streaming, ensure the firmware has released its @@ -213625,13 +213655,13 @@ index 44b1acff099e..c10fc6af1897 100644 dev->component); if (ret) { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 29 Mar 2022 16:10:06 +0100 -Subject: [PATCH 416/545] mm,page_alloc,cma: introduce a customisable threshold +Subject: [PATCH 416/590] mm,page_alloc,cma: introduce a customisable threshold for allocating pages in cma On some platforms the cma area can be half the entire system memory, @@ -213698,13 +213728,13 @@ index 6e60657875d3..fbfcee857b12 100644 if (page) return page; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 30 Mar 2022 09:48:41 +0100 -Subject: [PATCH 417/545] pinctrl: bcm2835: Only return non-GPIOs to inputs +Subject: [PATCH 417/590] pinctrl: bcm2835: Only return non-GPIOs to inputs Allowing GPIO state to persist allows the use of gpioset to control GPIO levels without having to use the --mode=wait feature. @@ -213746,13 +213776,13 @@ index 2063804e70ff..3ef9b6511b80 100644 static int bcm2835_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 31 Mar 2022 12:03:36 +0100 -Subject: [PATCH 418/545] drm/panel: ilitek-ili9881c: Clean up on +Subject: [PATCH 418/590] drm/panel: ilitek-ili9881c: Clean up on mipi_dsi_attach failure mipi_dsi_attach is allowed to fail, and currently the probe @@ -213783,13 +213813,13 @@ index 4d1017a621bf..bc4c846bf4a6 100644 static void ili9881c_dsi_remove(struct mipi_dsi_device *dsi) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 31 Mar 2022 12:05:04 +0100 -Subject: [PATCH 419/545] drm/panel: panel-ilitek9881c: Add +Subject: [PATCH 419/590] drm/panel: panel-ilitek9881c: Add prepare_upstream_first flag The panel sends MIPI DCS commands during prepare and is expecting @@ -213817,13 +213847,13 @@ index bc4c846bf4a6..6136da4d0af8 100644 DRM_MODE_CONNECTOR_DSI); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Alberto Solavagione Date: Wed, 20 Apr 2022 17:15:42 +0200 -Subject: [PATCH 420/545] clk-bcm2835: use subsys_initcall for the clock driver +Subject: [PATCH 420/590] clk-bcm2835: use subsys_initcall for the clock driver when IMA is enabled Co-authored-by: Davide Scovotto @@ -213851,13 +213881,13 @@ index 71129e60df9a..f2d07a851726 100644 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Scovotto Davide Date: Wed, 20 Apr 2022 17:22:17 +0200 -Subject: [PATCH 421/545] tpm_tis_spi_main: Force probe routine to run +Subject: [PATCH 421/590] tpm_tis_spi_main: Force probe routine to run synchronously with driver and device registration when IMA is enabled Co-authored-by: Alberto Solavagione @@ -213885,13 +213915,13 @@ index a0963a3e92bd..1869bca4c7ee 100644 .probe = tpm_tis_spi_driver_probe, .remove = tpm_tis_spi_remove, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Apr 2022 09:19:10 +0100 -Subject: [PATCH 422/545] staging: vchiq_arm: Add log_level module params +Subject: [PATCH 422/590] staging: vchiq_arm: Add log_level module params Add module parameters to control the logging levels for the various vchiq logging categories. @@ -213918,13 +213948,13 @@ index 021cc8c4d5b6..59e73109fbd6 100644 DEFINE_SPINLOCK(msg_queue_spinlock); struct vchiq_state g_state; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Thu, 21 Apr 2022 14:14:29 +0800 -Subject: [PATCH 423/545] dt-bindings: vendor-prefixes: Add Arducam +Subject: [PATCH 423/590] dt-bindings: vendor-prefixes: Add Arducam Add vendor prefix for Arducam (https://arducam.com). @@ -213947,13 +213977,13 @@ index dcaec826855e..8e61f905d79c 100644 description: ARM Ltd. "^armadeus,.*": -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Thu, 21 Apr 2022 14:18:44 +0800 -Subject: [PATCH 424/545] media: dt-bindings: media: i2c: Add Arducam Pivariety +Subject: [PATCH 424/590] media: dt-bindings: media: i2c: Add Arducam Pivariety Series CMOS sensor binding Add YAML device tree binding for Arducam Pivariety CMOS image sensor, and @@ -214085,7 +214115,7 @@ index 000000000000..92bf4ff32eb4 + +... diff --git a/MAINTAINERS b/MAINTAINERS -index d2c02dbcceb4..3cb69e11cf06 100644 +index be2c1873662f..e708598de8b9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1559,6 +1559,14 @@ S: Maintained @@ -214104,13 +214134,13 @@ index d2c02dbcceb4..3cb69e11cf06 100644 M: Mark Rutland M: Marc Zyngier -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Thu, 14 Apr 2022 17:31:01 +0800 -Subject: [PATCH 425/545] media: i2c: Add driver of Arducam Pivariety series +Subject: [PATCH 425/590] media: i2c: Add driver of Arducam Pivariety series camera Add a driver for the Arducam Pivariety series CSI2 camera sensor. @@ -215753,13 +215783,13 @@ index 000000000000..b2b8cbc47138 + +#endif -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 May 2022 15:34:44 +0100 -Subject: [PATCH 426/545] thermal: broadcom: Use dev_err_probe to suppress +Subject: [PATCH 426/590] thermal: broadcom: Use dev_err_probe to suppress defer errors It is quite common for the devm_thermal_zone_of_sensor_register @@ -215785,13 +215815,13 @@ index 1f8651d15160..3694e64fd308 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Michael Shych Date: Sat, 30 Apr 2022 14:49:04 +0300 -Subject: [PATCH 427/545] dt-bindings: hwmon: add microchip,emc2305.yaml dt +Subject: [PATCH 427/590] dt-bindings: hwmon: add microchip,emc2305.yaml dt binding description. Submitted to linux-hwmon mailing list at @@ -215867,13 +215897,13 @@ index 000000000000..52ae4c2924d6 + emc2305,cooling-levels = <10>; + }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 10 May 2022 14:03:30 +0100 -Subject: [PATCH 428/545] dtbindings: Fixup microchip,emc2305.yaml bindings +Subject: [PATCH 428/590] dtbindings: Fixup microchip,emc2305.yaml bindings The bindings submitted to mainline had some issues, so fix them up. @@ -215913,13 +215943,13 @@ index 52ae4c2924d6..efdc3cecb03d 100644 emc2305,pwm-max = <255>; emc2305,pwm-channel = <5> -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 12 May 2022 14:29:48 +0100 -Subject: [PATCH 429/545] media: i2c: Update ov2311 Kconfig entry +Subject: [PATCH 429/590] media: i2c: Update ov2311 Kconfig entry Bring the OV2311 Kconfig declaration in line with upstream entries. @@ -215941,13 +215971,13 @@ index f3960dad23be..62c94d2ac69d 100644 This is a Video4Linux2 sensor-level driver for the OmniVision OV2311 camera. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 12 May 2022 14:31:43 +0100 -Subject: [PATCH 430/545] media: i2c: Update ov9281 Kconfig entry +Subject: [PATCH 430/590] media: i2c: Update ov9281 Kconfig entry Bring the OV9281 Kconfig declaration in line with upstream entries. @@ -215969,13 +215999,13 @@ index 62c94d2ac69d..a253fe2cfbb6 100644 This is a Video4Linux2 sensor-level driver for the OmniVision OV9281 camera. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 12 May 2022 14:32:26 +0100 -Subject: [PATCH 431/545] media: i2c: Update irs1125 Kconfig entry +Subject: [PATCH 431/590] media: i2c: Update irs1125 Kconfig entry Bring the IRS1125 Kconfig declaration in line with upstream entries. @@ -216000,13 +216030,13 @@ index a253fe2cfbb6..40432efc8a6a 100644 help This is a Video4Linux2 sensor-level driver for the Infineon -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 12 May 2022 17:42:08 +0100 -Subject: [PATCH 432/545] media: i2c: arducam-pivariety: Fixup for mainline API +Subject: [PATCH 432/590] media: i2c: arducam-pivariety: Fixup for mainline API changes Mainline APIs have changed the way in which the bus flags and @@ -216048,13 +216078,13 @@ index db008f944833..1806f44f343b 100644 return 0; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Mon, 16 May 2022 10:28:27 +0100 -Subject: [PATCH 433/545] mmc: block: Don't do single-sector reads during +Subject: [PATCH 433/590] mmc: block: Don't do single-sector reads during recovery See https://github.com/raspberrypi/linux/issues/5019 @@ -216088,13 +216118,13 @@ index f12e774df12a..3718a39c9dc5 100644 /* Read one (native) sector at a time */ mmc_blk_read_single(mq, req); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 16 May 2022 17:33:48 +0100 -Subject: [PATCH 434/545] vc04_services: vchiq-mmal: Add defines for +Subject: [PATCH 434/590] vc04_services: vchiq-mmal: Add defines for mmal_es_format flags There is a flags field in struct mmal_es_format, but the defines @@ -216128,13 +216158,13 @@ index 5569876d8c7d..e8f5ca85a7c4 100644 struct mmal_es_format_local { u32 type; /* enum mmal_es_type */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 7 Jun 2022 12:02:10 +0200 -Subject: [PATCH 435/545] random: do not use jump labels before they are +Subject: [PATCH 435/590] random: do not use jump labels before they are initialized [ I would like to pursue fixing this more directly first before actually @@ -216201,10 +216231,10 @@ Signed-off-by: Jason A. Donenfeld 1 file changed, 8 insertions(+) diff --git a/drivers/char/random.c b/drivers/char/random.c -index 69754155300e..852211ef0cbf 100644 +index f5868dddbb61..ac2487ffabb4 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c -@@ -785,6 +785,14 @@ void __init random_init_early(const char *command_line) +@@ -823,6 +823,14 @@ void __init random_init_early(const char *command_line) unsigned long entropy[BLAKE2S_BLOCK_SIZE / sizeof(long)]; size_t i, longs, arch_bits; @@ -216220,13 +216250,13 @@ index 69754155300e..852211ef0cbf 100644 static const u8 compiletime_seed[BLAKE2S_BLOCK_SIZE] __initconst __latent_entropy; _mix_pool_bytes(compiletime_seed, sizeof(compiletime_seed)); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 20 Apr 2022 18:08:38 +0100 -Subject: [PATCH 436/545] drm/v3d: Switch clock setting to new api +Subject: [PATCH 436/590] drm/v3d: Switch clock setting to new api Signed-off-by: Dom Cobley @@ -216315,13 +216345,13 @@ index 4817e57b21d0..cc1404b4f4b9 100644 v3d->clk_up = true; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 20 Apr 2022 17:40:47 +0100 -Subject: [PATCH 437/545] clk-raspberrypi: Enable minimize for all firmware +Subject: [PATCH 437/590] clk-raspberrypi: Enable minimize for all firmware clocks Signed-off-by: Dom Cobley @@ -216361,13 +216391,13 @@ index 6c426f34dd24..5c82af720050 100644 }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Fri, 13 May 2022 17:21:42 +0800 -Subject: [PATCH 438/545] media: dt-bindings: media: i2c: Add Arducam 64MP CMOS +Subject: [PATCH 438/590] media: dt-bindings: media: i2c: Add Arducam 64MP CMOS sensor binding Add YAML device tree binding for Arducam 64MP CMOS image sensor, and @@ -216502,7 +216532,7 @@ index 000000000000..b71a19782f97 + +... diff --git a/MAINTAINERS b/MAINTAINERS -index 3cb69e11cf06..3271c6625c34 100644 +index e708598de8b9..0afbcffc0910 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1559,6 +1559,14 @@ S: Maintained @@ -216521,13 +216551,13 @@ index 3cb69e11cf06..3271c6625c34 100644 M: Arducam Kernel Maintenance L: linux-media@vger.kernel.org -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Fri, 13 May 2022 17:11:35 +0800 -Subject: [PATCH 439/545] media: i2c: Add driver of Arducam 64MP camera +Subject: [PATCH 439/590] media: i2c: Add driver of Arducam 64MP camera Add a driver for the Arducam 64MP camera sensor. Whilst the sensor supports 2 or 4 CSI2 data lanes, this driver @@ -218990,13 +219020,13 @@ index 000000000000..8b65caaf22a1 +MODULE_DESCRIPTION("Arducam 64MP sensor driver"); +MODULE_LICENSE("GPL v2"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Wed, 18 May 2022 15:18:59 +0800 -Subject: [PATCH 440/545] media: i2c: arducam_64mp: Advertise embedded data +Subject: [PATCH 440/590] media: i2c: arducam_64mp: Advertise embedded data node on media pad 1 This commit updates the arducam_64mp driver to adverise support for @@ -219252,13 +219282,13 @@ index 8b65caaf22a1..58d1ba9a86bf 100644 dev_err(dev, "failed to init entity pads: %d\n", ret); goto error_handler_free; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 8 Jun 2022 20:49:22 +0100 -Subject: [PATCH 441/545] Add HDMI1 facility to the driver. +Subject: [PATCH 441/590] Add HDMI1 facility to the driver. Also check for which HDMI devices are connected and only create devices for those that are present. @@ -219558,13 +219588,13 @@ index 38b7451d77b2..86eb04879797 100644 int snd_bcm2835_new_hdmi_ctl(struct bcm2835_chip *chip); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Lemon Date: Wed, 4 May 2022 14:33:05 -0700 -Subject: [PATCH 442/545] Populate phy driver block for BCM54213PE +Subject: [PATCH 442/590] Populate phy driver block for BCM54213PE The BCM54213PE identifier is a RPI-specific addition. Populate the remainder of the driver functions, including the @@ -219597,13 +219627,13 @@ index bb2143929885..d4c86aeb9748 100644 .phy_id = PHY_ID_BCM5461, .phy_id_mask = 0xfffffff0, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 2 Dec 2021 13:53:36 +0000 -Subject: [PATCH 443/545] clk: bcm: rpi: Add the BCM283x pixel clock. +Subject: [PATCH 443/590] clk: bcm: rpi: Add the BCM283x pixel clock. The clk-bcm2835 handling of the pixel clock does not function correctly when the HDMI power domain is disabled. @@ -219629,13 +219659,13 @@ index 5c82af720050..d238afd6860a 100644 [RPI_FIRMWARE_HEVC_CLK_ID] = { .export = true, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 4 Jul 2022 18:10:23 +0100 -Subject: [PATCH 444/545] media: i2c: ov9281: Correct min/def vts for 640x400 +Subject: [PATCH 444/590] media: i2c: ov9281: Correct min/def vts for 640x400 A VTS of 421 in the 640x400 mode only streams at 130.2fps instead of the expected ~261fps. This appears to be an invalid @@ -219662,13 +219692,13 @@ index 028d96c97859..a15081618f80 100644 .left = 0, .top = 0, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 4 Jul 2022 18:12:56 +0100 -Subject: [PATCH 445/545] media: i2c: ov9281: Change exposure default value +Subject: [PATCH 445/590] media: i2c: ov9281: Change exposure default value with mode choice When the exposure range is updated due to changing VBLANK, adopt @@ -219697,13 +219727,13 @@ index a15081618f80..297a5c0fd849 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 8 Aug 2022 10:01:41 +0100 -Subject: [PATCH 446/545] media: bcm2835-unicam: Correctly handle FS + FE ISR +Subject: [PATCH 446/590] media: bcm2835-unicam: Correctly handle FS + FE ISR condtion If we get a simultaneous FS + FE interrupt for the same frame, it cannot be @@ -219767,13 +219797,13 @@ index 7b7de978a214..2fd96081cda6 100644 } unicam->sequence++; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 15 Aug 2022 19:42:38 +0100 -Subject: [PATCH 447/545] drm/panel-simple: hack ignore orientation +Subject: [PATCH 447/590] drm/panel-simple: hack ignore orientation downstream removal of orientation plus upstream adding of new function --- @@ -219797,13 +219827,13 @@ index 1705b34ef76b..2e21f5075edb 100644 static const struct drm_panel_funcs panel_simple_funcs = { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 15 Aug 2022 19:44:20 +0100 -Subject: [PATCH 448/545] vc04_services/vc-sm-cma: Handle upstream require +Subject: [PATCH 448/590] vc04_services/vc-sm-cma: Handle upstream require vchiq_instance to be passed around --- @@ -220021,13 +220051,13 @@ index ed881c56d69c..a4f40d4cef05 100644 /* * Ask the shared memory service to free up some memory that was previously -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 29 Jul 2022 17:46:49 +0100 -Subject: [PATCH 449/545] media: video-mux: Read CSI2 config from FW, and pass +Subject: [PATCH 449/590] media: video-mux: Read CSI2 config from FW, and pass to receiver There is no obligation for all source devices on a video-mux to @@ -220176,13 +220206,13 @@ index 71d97042a470..d946b192d23a 100644 vmux->subdev.entity.function = MEDIA_ENT_F_VID_MUX; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Fri, 26 Aug 2022 11:41:49 +0800 -Subject: [PATCH 450/545] media: i2c: arducam-pivariety: Add custom controls +Subject: [PATCH 450/590] media: i2c: arducam-pivariety: Add custom controls Add support for strobe_shift, strobe_width and mode custom controls. @@ -220224,13 +220254,13 @@ index b2b8cbc47138..99d5ada309e8 100644 enum image_dt { IMAGE_DT_YUV420_8 = 0x18, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 2 Sep 2022 08:35:35 +0100 -Subject: [PATCH 451/545] media: bcm2835-unicam: Fix for possible dummy buffer +Subject: [PATCH 451/590] media: bcm2835-unicam: Fix for possible dummy buffer overrun The Unicam hardware has been observed to cause a buffer overrun when using the @@ -220286,13 +220316,13 @@ index 2fd96081cda6..2cc4c2e468f3 100644 /* Clear all queued buffers for the node */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 8 Sep 2022 15:50:15 +0100 -Subject: [PATCH 452/545] usb: xhci: expand mitigations for VLI_SS_BULK_OUT_BUG +Subject: [PATCH 452/590] usb: xhci: expand mitigations for VLI_SS_BULK_OUT_BUG quirk The VL805 can cause data corruption if a SS Bulk OUT endpoint enters a @@ -220381,13 +220411,13 @@ index e9d81cb1d6b0..b23a765afa5a 100644 /* Allow 3 retries for everything but isoc, set CErr = 3 */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 22 Sep 2022 14:55:54 +0100 -Subject: [PATCH 453/545] usb: xhci: account for num_trbs_free when +Subject: [PATCH 453/590] usb: xhci: account for num_trbs_free when invalidating TDs If a ring has a number of TDs enqueued past the dequeue pointer, and the @@ -220416,7 +220446,7 @@ Signed-off-by: Jonathan Bell 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index b4ec985c5396..363814cac6fe 100644 +index d058a644a97a..55eb253d6adf 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -1015,11 +1015,13 @@ static int xhci_invalidate_cancelled_tds(struct xhci_virt_ep *ep) @@ -220433,7 +220463,7 @@ index b4ec985c5396..363814cac6fe 100644 } } -@@ -1264,10 +1266,7 @@ static void update_ring_for_set_deq_completion(struct xhci_hcd *xhci, +@@ -1267,10 +1269,7 @@ static void update_ring_for_set_deq_completion(struct xhci_hcd *xhci, unsigned int ep_index) { union xhci_trb *dequeue_temp; @@ -220444,7 +220474,7 @@ index b4ec985c5396..363814cac6fe 100644 dequeue_temp = ep_ring->dequeue; /* If we get two back-to-back stalls, and the first stalled transfer -@@ -1282,8 +1281,6 @@ static void update_ring_for_set_deq_completion(struct xhci_hcd *xhci, +@@ -1285,8 +1284,6 @@ static void update_ring_for_set_deq_completion(struct xhci_hcd *xhci, } while (ep_ring->dequeue != dev->eps[ep_index].queued_deq_ptr) { @@ -220453,7 +220483,7 @@ index b4ec985c5396..363814cac6fe 100644 ep_ring->dequeue++; if (trb_is_link(ep_ring->dequeue)) { if (ep_ring->dequeue == -@@ -1293,15 +1290,10 @@ static void update_ring_for_set_deq_completion(struct xhci_hcd *xhci, +@@ -1296,15 +1293,10 @@ static void update_ring_for_set_deq_completion(struct xhci_hcd *xhci, ep_ring->dequeue = ep_ring->deq_seg->trbs; } if (ep_ring->dequeue == dequeue_temp) { @@ -220471,13 +220501,13 @@ index b4ec985c5396..363814cac6fe 100644 /* -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 7 Oct 2022 10:38:31 +0100 -Subject: [PATCH 454/545] nvmem: Use NVMEM_DEVID_AUTO +Subject: [PATCH 454/590] nvmem: Use NVMEM_DEVID_AUTO It is reasonable to declare multiple nvmem blocks. Unless a unique 'id' is passed in for each block there may be name clashes. @@ -220504,13 +220534,13 @@ index 80cb187f1481..752d0bf4445e 100644 config.reg_read = rmem_read; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 28 Oct 2021 15:03:16 +0100 -Subject: [PATCH 455/545] brcmfmac: Read alternative firmware names from DT +Subject: [PATCH 455/590] brcmfmac: Read alternative firmware names from DT Add the ability to load the names of alternative firmwares from the Device Tree node. This permits separate firmwares for 43436s and 43438 @@ -220524,7 +220554,7 @@ Signed-off-by: Phil Elwell 3 files changed, 91 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c -index a83699de01ec..c5cf63773f47 100644 +index fdd0c9abc1a1..70b6397fd1b8 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c @@ -11,6 +11,7 @@ @@ -220535,7 +220565,7 @@ index a83699de01ec..c5cf63773f47 100644 #include "of.h" static int brcmf_of_get_country_codes(struct device *dev, -@@ -135,3 +136,38 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, +@@ -136,3 +137,38 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, sdio->oob_irq_nr = irq; sdio->oob_irq_flags = irqf; } @@ -220596,7 +220626,7 @@ index 10bf52253337..5b39a39812d0 100644 +} #endif /* CONFIG_OF */ diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index 4d170815dabc..f0e4386e8d3d 100644 +index fba766873a33..887521d0a9a7 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -35,6 +35,7 @@ @@ -220607,7 +220637,7 @@ index 4d170815dabc..f0e4386e8d3d 100644 #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500) #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500) -@@ -4407,7 +4408,9 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, +@@ -4408,7 +4409,9 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, } static struct brcmf_fw_request * @@ -220618,7 +220648,7 @@ index 4d170815dabc..f0e4386e8d3d 100644 { struct brcmf_fw_request *fwreq; struct brcmf_fw_name fwnames[] = { -@@ -4417,8 +4420,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) +@@ -4418,8 +4421,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) }; fwreq = brcmf_fw_alloc_request(bus->ci->chip, bus->ci->chiprev, @@ -220628,7 +220658,7 @@ index 4d170815dabc..f0e4386e8d3d 100644 fwnames, ARRAY_SIZE(fwnames)); if (!fwreq) return NULL; -@@ -4432,12 +4434,44 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) +@@ -4433,12 +4435,44 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) return fwreq; } @@ -220673,7 +220703,7 @@ index 4d170815dabc..f0e4386e8d3d 100644 brcmf_dbg(TRACE, "Enter\n"); -@@ -4520,13 +4554,23 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) +@@ -4521,13 +4555,23 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) brcmf_dbg(INFO, "completed!!\n"); @@ -220699,13 +220729,13 @@ index 4d170815dabc..f0e4386e8d3d 100644 if (ret != 0) { brcmf_err("async firmware request failed: %d\n", ret); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 18 Oct 2022 14:58:15 +0100 -Subject: [PATCH 456/545] configs: arm64: Restore the easy settings +Subject: [PATCH 456/590] configs: arm64: Restore the easy settings Setting ARCH_BCM=y fixes the majority of the breakage. @@ -220911,13 +220941,13 @@ index e089eb07e98e..8f2ad529cfed 100644 CONFIG_CRC_ITU_T=y CONFIG_LIBCRC32C=y -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 18 Oct 2022 16:36:47 +0100 -Subject: [PATCH 457/545] drm/panel: Rename GEM CMA helpers GEM DMA helpers +Subject: [PATCH 457/590] drm/panel: Rename GEM CMA helpers GEM DMA helpers As a result of [1], DRM_GEM_CMA_HELPER has been replaced by DRM_GEM_CMA_HELPER. @@ -220952,13 +220982,13 @@ index 5147777dcb23..6c5956532550 100644 select DRM_MIPI_DBI help -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 18 Oct 2022 16:39:53 +0100 -Subject: [PATCH 458/545] configs: Re-enable more lost config settings +Subject: [PATCH 458/590] configs: Re-enable more lost config settings Signed-off-by: Phil Elwell --- @@ -221142,13 +221172,13 @@ index 8f2ad529cfed..e4a7e0427c62 100644 CONFIG_DRM_SIMPLE_BRIDGE=m CONFIG_DRM_TOSHIBA_TC358762=m -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 18 Oct 2022 15:34:39 +0100 -Subject: [PATCH 459/545] configs: Re-enable some deprecated media drivers +Subject: [PATCH 459/590] configs: Re-enable some deprecated media drivers Signed-off-by: Phil Elwell --- @@ -221323,13 +221353,13 @@ index e4a7e0427c62..513205895c4a 100644 CONFIG_FB_TFT_AGM1264K_FL=m CONFIG_FB_TFT_BD663474=m -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 19 Oct 2022 13:33:10 +0100 -Subject: [PATCH 460/545] configs: Add and enable CONFIG_LRU_GEN +Subject: [PATCH 460/590] configs: Add and enable CONFIG_LRU_GEN --- arch/arm/configs/bcm2709_defconfig | 2 ++ @@ -221405,13 +221435,13 @@ index 513205895c4a..e2a9970f0a56 100644 CONFIG_PACKET=y CONFIG_UNIX=y -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 5 May 2022 15:46:07 +0100 -Subject: [PATCH 461/545] hwmon: emc2305: fixups for driver submitted to +Subject: [PATCH 461/590] hwmon: emc2305: fixups for driver submitted to mailing lists The driver had a number of issues, checkpatch warnings/errors, @@ -221420,21 +221450,20 @@ and other limitations, so fix these up to make it usable. Signed-off-by: Phil Elwell Signed-off-by: Dave Stevenson --- - drivers/hwmon/emc2305.c | 80 ++++++++++++++++++++++++++++++++++++----- - 1 file changed, 72 insertions(+), 8 deletions(-) + drivers/hwmon/emc2305.c | 73 +++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c -index aa1f25add0b6..fdcc9a779d75 100644 +index e42ae43f3de4..bbe007c88e08 100644 --- a/drivers/hwmon/emc2305.c +++ b/drivers/hwmon/emc2305.c -@@ -15,13 +15,13 @@ +@@ -15,12 +15,13 @@ static const unsigned short emc2305_normal_i2c[] = { 0x27, 0x2c, 0x2d, 0x2e, 0x2f, 0x4c, 0x4d, I2C_CLIENT_END }; +#define EMC2305_REG_FAN_STATUS 0x24 +#define EMC2305_REG_FAN_STALL_STATUS 0x25 #define EMC2305_REG_DRIVE_FAIL_STATUS 0x27 --#define EMC2305_REG_DEVICE 0xfd #define EMC2305_REG_VENDOR 0xfe #define EMC2305_FAN_MAX 0xff #define EMC2305_FAN_MIN 0x00 @@ -221443,7 +221472,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 #define EMC2305_VENDOR 0x5d #define EMC2305_REG_PRODUCT_ID 0xfd #define EMC2305_TACH_REGS_UNUSE_BITS 3 -@@ -40,6 +40,7 @@ emc2305_normal_i2c[] = { 0x27, 0x2c, 0x2d, 0x2e, 0x2f, 0x4c, 0x4d, I2C_CLIENT_EN +@@ -39,6 +40,7 @@ emc2305_normal_i2c[] = { 0x27, 0x2c, 0x2d, 0x2e, 0x2f, 0x4c, 0x4d, I2C_CLIENT_EN #define EMC2305_RPM_FACTOR 3932160 #define EMC2305_REG_FAN_DRIVE(n) (0x30 + 0x10 * (n)) @@ -221451,7 +221480,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 #define EMC2305_REG_FAN_MIN_DRIVE(n) (0x38 + 0x10 * (n)) #define EMC2305_REG_FAN_TACH(n) (0x3e + 0x10 * (n)) -@@ -59,6 +60,15 @@ static const struct i2c_device_id emc2305_ids[] = { +@@ -58,6 +60,15 @@ static const struct i2c_device_id emc2305_ids[] = { }; MODULE_DEVICE_TABLE(i2c, emc2305_ids); @@ -221467,7 +221496,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 /** * @cdev: cooling device; * @curr_state: cooling current state; -@@ -102,6 +112,7 @@ struct emc2305_data { +@@ -101,6 +112,7 @@ struct emc2305_data { u8 pwm_num; bool pwm_separate; u8 pwm_min[EMC2305_PWM_MAX]; @@ -221475,7 +221504,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 struct emc2305_cdev_data cdev_data[EMC2305_PWM_MAX]; }; -@@ -263,7 +274,7 @@ static int emc2305_set_pwm(struct device *dev, long val, int channel) +@@ -273,7 +285,7 @@ static int emc2305_set_pwm(struct device *dev, long val, int channel) struct i2c_client *client = data->client; int ret; @@ -221484,7 +221513,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 return -EINVAL; ret = i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_DRIVE(channel), val); -@@ -274,6 +285,49 @@ static int emc2305_set_pwm(struct device *dev, long val, int channel) +@@ -284,6 +296,49 @@ static int emc2305_set_pwm(struct device *dev, long val, int channel) return 0; } @@ -221534,27 +221563,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 static int emc2305_set_single_tz(struct device *dev, int idx) { struct emc2305_data *data = dev_get_drvdata(dev); -@@ -524,7 +578,7 @@ static int emc2305_probe(struct i2c_client *client, const struct i2c_device_id * - struct device *dev = &client->dev; - struct emc2305_data *data; - struct emc2305_platform_data *pdata; -- int vendor, device; -+ int vendor; - int ret; - int i; - -@@ -535,10 +589,6 @@ static int emc2305_probe(struct i2c_client *client, const struct i2c_device_id * - if (vendor != EMC2305_VENDOR) - return -ENODEV; - -- device = i2c_smbus_read_byte_data(client, EMC2305_REG_DEVICE); -- if (device != EMC2305_DEVICE) -- return -ENODEV; -- - data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); - if (!data) - return -ENOMEM; -@@ -566,11 +616,18 @@ static int emc2305_probe(struct i2c_client *client, const struct i2c_device_id * +@@ -572,11 +627,18 @@ static int emc2305_probe(struct i2c_client *client, const struct i2c_device_id * data->pwm_separate = pdata->pwm_separate; for (i = 0; i < EMC2305_PWM_MAX; i++) data->pwm_min[i] = pdata->pwm_min[i]; @@ -221573,7 +221582,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 } data->hwmon_dev = devm_hwmon_device_register_with_info(dev, "emc2305", data, -@@ -591,6 +648,12 @@ static int emc2305_probe(struct i2c_client *client, const struct i2c_device_id * +@@ -597,6 +659,12 @@ static int emc2305_probe(struct i2c_client *client, const struct i2c_device_id * return ret; } @@ -221586,7 +221595,7 @@ index aa1f25add0b6..fdcc9a779d75 100644 return 0; } -@@ -606,6 +669,7 @@ static struct i2c_driver emc2305_driver = { +@@ -612,6 +680,7 @@ static struct i2c_driver emc2305_driver = { .class = I2C_CLASS_HWMON, .driver = { .name = "emc2305", @@ -221595,13 +221604,13 @@ index aa1f25add0b6..fdcc9a779d75 100644 .probe = emc2305_probe, .remove = emc2305_remove, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 24 Oct 2022 13:57:23 +0100 -Subject: [PATCH 462/545] media: bcm2835-unicam: Fix up start/stop api change +Subject: [PATCH 462/590] media: bcm2835-unicam: Fix up start/stop api change Signed-off-by: Dom Cobley --- @@ -221640,13 +221649,13 @@ index 2cc4c2e468f3..0451affbffd9 100644 if (dev->clocks_enabled) { if (clk_set_min_rate(dev->vpu_clock, 0)) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 25 Oct 2022 10:50:10 +0100 -Subject: [PATCH 463/545] drivers: usb: dwc_otg: fix reference passing when +Subject: [PATCH 463/590] drivers: usb: dwc_otg: fix reference passing when checking bandwidth The pointer (struct usb_host_endpoint *)->hcpriv should contain a @@ -221705,13 +221714,13 @@ index 022488f6741b..ca646860a092 100644 } } else { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Mon, 17 Oct 2022 15:18:24 +0100 -Subject: [PATCH 464/545] drivers/gpu/drm/vc4: Add missing 32-bit RGB formats +Subject: [PATCH 464/590] drivers/gpu/drm/vc4: Add missing 32-bit RGB formats The missing 32-bit per pixel ABGR and various "RGB with an X value" formats are added. Change sent by Dave Stevenson. @@ -221761,13 +221770,13 @@ index e7f56b3eb213..036ee3154c79 100644 .drm = DRM_FORMAT_RGB565, .vc_image = VC_IMAGE_RGB565, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 25 Oct 2022 20:33:39 +0100 -Subject: [PATCH 465/545] configs: Enable the AHT10 sensor driver module +Subject: [PATCH 465/590] configs: Enable the AHT10 sensor driver module Add support for the Aosong AHT10 temperature and humidity sensor. @@ -221843,13 +221852,13 @@ index e2a9970f0a56..eca03da7c431 100644 CONFIG_SENSORS_GPIO_FAN=m CONFIG_SENSORS_IIO_HWMON=m -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 25 Oct 2022 20:27:00 +0100 -Subject: [PATCH 466/545] overlays: Add i2c-sensor support for AHT10 +Subject: [PATCH 466/590] overlays: Add i2c-sensor support for AHT10 Add support for the Aosong AHT10 temperature and humidity sensor. @@ -221909,13 +221918,13 @@ index 2716898e24a4..231db98890fb 100755 addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0", -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 25 Oct 2022 20:08:51 +0100 -Subject: [PATCH 467/545] overlays: Add README entry for i2c-rtc,rv3032 +Subject: [PATCH 467/590] overlays: Add README entry for i2c-rtc,rv3032 Signed-off-by: Phil Elwell --- @@ -221945,13 +221954,13 @@ index 92b0dcb3c9f9..82968d9f1dd6 100644 sd3078 Select the ZXW Shenzhen whwave SD3078 device -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 26 Oct 2022 17:46:44 +0100 -Subject: [PATCH 468/545] drivers: dwc_otg: stop GCC from patching FIQ +Subject: [PATCH 468/590] drivers: dwc_otg: stop GCC from patching FIQ functions Configuring GCC to use task stack protector canaries means it will @@ -221996,13 +222005,13 @@ index f644acbce748..67e277804b2e 100644 hcchar_data_t hcchar = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR) }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 1 Nov 2022 08:47:21 +0000 -Subject: [PATCH 469/545] overlays: i2c-sensor: Add mcp980x support +Subject: [PATCH 469/590] overlays: i2c-sensor: Add mcp980x support See: https://github.com/raspberrypi/linux/issues/5234 @@ -222067,13 +222076,13 @@ index 231db98890fb..77babe855da9 100755 }; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 2 Nov 2022 09:54:39 +0000 -Subject: [PATCH 470/545] overlays: pisound: Make button pins owned by card +Subject: [PATCH 470/590] overlays: pisound: Make button pins owned by card The pisound overlay claims a number of GPIOs using a pinctrl node, but for some reason hangs this claim on the main gpio node. This obscures @@ -222122,13 +222131,13 @@ index 49efb2b768fb..a140ffc1f720 100644 brcm,pins = <17>; brcm,function = <0>; // Input -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "maxime@cerno.tech" Date: Thu, 20 Oct 2022 11:12:09 +0200 -Subject: [PATCH 471/545] firmware: raspberrypi: Introduce +Subject: [PATCH 471/590] firmware: raspberrypi: Introduce rpi_firmware_find_node() A significant number of RaspberryPi drivers using the firmware don't @@ -222145,10 +222154,10 @@ Signed-off-by: Maxime Ripard 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index 1223e3173cff..bb22ffa6cd7c 100644 +index 81b6351fda83..4c30dc977a88 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c -@@ -428,6 +428,18 @@ static int rpi_firmware_remove(struct platform_device *pdev) +@@ -429,6 +429,18 @@ static int rpi_firmware_remove(struct platform_device *pdev) return 0; } @@ -222167,7 +222176,7 @@ index 1223e3173cff..bb22ffa6cd7c 100644 /** * rpi_firmware_get - Get pointer to rpi_firmware structure. * @firmware_node: Pointer to the firmware Device Tree node. -@@ -483,12 +495,6 @@ struct rpi_firmware *devm_rpi_firmware_get(struct device *dev, +@@ -484,12 +496,6 @@ struct rpi_firmware *devm_rpi_firmware_get(struct device *dev, } EXPORT_SYMBOL_GPL(devm_rpi_firmware_get); @@ -222206,13 +222215,13 @@ index dd3bbc75e531..eb933a9c6c20 100644 { return NULL; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 20 Sep 2022 13:43:19 +0200 -Subject: [PATCH 472/545] firmware: raspberrypi: Move the clock IDs to the +Subject: [PATCH 472/590] firmware: raspberrypi: Move the clock IDs to the firmware header We'll need the clock IDs in more drivers than just the clock driver from @@ -222287,13 +222296,13 @@ index eb933a9c6c20..39bc15cc0547 100644 #if IS_ENABLED(CONFIG_RASPBERRYPI_FIRMWARE) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 20 Sep 2022 13:49:10 +0200 -Subject: [PATCH 473/545] firmware: raspberrypi: Provide a helper to query a +Subject: [PATCH 473/590] firmware: raspberrypi: Provide a helper to query a clock max rate The firmware allows to query for its clocks the operating range of a @@ -222310,7 +222319,7 @@ Signed-off-by: Maxime Ripard 2 files changed, 46 insertions(+) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index bb22ffa6cd7c..93364e97e879 100644 +index 4c30dc977a88..773ab66a506a 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -342,6 +342,26 @@ static void rpi_register_clk_driver(struct device *dev) @@ -222391,13 +222400,13 @@ index 39bc15cc0547..c453978e62f6 100644 { return NULL; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 24 Mar 2022 11:57:57 +0100 -Subject: [PATCH 474/545] drm/vc4: hdmi: Fix hdmi_enable_4kp60 detection +Subject: [PATCH 474/590] drm/vc4: hdmi: Fix hdmi_enable_4kp60 detection In order to support higher HDMI frequencies, users have to set the hdmi_enable_4kp60 parameter in their config.txt file. @@ -222444,13 +222453,13 @@ index cd7e6243d919..c948ab1d8aa5 100644 if (max_rate < 550000000) vc4_hdmi->disable_4kp60 = true; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 24 Mar 2022 11:57:57 +0100 -Subject: [PATCH 475/545] drm/vc4: hdmi: Rework hdmi_enable_4kp60 detection +Subject: [PATCH 475/590] drm/vc4: hdmi: Rework hdmi_enable_4kp60 detection code In order to support higher HDMI frequencies, users have to set the @@ -222626,13 +222635,13 @@ index 3d4bca723d85..ba3b0fa2084c 100644 if (ret) { dev_err(&pdev->dev, "Couldn't enable the core clock\n"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 17 May 2022 12:46:42 +0100 -Subject: [PATCH 476/545] drm/vc4: hdmi: Add more checks for 4k resolutions +Subject: [PATCH 476/590] drm/vc4: hdmi: Add more checks for 4k resolutions At least the 4096x2160@60Hz mode requires some overclocking that isn't available by default, even if hdmi_enable_4kp60 is enabled. @@ -222724,13 +222733,13 @@ index ba3b0fa2084c..b4d0645a56e4 100644 ret = clk_prepare_enable(hvs->core_clk); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 25 Mar 2022 17:09:41 +0100 -Subject: [PATCH 477/545] drm/vc4: Make sure we don't end up with a core clock +Subject: [PATCH 477/590] drm/vc4: Make sure we don't end up with a core clock too high Following the clock rate range improvements to the clock framework, @@ -222785,13 +222794,13 @@ index d5b16579fd33..1688659ba1d5 100644 drm_dbg(dev, "Core clock actual rate: %lu Hz\n", clk_get_rate(hvs->core_clk)); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sat, 5 Nov 2022 11:46:08 +0000 -Subject: [PATCH 478/545] net: phy: BCM54210PE does not support PTP +Subject: [PATCH 478/590] net: phy: BCM54210PE does not support PTP BCM54213PE is an Ethernet PHY that supports PTP hardware timestamping. BCM54210PW ia another Ethernet PHY, but one without PTP support. @@ -222835,13 +222844,13 @@ index ef00d6163061..30ee23e73a4b 100644 return NULL; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 1 Jun 2022 15:43:51 +0100 -Subject: [PATCH 479/545] drm/vc4_hdmi: Allow hotplug detect to be forced +Subject: [PATCH 479/590] drm/vc4_hdmi: Allow hotplug detect to be forced See: https://forum.libreelec.tv/thread/24783-tv-avr-turns-back-on-right-after-turning-them-off @@ -222899,13 +222908,13 @@ index f512feffc0de..ba1128bab79e 100644 status = connector_status_connected; } else { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 7 Nov 2022 15:31:43 +0000 -Subject: [PATCH 480/545] overlays: i2c-sensor: Add the jc42 class of sensor +Subject: [PATCH 480/590] overlays: i2c-sensor: Add the jc42 class of sensor This is a second attempt to solve issue 5234, since it turns out that the mcp980x driver only supports MCP9800-MCP9803. MCP9804, MCP9805 and @@ -222991,13 +223000,13 @@ index 77babe855da9..baac806e93bf 100755 }; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 8 Nov 2022 14:40:52 +0000 -Subject: [PATCH 481/545] overlays: Extend audremap to supports other pins +Subject: [PATCH 481/590] overlays: Extend audremap to supports other pins Add the parameters pins_40_41 and pins_40_45 to support other audio pin options. Also, simplify the overlay using literal assignments. @@ -223078,13 +223087,13 @@ index 29399c5c84f6..edacc498b11c 100644 }; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 15:00:04 +0000 -Subject: [PATCH 482/545] media: adv7180: Nasty hack to allow input selection. +Subject: [PATCH 482/590] media: adv7180: Nasty hack to allow input selection. Whilst the adv7180 driver support s_routing, nothing else does, and there is a missing lump of framework code to @@ -223173,13 +223182,13 @@ index 2aa29616081f..d2f8745dbf3a 100644 ret = mutex_lock_interruptible(&state->mutex); if (ret) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 3 Nov 2022 13:45:37 +0000 -Subject: [PATCH 483/545] vc04_services: bcm2835_codec: Allow larger images +Subject: [PATCH 483/590] vc04_services: bcm2835_codec: Allow larger images through the ISP Whilst the codecs are restricted to 1920x1080 / 1080x1920, the ISP @@ -223280,13 +223289,13 @@ index 82032d1aa6b1..3fec9d2306fb 100644 case DEINTERLACE: v4l2_disable_ioctl(vfd, VIDIOC_DECODER_CMD); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nick Hollinghurst Date: Fri, 11 Nov 2022 13:36:07 +0000 -Subject: [PATCH 484/545] imx296-overlay: clock-frequency defaults to 54MHz but +Subject: [PATCH 484/590] imx296-overlay: clock-frequency defaults to 54MHz but can be overridden Signed-off-by: Nick Hollinghurst @@ -223333,13 +223342,13 @@ index 85b6f7e7fca1..44257b4c9391 100644 }; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Tue, 15 Nov 2022 18:04:45 +0100 -Subject: [PATCH 485/545] ASoC:ma120x0p: Corrects the volume level display +Subject: [PATCH 485/590] ASoC:ma120x0p: Corrects the volume level display Fixes the wrongly changed 'limiter volume' display back to -50dB minimum and sets the correct minimum volume level to -144dB to be aligned with @@ -223366,13 +223375,13 @@ index cd3808ea9849..dce60ded3ef9 100644 static const struct snd_kcontrol_new ma120x0p_snd_controls[] = { -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 16 Nov 2022 14:54:08 +0000 -Subject: [PATCH 486/545] overlays: Add overlay pwm1 +Subject: [PATCH 486/590] overlays: Add overlay pwm1 pwm1 enables the second PWM interface found on BCM2711. It can only be mapped to GPIOs 40 & 41. @@ -223511,13 +223520,13 @@ index 000000000000..19b4db26cded + }; +}; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 21 Nov 2022 14:18:57 +0000 -Subject: [PATCH 487/545] overlays: audremap: Include the fsels values +Subject: [PATCH 487/590] overlays: audremap: Include the fsels values Add the alt function selectors, and document that pins_40_45 is not suitable for BCM2711 because the pins are split across the two PWM @@ -223569,13 +223578,13 @@ index edacc498b11c..a73cc95934ba 100644 }; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 23 Nov 2022 11:51:38 +0000 -Subject: [PATCH 488/545] overlays: i2c-sensor: Make smbus-timeout-disable +Subject: [PATCH 488/590] overlays: i2c-sensor: Make smbus-timeout-disable optional Although disabling the SMBUS timeout may be useful, not all chips @@ -223625,13 +223634,13 @@ index baac806e93bf..c81d8e5db548 100755 }; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: reinisb Date: Fri, 25 Nov 2022 12:53:50 +0200 -Subject: [PATCH 489/545] overlays: Mention Digi2 Pro audio card in README +Subject: [PATCH 489/590] overlays: Mention Digi2 Pro audio card in README https://www.hifiberry.com/blog/the-new-digi2-pro/ --- @@ -223652,13 +223661,13 @@ index 36ff8228814e..37f1da9275c8 100644 Params: -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 29 Nov 2022 13:17:08 +0000 -Subject: [PATCH 490/545] configs: Enable Twofish crypto +Subject: [PATCH 490/590] configs: Enable Twofish crypto See: https://github.com/raspberrypi/linux/issues/5258 @@ -223732,13 +223741,13 @@ index eca03da7c431..16df4824429d 100644 CONFIG_CRYPTO_CHACHA20POLY1305=m CONFIG_CRYPTO_MD4=m -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 1 Dec 2022 16:59:44 +0000 -Subject: [PATCH 491/545] usb: xhci: add XHCI_VLI_HUB_TT_QUIRK +Subject: [PATCH 491/590] usb: xhci: add XHCI_VLI_HUB_TT_QUIRK The integrated USB2.0 hub in the VL805 chipset has a bug where it incorrectly determines the remaining available frame time before the @@ -223766,10 +223775,10 @@ Signed-off-by: Jonathan Bell 3 files changed, 48 insertions(+) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index c254e6503a81..89123de8a0f2 100644 +index 8a70e6097ab8..10473448885d 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -293,6 +293,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) +@@ -298,6 +298,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_VLI_TRB_CACHE_BUG; xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG; @@ -223778,10 +223787,10 @@ index c254e6503a81..89123de8a0f2 100644 if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index 363814cac6fe..7099e4522650 100644 +index 55eb253d6adf..296f3b6fe785 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3519,6 +3519,48 @@ static int xhci_align_td(struct xhci_hcd *xhci, struct urb *urb, u32 enqd_len, +@@ -3528,6 +3528,48 @@ static int xhci_align_td(struct xhci_hcd *xhci, struct urb *urb, u32 enqd_len, return 1; } @@ -223830,7 +223839,7 @@ index 363814cac6fe..7099e4522650 100644 /* This is very similar to what ehci-q.c qtd_fill() does */ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, struct urb *urb, int slot_id, unsigned int ep_index) -@@ -3687,6 +3729,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3696,6 +3738,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, } check_trb_math(urb, enqd_len); @@ -223839,7 +223848,7 @@ index 363814cac6fe..7099e4522650 100644 giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, start_cycle, start_trb); return 0; -@@ -3822,6 +3866,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3831,6 +3875,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags, /* Event on completion */ field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state); @@ -223849,10 +223858,10 @@ index 363814cac6fe..7099e4522650 100644 start_cycle, start_trb); return 0; diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 4a7e36d01b3b..1ad255081930 100644 +index a8946c53110c..e9bd6e460767 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1902,6 +1902,7 @@ struct xhci_hcd { +@@ -1903,6 +1903,7 @@ struct xhci_hcd { #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(45) #define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(46) #define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(47) @@ -223861,13 +223870,13 @@ index 4a7e36d01b3b..1ad255081930 100644 unsigned int num_active_eps; unsigned int limit_active_eps; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 1 Dec 2022 13:54:49 +0000 -Subject: [PATCH 492/545] media: i2c: ov7251: Add module param to select ext +Subject: [PATCH 492/590] media: i2c: ov7251: Add module param to select ext trig mode As there isn't currently a defined mechanism for selecting an @@ -223955,13 +223964,13 @@ index a96a7622d5e4..628973639d03 100644 OV7251_SC_MODE_SELECT_STREAMING); if (ret) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 6 Dec 2022 15:05:56 +0000 -Subject: [PATCH 493/545] vc4_hdmi: Avoid log spam for audio start failure +Subject: [PATCH 493/590] vc4_hdmi: Avoid log spam for audio start failure We regularly get dmesg error reports of: [ 18.184066] hdmi-audio-codec hdmi-audio-codec.3.auto: ASoC: error at snd_soc_dai_startup on i2s-hifi: -19 @@ -224002,13 +224011,13 @@ index ba1128bab79e..7d10cff07bce 100644 } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 29 Sep 2022 18:30:56 +0200 -Subject: [PATCH 494/545] drm/tests: Order Kunit tests in Makefile +Subject: [PATCH 494/590] drm/tests: Order Kunit tests in Makefile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -224048,13 +224057,13 @@ index 91b70f7d2769..2d9f49b62ecb 100644 + drm_plane_helper_test.o \ + drm_rect_test.o -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 14 Nov 2022 14:00:21 +0100 -Subject: [PATCH 495/545] drm/tests: Add Kunit Helpers +Subject: [PATCH 495/590] drm/tests: Add Kunit Helpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -224176,13 +224185,13 @@ index 000000000000..f13a18dd1c6d + +#endif // DRM_KUNIT_HELPERS_H_ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 16 Nov 2022 10:17:10 +0100 -Subject: [PATCH 496/545] drm/tests: Include helpers header +Subject: [PATCH 496/590] drm/tests: Include helpers header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -224216,13 +224225,13 @@ index d3f0d681b685..dbd8ec24d4be 100644 struct drm_device base; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 16 Nov 2022 10:17:11 +0100 -Subject: [PATCH 497/545] drm/tests: helpers: Add module infos +Subject: [PATCH 497/590] drm/tests: helpers: Add module infos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -224253,13 +224262,13 @@ index dbd8ec24d4be..eea450de7de8 100644 +MODULE_AUTHOR("Maxime Ripard "); +MODULE_LICENSE("GPL"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 16 Nov 2022 16:18:33 +0100 -Subject: [PATCH 498/545] drm/tests: helpers: Add SPDX header +Subject: [PATCH 498/590] drm/tests: helpers: Add SPDX header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -224298,13 +224307,13 @@ index f13a18dd1c6d..20ab6eec4c89 100644 #define DRM_KUNIT_HELPERS_H_ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:51 +0100 -Subject: [PATCH 499/545] drm/atomic: Constify the old/new state accessors +Subject: [PATCH 499/590] drm/atomic: Constify the old/new state accessors The drm_atomic_get_(old|new)_*_state don't modify the passed drm_atomic_state, so we can make it const. @@ -224505,13 +224514,13 @@ index 10b1990bc1f6..92586ab55ef5 100644 #endif /* DRM_ATOMIC_H_ */ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:53 +0100 -Subject: [PATCH 500/545] drm/vc4: Constify container_of wrappers +Subject: [PATCH 500/590] drm/vc4: Constify container_of wrappers None of our wrappers around container_of to access our objects from the DRM object pointer actually modify the latter. @@ -224602,13 +224611,13 @@ index 27799092dfc7..f0811fbc35d9 100644 return container_of(crtc_state, struct vc4_crtc_state, base); } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:55 +0100 -Subject: [PATCH 501/545] drm/vc4: kms: Constify the HVS old/new state helpers +Subject: [PATCH 501/590] drm/vc4: kms: Constify the HVS old/new state helpers The vc4_hvs_get_(old|new)_global_state functions don't modify the drm_atomic_state passed as an argument, so let's make it const. @@ -224643,13 +224652,13 @@ index 1688659ba1d5..fc4f02842894 100644 struct vc4_dev *vc4 = to_vc4_dev(state->dev); struct drm_private_state *priv_state; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:52 +0100 -Subject: [PATCH 502/545] drm/vc4: kms: Sort the CRTCs by output before +Subject: [PATCH 502/590] drm/vc4: kms: Sort the CRTCs by output before assigning them On the vc4 devices (and later), the blending is done by a single device @@ -224850,13 +224859,13 @@ index fc4f02842894..1eb964454240 100644 static int -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:56 +0100 -Subject: [PATCH 503/545] drm/vc4: txp: Reorder the variable assignments +Subject: [PATCH 503/590] drm/vc4: txp: Reorder the variable assignments The current order of variable assignments is unneccessarily complex, let's make it simpler. @@ -224914,13 +224923,13 @@ index bd181b5a7b52..b00c6fae972f 100644 ret = devm_request_irq(dev, irq, vc4_txp_interrupt, 0, dev_name(dev), txp); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:57 +0100 -Subject: [PATCH 504/545] drm/vc4: Add TXP encoder type +Subject: [PATCH 504/590] drm/vc4: Add TXP encoder type The TXP is integrated as a separate CRTC/Encoder/Connector combo, but for some reason doesn't rely on the vc4_encoder type and it's associated @@ -225022,13 +225031,13 @@ index b00c6fae972f..0bb8e97d7891 100644 dev_name(dev), txp); if (ret) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:58 +0100 -Subject: [PATCH 505/545] drm/vc4: txp: Initialise the CRTC before the encoder +Subject: [PATCH 505/590] drm/vc4: txp: Initialise the CRTC before the encoder and connector It makes more sense to register the CRTC before the encoder and @@ -225070,13 +225079,13 @@ index 0bb8e97d7891..c2a6bea6fd96 100644 dev_name(dev), txp); if (ret) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:25:59 +0100 -Subject: [PATCH 506/545] drm/vc4: crtc: Pass the device and data in +Subject: [PATCH 506/590] drm/vc4: crtc: Pass the device and data in vc4_crtc_init Both users of vc4_crtc_init need the same extra initialization to set @@ -225183,13 +225192,13 @@ index c2a6bea6fd96..841da240d93a 100644 return ret; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:26:02 +0100 -Subject: [PATCH 507/545] drm/vc4: crtc: Provide a CRTC name +Subject: [PATCH 507/590] drm/vc4: crtc: Provide a CRTC name It's fairly hard to figure out the instance of the CRTC affected by an atomic change using the default name. @@ -225309,13 +225318,13 @@ index 841da240d93a..4f7ce5d3e8ad 100644 .hvs_available_channels = BIT(2), .hvs_output = 2, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 28 Nov 2022 09:19:38 +0100 -Subject: [PATCH 508/545] drm/tests: helpers: Add missing export +Subject: [PATCH 508/590] drm/tests: helpers: Add missing export drm_kunit_device_init() is a public function meant to be used by other tests, but isn't exported. This leads to modpost errors when the other @@ -225340,13 +225349,13 @@ index f1662091f250..8c738384a992 100644 MODULE_AUTHOR("Maxime Ripard "); MODULE_LICENSE("GPL"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 28 Nov 2022 14:12:43 +0100 -Subject: [PATCH 509/545] drm/tests: helpers: Move the helper header to +Subject: [PATCH 509/590] drm/tests: helpers: Move the helper header to include/drm We'll need to use those helpers from drivers too, so let's move it to a @@ -225385,13 +225394,13 @@ similarity index 100% rename from drivers/gpu/drm/tests/drm_kunit_helpers.h rename to include/drm/drm_kunit_helpers.h -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 1 Dec 2022 13:37:20 +0100 -Subject: [PATCH 510/545] drm/tests: Introduce a config option for the KUnit +Subject: [PATCH 510/590] drm/tests: Introduce a config option for the KUnit helpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -225469,13 +225478,13 @@ index b29ef1085cad..723344fb82be 100644 drm_plane_helper_test.o \ drm_rect_test.o -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 28 Nov 2022 13:50:58 +0100 -Subject: [PATCH 511/545] drm/tests: helpers: Document drm_kunit_device_init() +Subject: [PATCH 511/590] drm/tests: helpers: Document drm_kunit_device_init() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -225519,13 +225528,13 @@ index 6600a4db3158..9ed3cfc2ac03 100644 { struct kunit_dev *kdev; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 1 Dec 2022 14:59:07 +0100 -Subject: [PATCH 512/545] drm/tests: helpers: Switch to EXPORT_SYMBOL_GPL +Subject: [PATCH 512/590] drm/tests: helpers: Switch to EXPORT_SYMBOL_GPL drm_kunit_device_init() among other things will allocate a device and wrap around root_device_register. This function is exported with @@ -225552,13 +225561,13 @@ index 9ed3cfc2ac03..4fe131141718 100644 MODULE_AUTHOR("Maxime Ripard "); MODULE_LICENSE("GPL"); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 13:22:59 +0100 -Subject: [PATCH 513/545] drm/tests: helpers: Rename the device init helper +Subject: [PATCH 513/590] drm/tests: helpers: Rename the device init helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -225623,13 +225632,13 @@ index 20ab6eec4c89..e9870c7911fe 100644 #endif // DRM_KUNIT_HELPERS_H_ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 13:25:32 +0100 -Subject: [PATCH 514/545] drm/tests: helpers: Remove the name parameter +Subject: [PATCH 514/590] drm/tests: helpers: Remove the name parameter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -225697,13 +225706,13 @@ index e9870c7911fe..6c12b1426ba0 100644 #endif // DRM_KUNIT_HELPERS_H_ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 11:11:52 +0100 -Subject: [PATCH 515/545] drm/tests: helpers: Create the device in another +Subject: [PATCH 515/590] drm/tests: helpers: Create the device in another function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -225832,13 +225841,13 @@ index 6c12b1426ba0..b4277fe92c38 100644 #endif // DRM_KUNIT_HELPERS_H_ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 13:33:37 +0100 -Subject: [PATCH 516/545] drm/tests: helpers: Switch to a platform_device +Subject: [PATCH 516/590] drm/tests: helpers: Switch to a platform_device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -225897,13 +225906,13 @@ index 4bf98bd0a8c6..b66ce779511b 100644 EXPORT_SYMBOL_GPL(drm_kunit_helper_free_device); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 13:18:29 +0100 -Subject: [PATCH 517/545] drm/tests: helpers: Make sure the device is bound +Subject: [PATCH 517/590] drm/tests: helpers: Make sure the device is bound MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -225977,13 +225986,13 @@ index b66ce779511b..9bfd3cb9cde1 100644 EXPORT_SYMBOL_GPL(drm_kunit_helper_free_device); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 14:28:44 +0100 -Subject: [PATCH 518/545] drm/tests: helpers: Allow for a custom device struct +Subject: [PATCH 518/590] drm/tests: helpers: Allow for a custom device struct to be allocated The current helper to allocate a DRM device doesn't allow for any @@ -226120,13 +226129,13 @@ index b4277fe92c38..df99fda95e89 100644 #endif // DRM_KUNIT_HELPERS_H_ -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 17:02:15 +0100 -Subject: [PATCH 519/545] drm/tests: helpers: Allow to pass a custom drm_driver +Subject: [PATCH 519/590] drm/tests: helpers: Allow to pass a custom drm_driver Some tests will need to provide their own drm_driver instead of relying on the dumb one in the helpers, so let's create a helper that allows to @@ -226248,13 +226257,13 @@ index df99fda95e89..ed013fdcc1ff 100644 /** * drm_kunit_helper_alloc_drm_device - Allocates a mock DRM device for KUnit tests -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 10 Nov 2022 12:57:53 +0100 -Subject: [PATCH 520/545] drm/vc4: Move HVS state to main header +Subject: [PATCH 520/590] drm/vc4: Move HVS state to main header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -226372,13 +226381,13 @@ index 1eb964454240..56c6f24fb9d7 100644 { struct vc4_dev *vc4 = to_vc4_dev(state->dev); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 14 Nov 2022 14:11:41 +0100 -Subject: [PATCH 521/545] drm/vc4: crtc: Introduce a lower-level crtc init +Subject: [PATCH 521/590] drm/vc4: crtc: Introduce a lower-level crtc init helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -226511,13 +226520,13 @@ index 21cc5ccd692c..cf45afb76c0c 100644 struct vc4_crtc *vc4_crtc, const struct vc4_crtc_data *data, const struct drm_crtc_funcs *crtc_funcs, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 14 Nov 2022 16:18:09 +0100 -Subject: [PATCH 522/545] drm/vc4: crtc: Make encoder lookup helper public +Subject: [PATCH 522/590] drm/vc4: crtc: Make encoder lookup helper public MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -226597,13 +226606,13 @@ index cf45afb76c0c..a9f6b9e2b8ca 100644 const char *name; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Nov 2022 16:00:53 +0100 -Subject: [PATCH 523/545] drm/vc4: hvs: Provide a function to initialize the +Subject: [PATCH 523/590] drm/vc4: hvs: Provide a function to initialize the HVS structure We'll need to initialize the HVS structure without a backing device to @@ -226736,13 +226745,13 @@ index b4d0645a56e4..c228d68c8a47 100644 reg &= ~SCALER_DISPECTRL_DSP2_MUX_MASK; HVS_WRITE(SCALER_DISPECTRL, -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 18:18:40 +0100 -Subject: [PATCH 524/545] drm/vc4: tests: Introduce a mocking infrastructure +Subject: [PATCH 524/590] drm/vc4: tests: Introduce a mocking infrastructure In order to test the current atomic_check hooks we need to have a DRM device that has roughly the same capabilities and layout that the actual @@ -227508,13 +227517,13 @@ index 4f7ce5d3e8ad..2b69454b8534 100644 .debugfs_name = "txp_regs", .hvs_available_channels = BIT(2), -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Nov 2022 17:04:31 +0100 -Subject: [PATCH 525/545] drm/vc4: tests: Fail the current test if we access a +Subject: [PATCH 525/590] drm/vc4: tests: Fail the current test if we access a register Accessing a register when running under kunit is a bad idea since our @@ -227727,13 +227736,13 @@ index 32ca0b3d1549..6e7c6936fc2d 100644 static inline struct vc4_vec * encoder_to_vc4_vec(struct drm_encoder *encoder) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 14 Nov 2022 16:06:22 +0100 -Subject: [PATCH 526/545] drm/vc4: tests: Add unit test suite for the PV muxing +Subject: [PATCH 526/590] drm/vc4: tests: Add unit test suite for the PV muxing The HVS to PixelValve muxing code is fairly error prone and has a bunch of arbitrary constraints due to the hardware setup. @@ -228899,13 +228908,13 @@ index 000000000000..ae0bd0f81698 + &vc5_pv_muxing_bugs_test_suite +); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 1 Dec 2022 11:08:24 +0100 -Subject: [PATCH 527/545] Documentation: gpu: vc4: Add KUnit Tests Section +Subject: [PATCH 527/590] Documentation: gpu: vc4: Add KUnit Tests Section Now that we have VC4-specific tests in place, let's document them properly. @@ -228943,13 +228952,13 @@ index 5df1d98b9544..a2375f1584e6 100644 =========================================== -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 8 Dec 2022 13:17:42 +0100 -Subject: [PATCH 528/545] .github: Add Github Workflow for KUnit +Subject: [PATCH 528/590] .github: Add Github Workflow for KUnit Now that we have some KUnit coverage, let's add a github actions file to run them on each push or pull request. @@ -229024,13 +229033,13 @@ index 000000000000..ee51bbc912e7 + --kunitconfig=drivers/gpu/drm/vc4/tests \ + --cross_compile=aarch64-linux-gnu- --arch=arm64 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 6 Dec 2022 18:11:58 +0000 -Subject: [PATCH 529/545] .github/workflows: Add dtoverlaycheck workflow +Subject: [PATCH 529/590] .github/workflows: Add dtoverlaycheck workflow Signed-off-by: Dave Stevenson --- @@ -229093,13 +229102,13 @@ index 000000000000..2e6d4f2a0b6d + make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- dtbs + ${{env.UTILS_DIR}}/overlaycheck/overlaycheck -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 11 Nov 2022 17:09:32 +0000 -Subject: [PATCH 530/545] .github/workflows: Create workflow to CI kernel +Subject: [PATCH 530/590] .github/workflows: Create workflow to CI kernel builds Builds the bcmrpi, bcm2709, bcm2711, and bcm2835 32 bit kernels, @@ -229385,13 +229394,13 @@ index 000000000000..8e551dc4d0c5 + path: bcm2711_arm64_build.tar + retention-days: 7 -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 14 Nov 2022 17:14:15 +0000 -Subject: [PATCH 531/545] README: Add README.md with CI kernel build status +Subject: [PATCH 531/590] README: Add README.md with CI kernel build status tags This is a copy of README with the tags added. @@ -229442,13 +229451,13 @@ index 000000000000..605abc67589e +[![Pi kernel build tests](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml/badge.svg?branch=rpi-6.1.y)](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml) +[![dtoverlaycheck](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml/badge.svg?branch=rpi-6.1.y)](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml) -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 7 Dec 2022 18:20:40 -0700 -Subject: [PATCH 532/545] drm/panel: panel-ilitek9881c: Use cansleep methods +Subject: [PATCH 532/590] drm/panel: panel-ilitek9881c: Use cansleep methods Use cansleep version of gpiod_set_value so external IO drivers (like via I2C) can be used. @@ -229485,13 +229494,13 @@ index 6136da4d0af8..ae53800403aa 100644 return 0; } -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 7 Dec 2022 19:55:15 -0700 -Subject: [PATCH 533/545] drm/panel: panel-ilitek9881c: Crystalfontz support +Subject: [PATCH 533/590] drm/panel: panel-ilitek9881c: Crystalfontz support Add support for Crystalfontz CFAF7201280A0-050Tx panel. @@ -229767,13 +229776,13 @@ index ae53800403aa..dfb90334a77c 100644 }; MODULE_DEVICE_TABLE(of, ili9881c_of_match); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Wed, 7 Dec 2022 19:57:24 -0700 -Subject: [PATCH 534/545] configs: Enable LM3630A backlight module +Subject: [PATCH 534/590] configs: Enable LM3630A backlight module Added LM3630A module to defconfig to support Crystalfontz CFA050-PI-M. @@ -229847,13 +229856,13 @@ index 16df4824429d..cb0e91c6839c 100644 CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Thu, 8 Dec 2022 04:58:05 -0700 -Subject: [PATCH 535/545] overlays: Add crystalfontz-cfa050_pi_m +Subject: [PATCH 535/590] overlays: Add crystalfontz-cfa050_pi_m Add support for the Crystalfontz CFA050-PI-M series of Raspberry Pi CM4-based modules using the CFAF7201280A0_050Tx TFT LCD displays. @@ -230029,13 +230038,13 @@ index 000000000000..544036589b66 + }; +}; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: lihgong Date: Tue, 13 Dec 2022 09:14:31 +0800 -Subject: [PATCH 536/545] configs: Add 8DEV USB2CAN driver support +Subject: [PATCH 536/590] configs: Add 8DEV USB2CAN driver support See: https://github.com/raspberrypi/linux/pull/5273 Requested-by: lihgong @@ -230109,13 +230118,13 @@ index cb0e91c6839c..0dac7e44292a 100644 CONFIG_CAN_PEAK_USB=m CONFIG_MDIO_BITBANG=m -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 15 Dec 2022 11:38:59 +0000 -Subject: [PATCH 537/545] vc4_crtc: Increase setup cost in core clock +Subject: [PATCH 537/590] vc4_crtc: Increase setup cost in core clock calculation to handle extreme reduced blanking See: https://github.com/raspberrypi/linux/issues/4446 @@ -230149,13 +230158,13 @@ index d2959d5de7a3..dd8b442d266e 100644 } else { vc4_state->hvs_load = mode->clock * 1000; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 14 Dec 2022 15:00:51 +0000 -Subject: [PATCH 538/545] net: bcmgenet: Add 'eee' module parameter +Subject: [PATCH 538/590] net: bcmgenet: Add 'eee' module parameter On some switches, having EEE enabled causes the link to become unstable. With this patch, adding 'genet.eee=N' to the kernel command @@ -230201,13 +230210,13 @@ index 1811d60ef453..184bfd9f4ed2 100644 netif_tx_start_all_queues(dev); -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 14 Dec 2022 15:28:16 +0000 -Subject: [PATCH 539/545] dts: bcm2711: Add 'eee' dtparam +Subject: [PATCH 539/590] dts: bcm2711: Add 'eee' dtparam The 'eee' dtparam allows EEE to be disabled on the onboard Ethernet controller. Adding 'dtparam=eee=off' to config.txt causes @@ -230239,13 +230248,13 @@ index 5f9a5bad98ad..f342e8547a8e 100644 <&hdmi1>,"status"; pcie = <&pcie0>,"status"; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Dec 2022 15:57:18 +0000 -Subject: [PATCH 540/545] dtoverlays: Add overlay cm-swap-i2c0 to swap buses on +Subject: [PATCH 540/590] dtoverlays: Add overlay cm-swap-i2c0 to swap buses on i2c0mux The legacy camera stack wiring instructions connect the cameras @@ -230336,13 +230345,13 @@ index 000000000000..6b7f599f7611 + }; +}; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Dec 2022 15:59:28 +0000 -Subject: [PATCH 541/545] dt: Correct cam_reg GPIO assignments for CM1&3. +Subject: [PATCH 541/590] dt: Correct cam_reg GPIO assignments for CM1&3. The standard instructions for wiring up cameras on CM1&3 assign GPIOs for both the shutdown and LED pins on the @@ -230417,13 +230426,13 @@ index 84117e5b0f11..e48dfc34a944 100644 eee Enable Energy Efficient Ethernet support for -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Dec 2022 16:13:07 +0000 -Subject: [PATCH 542/545] dt: Add camX_reg_gpio to CM4 +Subject: [PATCH 542/590] dt: Add camX_reg_gpio to CM4 To make it easier for custom routing of camera control GPIOs, add the camX_reg_gpio parameter to CM4 DT as well. @@ -230484,13 +230493,13 @@ index e48dfc34a944..e4d3812678b1 100644 eee Enable Energy Efficient Ethernet support for compatible devices (default "on"). See also -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Dec 2022 16:15:27 +0000 -Subject: [PATCH 543/545] dt: Add camX_reg and camX_reg_gpio overrides to CM4S +Subject: [PATCH 543/590] dt: Add camX_reg and camX_reg_gpio overrides to CM4S CM4S follows the pattern of CM1&3 for routing camera GPIO control, but didn't have the overrides defined to @@ -230556,13 +230565,13 @@ index e4d3812678b1..2a9586721697 100644 switches to normal GPIO. -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Fri, 16 Dec 2022 15:51:17 +0000 -Subject: [PATCH 544/545] overlays: Add disable-emmc2 +Subject: [PATCH 544/590] overlays: Add disable-emmc2 Add a new overlay that disables the EMMC2 controller on BCM2711. This can be useful on a Compute Module 4 if the onboard EMMC2 @@ -230644,13 +230653,13 @@ index 627855bc500c..fda036488d41 100644 bcm2711; }; -- -2.31.1 +2.39.1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Fri, 16 Dec 2022 15:18:21 +0000 -Subject: [PATCH 545/545] xhci: constrain XHCI_VLI_HUB_TT_QUIRK to old firmware +Subject: [PATCH 545/590] xhci: constrain XHCI_VLI_HUB_TT_QUIRK to old firmware versions VLI have a firmware update for the VL805 which resolves the incorrect @@ -230663,7 +230672,7 @@ Signed-off-by: Jonathan Bell 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 89123de8a0f2..7e5036528b48 100644 +index 10473448885d..a93cb6aaad4c 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -26,6 +26,8 @@ @@ -230675,7 +230684,7 @@ index 89123de8a0f2..7e5036528b48 100644 /* Device for a quirk */ #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000 -@@ -99,6 +101,16 @@ static int xhci_pci_reinit(struct xhci_hcd *xhci, struct pci_dev *pdev) +@@ -103,6 +105,16 @@ static int xhci_pci_reinit(struct xhci_hcd *xhci, struct pci_dev *pdev) return 0; } @@ -230692,7 +230701,7 @@ index 89123de8a0f2..7e5036528b48 100644 static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) { struct pci_dev *pdev = to_pci_dev(dev); -@@ -293,7 +305,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) +@@ -298,7 +310,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_VLI_TRB_CACHE_BUG; xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG; @@ -230703,5 +230712,7129 @@ index 89123de8a0f2..7e5036528b48 100644 if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && -- -2.31.1 +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell <8911409+pelwell@users.noreply.github.com> +Date: Mon, 19 Dec 2022 16:32:33 +0000 +Subject: [PATCH 546/590] drm/panel: simple: Add Innolux AT056tN53V1 5.6" VGA + +Add support for the Innolux AT056tN53V1 5.6" VGA (640x480) TFT LCD +panel. + +Signed-off-by: Joerg Quinten +Signed-off-by: Phil Elwell +--- + .../bindings/display/panel/panel-simple.yaml | 2 + + .../media/v4l/subdev-formats.rst | 76 ++++++++++++++++++- + drivers/gpu/drm/panel/panel-simple.c | 35 +++++++++ + 3 files changed, 112 insertions(+), 1 deletion(-) + +diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml +index 5b6a744d0371..133c97672def 100644 +--- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml ++++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml +@@ -174,6 +174,8 @@ properties: + - ivo,m133nwf4-r0 + # Innolux AT043TN24 4.3" WQVGA TFT LCD panel + - innolux,at043tn24 ++ # Innolux AT056tN53V1 5.6" VGA (640x480) TFT LCD panel ++ - innolux,at056tn53v1 + # Innolux AT070TN92 7.0" WQVGA TFT LCD panel + - innolux,at070tn92 + # Innolux G070Y2-L01 7" WVGA (800x480) TFT LCD panel +diff --git a/Documentation/userspace-api/media/v4l/subdev-formats.rst b/Documentation/userspace-api/media/v4l/subdev-formats.rst +index 8cdb545c887c..2ed16b5a9d37 100644 +--- a/Documentation/userspace-api/media/v4l/subdev-formats.rst ++++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst +@@ -627,7 +627,7 @@ The following tables list existing packed RGB formats. + * .. _MEDIA_BUS_FMT_RGB565_1X24_CPADHI: + + - MEDIA_BUS_FMT_RGB565_1X24_CPADHI +- - 0x1020 ++ - 0x1022 + - + - + - +@@ -949,6 +949,43 @@ The following tables list existing packed RGB formats. + - g\ :sub:`5` + - g\ :sub:`4` + - g\ :sub:`3` ++ * .. _MEDIA-BUS-FMT-BGR666-1X18: ++ ++ - MEDIA_BUS_FMT-BGR666_1X18 ++ - 0x1023 ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - b\ :sub:`5` ++ - b\ :sub:`4` ++ - b\ :sub:`3` ++ - b\ :sub:`2` ++ - b\ :sub:`1` ++ - b\ :sub:`0` ++ - g\ :sub:`5` ++ - g\ :sub:`4` ++ - g\ :sub:`3` ++ - g\ :sub:`2` ++ - g\ :sub:`1` ++ - g\ :sub:`0` ++ - r\ :sub:`5` ++ - r\ :sub:`4` ++ - r\ :sub:`3` ++ - r\ :sub:`2` ++ - r\ :sub:`1` ++ - r\ :sub:`0` + * .. _MEDIA-BUS-FMT-RGB666-1X18: + + - MEDIA_BUS_FMT_RGB666_1X18 +@@ -1023,6 +1060,43 @@ The following tables list existing packed RGB formats. + - g\ :sub:`2` + - g\ :sub:`1` + - g\ :sub:`0` ++ * .. _MEDIA-BUS-FMT-BGR666-1X24_CPADHI: ++ ++ - MEDIA_BUS_FMT_BGR666_1X24_CPADHI ++ - 0x1024 ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - 0 ++ - 0 ++ - b\ :sub:`5` ++ - b\ :sub:`4` ++ - b\ :sub:`3` ++ - b\ :sub:`2` ++ - b\ :sub:`1` ++ - b\ :sub:`0` ++ - 0 ++ - 0 ++ - g\ :sub:`5` ++ - g\ :sub:`4` ++ - g\ :sub:`3` ++ - g\ :sub:`2` ++ - g\ :sub:`1` ++ - g\ :sub:`0` ++ - 0 ++ - 0 ++ - r\ :sub:`5` ++ - r\ :sub:`4` ++ - r\ :sub:`3` ++ - r\ :sub:`2` ++ - r\ :sub:`1` ++ - r\ :sub:`0` + * .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI: + + - MEDIA_BUS_FMT_RGB666_1X24_CPADHI +diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c +index 2e21f5075edb..fda264e28165 100644 +--- a/drivers/gpu/drm/panel/panel-simple.c ++++ b/drivers/gpu/drm/panel/panel-simple.c +@@ -2135,6 +2135,38 @@ static const struct panel_desc innolux_at043tn24 = { + .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE, + }; + ++static const struct display_timing innolux_at056tn53v1_timing = { ++ .pixelclock = { 39700000, 39700000, 39700000}, ++ .hactive = { 640, 640, 640 }, ++ .hfront_porch = { 16, 16, 16 }, ++ .hback_porch = { 134, 134, 134 }, ++ .hsync_len = { 10, 10, 10}, ++ .vactive = { 480, 480, 480 }, ++ .vfront_porch = { 32, 32, 32}, ++ .vback_porch = { 11, 11, 11 }, ++ .vsync_len = { 2, 2, 2 }, ++ .flags = DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PHSYNC, ++}; ++ ++static const struct panel_desc innolux_at056tn53v1 = { ++ .timings = &innolux_at056tn53v1_timing, ++ .num_timings = 1, ++ .bpc = 6, ++ .size = { ++ .width = 112, ++ .height = 84, ++ }, ++ .delay = { ++ .prepare = 50, ++ .enable = 200, ++ .disable = 110, ++ .unprepare = 200, ++ }, ++ .bus_format = MEDIA_BUS_FMT_BGR666_1X24_CPADHI, ++ .bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE, ++ .connector_type = DRM_MODE_CONNECTOR_DPI, ++}; ++ + static const struct drm_display_mode innolux_at070tn92_mode = { + .clock = 33333, + .hdisplay = 800, +@@ -4138,6 +4170,9 @@ static const struct of_device_id platform_of_match[] = { + }, { + .compatible = "innolux,at043tn24", + .data = &innolux_at043tn24, ++ }, { ++ .compatible = "innolux,at056tn53v1", ++ .data = &innolux_at056tn53v1, + }, { + .compatible = "innolux,at070tn92", + .data = &innolux_at070tn92, +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 5 Jan 2023 15:43:03 +0000 +Subject: [PATCH 547/590] configs: Enable PWM drivers + +Add CONFIG_PWM, which now predicates the PWM drivers. + +Signed-off-by: Phil Elwell +--- + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcm2711_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + arch/arm64/configs/bcm2711_defconfig | 1 + + arch/arm64/configs/bcmrpi3_defconfig | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index 786e94705bae..70e65ac88508 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -1399,6 +1399,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m ++CONFIG_PWM=y + CONFIG_PWM_BCM2835=m + CONFIG_PWM_PCA9685=m + CONFIG_PWM_RASPBERRYPI_POE=m +diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig +index c457d1b744e3..48670cd88488 100644 +--- a/arch/arm/configs/bcm2711_defconfig ++++ b/arch/arm/configs/bcm2711_defconfig +@@ -1423,6 +1423,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m ++CONFIG_PWM=y + CONFIG_PWM_BCM2835=m + CONFIG_PWM_PCA9685=m + CONFIG_PWM_RASPBERRYPI_POE=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index c516ab64bd6b..f440e3552b0c 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -1392,6 +1392,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m ++CONFIG_PWM=y + CONFIG_PWM_BCM2835=m + CONFIG_PWM_PCA9685=m + CONFIG_PWM_RASPBERRYPI_POE=m +diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig +index 5e9159464a48..ff05936aae58 100644 +--- a/arch/arm64/configs/bcm2711_defconfig ++++ b/arch/arm64/configs/bcm2711_defconfig +@@ -1438,6 +1438,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m ++CONFIG_PWM=y + CONFIG_PWM_BCM2835=m + CONFIG_PWM_PCA9685=m + CONFIG_PWM_RASPBERRYPI_POE=m +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +index 0dac7e44292a..dde7d045b176 100644 +--- a/arch/arm64/configs/bcmrpi3_defconfig ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -1337,6 +1337,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m ++CONFIG_PWM=y + CONFIG_PWM_BCM2835=m + CONFIG_PWM_PCA9685=m + CONFIG_PWM_RASPBERRYPI_POE=m +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 3 Jan 2023 15:16:50 +0000 +Subject: [PATCH 548/590] drm/vc4: Fix YUV plane handling when planes are in + different buffers + +YUV images can either be presented as one allocation with offsets +for the different planes, or multiple allocations with 0 offsets. + +The driver only ever calls drm_fb_[dma|cma]_get_gem_obj with plane +index 0, therefore any application using the second approach was +incorrectly rendered. + +Correctly determine the address for each plane, removing the +assumption that the base address is the same for each. + +Fixes: fc04023fafec ("drm/vc4: Add support for YUV planes.") +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_plane.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c +index 2987bfd95c08..6432055454ac 100644 +--- a/drivers/gpu/drm/vc4/vc4_plane.c ++++ b/drivers/gpu/drm/vc4/vc4_plane.c +@@ -438,7 +438,7 @@ static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state) + { + struct vc4_plane_state *vc4_state = to_vc4_plane_state(state); + struct drm_framebuffer *fb = state->fb; +- struct drm_gem_dma_object *bo = drm_fb_dma_get_gem_obj(fb, 0); ++ struct drm_gem_dma_object *bo; + int num_planes = fb->format->num_planes; + struct drm_crtc_state *crtc_state; + u32 h_subsample = fb->format->hsub; +@@ -457,8 +457,10 @@ static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state) + if (ret) + return ret; + +- for (i = 0; i < num_planes; i++) ++ for (i = 0; i < num_planes; i++) { ++ bo = drm_fb_dma_get_gem_obj(fb, i); + vc4_state->offsets[i] = bo->dma_addr + fb->offsets[i]; ++ } + + vc4_state->src_x = state->src.x1; + vc4_state->src_y = state->src.y1; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Krzysztof Kotlenga +Date: Thu, 29 Dec 2022 19:14:32 +0100 +Subject: [PATCH 549/590] overlays: audremap: Fix setting of the pin function + +The brcm,function property must be set in the overlay fragment too - +otherwise the parametrization won't work. At least that's the case for +bcm2711-rpi-cm4.dts which starts with empty properties: + +&gpio { + audio_pins: audio_pins { + brcm,pins = <>; + brcm,function = <>; + }; +}; + +This was broken since a56df85d2f42fd461fdc05f33617141aca5ba465. + +Signed-off-by: Krzysztof Kotlenga +--- + arch/arm/boot/dts/overlays/audremap-overlay.dts | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts +index a73cc95934ba..95027c5c8f9e 100644 +--- a/arch/arm/boot/dts/overlays/audremap-overlay.dts ++++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts +@@ -8,6 +8,7 @@ fragment@0 { + target = <&audio_pins>; + frag0: __overlay__ { + brcm,pins = <12 13>; ++ brcm,function = <4>; /* alt0 alt0 */ + }; + }; + +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 3 Jan 2023 15:44:10 +0000 +Subject: [PATCH 550/590] media: dt-bindings: Add DW9817 to DW9807 binding + +The DW9817 is programmatically the same as DW9807, but +the output drive is a bi-directional -100 to +100mA +instead of 0-100mA. + +Add the appropriate compativle string. + +Signed-off-by: Dave Stevenson +--- + .../bindings/media/i2c/dongwoon,dw9807-vcm.yaml | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml +index aae246ca3fcf..1be649611ba2 100644 +--- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml ++++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml +@@ -5,18 +5,24 @@ + $id: http://devicetree.org/schemas/media/i2c/dongwoon,dw9807-vcm.yaml# + $schema: http://devicetree.org/meta-schemas/core.yaml# + +-title: Dongwoon Anatech DW9807 voice coil lens driver ++title: Dongwoon Anatech DW9807 and DW9817 voice coil lens driver + + maintainers: + - Sakari Ailus + + description: | + DW9807 is a 10-bit DAC with current sink capability. It is intended for +- controlling voice coil lenses. ++ controlling voice coil lenses. The output drive is 0-100mA. ++ DW9817 is very similar as a 10-bit DAC with current sink capability, ++ however the output drive is a bidirection -100 to +100mA. ++ + + properties: + compatible: +- const: dongwoon,dw9807-vcm ++ items: ++ - enum: ++ - dongwoon,dw9807-vcm ++ - dongwoon,dw9817-vcm + + reg: + maxItems: 1 +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 3 Jan 2023 15:38:08 +0000 +Subject: [PATCH 551/590] media: dw9807-vcm: Add support for DW9817 + bidirectional VCM driver + +The DW9817 is effectively the same as DW9807 from a programming +interface, however it drives +/-100mA instead of 0-100mA. This means +that the power on ramp needs to take the lens from the midpoint, and +power off return it there. It also changes the default position for +the module. + +Signed-off-by: Dave Stevenson +--- + drivers/media/i2c/dw9807-vcm.c | 115 +++++++++++++++++++++++++-------- + 1 file changed, 88 insertions(+), 27 deletions(-) + +diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c +index 3599720db7e9..3fb5d6a7f771 100644 +--- a/drivers/media/i2c/dw9807-vcm.c ++++ b/drivers/media/i2c/dw9807-vcm.c +@@ -1,6 +1,14 @@ + // SPDX-License-Identifier: GPL-2.0 + // Copyright (C) 2018 Intel Corporation + ++/* ++ * DW9807 is a 10-bit DAC driver, capable of sinking up to 100mA. ++ * ++ * DW9817 is a bidirectional 10-bit driver, driving up to +/- 100mA. ++ * Operationally it is identical to DW9807, except that the idle position is ++ * the mid-point, not 0. ++ */ ++ + #include + #include + #include +@@ -38,10 +46,16 @@ + + #define MAX_RETRY 10 + ++struct dw9807_cfg { ++ unsigned int idle_pos; ++ unsigned int default_pos; ++}; ++ + struct dw9807_device { + struct v4l2_ctrl_handler ctrls_vcm; + struct v4l2_subdev sd; + u16 current_val; ++ u16 idle_pos; + }; + + static inline struct dw9807_device *sd_to_dw9807_vcm( +@@ -109,6 +123,40 @@ static int dw9807_set_dac(struct i2c_client *client, u16 data) + return 0; + } + ++/* ++ * The lens position is gradually moved in units of DW9807_CTRL_STEPS, ++ * to make the movements smoothly. In all cases, even when "start" and ++ * "end" are the same, the lens will be set to the "end" position. ++ * ++ * (We don't use hardware slew rate control, because it differs widely ++ * between otherwise-compatible ICs, and may need lens-specific tuning.) ++ */ ++static int dw9807_ramp(struct i2c_client *client, int start, int end) ++{ ++ int step, val, ret; ++ ++ if (start < end) ++ step = DW9807_CTRL_STEPS; ++ else ++ step = -DW9807_CTRL_STEPS; ++ ++ val = start; ++ while (true) { ++ val += step; ++ if (step * (val - end) >= 0) ++ val = end; ++ ret = dw9807_set_dac(client, val); ++ if (ret) ++ dev_err_ratelimited(&client->dev, "%s I2C failure: %d", ++ __func__, ret); ++ if (val == end) ++ break; ++ usleep_range(DW9807_CTRL_DELAY_US, DW9807_CTRL_DELAY_US + 10); ++ } ++ ++ return ret; ++} ++ + static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl) + { + struct dw9807_device *dev_vcm = container_of(ctrl->handler, +@@ -118,7 +166,7 @@ static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl) + struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd); + + dev_vcm->current_val = ctrl->val; +- return dw9807_set_dac(client, ctrl->val); ++ return dw9807_ramp(client, ctrl->val, ctrl->val); + } + + return -EINVAL; +@@ -163,7 +211,8 @@ static int dw9807_init_controls(struct dw9807_device *dev_vcm) + v4l2_ctrl_handler_init(hdl, 1); + + v4l2_ctrl_new_std(hdl, ops, V4L2_CID_FOCUS_ABSOLUTE, +- 0, DW9807_MAX_FOCUS_POS, DW9807_FOCUS_STEPS, 0); ++ 0, DW9807_MAX_FOCUS_POS, DW9807_FOCUS_STEPS, ++ dev_vcm->current_val); + + dev_vcm->sd.ctrl_handler = hdl; + if (hdl->error) { +@@ -175,9 +224,32 @@ static int dw9807_init_controls(struct dw9807_device *dev_vcm) + return 0; + } + ++/* Compatible devices; in fact there are many similar chips. ++ * "data" holds the powered-off (zero current) lens position and a ++ * default/initial control value (which need not be the same as the powered-off ++ * value). ++ */ ++static const struct dw9807_cfg dw9807_cfg = { ++ .idle_pos = 0, ++ .default_pos = 0 ++}; ++ ++static const struct dw9807_cfg dw9817_cfg = { ++ .idle_pos = 512, ++ .default_pos = 480, ++}; ++ ++static const struct of_device_id dw9807_of_table[] = { ++ { .compatible = "dongwoon,dw9807-vcm", .data = &dw9807_cfg }, ++ { .compatible = "dongwoon,dw9817-vcm", .data = &dw9817_cfg }, ++ { /* sentinel */ } ++}; ++ + static int dw9807_probe(struct i2c_client *client) + { + struct dw9807_device *dw9807_dev; ++ const struct of_device_id *match; ++ const struct dw9807_cfg *cfg; + int rval; + + dw9807_dev = devm_kzalloc(&client->dev, sizeof(*dw9807_dev), +@@ -185,6 +257,13 @@ static int dw9807_probe(struct i2c_client *client) + if (dw9807_dev == NULL) + return -ENOMEM; + ++ match = i2c_of_match_device(dw9807_of_table, client); ++ if (match) { ++ cfg = (const struct dw9807_cfg *)match->data; ++ dw9807_dev->idle_pos = cfg->idle_pos; ++ dw9807_dev->current_val = cfg->default_pos; ++ } ++ + v4l2_i2c_subdev_init(&dw9807_dev->sd, client, &dw9807_ops); + dw9807_dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; + dw9807_dev->sd.internal_ops = &dw9807_int_ops; +@@ -203,7 +282,8 @@ static int dw9807_probe(struct i2c_client *client) + if (rval < 0) + goto err_cleanup; + +- pm_runtime_set_active(&client->dev); ++ if (!dw9807_dev->vdd) ++ pm_runtime_set_active(&client->dev); + pm_runtime_enable(&client->dev); + pm_runtime_idle(&client->dev); + +@@ -237,15 +317,10 @@ static int __maybe_unused dw9807_vcm_suspend(struct device *dev) + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); + const char tx_data[2] = { DW9807_CTL_ADDR, 0x01 }; +- int ret, val; ++ int ret; + +- for (val = dw9807_dev->current_val & ~(DW9807_CTRL_STEPS - 1); +- val >= 0; val -= DW9807_CTRL_STEPS) { +- ret = dw9807_set_dac(client, val); +- if (ret) +- dev_err_once(dev, "%s I2C failure: %d", __func__, ret); +- usleep_range(DW9807_CTRL_DELAY_US, DW9807_CTRL_DELAY_US + 10); +- } ++ if (abs(dw9807_dev->current_val - dw9807_dev->idle_pos) > DW9807_CTRL_STEPS) ++ dw9807_ramp(client, dw9807_dev->current_val, dw9807_dev->idle_pos); + + /* Power down */ + ret = i2c_master_send(client, tx_data, sizeof(tx_data)); +@@ -269,7 +344,7 @@ static int __maybe_unused dw9807_vcm_resume(struct device *dev) + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); + const char tx_data[2] = { DW9807_CTL_ADDR, 0x00 }; +- int ret, val; ++ int ret; + + /* Power on */ + ret = i2c_master_send(client, tx_data, sizeof(tx_data)); +@@ -278,25 +353,11 @@ static int __maybe_unused dw9807_vcm_resume(struct device *dev) + return ret; + } + +- for (val = dw9807_dev->current_val % DW9807_CTRL_STEPS; +- val < dw9807_dev->current_val + DW9807_CTRL_STEPS - 1; +- val += DW9807_CTRL_STEPS) { +- ret = dw9807_set_dac(client, val); +- if (ret) +- dev_err_ratelimited(dev, "%s I2C failure: %d", +- __func__, ret); +- usleep_range(DW9807_CTRL_DELAY_US, DW9807_CTRL_DELAY_US + 10); +- } ++ dw9807_ramp(client, dw9807_dev->idle_pos, dw9807_dev->current_val); + + return 0; + } + +-static const struct of_device_id dw9807_of_table[] = { +- { .compatible = "dongwoon,dw9807-vcm" }, +- /* Compatibility for older firmware, NEVER USE THIS IN FIRMWARE! */ +- { .compatible = "dongwoon,dw9807" }, +- { /* sentinel */ } +-}; + MODULE_DEVICE_TABLE(of, dw9807_of_table); + + static const struct dev_pm_ops dw9807_pm_ops = { +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 3 Jan 2023 16:41:08 +0000 +Subject: [PATCH 552/590] media: dt-bindings: Add regulator to dw9807-vcm + +The VCM driver will often be controlled via a regulator, +therefore add in the relevant DT hooks. + +Signed-off-by: Dave Stevenson +--- + .../devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml | 4 ++++ + drivers/media/i2c/dw9807-vcm.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml +index 1be649611ba2..6de07543e973 100644 +--- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml ++++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml +@@ -27,6 +27,10 @@ properties: + reg: + maxItems: 1 + ++ VDD-supply: ++ description: ++ Definition of the regulator used as VDD power supply to the driver. ++ + required: + - compatible + - reg +diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c +index 3fb5d6a7f771..258c53295005 100644 +--- a/drivers/media/i2c/dw9807-vcm.c ++++ b/drivers/media/i2c/dw9807-vcm.c +@@ -301,6 +301,10 @@ static void dw9807_remove(struct i2c_client *client) + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); + ++ if (dw9807_dev->vdd) ++ regulator_unregister_notifier(dw9807_dev->vdd, ++ &dw9807_dev->notifier); ++ + pm_runtime_disable(&client->dev); + + dw9807_subdev_cleanup(dw9807_dev); +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 3 Jan 2023 16:35:59 +0000 +Subject: [PATCH 553/590] media: dw9807-vcm: Add regulator support to the + driver + +Uses the regulator notifier framework so that the current +focus position will be restored whenever any user of the +regulator powers it up. This means that should the VCM +and sensor share a common regulator then starting the sensor +will automatically restore the default position. If they +have independent regulators then it will behave be powered +up when the VCM subdev is opened. + +Signed-off-by: Dave Stevenson +--- + drivers/media/i2c/dw9807-vcm.c | 113 ++++++++++++++++++++++++++------- + 1 file changed, 90 insertions(+), 23 deletions(-) + +diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c +index 258c53295005..0bd9fe75deb5 100644 +--- a/drivers/media/i2c/dw9807-vcm.c ++++ b/drivers/media/i2c/dw9807-vcm.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -46,6 +47,9 @@ + + #define MAX_RETRY 10 + ++#define DW9807_PW_MIN_DELAY_US 100 ++#define DW9807_PW_DELAY_RANGE_US 10 ++ + struct dw9807_cfg { + unsigned int idle_pos; + unsigned int default_pos; +@@ -56,6 +60,8 @@ struct dw9807_device { + struct v4l2_subdev sd; + u16 current_val; + u16 idle_pos; ++ struct regulator *vdd; ++ struct notifier_block notifier; + }; + + static inline struct dw9807_device *sd_to_dw9807_vcm( +@@ -157,6 +163,66 @@ static int dw9807_ramp(struct i2c_client *client, int start, int end) + return ret; + } + ++static int dw9807_active(struct dw9807_device *dw9807_dev) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&dw9807_dev->sd); ++ const char tx_data[2] = { DW9807_CTL_ADDR, 0x00 }; ++ int ret; ++ ++ /* Power on */ ++ ret = i2c_master_send(client, tx_data, sizeof(tx_data)); ++ if (ret < 0) { ++ dev_err(&client->dev, "I2C write CTL fail ret = %d\n", ret); ++ return ret; ++ } ++ ++ return dw9807_ramp(client, dw9807_dev->idle_pos, dw9807_dev->current_val); ++} ++ ++static int dw9807_standby(struct dw9807_device *dw9807_dev) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&dw9807_dev->sd); ++ const char tx_data[2] = { DW9807_CTL_ADDR, 0x01 }; ++ int ret; ++ ++ if (abs(dw9807_dev->current_val - dw9807_dev->idle_pos) > DW9807_CTRL_STEPS) ++ dw9807_ramp(client, dw9807_dev->current_val, dw9807_dev->idle_pos); ++ ++ /* Power down */ ++ ret = i2c_master_send(client, tx_data, sizeof(tx_data)); ++ if (ret < 0) { ++ dev_err(&client->dev, "I2C write CTL fail ret = %d\n", ret); ++ return ret; ++ } ++ ++ return 0; ++} ++ ++static int dw9807_regulator_event(struct notifier_block *nb, ++ unsigned long action, void *data) ++{ ++ struct dw9807_device *dw9807_dev = ++ container_of(nb, struct dw9807_device, notifier); ++ ++ if (action & REGULATOR_EVENT_ENABLE) { ++ /* ++ * Initialisation delay between VDD low->high and the moment ++ * when the i2c command is available. ++ * From the datasheet, it should be 10ms + 2ms (max power ++ * up sequence duration) ++ */ ++ usleep_range(DW9807_PW_MIN_DELAY_US, ++ DW9807_PW_MIN_DELAY_US + ++ DW9807_PW_DELAY_RANGE_US); ++ ++ dw9807_active(dw9807_dev); ++ } else if (action & REGULATOR_EVENT_PRE_DISABLE) { ++ dw9807_standby(dw9807_dev); ++ } ++ ++ return 0; ++} ++ + static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl) + { + struct dw9807_device *dev_vcm = container_of(ctrl->handler, +@@ -257,6 +323,24 @@ static int dw9807_probe(struct i2c_client *client) + if (dw9807_dev == NULL) + return -ENOMEM; + ++ dw9807_dev->vdd = devm_regulator_get_optional(&client->dev, "VDD"); ++ if (IS_ERR(dw9807_dev->vdd)) { ++ if (PTR_ERR(dw9807_dev->vdd) != -ENODEV) ++ return PTR_ERR(dw9807_dev->vdd); ++ ++ dw9807_dev->vdd = NULL; ++ } else { ++ dw9807_dev->notifier.notifier_call = dw9807_regulator_event; ++ ++ rval = regulator_register_notifier(dw9807_dev->vdd, ++ &dw9807_dev->notifier); ++ if (rval) { ++ dev_err(&client->dev, ++ "could not register regulator notifier\n"); ++ return rval; ++ } ++ } ++ + match = i2c_of_match_device(dw9807_of_table, client); + if (match) { + cfg = (const struct dw9807_cfg *)match->data; +@@ -320,20 +404,11 @@ static int __maybe_unused dw9807_vcm_suspend(struct device *dev) + struct i2c_client *client = to_i2c_client(dev); + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); +- const char tx_data[2] = { DW9807_CTL_ADDR, 0x01 }; +- int ret; +- +- if (abs(dw9807_dev->current_val - dw9807_dev->idle_pos) > DW9807_CTRL_STEPS) +- dw9807_ramp(client, dw9807_dev->current_val, dw9807_dev->idle_pos); + +- /* Power down */ +- ret = i2c_master_send(client, tx_data, sizeof(tx_data)); +- if (ret < 0) { +- dev_err(&client->dev, "I2C write CTL fail ret = %d\n", ret); +- return ret; +- } ++ if (dw9807_dev->vdd) ++ return regulator_disable(dw9807_dev->vdd); + +- return 0; ++ return dw9807_standby(dw9807_dev); + } + + /* +@@ -347,19 +422,11 @@ static int __maybe_unused dw9807_vcm_resume(struct device *dev) + struct i2c_client *client = to_i2c_client(dev); + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); +- const char tx_data[2] = { DW9807_CTL_ADDR, 0x00 }; +- int ret; +- +- /* Power on */ +- ret = i2c_master_send(client, tx_data, sizeof(tx_data)); +- if (ret < 0) { +- dev_err(&client->dev, "I2C write CTL fail ret = %d\n", ret); +- return ret; +- } + +- dw9807_ramp(client, dw9807_dev->idle_pos, dw9807_dev->current_val); ++ if (dw9807_dev->vdd) ++ return regulator_enable(dw9807_dev->vdd); + +- return 0; ++ return dw9807_active(dw9807_dev); + } + + MODULE_DEVICE_TABLE(of, dw9807_of_table); +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 3 Jan 2023 16:53:37 +0000 +Subject: [PATCH 554/590] media: dw9807-vcm: Smooth the first user movement of + the lens + +The power up/down sequence is already ramped. Extend this to +the first user movement as well, as this will generally avoid +the "tick" noises due to rapid movements and overshooting. +Subsequent movements are generally smaller and so don't cause +issues. + +Signed-off-by: Dave Stevenson +--- + drivers/media/i2c/dw9807-vcm.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c +index 0bd9fe75deb5..85412361e991 100644 +--- a/drivers/media/i2c/dw9807-vcm.c ++++ b/drivers/media/i2c/dw9807-vcm.c +@@ -62,6 +62,7 @@ struct dw9807_device { + u16 idle_pos; + struct regulator *vdd; + struct notifier_block notifier; ++ bool first; + }; + + static inline struct dw9807_device *sd_to_dw9807_vcm( +@@ -176,6 +177,8 @@ static int dw9807_active(struct dw9807_device *dw9807_dev) + return ret; + } + ++ dw9807_dev->first = true; ++ + return dw9807_ramp(client, dw9807_dev->idle_pos, dw9807_dev->current_val); + } + +@@ -230,9 +233,11 @@ static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl) + + if (ctrl->id == V4L2_CID_FOCUS_ABSOLUTE) { + struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd); ++ int start = (dev_vcm->first) ? dev_vcm->current_val : ctrl->val; + ++ dev_vcm->first = false; + dev_vcm->current_val = ctrl->val; +- return dw9807_ramp(client, ctrl->val, ctrl->val); ++ return dw9807_ramp(client, start, ctrl->val); + } + + return -EINVAL; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Thu, 22 Dec 2022 14:08:35 +0000 +Subject: [PATCH 555/590] dtbindings: media: i2c: Add IMX708 CMOS sensor + binding + +Add YAML devicetree binding for IMX708 CMOS image sensor. +Let's also add a MAINTAINERS entry for the binding and driver. + +Signed-off-by: Dave Stevenson +--- + .../devicetree/bindings/media/i2c/imx708.yaml | 119 ++++++++++++++++++ + MAINTAINERS | 8 ++ + 2 files changed, 127 insertions(+) + create mode 100644 Documentation/devicetree/bindings/media/i2c/imx708.yaml + +diff --git a/Documentation/devicetree/bindings/media/i2c/imx708.yaml b/Documentation/devicetree/bindings/media/i2c/imx708.yaml +new file mode 100644 +index 000000000000..4b8645f6880c +--- /dev/null ++++ b/Documentation/devicetree/bindings/media/i2c/imx708.yaml +@@ -0,0 +1,119 @@ ++# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/media/i2c/imx708.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: Sony 1/2.3-Inch 12Mpixel CMOS Digital Image Sensor ++ ++maintainers: ++ - Naushir Patuck ++ ++description: |- ++ The Sony IMX708 is a 1/2.3-inch CMOS active pixel digital image sensor ++ with an active array size of 4608H x 2592V. It is programmable through ++ I2C interface. The I2C address is fixed to 0x1A as per sensor data sheet. ++ Image data is sent through MIPI CSI-2, which is configured as either 2 or ++ 4 data lanes. ++ ++properties: ++ compatible: ++ const: sony,imx708 ++ ++ reg: ++ description: I2C device address ++ maxItems: 1 ++ ++ clocks: ++ maxItems: 1 ++ ++ VDIG-supply: ++ description: ++ Digital I/O voltage supply, 1.1 volts ++ ++ VANA1-supply: ++ description: ++ Analog1 voltage supply, 2.8 volts ++ ++ VANA2-supply: ++ description: ++ Analog2 voltage supply, 1.8 volts ++ ++ VDDL-supply: ++ description: ++ Digital core voltage supply, 1.8 volts ++ ++ reset-gpios: ++ description: |- ++ Reference to the GPIO connected to the xclr pin, if any. ++ Must be released (set high) after all supplies and INCK are applied. ++ ++ # See ../video-interfaces.txt for more details ++ port: ++ type: object ++ properties: ++ endpoint: ++ type: object ++ properties: ++ data-lanes: ++ description: |- ++ The sensor supports either two-lane, or four-lane operation. ++ For two-lane operation the property must be set to <1 2>. ++ items: ++ - const: 1 ++ - const: 2 ++ ++ clock-noncontinuous: ++ type: boolean ++ description: |- ++ MIPI CSI-2 clock is non-continuous if this property is present, ++ otherwise it's continuous. ++ ++ link-frequencies: ++ allOf: ++ - $ref: /schemas/types.yaml#/definitions/uint64-array ++ description: ++ Allowed data bus frequencies. ++ ++ required: ++ - link-frequencies ++ ++required: ++ - compatible ++ - reg ++ - clocks ++ - VANA1-supply ++ - VANA2-supply ++ - VDIG-supply ++ - VDDL-supply ++ - port ++ ++additionalProperties: false ++ ++examples: ++ - | ++ i2c0 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ imx708: sensor@1a { ++ compatible = "sony,imx708"; ++ reg = <0x1a>; ++ clocks = <&imx708_clk>; ++ VANA1-supply = <&imx708_vana1>; /* 1.8v */ ++ VANA2-supply = <&imx708_vana2>; /* 2.8v */ ++ VDIG-supply = <&imx708_vdig>; /* 1.1v */ ++ VDDL-supply = <&imx708_vddl>; /* 1.8v */ ++ ++ port { ++ imx708_0: endpoint { ++ remote-endpoint = <&csi1_ep>; ++ data-lanes = <1 2>; ++ clock-noncontinuous; ++ link-frequencies = /bits/ 64 <450000000>; ++ }; ++ }; ++ }; ++ }; ++ ++... +diff --git a/MAINTAINERS b/MAINTAINERS +index 0afbcffc0910..9e342b5f83be 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -19325,6 +19325,14 @@ T: git git://linuxtv.org/media_tree.git + F: Documentation/devicetree/bindings/media/i2c/imx519.yaml + F: drivers/media/i2c/imx519.c + ++SONY IMX708 SENSOR DRIVER ++M: Raspberry Pi Kernel Maintenance ++L: linux-media@vger.kernel.org ++S: Maintained ++T: git git://linuxtv.org/media_tree.git ++F: Documentation/devicetree/bindings/media/i2c/imx708.yaml ++F: drivers/media/i2c/imx708.c ++ + SONY MEMORYSTICK SUBSYSTEM + M: Maxim Levitsky + M: Alex Dubov +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nick Hollinghurst +Date: Thu, 22 Dec 2022 13:59:33 +0000 +Subject: [PATCH 556/590] media/i2c: Add a driver for the Sony IMX708 image + sensor + +The imx708 is a 12MP MIPI sensor with a 16:9 aspect ratio, here using +two CSI-2 lanes. It is a "quad Bayer" sensor with all 3 modes offering +10-bit output: + +12MP: 4608x2592 up to 14.35fps (full FoV) +1080p: 2304x1296 up to 56.02fps (full FoV) +720p: 1536x864 up to 120.12fps (cropped) + +This imx708 sensor driver is based heavily on the imx477 driver and +has been tested on the Raspberry Pi platform using libcamera. + +Signed-off-by: Nick Hollinghurst +Signed-off-by: Dave Stevenson +--- + drivers/media/i2c/Kconfig | 13 + + drivers/media/i2c/Makefile | 1 + + drivers/media/i2c/imx708.c | 1984 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 1998 insertions(+) + create mode 100644 drivers/media/i2c/imx708.c + +diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig +index 929611727012..a8537138f8f4 100644 +--- a/drivers/media/i2c/Kconfig ++++ b/drivers/media/i2c/Kconfig +@@ -273,6 +273,19 @@ config VIDEO_IMX519 + To compile this driver as a module, choose M here: the + module will be called IMX519. + ++config VIDEO_IMX708 ++ tristate "Sony IMX708 sensor support" ++ depends on I2C && VIDEO_DEV ++ select MEDIA_CONTROLLER ++ select VIDEO_V4L2_SUBDEV_API ++ select V4L2_FWNODE ++ help ++ This is a Video4Linux2 sensor driver for the Sony ++ IMX708 camera. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called imx708. ++ + config VIDEO_MAX9271_LIB + tristate + +diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile +index 0ef82f9624d9..d639abb8e942 100644 +--- a/drivers/media/i2c/Makefile ++++ b/drivers/media/i2c/Makefile +@@ -54,6 +54,7 @@ obj-$(CONFIG_VIDEO_IMX355) += imx355.o + obj-$(CONFIG_VIDEO_IMX412) += imx412.o + obj-$(CONFIG_VIDEO_IMX477) += imx477.o + obj-$(CONFIG_VIDEO_IMX519) += imx519.o ++obj-$(CONFIG_VIDEO_IMX708) += imx708.o + obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o + obj-$(CONFIG_VIDEO_IRS1125) += irs1125.o + obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o +diff --git a/drivers/media/i2c/imx708.c b/drivers/media/i2c/imx708.c +new file mode 100644 +index 000000000000..f4c65aa3e18f +--- /dev/null ++++ b/drivers/media/i2c/imx708.c +@@ -0,0 +1,1984 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * A V4L2 driver for Sony IMX708 cameras. ++ * Copyright (C) 2022, Raspberry Pi Ltd ++ * ++ * Based on Sony imx477 camera driver ++ * Copyright (C) 2020 Raspberry Pi Ltd ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define IMX708_REG_VALUE_08BIT 1 ++#define IMX708_REG_VALUE_16BIT 2 ++ ++/* Chip ID */ ++#define IMX708_REG_CHIP_ID 0x0016 ++#define IMX708_CHIP_ID 0x0708 ++ ++#define IMX708_REG_MODE_SELECT 0x0100 ++#define IMX708_MODE_STANDBY 0x00 ++#define IMX708_MODE_STREAMING 0x01 ++ ++#define IMX708_REG_ORIENTATION 0x101 ++ ++#define IMX708_XCLK_FREQ 24000000 ++ ++#define IMX708_DEFAULT_LINK_FREQ 450000000 ++ ++/* Default initial pixel rate, will get updated for each mode. */ ++#define IMX708_INITIAL_PIXEL_RATE 590000000 ++ ++/* V_TIMING internal */ ++#define IMX708_REG_FRAME_LENGTH 0x0340 ++#define IMX708_FRAME_LENGTH_MAX 0xffff ++ ++/* Exposure control */ ++#define IMX708_REG_EXPOSURE 0x0202 ++#define IMX708_EXPOSURE_OFFSET 48 ++#define IMX708_EXPOSURE_DEFAULT 0x640 ++#define IMX708_EXPOSURE_STEP 1 ++#define IMX708_EXPOSURE_MIN 1 ++#define IMX708_EXPOSURE_MAX (IMX708_FRAME_LENGTH_MAX - \ ++ IMX708_EXPOSURE_OFFSET) ++ ++/* Analog gain control */ ++#define IMX708_REG_ANALOG_GAIN 0x0204 ++#define IMX708_ANA_GAIN_MIN 112 ++#define IMX708_ANA_GAIN_MAX 960 ++#define IMX708_ANA_GAIN_STEP 1 ++#define IMX708_ANA_GAIN_DEFAULT IMX708_ANA_GAIN_MIN ++ ++/* Digital gain control */ ++#define IMX708_REG_DIGITAL_GAIN 0x020e ++#define IMX708_DGTL_GAIN_MIN 0x0100 ++#define IMX708_DGTL_GAIN_MAX 0xffff ++#define IMX708_DGTL_GAIN_DEFAULT 0x0100 ++#define IMX708_DGTL_GAIN_STEP 1 ++ ++/* Colour balance controls */ ++#define IMX708_REG_COLOUR_BALANCE_RED 0x0b90 ++#define IMX708_REG_COLOUR_BALANCE_BLUE 0x0b92 ++#define IMX708_COLOUR_BALANCE_MIN 0x01 ++#define IMX708_COLOUR_BALANCE_MAX 0xffff ++#define IMX708_COLOUR_BALANCE_STEP 0x01 ++#define IMX708_COLOUR_BALANCE_DEFAULT 0x100 ++ ++/* Test Pattern Control */ ++#define IMX708_REG_TEST_PATTERN 0x0600 ++#define IMX708_TEST_PATTERN_DISABLE 0 ++#define IMX708_TEST_PATTERN_SOLID_COLOR 1 ++#define IMX708_TEST_PATTERN_COLOR_BARS 2 ++#define IMX708_TEST_PATTERN_GREY_COLOR 3 ++#define IMX708_TEST_PATTERN_PN9 4 ++ ++/* Test pattern colour components */ ++#define IMX708_REG_TEST_PATTERN_R 0x0602 ++#define IMX708_REG_TEST_PATTERN_GR 0x0604 ++#define IMX708_REG_TEST_PATTERN_B 0x0606 ++#define IMX708_REG_TEST_PATTERN_GB 0x0608 ++#define IMX708_TEST_PATTERN_COLOUR_MIN 0 ++#define IMX708_TEST_PATTERN_COLOUR_MAX 0x0fff ++#define IMX708_TEST_PATTERN_COLOUR_STEP 1 ++ ++#define IMX708_REG_BASE_SPC_GAINS_L 0x7b10 ++#define IMX708_REG_BASE_SPC_GAINS_R 0x7c00 ++ ++/* HDR exposure ratio (long:med == med:short) */ ++#define IMX708_HDR_EXPOSURE_RATIO 4 ++#define IMX708_REG_MID_EXPOSURE 0x3116 ++#define IMX708_REG_SHT_EXPOSURE 0x0224 ++#define IMX708_REG_MID_ANALOG_GAIN 0x3118 ++#define IMX708_REG_SHT_ANALOG_GAIN 0x0216 ++ ++/* ++ * Metadata buffer holds a variety of data, all sent with the same VC/DT (0x12). ++ * It comprises two scanlines (of up to 5760 bytes each, for 4608 pixels) ++ * of embedded data, one line of PDAF data, and two lines of AE-HIST data ++ * (AE histograms are valid for HDR mode and empty in non-HDR modes). ++ */ ++#define IMX708_EMBEDDED_LINE_WIDTH (5 * 5760) ++#define IMX708_NUM_EMBEDDED_LINES 1 ++ ++enum pad_types { ++ IMAGE_PAD, ++ METADATA_PAD, ++ NUM_PADS ++}; ++ ++/* IMX708 native and active pixel array size. */ ++#define IMX708_NATIVE_WIDTH 4640U ++#define IMX708_NATIVE_HEIGHT 2658U ++#define IMX708_PIXEL_ARRAY_LEFT 16U ++#define IMX708_PIXEL_ARRAY_TOP 24U ++#define IMX708_PIXEL_ARRAY_WIDTH 4608U ++#define IMX708_PIXEL_ARRAY_HEIGHT 2592U ++ ++struct imx708_reg { ++ u16 address; ++ u8 val; ++}; ++ ++struct imx708_reg_list { ++ unsigned int num_of_regs; ++ const struct imx708_reg *regs; ++}; ++ ++/* Mode : resolution and related config&values */ ++struct imx708_mode { ++ /* Frame width */ ++ unsigned int width; ++ ++ /* Frame height */ ++ unsigned int height; ++ ++ /* H-timing in pixels */ ++ unsigned int line_length_pix; ++ ++ /* Analog crop rectangle. */ ++ struct v4l2_rect crop; ++ ++ /* Highest possible framerate. */ ++ unsigned int vblank_min; ++ ++ /* Default framerate. */ ++ unsigned int vblank_default; ++ ++ /* Default register values */ ++ struct imx708_reg_list reg_list; ++ ++ /* Not all modes have the same pixel rate. */ ++ u64 pixel_rate; ++ ++ /* Not all modes have the same minimum exposure. */ ++ u32 exposure_lines_min; ++ ++ /* Not all modes have the same exposure lines step. */ ++ u32 exposure_lines_step; ++ ++ /* HDR flag, currently not used at runtime */ ++ bool hdr; ++}; ++ ++/* Default PDAF pixel correction gains */ ++static const u8 pdaf_gains[2][9] = { ++ { 0x4c, 0x4c, 0x4c, 0x46, 0x3e, 0x38, 0x35, 0x35, 0x35 }, ++ { 0x35, 0x35, 0x35, 0x38, 0x3e, 0x46, 0x4c, 0x4c, 0x4c } ++}; ++ ++static const struct imx708_reg mode_common_regs[] = { ++ {0x0100, 0x00}, ++ {0x0136, 0x18}, ++ {0x0137, 0x00}, ++ {0x33F0, 0x02}, ++ {0x33F1, 0x05}, ++ {0x3062, 0x00}, ++ {0x3063, 0x12}, ++ {0x3068, 0x00}, ++ {0x3069, 0x12}, ++ {0x306A, 0x00}, ++ {0x306B, 0x30}, ++ {0x3076, 0x00}, ++ {0x3077, 0x30}, ++ {0x3078, 0x00}, ++ {0x3079, 0x30}, ++ {0x5E54, 0x0C}, ++ {0x6E44, 0x00}, ++ {0xB0B6, 0x01}, ++ {0xE829, 0x00}, ++ {0xF001, 0x08}, ++ {0xF003, 0x08}, ++ {0xF00D, 0x10}, ++ {0xF00F, 0x10}, ++ {0xF031, 0x08}, ++ {0xF033, 0x08}, ++ {0xF03D, 0x10}, ++ {0xF03F, 0x10}, ++ {0x0112, 0x0A}, ++ {0x0113, 0x0A}, ++ {0x0114, 0x01}, ++ {0x0B8E, 0x01}, ++ {0x0B8F, 0x00}, ++ {0x0B94, 0x01}, ++ {0x0B95, 0x00}, ++ {0x3400, 0x01}, ++ {0x3478, 0x01}, ++ {0x3479, 0x1c}, ++ {0x3091, 0x01}, ++ {0x3092, 0x00}, ++ {0x3419, 0x00}, ++ {0xBCF1, 0x02}, ++ {0x3094, 0x01}, ++ {0x3095, 0x01}, ++ {0x3362, 0x00}, ++ {0x3363, 0x00}, ++ {0x3364, 0x00}, ++ {0x3365, 0x00}, ++ {0x0138, 0x01}, ++}; ++ ++/* 10-bit. */ ++static const struct imx708_reg mode_4608x2592_regs[] = { ++ {0x0342, 0x3D}, ++ {0x0343, 0x20}, ++ {0x0340, 0x0A}, ++ {0x0341, 0x59}, ++ {0x0344, 0x00}, ++ {0x0345, 0x00}, ++ {0x0346, 0x00}, ++ {0x0347, 0x00}, ++ {0x0348, 0x11}, ++ {0x0349, 0xFF}, ++ {0x034A, 0X0A}, ++ {0x034B, 0x1F}, ++ {0x0220, 0x62}, ++ {0x0222, 0x01}, ++ {0x0900, 0x00}, ++ {0x0901, 0x11}, ++ {0x0902, 0x0A}, ++ {0x3200, 0x01}, ++ {0x3201, 0x01}, ++ {0x32D5, 0x01}, ++ {0x32D6, 0x00}, ++ {0x32DB, 0x01}, ++ {0x32DF, 0x00}, ++ {0x350C, 0x00}, ++ {0x350D, 0x00}, ++ {0x0408, 0x00}, ++ {0x0409, 0x00}, ++ {0x040A, 0x00}, ++ {0x040B, 0x00}, ++ {0x040C, 0x12}, ++ {0x040D, 0x00}, ++ {0x040E, 0x0A}, ++ {0x040F, 0x20}, ++ {0x034C, 0x12}, ++ {0x034D, 0x00}, ++ {0x034E, 0x0A}, ++ {0x034F, 0x20}, ++ {0x0301, 0x05}, ++ {0x0303, 0x02}, ++ {0x0305, 0x02}, ++ {0x0306, 0x00}, ++ {0x0307, 0x7C}, ++ {0x030B, 0x02}, ++ {0x030D, 0x04}, ++ {0x030E, 0x01}, ++ {0x030F, 0x2C}, ++ {0x0310, 0x01}, ++ {0x3CA0, 0x00}, ++ {0x3CA1, 0x64}, ++ {0x3CA4, 0x00}, ++ {0x3CA5, 0x00}, ++ {0x3CA6, 0x00}, ++ {0x3CA7, 0x00}, ++ {0x3CAA, 0x00}, ++ {0x3CAB, 0x00}, ++ {0x3CB8, 0x00}, ++ {0x3CB9, 0x08}, ++ {0x3CBA, 0x00}, ++ {0x3CBB, 0x00}, ++ {0x3CBC, 0x00}, ++ {0x3CBD, 0x3C}, ++ {0x3CBE, 0x00}, ++ {0x3CBF, 0x00}, ++ {0x0202, 0x0A}, ++ {0x0203, 0x29}, ++ {0x0224, 0x01}, ++ {0x0225, 0xF4}, ++ {0x3116, 0x01}, ++ {0x3117, 0xF4}, ++ {0x0204, 0x00}, ++ {0x0205, 0x00}, ++ {0x0216, 0x00}, ++ {0x0217, 0x00}, ++ {0x0218, 0x01}, ++ {0x0219, 0x00}, ++ {0x020E, 0x01}, ++ {0x020F, 0x00}, ++ {0x3118, 0x00}, ++ {0x3119, 0x00}, ++ {0x311A, 0x01}, ++ {0x311B, 0x00}, ++ {0x341a, 0x00}, ++ {0x341b, 0x00}, ++ {0x341c, 0x00}, ++ {0x341d, 0x00}, ++ {0x341e, 0x01}, ++ {0x341f, 0x20}, ++ {0x3420, 0x00}, ++ {0x3421, 0xd8}, ++ {0xC428, 0x00}, ++ {0xC429, 0x04}, ++ {0x3366, 0x00}, ++ {0x3367, 0x00}, ++ {0x3368, 0x00}, ++ {0x3369, 0x00}, ++}; ++ ++static const struct imx708_reg mode_2x2binned_regs[] = { ++ {0x0342, 0x1E}, ++ {0x0343, 0x90}, ++ {0x0340, 0x05}, ++ {0x0341, 0x38}, ++ {0x0344, 0x00}, ++ {0x0345, 0x00}, ++ {0x0346, 0x00}, ++ {0x0347, 0x00}, ++ {0x0348, 0x11}, ++ {0x0349, 0xFF}, ++ {0x034A, 0X0A}, ++ {0x034B, 0x1F}, ++ {0x0220, 0x62}, ++ {0x0222, 0x01}, ++ {0x0900, 0x01}, ++ {0x0901, 0x22}, ++ {0x0902, 0x08}, ++ {0x3200, 0x41}, ++ {0x3201, 0x41}, ++ {0x32D5, 0x00}, ++ {0x32D6, 0x00}, ++ {0x32DB, 0x01}, ++ {0x32DF, 0x00}, ++ {0x350C, 0x00}, ++ {0x350D, 0x00}, ++ {0x0408, 0x00}, ++ {0x0409, 0x00}, ++ {0x040A, 0x00}, ++ {0x040B, 0x00}, ++ {0x040C, 0x09}, ++ {0x040D, 0x00}, ++ {0x040E, 0x05}, ++ {0x040F, 0x10}, ++ {0x034C, 0x09}, ++ {0x034D, 0x00}, ++ {0x034E, 0x05}, ++ {0x034F, 0x10}, ++ {0x0301, 0x05}, ++ {0x0303, 0x02}, ++ {0x0305, 0x02}, ++ {0x0306, 0x00}, ++ {0x0307, 0x7A}, ++ {0x030B, 0x02}, ++ {0x030D, 0x04}, ++ {0x030E, 0x01}, ++ {0x030F, 0x2C}, ++ {0x0310, 0x01}, ++ {0x3CA0, 0x00}, ++ {0x3CA1, 0x3C}, ++ {0x3CA4, 0x00}, ++ {0x3CA5, 0x3C}, ++ {0x3CA6, 0x00}, ++ {0x3CA7, 0x00}, ++ {0x3CAA, 0x00}, ++ {0x3CAB, 0x00}, ++ {0x3CB8, 0x00}, ++ {0x3CB9, 0x1C}, ++ {0x3CBA, 0x00}, ++ {0x3CBB, 0x08}, ++ {0x3CBC, 0x00}, ++ {0x3CBD, 0x1E}, ++ {0x3CBE, 0x00}, ++ {0x3CBF, 0x0A}, ++ {0x0202, 0x05}, ++ {0x0203, 0x08}, ++ {0x0224, 0x01}, ++ {0x0225, 0xF4}, ++ {0x3116, 0x01}, ++ {0x3117, 0xF4}, ++ {0x0204, 0x00}, ++ {0x0205, 0x70}, ++ {0x0216, 0x00}, ++ {0x0217, 0x70}, ++ {0x0218, 0x01}, ++ {0x0219, 0x00}, ++ {0x020E, 0x01}, ++ {0x020F, 0x00}, ++ {0x3118, 0x00}, ++ {0x3119, 0x70}, ++ {0x311A, 0x01}, ++ {0x311B, 0x00}, ++ {0x341a, 0x00}, ++ {0x341b, 0x00}, ++ {0x341c, 0x00}, ++ {0x341d, 0x00}, ++ {0x341e, 0x00}, ++ {0x341f, 0x90}, ++ {0x3420, 0x00}, ++ {0x3421, 0x6c}, ++ {0x3366, 0x00}, ++ {0x3367, 0x00}, ++ {0x3368, 0x00}, ++ {0x3369, 0x00}, ++}; ++ ++static const struct imx708_reg mode_2x2binned_720p_regs[] = { ++ {0x0342, 0x14}, ++ {0x0343, 0x60}, ++ {0x0340, 0x04}, ++ {0x0341, 0xB6}, ++ {0x0344, 0x03}, ++ {0x0345, 0x00}, ++ {0x0346, 0x01}, ++ {0x0347, 0xB0}, ++ {0x0348, 0x0E}, ++ {0x0349, 0xFF}, ++ {0x034A, 0x08}, ++ {0x034B, 0x6F}, ++ {0x0220, 0x62}, ++ {0x0222, 0x01}, ++ {0x0900, 0x01}, ++ {0x0901, 0x22}, ++ {0x0902, 0x08}, ++ {0x3200, 0x41}, ++ {0x3201, 0x41}, ++ {0x32D5, 0x00}, ++ {0x32D6, 0x00}, ++ {0x32DB, 0x01}, ++ {0x32DF, 0x01}, ++ {0x350C, 0x00}, ++ {0x350D, 0x00}, ++ {0x0408, 0x00}, ++ {0x0409, 0x00}, ++ {0x040A, 0x00}, ++ {0x040B, 0x00}, ++ {0x040C, 0x06}, ++ {0x040D, 0x00}, ++ {0x040E, 0x03}, ++ {0x040F, 0x60}, ++ {0x034C, 0x06}, ++ {0x034D, 0x00}, ++ {0x034E, 0x03}, ++ {0x034F, 0x60}, ++ {0x0301, 0x05}, ++ {0x0303, 0x02}, ++ {0x0305, 0x02}, ++ {0x0306, 0x00}, ++ {0x0307, 0x76}, ++ {0x030B, 0x02}, ++ {0x030D, 0x04}, ++ {0x030E, 0x01}, ++ {0x030F, 0x2C}, ++ {0x0310, 0x01}, ++ {0x3CA0, 0x00}, ++ {0x3CA1, 0x3C}, ++ {0x3CA4, 0x01}, ++ {0x3CA5, 0x5E}, ++ {0x3CA6, 0x00}, ++ {0x3CA7, 0x00}, ++ {0x3CAA, 0x00}, ++ {0x3CAB, 0x00}, ++ {0x3CB8, 0x00}, ++ {0x3CB9, 0x0C}, ++ {0x3CBA, 0x00}, ++ {0x3CBB, 0x04}, ++ {0x3CBC, 0x00}, ++ {0x3CBD, 0x1E}, ++ {0x3CBE, 0x00}, ++ {0x3CBF, 0x05}, ++ {0x0202, 0x04}, ++ {0x0203, 0x86}, ++ {0x0224, 0x01}, ++ {0x0225, 0xF4}, ++ {0x3116, 0x01}, ++ {0x3117, 0xF4}, ++ {0x0204, 0x00}, ++ {0x0205, 0x70}, ++ {0x0216, 0x00}, ++ {0x0217, 0x70}, ++ {0x0218, 0x01}, ++ {0x0219, 0x00}, ++ {0x020E, 0x01}, ++ {0x020F, 0x00}, ++ {0x3118, 0x00}, ++ {0x3119, 0x70}, ++ {0x311A, 0x01}, ++ {0x311B, 0x00}, ++ {0x341a, 0x00}, ++ {0x341b, 0x00}, ++ {0x341c, 0x00}, ++ {0x341d, 0x00}, ++ {0x341e, 0x00}, ++ {0x341f, 0x60}, ++ {0x3420, 0x00}, ++ {0x3421, 0x48}, ++ {0x3366, 0x00}, ++ {0x3367, 0x00}, ++ {0x3368, 0x00}, ++ {0x3369, 0x00}, ++}; ++ ++static const struct imx708_reg mode_hdr_regs[] = { ++ {0x0342, 0x14}, ++ {0x0343, 0x60}, ++ {0x0340, 0x0A}, ++ {0x0341, 0x5B}, ++ {0x0344, 0x00}, ++ {0x0345, 0x00}, ++ {0x0346, 0x00}, ++ {0x0347, 0x00}, ++ {0x0348, 0x11}, ++ {0x0349, 0xFF}, ++ {0x034A, 0X0A}, ++ {0x034B, 0x1F}, ++ {0x0220, 0x01}, ++ {0x0222, IMX708_HDR_EXPOSURE_RATIO}, ++ {0x0900, 0x00}, ++ {0x0901, 0x11}, ++ {0x0902, 0x0A}, ++ {0x3200, 0x01}, ++ {0x3201, 0x01}, ++ {0x32D5, 0x00}, ++ {0x32D6, 0x00}, ++ {0x32DB, 0x01}, ++ {0x32DF, 0x00}, ++ {0x350C, 0x00}, ++ {0x350D, 0x00}, ++ {0x0408, 0x00}, ++ {0x0409, 0x00}, ++ {0x040A, 0x00}, ++ {0x040B, 0x00}, ++ {0x040C, 0x09}, ++ {0x040D, 0x00}, ++ {0x040E, 0x05}, ++ {0x040F, 0x10}, ++ {0x034C, 0x09}, ++ {0x034D, 0x00}, ++ {0x034E, 0x05}, ++ {0x034F, 0x10}, ++ {0x0301, 0x05}, ++ {0x0303, 0x02}, ++ {0x0305, 0x02}, ++ {0x0306, 0x00}, ++ {0x0307, 0xA2}, ++ {0x030B, 0x02}, ++ {0x030D, 0x04}, ++ {0x030E, 0x01}, ++ {0x030F, 0x2C}, ++ {0x0310, 0x01}, ++ {0x3CA0, 0x00}, ++ {0x3CA1, 0x00}, ++ {0x3CA4, 0x00}, ++ {0x3CA5, 0x00}, ++ {0x3CA6, 0x00}, ++ {0x3CA7, 0x28}, ++ {0x3CAA, 0x00}, ++ {0x3CAB, 0x00}, ++ {0x3CB8, 0x00}, ++ {0x3CB9, 0x30}, ++ {0x3CBA, 0x00}, ++ {0x3CBB, 0x00}, ++ {0x3CBC, 0x00}, ++ {0x3CBD, 0x32}, ++ {0x3CBE, 0x00}, ++ {0x3CBF, 0x00}, ++ {0x0202, 0x0A}, ++ {0x0203, 0x2B}, ++ {0x0224, 0x0A}, ++ {0x0225, 0x2B}, ++ {0x3116, 0x0A}, ++ {0x3117, 0x2B}, ++ {0x0204, 0x00}, ++ {0x0205, 0x00}, ++ {0x0216, 0x00}, ++ {0x0217, 0x00}, ++ {0x0218, 0x01}, ++ {0x0219, 0x00}, ++ {0x020E, 0x01}, ++ {0x020F, 0x00}, ++ {0x3118, 0x00}, ++ {0x3119, 0x00}, ++ {0x311A, 0x01}, ++ {0x311B, 0x00}, ++ {0x341a, 0x00}, ++ {0x341b, 0x00}, ++ {0x341c, 0x00}, ++ {0x341d, 0x00}, ++ {0x341e, 0x00}, ++ {0x341f, 0x90}, ++ {0x3420, 0x00}, ++ {0x3421, 0x6c}, ++ {0x3360, 0x01}, ++ {0x3361, 0x01}, ++ {0x3366, 0x09}, ++ {0x3367, 0x00}, ++ {0x3368, 0x05}, ++ {0x3369, 0x10}, ++}; ++ ++/* Mode configs. Keep separate lists for when HDR is enabled or not. */ ++static const struct imx708_mode supported_modes_10bit_no_hdr[] = { ++ { ++ /* Full resolution. */ ++ .width = 4608, ++ .height = 2592, ++ .line_length_pix = 0x3d20, ++ .crop = { ++ .left = IMX708_PIXEL_ARRAY_LEFT, ++ .top = IMX708_PIXEL_ARRAY_TOP, ++ .width = 4608, ++ .height = 2592, ++ }, ++ .vblank_min = 58, ++ .vblank_default = 58, ++ .reg_list = { ++ .num_of_regs = ARRAY_SIZE(mode_4608x2592_regs), ++ .regs = mode_4608x2592_regs, ++ }, ++ .pixel_rate = 595200000, ++ .exposure_lines_min = 8, ++ .exposure_lines_step = 1, ++ .hdr = false ++ }, ++ { ++ /* regular 2x2 binned. */ ++ .width = 2304, ++ .height = 1296, ++ .line_length_pix = 0x1e90, ++ .crop = { ++ .left = IMX708_PIXEL_ARRAY_LEFT, ++ .top = IMX708_PIXEL_ARRAY_TOP, ++ .width = 4608, ++ .height = 2592, ++ }, ++ .vblank_min = 40, ++ .vblank_default = 1198, ++ .reg_list = { ++ .num_of_regs = ARRAY_SIZE(mode_2x2binned_regs), ++ .regs = mode_2x2binned_regs, ++ }, ++ .pixel_rate = 585600000, ++ .exposure_lines_min = 4, ++ .exposure_lines_step = 2, ++ .hdr = false ++ }, ++ { ++ /* 2x2 binned and cropped for 720p. */ ++ .width = 1536, ++ .height = 864, ++ .line_length_pix = 0x1460, ++ .crop = { ++ .left = IMX708_PIXEL_ARRAY_LEFT, ++ .top = IMX708_PIXEL_ARRAY_TOP, ++ .width = 4608, ++ .height = 2592, ++ }, ++ .vblank_min = 40, ++ .vblank_default = 2755, ++ .reg_list = { ++ .num_of_regs = ARRAY_SIZE(mode_2x2binned_720p_regs), ++ .regs = mode_2x2binned_720p_regs, ++ }, ++ .pixel_rate = 566400000, ++ .exposure_lines_min = 4, ++ .exposure_lines_step = 2, ++ .hdr = false ++ }, ++}; ++ ++static const struct imx708_mode supported_modes_10bit_hdr[] = { ++ { ++ /* There's only one HDR mode, which is 2x2 downscaled */ ++ .width = 2304, ++ .height = 1296, ++ .line_length_pix = 0x1460, ++ .crop = { ++ .left = IMX708_PIXEL_ARRAY_LEFT, ++ .top = IMX708_PIXEL_ARRAY_TOP, ++ .width = 4608, ++ .height = 2592, ++ }, ++ .vblank_min = 3673, ++ .vblank_default = 3673, ++ .reg_list = { ++ .num_of_regs = ARRAY_SIZE(mode_hdr_regs), ++ .regs = mode_hdr_regs, ++ }, ++ .pixel_rate = 777600000, ++ .exposure_lines_min = 8 * IMX708_HDR_EXPOSURE_RATIO * IMX708_HDR_EXPOSURE_RATIO, ++ .exposure_lines_step = 2 * IMX708_HDR_EXPOSURE_RATIO * IMX708_HDR_EXPOSURE_RATIO, ++ .hdr = true ++ } ++}; ++ ++/* ++ * The supported formats. ++ * This table MUST contain 4 entries per format, to cover the various flip ++ * combinations in the order ++ * - no flip ++ * - h flip ++ * - v flip ++ * - h&v flips ++ */ ++static const u32 codes[] = { ++ /* 10-bit modes. */ ++ MEDIA_BUS_FMT_SRGGB10_1X10, ++ MEDIA_BUS_FMT_SGRBG10_1X10, ++ MEDIA_BUS_FMT_SGBRG10_1X10, ++ MEDIA_BUS_FMT_SBGGR10_1X10, ++}; ++ ++static const char * const imx708_test_pattern_menu[] = { ++ "Disabled", ++ "Color Bars", ++ "Solid Color", ++ "Grey Color Bars", ++ "PN9" ++}; ++ ++static const int imx708_test_pattern_val[] = { ++ IMX708_TEST_PATTERN_DISABLE, ++ IMX708_TEST_PATTERN_COLOR_BARS, ++ IMX708_TEST_PATTERN_SOLID_COLOR, ++ IMX708_TEST_PATTERN_GREY_COLOR, ++ IMX708_TEST_PATTERN_PN9, ++}; ++ ++/* regulator supplies */ ++static const char * const imx708_supply_name[] = { ++ /* Supplies can be enabled in any order */ ++ "VANA1", /* Analog1 (2.8V) supply */ ++ "VANA2", /* Analog2 (1.8V) supply */ ++ "VDIG", /* Digital Core (1.1V) supply */ ++ "VDDL", /* IF (1.8V) supply */ ++}; ++ ++#define IMX708_NUM_SUPPLIES ARRAY_SIZE(imx708_supply_name) ++ ++/* ++ * Initialisation delay between XCLR low->high and the moment when the sensor ++ * can start capture (i.e. can leave software standby), given by T7 in the ++ * datasheet is 8ms. This does include I2C setup time as well. ++ * ++ * Note, that delay between XCLR low->high and reading the CCI ID register (T6 ++ * in the datasheet) is much smaller - 600us. ++ */ ++#define IMX708_XCLR_MIN_DELAY_US 8000 ++#define IMX708_XCLR_DELAY_RANGE_US 1000 ++ ++struct imx708 { ++ struct v4l2_subdev sd; ++ struct media_pad pad[NUM_PADS]; ++ ++ struct v4l2_mbus_framefmt fmt; ++ ++ struct clk *xclk; ++ u32 xclk_freq; ++ ++ struct gpio_desc *reset_gpio; ++ struct regulator_bulk_data supplies[IMX708_NUM_SUPPLIES]; ++ ++ struct v4l2_ctrl_handler ctrl_handler; ++ /* V4L2 Controls */ ++ struct v4l2_ctrl *pixel_rate; ++ struct v4l2_ctrl *exposure; ++ struct v4l2_ctrl *vflip; ++ struct v4l2_ctrl *hflip; ++ struct v4l2_ctrl *vblank; ++ struct v4l2_ctrl *hblank; ++ struct v4l2_ctrl *red_balance; ++ struct v4l2_ctrl *blue_balance; ++ struct v4l2_ctrl *notify_gains; ++ struct v4l2_ctrl *hdr_mode; ++ ++ /* Current mode */ ++ const struct imx708_mode *mode; ++ ++ /* ++ * Mutex for serialized access: ++ * Protect sensor module set pad format and start/stop streaming safely. ++ */ ++ struct mutex mutex; ++ ++ /* Streaming on/off */ ++ bool streaming; ++ ++ /* Rewrite common registers on stream on? */ ++ bool common_regs_written; ++}; ++ ++static inline struct imx708 *to_imx708(struct v4l2_subdev *_sd) ++{ ++ return container_of(_sd, struct imx708, sd); ++} ++ ++static inline void get_mode_table(unsigned int code, ++ const struct imx708_mode **mode_list, ++ unsigned int *num_modes, ++ bool hdr_enable) ++{ ++ switch (code) { ++ /* 10-bit */ ++ case MEDIA_BUS_FMT_SRGGB10_1X10: ++ case MEDIA_BUS_FMT_SGRBG10_1X10: ++ case MEDIA_BUS_FMT_SGBRG10_1X10: ++ case MEDIA_BUS_FMT_SBGGR10_1X10: ++ if (hdr_enable) { ++ *mode_list = supported_modes_10bit_hdr; ++ *num_modes = ARRAY_SIZE(supported_modes_10bit_hdr); ++ } else { ++ *mode_list = supported_modes_10bit_no_hdr; ++ *num_modes = ARRAY_SIZE(supported_modes_10bit_no_hdr); ++ } ++ break; ++ default: ++ *mode_list = NULL; ++ *num_modes = 0; ++ } ++} ++ ++/* Read registers up to 2 at a time */ ++static int imx708_read_reg(struct imx708 *imx708, u16 reg, u32 len, u32 *val) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ struct i2c_msg msgs[2]; ++ u8 addr_buf[2] = { reg >> 8, reg & 0xff }; ++ u8 data_buf[4] = { 0, }; ++ int ret; ++ ++ if (len > 4) ++ return -EINVAL; ++ ++ /* Write register address */ ++ msgs[0].addr = client->addr; ++ msgs[0].flags = 0; ++ msgs[0].len = ARRAY_SIZE(addr_buf); ++ msgs[0].buf = addr_buf; ++ ++ /* Read data from register */ ++ msgs[1].addr = client->addr; ++ msgs[1].flags = I2C_M_RD; ++ msgs[1].len = len; ++ msgs[1].buf = &data_buf[4 - len]; ++ ++ ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs)); ++ if (ret != ARRAY_SIZE(msgs)) ++ return -EIO; ++ ++ *val = get_unaligned_be32(data_buf); ++ ++ return 0; ++} ++ ++/* Write registers up to 2 at a time */ ++static int imx708_write_reg(struct imx708 *imx708, u16 reg, u32 len, u32 val) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ u8 buf[6]; ++ ++ if (len > 4) ++ return -EINVAL; ++ ++ put_unaligned_be16(reg, buf); ++ put_unaligned_be32(val << (8 * (4 - len)), buf + 2); ++ if (i2c_master_send(client, buf, len + 2) != len + 2) ++ return -EIO; ++ ++ return 0; ++} ++ ++/* Write a list of registers */ ++static int imx708_write_regs(struct imx708 *imx708, ++ const struct imx708_reg *regs, u32 len) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ unsigned int i; ++ int ret; ++ ++ for (i = 0; i < len; i++) { ++ ret = imx708_write_reg(imx708, regs[i].address, 1, regs[i].val); ++ if (ret) { ++ dev_err_ratelimited(&client->dev, ++ "Failed to write reg 0x%4.4x. error = %d\n", ++ regs[i].address, ret); ++ ++ return ret; ++ } ++ } ++ ++ return 0; ++} ++ ++/* Get bayer order based on flip setting. */ ++static u32 imx708_get_format_code(struct imx708 *imx708) ++{ ++ unsigned int i; ++ ++ lockdep_assert_held(&imx708->mutex); ++ ++ i = (imx708->vflip->val ? 2 : 0) | ++ (imx708->hflip->val ? 1 : 0); ++ ++ return codes[i]; ++} ++ ++static void imx708_set_default_format(struct imx708 *imx708) ++{ ++ struct v4l2_mbus_framefmt *fmt = &imx708->fmt; ++ ++ /* Set default mode to max resolution */ ++ imx708->mode = &supported_modes_10bit_no_hdr[0]; ++ ++ /* fmt->code not set as it will always be computed based on flips */ ++ fmt->colorspace = V4L2_COLORSPACE_RAW; ++ fmt->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(fmt->colorspace); ++ fmt->quantization = V4L2_MAP_QUANTIZATION_DEFAULT(true, ++ fmt->colorspace, ++ fmt->ycbcr_enc); ++ fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace); ++ fmt->width = imx708->mode->width; ++ fmt->height = imx708->mode->height; ++ fmt->field = V4L2_FIELD_NONE; ++} ++ ++static int imx708_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) ++{ ++ struct imx708 *imx708 = to_imx708(sd); ++ struct v4l2_mbus_framefmt *try_fmt_img = ++ v4l2_subdev_get_try_format(sd, fh->state, IMAGE_PAD); ++ struct v4l2_mbus_framefmt *try_fmt_meta = ++ v4l2_subdev_get_try_format(sd, fh->state, METADATA_PAD); ++ struct v4l2_rect *try_crop; ++ ++ mutex_lock(&imx708->mutex); ++ ++ /* Initialize try_fmt for the image pad */ ++ if (imx708->hdr_mode->val) { ++ try_fmt_img->width = supported_modes_10bit_hdr[0].width; ++ try_fmt_img->height = supported_modes_10bit_hdr[0].height; ++ } else { ++ try_fmt_img->width = supported_modes_10bit_no_hdr[0].width; ++ try_fmt_img->height = supported_modes_10bit_no_hdr[0].height; ++ } ++ try_fmt_img->code = imx708_get_format_code(imx708); ++ try_fmt_img->field = V4L2_FIELD_NONE; ++ ++ /* Initialize try_fmt for the embedded metadata pad */ ++ try_fmt_meta->width = IMX708_EMBEDDED_LINE_WIDTH; ++ try_fmt_meta->height = IMX708_NUM_EMBEDDED_LINES; ++ try_fmt_meta->code = MEDIA_BUS_FMT_SENSOR_DATA; ++ try_fmt_meta->field = V4L2_FIELD_NONE; ++ ++ /* Initialize try_crop */ ++ try_crop = v4l2_subdev_get_try_crop(sd, fh->state, IMAGE_PAD); ++ try_crop->left = IMX708_PIXEL_ARRAY_LEFT; ++ try_crop->top = IMX708_PIXEL_ARRAY_TOP; ++ try_crop->width = IMX708_PIXEL_ARRAY_WIDTH; ++ try_crop->height = IMX708_PIXEL_ARRAY_HEIGHT; ++ ++ mutex_unlock(&imx708->mutex); ++ ++ return 0; ++} ++ ++static int imx708_set_exposure(struct imx708 *imx708, unsigned int val) ++{ ++ int ret; ++ ++ val = max(val, imx708->mode->exposure_lines_min); ++ val -= val % imx708->mode->exposure_lines_step; ++ ++ /* ++ * In HDR mode this will set the longest exposure. The sensor ++ * will automatically divide the medium and short ones by 4,16. ++ */ ++ ret = imx708_write_reg(imx708, IMX708_REG_EXPOSURE, ++ IMX708_REG_VALUE_16BIT, val); ++ ++ return ret; ++} ++ ++static void imx708_adjust_exposure_range(struct imx708 *imx708, ++ struct v4l2_ctrl *ctrl) ++{ ++ int exposure_max, exposure_def; ++ ++ /* Honour the VBLANK limits when setting exposure. */ ++ exposure_max = imx708->mode->height + imx708->vblank->val - ++ IMX708_EXPOSURE_OFFSET; ++ exposure_def = min(exposure_max, imx708->exposure->val); ++ __v4l2_ctrl_modify_range(imx708->exposure, imx708->exposure->minimum, ++ exposure_max, imx708->exposure->step, ++ exposure_def); ++} ++ ++static int imx708_set_analogue_gain(struct imx708 *imx708, unsigned int val) ++{ ++ int ret; ++ ++ /* ++ * In HDR mode this will set the gain for the longest exposure, ++ * and by default the sensor uses the same gain for all of them. ++ */ ++ ret = imx708_write_reg(imx708, IMX708_REG_ANALOG_GAIN, ++ IMX708_REG_VALUE_16BIT, val); ++ ++ return ret; ++} ++ ++static void imx708_set_framing_limits(struct imx708 *imx708) ++{ ++ unsigned int hblank; ++ const struct imx708_mode *mode = imx708->mode; ++ ++ __v4l2_ctrl_modify_range(imx708->pixel_rate, ++ mode->pixel_rate, mode->pixel_rate, ++ 1, mode->pixel_rate); ++ ++ /* Update limits and set FPS to default */ ++ __v4l2_ctrl_modify_range(imx708->vblank, mode->vblank_min, ++ IMX708_FRAME_LENGTH_MAX - mode->height, ++ 1, mode->vblank_default); ++ ++ /* ++ * Currently PPL is fixed to the mode specified value, so hblank ++ * depends on mode->width only, and is not changeable in any ++ * way other than changing the mode. ++ */ ++ hblank = mode->line_length_pix - mode->width; ++ __v4l2_ctrl_modify_range(imx708->hblank, hblank, hblank, 1, hblank); ++} ++ ++static int imx708_set_ctrl(struct v4l2_ctrl *ctrl) ++{ ++ struct imx708 *imx708 = ++ container_of(ctrl->handler, struct imx708, ctrl_handler); ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ const struct imx708_mode *mode_list; ++ unsigned int code, num_modes; ++ int ret = 0; ++ ++ /* ++ * The VBLANK control may change the limits of usable exposure, so check ++ * and adjust if necessary. ++ */ ++ if (ctrl->id == V4L2_CID_VBLANK) ++ imx708_adjust_exposure_range(imx708, ctrl); ++ ++ /* ++ * Applying V4L2 control value only happens ++ * when power is up for streaming ++ */ ++ if (pm_runtime_get_if_in_use(&client->dev) == 0) ++ return 0; ++ ++ switch (ctrl->id) { ++ case V4L2_CID_ANALOGUE_GAIN: ++ imx708_set_analogue_gain(imx708, ctrl->val); ++ break; ++ case V4L2_CID_EXPOSURE: ++ ret = imx708_set_exposure(imx708, ctrl->val); ++ break; ++ case V4L2_CID_DIGITAL_GAIN: ++ ret = imx708_write_reg(imx708, IMX708_REG_DIGITAL_GAIN, ++ IMX708_REG_VALUE_16BIT, ctrl->val); ++ break; ++ case V4L2_CID_TEST_PATTERN: ++ ret = imx708_write_reg(imx708, IMX708_REG_TEST_PATTERN, ++ IMX708_REG_VALUE_16BIT, ++ imx708_test_pattern_val[ctrl->val]); ++ break; ++ case V4L2_CID_TEST_PATTERN_RED: ++ ret = imx708_write_reg(imx708, IMX708_REG_TEST_PATTERN_R, ++ IMX708_REG_VALUE_16BIT, ctrl->val); ++ break; ++ case V4L2_CID_TEST_PATTERN_GREENR: ++ ret = imx708_write_reg(imx708, IMX708_REG_TEST_PATTERN_GR, ++ IMX708_REG_VALUE_16BIT, ctrl->val); ++ break; ++ case V4L2_CID_TEST_PATTERN_BLUE: ++ ret = imx708_write_reg(imx708, IMX708_REG_TEST_PATTERN_B, ++ IMX708_REG_VALUE_16BIT, ctrl->val); ++ break; ++ case V4L2_CID_TEST_PATTERN_GREENB: ++ ret = imx708_write_reg(imx708, IMX708_REG_TEST_PATTERN_GB, ++ IMX708_REG_VALUE_16BIT, ctrl->val); ++ break; ++ case V4L2_CID_HFLIP: ++ case V4L2_CID_VFLIP: ++ ret = imx708_write_reg(imx708, IMX708_REG_ORIENTATION, 1, ++ imx708->hflip->val | ++ imx708->vflip->val << 1); ++ break; ++ case V4L2_CID_VBLANK: ++ ret = imx708_write_reg(imx708, IMX708_REG_FRAME_LENGTH, ++ IMX708_REG_VALUE_16BIT, ++ imx708->mode->height + ctrl->val); ++ break; ++ case V4L2_CID_NOTIFY_GAINS: ++ ret = imx708_write_reg(imx708, IMX708_REG_COLOUR_BALANCE_BLUE, ++ IMX708_REG_VALUE_16BIT, ++ imx708->notify_gains->p_new.p_u32[0]); ++ if (ret) ++ break; ++ ret = imx708_write_reg(imx708, IMX708_REG_COLOUR_BALANCE_RED, ++ IMX708_REG_VALUE_16BIT, ++ imx708->notify_gains->p_new.p_u32[3]); ++ break; ++ case V4L2_CID_WIDE_DYNAMIC_RANGE: ++ code = imx708_get_format_code(imx708); ++ get_mode_table(code, &mode_list, &num_modes, ctrl->val); ++ imx708->mode = v4l2_find_nearest_size(mode_list, ++ num_modes, ++ width, height, ++ imx708->mode->width, ++ imx708->mode->height); ++ imx708_set_framing_limits(imx708); ++ break; ++ default: ++ dev_info(&client->dev, ++ "ctrl(id:0x%x,val:0x%x) is not handled\n", ++ ctrl->id, ctrl->val); ++ ret = -EINVAL; ++ break; ++ } ++ ++ pm_runtime_put(&client->dev); ++ ++ return ret; ++} ++ ++static const struct v4l2_ctrl_ops imx708_ctrl_ops = { ++ .s_ctrl = imx708_set_ctrl, ++}; ++ ++static int imx708_enum_mbus_code(struct v4l2_subdev *sd, ++ struct v4l2_subdev_state *sd_state, ++ struct v4l2_subdev_mbus_code_enum *code) ++{ ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ if (code->pad >= NUM_PADS) ++ return -EINVAL; ++ ++ if (code->pad == IMAGE_PAD) { ++ if (code->index >= (ARRAY_SIZE(codes) / 4)) ++ return -EINVAL; ++ ++ code->code = imx708_get_format_code(imx708); ++ } else { ++ if (code->index > 0) ++ return -EINVAL; ++ ++ code->code = MEDIA_BUS_FMT_SENSOR_DATA; ++ } ++ ++ return 0; ++} ++ ++static int imx708_enum_frame_size(struct v4l2_subdev *sd, ++ struct v4l2_subdev_state *sd_state, ++ struct v4l2_subdev_frame_size_enum *fse) ++{ ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ if (fse->pad >= NUM_PADS) ++ return -EINVAL; ++ ++ if (fse->pad == IMAGE_PAD) { ++ const struct imx708_mode *mode_list; ++ unsigned int num_modes; ++ ++ get_mode_table(fse->code, &mode_list, &num_modes, ++ imx708->hdr_mode->val); ++ ++ if (fse->index >= num_modes) ++ return -EINVAL; ++ ++ if (fse->code != imx708_get_format_code(imx708)) ++ return -EINVAL; ++ ++ fse->min_width = mode_list[fse->index].width; ++ fse->max_width = fse->min_width; ++ fse->min_height = mode_list[fse->index].height; ++ fse->max_height = fse->min_height; ++ } else { ++ if (fse->code != MEDIA_BUS_FMT_SENSOR_DATA || fse->index > 0) ++ return -EINVAL; ++ ++ fse->min_width = IMX708_EMBEDDED_LINE_WIDTH; ++ fse->max_width = fse->min_width; ++ fse->min_height = IMX708_NUM_EMBEDDED_LINES; ++ fse->max_height = fse->min_height; ++ } ++ ++ return 0; ++} ++ ++static void imx708_reset_colorspace(struct v4l2_mbus_framefmt *fmt) ++{ ++ fmt->colorspace = V4L2_COLORSPACE_RAW; ++ fmt->ycbcr_enc = V4L2_MAP_YCBCR_ENC_DEFAULT(fmt->colorspace); ++ fmt->quantization = V4L2_MAP_QUANTIZATION_DEFAULT(true, ++ fmt->colorspace, ++ fmt->ycbcr_enc); ++ fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace); ++} ++ ++static void imx708_update_image_pad_format(struct imx708 *imx708, ++ const struct imx708_mode *mode, ++ struct v4l2_subdev_format *fmt) ++{ ++ fmt->format.width = mode->width; ++ fmt->format.height = mode->height; ++ fmt->format.field = V4L2_FIELD_NONE; ++ imx708_reset_colorspace(&fmt->format); ++} ++ ++static void imx708_update_metadata_pad_format(struct v4l2_subdev_format *fmt) ++{ ++ fmt->format.width = IMX708_EMBEDDED_LINE_WIDTH; ++ fmt->format.height = IMX708_NUM_EMBEDDED_LINES; ++ fmt->format.code = MEDIA_BUS_FMT_SENSOR_DATA; ++ fmt->format.field = V4L2_FIELD_NONE; ++} ++ ++static int imx708_get_pad_format(struct v4l2_subdev *sd, ++ struct v4l2_subdev_state *sd_state, ++ struct v4l2_subdev_format *fmt) ++{ ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ if (fmt->pad >= NUM_PADS) ++ return -EINVAL; ++ ++ mutex_lock(&imx708->mutex); ++ ++ if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { ++ struct v4l2_mbus_framefmt *try_fmt = ++ v4l2_subdev_get_try_format(&imx708->sd, sd_state, ++ fmt->pad); ++ /* update the code which could change due to vflip or hflip */ ++ try_fmt->code = fmt->pad == IMAGE_PAD ? ++ imx708_get_format_code(imx708) : ++ MEDIA_BUS_FMT_SENSOR_DATA; ++ fmt->format = *try_fmt; ++ } else { ++ if (fmt->pad == IMAGE_PAD) { ++ imx708_update_image_pad_format(imx708, imx708->mode, ++ fmt); ++ fmt->format.code = imx708_get_format_code(imx708); ++ } else { ++ imx708_update_metadata_pad_format(fmt); ++ } ++ } ++ ++ mutex_unlock(&imx708->mutex); ++ return 0; ++} ++ ++static int imx708_set_pad_format(struct v4l2_subdev *sd, ++ struct v4l2_subdev_state *sd_state, ++ struct v4l2_subdev_format *fmt) ++{ ++ struct v4l2_mbus_framefmt *framefmt; ++ const struct imx708_mode *mode; ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ if (fmt->pad >= NUM_PADS) ++ return -EINVAL; ++ ++ mutex_lock(&imx708->mutex); ++ ++ if (fmt->pad == IMAGE_PAD) { ++ const struct imx708_mode *mode_list; ++ unsigned int num_modes; ++ ++ /* Bayer order varies with flips */ ++ fmt->format.code = imx708_get_format_code(imx708); ++ ++ get_mode_table(fmt->format.code, &mode_list, &num_modes, ++ imx708->hdr_mode->val); ++ ++ mode = v4l2_find_nearest_size(mode_list, ++ num_modes, ++ width, height, ++ fmt->format.width, ++ fmt->format.height); ++ imx708_update_image_pad_format(imx708, mode, fmt); ++ if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { ++ framefmt = v4l2_subdev_get_try_format(sd, sd_state, ++ fmt->pad); ++ *framefmt = fmt->format; ++ } else { ++ imx708->mode = mode; ++ imx708_set_framing_limits(imx708); ++ } ++ } else { ++ if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { ++ framefmt = v4l2_subdev_get_try_format(sd, sd_state, ++ fmt->pad); ++ *framefmt = fmt->format; ++ } else { ++ /* Only one embedded data mode is supported */ ++ imx708_update_metadata_pad_format(fmt); ++ } ++ } ++ ++ mutex_unlock(&imx708->mutex); ++ ++ return 0; ++} ++ ++static const struct v4l2_rect * ++__imx708_get_pad_crop(struct imx708 *imx708, struct v4l2_subdev_state *sd_state, ++ unsigned int pad, enum v4l2_subdev_format_whence which) ++{ ++ switch (which) { ++ case V4L2_SUBDEV_FORMAT_TRY: ++ return v4l2_subdev_get_try_crop(&imx708->sd, sd_state, pad); ++ case V4L2_SUBDEV_FORMAT_ACTIVE: ++ return &imx708->mode->crop; ++ } ++ ++ return NULL; ++} ++ ++static int imx708_get_selection(struct v4l2_subdev *sd, ++ struct v4l2_subdev_state *sd_state, ++ struct v4l2_subdev_selection *sel) ++{ ++ switch (sel->target) { ++ case V4L2_SEL_TGT_CROP: { ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ mutex_lock(&imx708->mutex); ++ sel->r = *__imx708_get_pad_crop(imx708, sd_state, sel->pad, ++ sel->which); ++ mutex_unlock(&imx708->mutex); ++ ++ return 0; ++ } ++ ++ case V4L2_SEL_TGT_NATIVE_SIZE: ++ sel->r.left = 0; ++ sel->r.top = 0; ++ sel->r.width = IMX708_NATIVE_WIDTH; ++ sel->r.height = IMX708_NATIVE_HEIGHT; ++ ++ return 0; ++ ++ case V4L2_SEL_TGT_CROP_DEFAULT: ++ case V4L2_SEL_TGT_CROP_BOUNDS: ++ sel->r.left = IMX708_PIXEL_ARRAY_LEFT; ++ sel->r.top = IMX708_PIXEL_ARRAY_TOP; ++ sel->r.width = IMX708_PIXEL_ARRAY_WIDTH; ++ sel->r.height = IMX708_PIXEL_ARRAY_HEIGHT; ++ ++ return 0; ++ } ++ ++ return -EINVAL; ++} ++ ++/* Start streaming */ ++static int imx708_start_streaming(struct imx708 *imx708) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ const struct imx708_reg_list *reg_list; ++ int i, ret; ++ u32 val; ++ ++ if (!imx708->common_regs_written) { ++ ret = imx708_write_regs(imx708, mode_common_regs, ++ ARRAY_SIZE(mode_common_regs)); ++ if (ret) { ++ dev_err(&client->dev, "%s failed to set common settings\n", ++ __func__); ++ return ret; ++ } ++ ++ ret = imx708_read_reg(imx708, IMX708_REG_BASE_SPC_GAINS_L, ++ IMX708_REG_VALUE_08BIT, &val); ++ if (ret == 0 && val == 0x40) { ++ for (i = 0; i < 54 && ret == 0; i++) { ++ ret = imx708_write_reg(imx708, ++ IMX708_REG_BASE_SPC_GAINS_L + i, ++ IMX708_REG_VALUE_08BIT, ++ pdaf_gains[0][i % 9]); ++ } ++ for (i = 0; i < 54 && ret == 0; i++) { ++ ret = imx708_write_reg(imx708, ++ IMX708_REG_BASE_SPC_GAINS_R + i, ++ IMX708_REG_VALUE_08BIT, ++ pdaf_gains[1][i % 9]); ++ } ++ } ++ if (ret) { ++ dev_err(&client->dev, "%s failed to set PDAF gains\n", ++ __func__); ++ return ret; ++ } ++ ++ imx708->common_regs_written = true; ++ } ++ ++ /* Apply default values of current mode */ ++ reg_list = &imx708->mode->reg_list; ++ ret = imx708_write_regs(imx708, reg_list->regs, reg_list->num_of_regs); ++ if (ret) { ++ dev_err(&client->dev, "%s failed to set mode\n", __func__); ++ return ret; ++ } ++ ++ /* Apply customized values from user */ ++ ret = __v4l2_ctrl_handler_setup(imx708->sd.ctrl_handler); ++ if (ret) ++ return ret; ++ ++ /* set stream on register */ ++ return imx708_write_reg(imx708, IMX708_REG_MODE_SELECT, ++ IMX708_REG_VALUE_08BIT, IMX708_MODE_STREAMING); ++} ++ ++/* Stop streaming */ ++static void imx708_stop_streaming(struct imx708 *imx708) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ int ret; ++ ++ /* set stream off register */ ++ ret = imx708_write_reg(imx708, IMX708_REG_MODE_SELECT, ++ IMX708_REG_VALUE_08BIT, IMX708_MODE_STANDBY); ++ if (ret) ++ dev_err(&client->dev, "%s failed to set stream\n", __func__); ++} ++ ++static int imx708_set_stream(struct v4l2_subdev *sd, int enable) ++{ ++ struct imx708 *imx708 = to_imx708(sd); ++ struct i2c_client *client = v4l2_get_subdevdata(sd); ++ int ret = 0; ++ ++ mutex_lock(&imx708->mutex); ++ if (imx708->streaming == enable) { ++ mutex_unlock(&imx708->mutex); ++ return 0; ++ } ++ ++ if (enable) { ++ ret = pm_runtime_get_sync(&client->dev); ++ if (ret < 0) { ++ pm_runtime_put_noidle(&client->dev); ++ goto err_unlock; ++ } ++ ++ /* ++ * Apply default & customized values ++ * and then start streaming. ++ */ ++ ret = imx708_start_streaming(imx708); ++ if (ret) ++ goto err_rpm_put; ++ } else { ++ imx708_stop_streaming(imx708); ++ pm_runtime_put(&client->dev); ++ } ++ ++ imx708->streaming = enable; ++ ++ /* vflip/hflip and hdr mode cannot change during streaming */ ++ __v4l2_ctrl_grab(imx708->vflip, enable); ++ __v4l2_ctrl_grab(imx708->hflip, enable); ++ __v4l2_ctrl_grab(imx708->hdr_mode, enable); ++ ++ mutex_unlock(&imx708->mutex); ++ ++ return ret; ++ ++err_rpm_put: ++ pm_runtime_put(&client->dev); ++err_unlock: ++ mutex_unlock(&imx708->mutex); ++ ++ return ret; ++} ++ ++/* Power/clock management functions */ ++static int imx708_power_on(struct device *dev) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ struct v4l2_subdev *sd = i2c_get_clientdata(client); ++ struct imx708 *imx708 = to_imx708(sd); ++ int ret; ++ ++ ret = regulator_bulk_enable(IMX708_NUM_SUPPLIES, ++ imx708->supplies); ++ if (ret) { ++ dev_err(&client->dev, "%s: failed to enable regulators\n", ++ __func__); ++ return ret; ++ } ++ ++ ret = clk_prepare_enable(imx708->xclk); ++ if (ret) { ++ dev_err(&client->dev, "%s: failed to enable clock\n", ++ __func__); ++ goto reg_off; ++ } ++ ++ gpiod_set_value_cansleep(imx708->reset_gpio, 1); ++ usleep_range(IMX708_XCLR_MIN_DELAY_US, ++ IMX708_XCLR_MIN_DELAY_US + IMX708_XCLR_DELAY_RANGE_US); ++ ++ return 0; ++ ++reg_off: ++ regulator_bulk_disable(IMX708_NUM_SUPPLIES, imx708->supplies); ++ return ret; ++} ++ ++static int imx708_power_off(struct device *dev) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ struct v4l2_subdev *sd = i2c_get_clientdata(client); ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ gpiod_set_value_cansleep(imx708->reset_gpio, 0); ++ regulator_bulk_disable(IMX708_NUM_SUPPLIES, imx708->supplies); ++ clk_disable_unprepare(imx708->xclk); ++ ++ /* Force reprogramming of the common registers when powered up again. */ ++ imx708->common_regs_written = false; ++ ++ return 0; ++} ++ ++static int __maybe_unused imx708_suspend(struct device *dev) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ struct v4l2_subdev *sd = i2c_get_clientdata(client); ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ if (imx708->streaming) ++ imx708_stop_streaming(imx708); ++ ++ return 0; ++} ++ ++static int __maybe_unused imx708_resume(struct device *dev) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ struct v4l2_subdev *sd = i2c_get_clientdata(client); ++ struct imx708 *imx708 = to_imx708(sd); ++ int ret; ++ ++ if (imx708->streaming) { ++ ret = imx708_start_streaming(imx708); ++ if (ret) ++ goto error; ++ } ++ ++ return 0; ++ ++error: ++ imx708_stop_streaming(imx708); ++ imx708->streaming = 0; ++ return ret; ++} ++ ++static int imx708_get_regulators(struct imx708 *imx708) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ unsigned int i; ++ ++ for (i = 0; i < IMX708_NUM_SUPPLIES; i++) ++ imx708->supplies[i].supply = imx708_supply_name[i]; ++ ++ return devm_regulator_bulk_get(&client->dev, ++ IMX708_NUM_SUPPLIES, ++ imx708->supplies); ++} ++ ++/* Verify chip ID */ ++static int imx708_identify_module(struct imx708 *imx708) ++{ ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ int ret; ++ u32 val; ++ ++ ret = imx708_read_reg(imx708, IMX708_REG_CHIP_ID, ++ IMX708_REG_VALUE_16BIT, &val); ++ if (ret) { ++ dev_err(&client->dev, "failed to read chip id %x, with error %d\n", ++ IMX708_CHIP_ID, ret); ++ return ret; ++ } ++ ++ if (val != IMX708_CHIP_ID) { ++ dev_err(&client->dev, "chip id mismatch: %x!=%x\n", ++ IMX708_CHIP_ID, val); ++ return -EIO; ++ } ++ ++ ret = imx708_read_reg(imx708, 0x0000, IMX708_REG_VALUE_16BIT, &val); ++ if (!ret) { ++ dev_info(&client->dev, "camera module ID 0x%04x\n", val); ++ snprintf(imx708->sd.name, sizeof(imx708->sd.name), "imx708%s%s", ++ val & 0x02 ? "_wide" : "", ++ val & 0x80 ? "_noir" : ""); ++ } ++ ++ return 0; ++} ++ ++static const struct v4l2_subdev_core_ops imx708_core_ops = { ++ .subscribe_event = v4l2_ctrl_subdev_subscribe_event, ++ .unsubscribe_event = v4l2_event_subdev_unsubscribe, ++}; ++ ++static const struct v4l2_subdev_video_ops imx708_video_ops = { ++ .s_stream = imx708_set_stream, ++}; ++ ++static const struct v4l2_subdev_pad_ops imx708_pad_ops = { ++ .enum_mbus_code = imx708_enum_mbus_code, ++ .get_fmt = imx708_get_pad_format, ++ .set_fmt = imx708_set_pad_format, ++ .get_selection = imx708_get_selection, ++ .enum_frame_size = imx708_enum_frame_size, ++}; ++ ++static const struct v4l2_subdev_ops imx708_subdev_ops = { ++ .core = &imx708_core_ops, ++ .video = &imx708_video_ops, ++ .pad = &imx708_pad_ops, ++}; ++ ++static const struct v4l2_subdev_internal_ops imx708_internal_ops = { ++ .open = imx708_open, ++}; ++ ++static const struct v4l2_ctrl_config imx708_notify_gains_ctrl = { ++ .ops = &imx708_ctrl_ops, ++ .id = V4L2_CID_NOTIFY_GAINS, ++ .type = V4L2_CTRL_TYPE_U32, ++ .min = IMX708_COLOUR_BALANCE_MIN, ++ .max = IMX708_COLOUR_BALANCE_MAX, ++ .step = IMX708_COLOUR_BALANCE_STEP, ++ .def = IMX708_COLOUR_BALANCE_DEFAULT, ++ .dims = { 4 }, ++ .elem_size = sizeof(u32), ++}; ++ ++/* Initialize control handlers */ ++static int imx708_init_controls(struct imx708 *imx708) ++{ ++ struct v4l2_ctrl_handler *ctrl_hdlr; ++ struct i2c_client *client = v4l2_get_subdevdata(&imx708->sd); ++ struct v4l2_fwnode_device_properties props; ++ unsigned int i; ++ int ret; ++ ++ ctrl_hdlr = &imx708->ctrl_handler; ++ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 16); ++ if (ret) ++ return ret; ++ ++ mutex_init(&imx708->mutex); ++ ctrl_hdlr->lock = &imx708->mutex; ++ ++ /* By default, PIXEL_RATE is read only */ ++ imx708->pixel_rate = v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_PIXEL_RATE, ++ IMX708_INITIAL_PIXEL_RATE, ++ IMX708_INITIAL_PIXEL_RATE, 1, ++ IMX708_INITIAL_PIXEL_RATE); ++ ++ /* ++ * Create the controls here, but mode specific limits are setup ++ * in the imx708_set_framing_limits() call below. ++ */ ++ imx708->vblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_VBLANK, 0, 0xffff, 1, 0); ++ imx708->hblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_HBLANK, 0, 0xffff, 1, 0); ++ ++ imx708->exposure = v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_EXPOSURE, ++ IMX708_EXPOSURE_MIN, ++ IMX708_EXPOSURE_MAX, ++ IMX708_EXPOSURE_STEP, ++ IMX708_EXPOSURE_DEFAULT); ++ ++ v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, V4L2_CID_ANALOGUE_GAIN, ++ IMX708_ANA_GAIN_MIN, IMX708_ANA_GAIN_MAX, ++ IMX708_ANA_GAIN_STEP, IMX708_ANA_GAIN_DEFAULT); ++ ++ v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, V4L2_CID_DIGITAL_GAIN, ++ IMX708_DGTL_GAIN_MIN, IMX708_DGTL_GAIN_MAX, ++ IMX708_DGTL_GAIN_STEP, IMX708_DGTL_GAIN_DEFAULT); ++ ++ imx708->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_HFLIP, 0, 1, 1, 0); ++ ++ imx708->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_VFLIP, 0, 1, 1, 0); ++ ++ v4l2_ctrl_new_std_menu_items(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_TEST_PATTERN, ++ ARRAY_SIZE(imx708_test_pattern_menu) - 1, ++ 0, 0, imx708_test_pattern_menu); ++ for (i = 0; i < 4; i++) { ++ /* ++ * The assumption is that ++ * V4L2_CID_TEST_PATTERN_GREENR == V4L2_CID_TEST_PATTERN_RED + 1 ++ * V4L2_CID_TEST_PATTERN_BLUE == V4L2_CID_TEST_PATTERN_RED + 2 ++ * V4L2_CID_TEST_PATTERN_GREENB == V4L2_CID_TEST_PATTERN_RED + 3 ++ */ ++ v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_TEST_PATTERN_RED + i, ++ IMX708_TEST_PATTERN_COLOUR_MIN, ++ IMX708_TEST_PATTERN_COLOUR_MAX, ++ IMX708_TEST_PATTERN_COLOUR_STEP, ++ IMX708_TEST_PATTERN_COLOUR_MAX); ++ /* The "Solid color" pattern is white by default */ ++ } ++ ++ imx708->notify_gains = v4l2_ctrl_new_custom(ctrl_hdlr, ++ &imx708_notify_gains_ctrl, NULL); ++ ++ imx708->hdr_mode = v4l2_ctrl_new_std(ctrl_hdlr, &imx708_ctrl_ops, ++ V4L2_CID_WIDE_DYNAMIC_RANGE, ++ 0, 1, 1, 0); ++ ++ ret = v4l2_fwnode_device_parse(&client->dev, &props); ++ if (ret) ++ goto error; ++ ++ v4l2_ctrl_new_fwnode_properties(ctrl_hdlr, &imx708_ctrl_ops, &props); ++ ++ if (ctrl_hdlr->error) { ++ ret = ctrl_hdlr->error; ++ dev_err(&client->dev, "%s control init failed (%d)\n", ++ __func__, ret); ++ goto error; ++ } ++ ++ imx708->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; ++ imx708->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; ++ imx708->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; ++ imx708->hdr_mode->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; ++ ++ imx708->sd.ctrl_handler = ctrl_hdlr; ++ ++ /* Setup exposure and frame/line length limits. */ ++ imx708_set_framing_limits(imx708); ++ ++ return 0; ++ ++error: ++ v4l2_ctrl_handler_free(ctrl_hdlr); ++ mutex_destroy(&imx708->mutex); ++ ++ return ret; ++} ++ ++static void imx708_free_controls(struct imx708 *imx708) ++{ ++ v4l2_ctrl_handler_free(imx708->sd.ctrl_handler); ++ mutex_destroy(&imx708->mutex); ++} ++ ++static int imx708_check_hwcfg(struct device *dev) ++{ ++ struct fwnode_handle *endpoint; ++ struct v4l2_fwnode_endpoint ep_cfg = { ++ .bus_type = V4L2_MBUS_CSI2_DPHY ++ }; ++ int ret = -EINVAL; ++ ++ endpoint = fwnode_graph_get_next_endpoint(dev_fwnode(dev), NULL); ++ if (!endpoint) { ++ dev_err(dev, "endpoint node not found\n"); ++ return -EINVAL; ++ } ++ ++ if (v4l2_fwnode_endpoint_alloc_parse(endpoint, &ep_cfg)) { ++ dev_err(dev, "could not parse endpoint\n"); ++ goto error_out; ++ } ++ ++ /* Check the number of MIPI CSI2 data lanes */ ++ if (ep_cfg.bus.mipi_csi2.num_data_lanes != 2) { ++ dev_err(dev, "only 2 data lanes are currently supported\n"); ++ goto error_out; ++ } ++ ++ /* Check the link frequency set in device tree */ ++ if (!ep_cfg.nr_of_link_frequencies) { ++ dev_err(dev, "link-frequency property not found in DT\n"); ++ goto error_out; ++ } ++ ++ if (ep_cfg.nr_of_link_frequencies != 1 || ++ ep_cfg.link_frequencies[0] != IMX708_DEFAULT_LINK_FREQ) { ++ dev_err(dev, "Link frequency not supported: %lld\n", ++ ep_cfg.link_frequencies[0]); ++ goto error_out; ++ } ++ ++ ret = 0; ++ ++error_out: ++ v4l2_fwnode_endpoint_free(&ep_cfg); ++ fwnode_handle_put(endpoint); ++ ++ return ret; ++} ++ ++static int imx708_probe(struct i2c_client *client) ++{ ++ struct device *dev = &client->dev; ++ struct imx708 *imx708; ++ int ret; ++ ++ imx708 = devm_kzalloc(&client->dev, sizeof(*imx708), GFP_KERNEL); ++ if (!imx708) ++ return -ENOMEM; ++ ++ v4l2_i2c_subdev_init(&imx708->sd, client, &imx708_subdev_ops); ++ ++ /* Check the hardware configuration in device tree */ ++ if (imx708_check_hwcfg(dev)) ++ return -EINVAL; ++ ++ /* Get system clock (xclk) */ ++ imx708->xclk = devm_clk_get(dev, NULL); ++ if (IS_ERR(imx708->xclk)) { ++ dev_err(dev, "failed to get xclk\n"); ++ return PTR_ERR(imx708->xclk); ++ } ++ ++ imx708->xclk_freq = clk_get_rate(imx708->xclk); ++ if (imx708->xclk_freq != IMX708_XCLK_FREQ) { ++ dev_err(dev, "xclk frequency not supported: %d Hz\n", ++ imx708->xclk_freq); ++ return -EINVAL; ++ } ++ ++ ret = imx708_get_regulators(imx708); ++ if (ret) { ++ dev_err(dev, "failed to get regulators\n"); ++ return ret; ++ } ++ ++ /* Request optional enable pin */ ++ imx708->reset_gpio = devm_gpiod_get_optional(dev, "reset", ++ GPIOD_OUT_HIGH); ++ ++ /* ++ * The sensor must be powered for imx708_identify_module() ++ * to be able to read the CHIP_ID register ++ */ ++ ret = imx708_power_on(dev); ++ if (ret) ++ return ret; ++ ++ ret = imx708_identify_module(imx708); ++ if (ret) ++ goto error_power_off; ++ ++ /* Initialize default format */ ++ imx708_set_default_format(imx708); ++ ++ /* Enable runtime PM and turn off the device */ ++ pm_runtime_set_active(dev); ++ pm_runtime_enable(dev); ++ pm_runtime_idle(dev); ++ ++ /* This needs the pm runtime to be registered. */ ++ ret = imx708_init_controls(imx708); ++ if (ret) ++ goto error_power_off; ++ ++ /* Initialize subdev */ ++ imx708->sd.internal_ops = &imx708_internal_ops; ++ imx708->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | ++ V4L2_SUBDEV_FL_HAS_EVENTS; ++ imx708->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR; ++ ++ /* Initialize source pads */ ++ imx708->pad[IMAGE_PAD].flags = MEDIA_PAD_FL_SOURCE; ++ imx708->pad[METADATA_PAD].flags = MEDIA_PAD_FL_SOURCE; ++ ++ ret = media_entity_pads_init(&imx708->sd.entity, NUM_PADS, imx708->pad); ++ if (ret) { ++ dev_err(dev, "failed to init entity pads: %d\n", ret); ++ goto error_handler_free; ++ } ++ ++ ret = v4l2_async_register_subdev_sensor(&imx708->sd); ++ if (ret < 0) { ++ dev_err(dev, "failed to register sensor sub-device: %d\n", ret); ++ goto error_media_entity; ++ } ++ ++ return 0; ++ ++error_media_entity: ++ media_entity_cleanup(&imx708->sd.entity); ++ ++error_handler_free: ++ imx708_free_controls(imx708); ++ ++error_power_off: ++ pm_runtime_disable(&client->dev); ++ pm_runtime_set_suspended(&client->dev); ++ imx708_power_off(&client->dev); ++ ++ return ret; ++} ++ ++static void imx708_remove(struct i2c_client *client) ++{ ++ struct v4l2_subdev *sd = i2c_get_clientdata(client); ++ struct imx708 *imx708 = to_imx708(sd); ++ ++ v4l2_async_unregister_subdev(sd); ++ media_entity_cleanup(&sd->entity); ++ imx708_free_controls(imx708); ++ ++ pm_runtime_disable(&client->dev); ++ if (!pm_runtime_status_suspended(&client->dev)) ++ imx708_power_off(&client->dev); ++ pm_runtime_set_suspended(&client->dev); ++} ++ ++static const struct of_device_id imx708_dt_ids[] = { ++ { .compatible = "sony,imx708" }, ++ { /* sentinel */ } ++}; ++MODULE_DEVICE_TABLE(of, imx708_dt_ids); ++ ++static const struct dev_pm_ops imx708_pm_ops = { ++ SET_SYSTEM_SLEEP_PM_OPS(imx708_suspend, imx708_resume) ++ SET_RUNTIME_PM_OPS(imx708_power_off, imx708_power_on, NULL) ++}; ++ ++static struct i2c_driver imx708_i2c_driver = { ++ .driver = { ++ .name = "imx708", ++ .of_match_table = imx708_dt_ids, ++ .pm = &imx708_pm_ops, ++ }, ++ .probe_new = imx708_probe, ++ .remove = imx708_remove, ++}; ++ ++module_i2c_driver(imx708_i2c_driver); ++ ++MODULE_AUTHOR("David Plowman "); ++MODULE_DESCRIPTION("Sony IMX708 sensor driver"); ++MODULE_LICENSE("GPL v2"); +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Thu, 22 Dec 2022 14:28:15 +0000 +Subject: [PATCH 557/590] defconfigs: Add IMX708 to all Pi defconfigs + +Adds the IMX708 image sensor driver to the defconfigs. + +Signed-off-by: Dave Stevenson +--- + arch/arm/configs/bcm2709_defconfig | 2 ++ + arch/arm/configs/bcm2711_defconfig | 2 ++ + arch/arm/configs/bcmrpi_defconfig | 2 ++ + arch/arm64/configs/bcm2711_defconfig | 2 ++ + arch/arm64/configs/bcmrpi3_defconfig | 2 ++ + 5 files changed, 10 insertions(+) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index 70e65ac88508..cde9c46006ca 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -919,12 +919,14 @@ CONFIG_VIDEO_IMX258=m + CONFIG_VIDEO_IMX290=m + CONFIG_VIDEO_IMX296=m + CONFIG_VIDEO_IMX519=m ++CONFIG_VIDEO_IMX708=m + CONFIG_VIDEO_MT9V011=m + CONFIG_VIDEO_OV2311=m + CONFIG_VIDEO_OV5647=m + CONFIG_VIDEO_OV7251=m + CONFIG_VIDEO_OV7640=m + CONFIG_VIDEO_AD5398=m ++CONFIG_VIDEO_DW9807_VCM=m + CONFIG_VIDEO_SONY_BTF_MPX=m + CONFIG_VIDEO_UDA1342=m + CONFIG_VIDEO_IMX477=m +diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig +index 48670cd88488..566641491f0b 100644 +--- a/arch/arm/configs/bcm2711_defconfig ++++ b/arch/arm/configs/bcm2711_defconfig +@@ -937,12 +937,14 @@ CONFIG_VIDEO_IMX258=m + CONFIG_VIDEO_IMX290=m + CONFIG_VIDEO_IMX296=m + CONFIG_VIDEO_IMX519=m ++CONFIG_VIDEO_IMX708=m + CONFIG_VIDEO_MT9V011=m + CONFIG_VIDEO_OV2311=m + CONFIG_VIDEO_OV5647=m + CONFIG_VIDEO_OV7251=m + CONFIG_VIDEO_OV7640=m + CONFIG_VIDEO_AD5398=m ++CONFIG_VIDEO_DW9807_VCM=m + CONFIG_VIDEO_SONY_BTF_MPX=m + CONFIG_VIDEO_UDA1342=m + CONFIG_VIDEO_IMX477=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index f440e3552b0c..8c8c6ddc451a 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -913,12 +913,14 @@ CONFIG_VIDEO_IMX258=m + CONFIG_VIDEO_IMX290=m + CONFIG_VIDEO_IMX296=m + CONFIG_VIDEO_IMX519=m ++CONFIG_VIDEO_IMX708=m + CONFIG_VIDEO_MT9V011=m + CONFIG_VIDEO_OV2311=m + CONFIG_VIDEO_OV5647=m + CONFIG_VIDEO_OV7251=m + CONFIG_VIDEO_OV7640=m + CONFIG_VIDEO_AD5398=m ++CONFIG_VIDEO_DW9807_VCM=m + CONFIG_VIDEO_SONY_BTF_MPX=m + CONFIG_VIDEO_UDA1342=m + CONFIG_VIDEO_IMX477=m +diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig +index ff05936aae58..28860860cb97 100644 +--- a/arch/arm64/configs/bcm2711_defconfig ++++ b/arch/arm64/configs/bcm2711_defconfig +@@ -949,12 +949,14 @@ CONFIG_VIDEO_IMX258=m + CONFIG_VIDEO_IMX290=m + CONFIG_VIDEO_IMX296=m + CONFIG_VIDEO_IMX519=m ++CONFIG_VIDEO_IMX708=m + CONFIG_VIDEO_MT9V011=m + CONFIG_VIDEO_OV2311=m + CONFIG_VIDEO_OV5647=m + CONFIG_VIDEO_OV7251=m + CONFIG_VIDEO_OV7640=m + CONFIG_VIDEO_AD5398=m ++CONFIG_VIDEO_DW9807_VCM=m + CONFIG_VIDEO_SONY_BTF_MPX=m + CONFIG_VIDEO_UDA1342=m + CONFIG_VIDEO_IMX477=m +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +index dde7d045b176..6af06a59eae5 100644 +--- a/arch/arm64/configs/bcmrpi3_defconfig ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -887,12 +887,14 @@ CONFIG_VIDEO_IMX258=m + CONFIG_VIDEO_IMX290=m + CONFIG_VIDEO_IMX296=m + CONFIG_VIDEO_IMX519=m ++CONFIG_VIDEO_IMX708=m + CONFIG_VIDEO_MT9V011=m + CONFIG_VIDEO_OV2311=m + CONFIG_VIDEO_OV5647=m + CONFIG_VIDEO_OV7251=m + CONFIG_VIDEO_OV7640=m + CONFIG_VIDEO_AD5398=m ++CONFIG_VIDEO_DW9807_VCM=m + CONFIG_VIDEO_SONY_BTF_MPX=m + CONFIG_VIDEO_UDA1342=m + CONFIG_VIDEO_IMX477=m +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Thu, 22 Dec 2022 14:12:54 +0000 +Subject: [PATCH 558/590] dtoverlays: Add overlays for the IMX708 image sensor + +New overlay to support the Sony IMX708 image sensor. +This includes a VCM for lens control. +Also adds support to the camera mux overlays. + +Signed-off-by: Dave Stevenson +--- + arch/arm/boot/dts/overlays/Makefile | 1 + + arch/arm/boot/dts/overlays/README | 23 ++++ + .../dts/overlays/camera-mux-2port-overlay.dts | 32 ++++++ + .../dts/overlays/camera-mux-4port-overlay.dts | 64 +++++++++++ + arch/arm/boot/dts/overlays/imx708-overlay.dts | 104 ++++++++++++++++++ + arch/arm/boot/dts/overlays/imx708.dtsi | 35 ++++++ + 6 files changed, 259 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/imx708-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/imx708.dtsi + +diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile +index 07d457157b79..0fab3056a939 100644 +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -122,6 +122,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + imx462.dtbo \ + imx477.dtbo \ + imx519.dtbo \ ++ imx708.dtbo \ + iqaudio-codec.dtbo \ + iqaudio-dac.dtbo \ + iqaudio-dacplus.dtbo \ +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index ae15df4dfc7d..e1e694fd9c33 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -716,6 +716,7 @@ Params: cam0-imx219 Select IMX219 for camera on port 0 + cam0-imx258 Select IMX258 for camera on port 0 + cam0-imx290 Select IMX290 for camera on port 0 + cam0-imx477 Select IMX477 for camera on port 0 ++ cam0-imx708 Select IMX708 for camera on port 0 + cam0-ov2311 Select OV2311 for camera on port 0 + cam0-ov5647 Select OV5647 for camera on port 0 + cam0-ov7251 Select OV7251 for camera on port 0 +@@ -725,6 +726,7 @@ Params: cam0-imx219 Select IMX219 for camera on port 0 + cam1-imx258 Select IMX258 for camera on port 1 + cam1-imx290 Select IMX290 for camera on port 1 + cam1-imx477 Select IMX477 for camera on port 1 ++ cam1-imx708 Select IMX708 for camera on port 1 + cam1-ov2311 Select OV2311 for camera on port 1 + cam1-ov5647 Select OV5647 for camera on port 1 + cam1-ov7251 Select OV7251 for camera on port 1 +@@ -741,6 +743,7 @@ Params: cam0-imx219 Select IMX219 for camera on port 0 + cam0-imx258 Select IMX258 for camera on port 0 + cam0-imx290 Select IMX290 for camera on port 0 + cam0-imx477 Select IMX477 for camera on port 0 ++ cam0-imx708 Select IMX708 for camera on port 0 + cam0-ov2311 Select OV2311 for camera on port 0 + cam0-ov5647 Select OV5647 for camera on port 0 + cam0-ov7251 Select OV7251 for camera on port 0 +@@ -750,6 +753,7 @@ Params: cam0-imx219 Select IMX219 for camera on port 0 + cam1-imx258 Select IMX258 for camera on port 1 + cam1-imx290 Select IMX290 for camera on port 1 + cam1-imx477 Select IMX477 for camera on port 1 ++ cam1-imx708 Select IMX708 for camera on port 1 + cam1-ov2311 Select OV2311 for camera on port 1 + cam1-ov5647 Select OV5647 for camera on port 1 + cam1-ov7251 Select OV7251 for camera on port 1 +@@ -759,6 +763,7 @@ Params: cam0-imx219 Select IMX219 for camera on port 0 + cam2-imx258 Select IMX258 for camera on port 2 + cam2-imx290 Select IMX290 for camera on port 2 + cam2-imx477 Select IMX477 for camera on port 2 ++ cam2-imx708 Select IMX708 for camera on port 2 + cam2-ov2311 Select OV2311 for camera on port 2 + cam2-ov5647 Select OV5647 for camera on port 2 + cam2-ov7251 Select OV7251 for camera on port 2 +@@ -768,6 +773,7 @@ Params: cam0-imx219 Select IMX219 for camera on port 0 + cam3-imx258 Select IMX258 for camera on port 3 + cam3-imx290 Select IMX290 for camera on port 3 + cam3-imx477 Select IMX477 for camera on port 3 ++ cam3-imx708 Select IMX708 for camera on port 3 + cam3-ov2311 Select OV2311 for camera on port 3 + cam3-ov5647 Select OV5647 for camera on port 3 + cam3-ov7251 Select OV7251 for camera on port 3 +@@ -2348,6 +2354,23 @@ Params: rotation Mounting rotation of the camera sensor (0 or + Compute Module (CSI0, i2c_vc, and cam0_reg). + + ++Name: imx708 ++Info: Sony IMX708 camera module. ++ Uses Unicam 1, which is the standard camera connector on most Pi ++ variants. ++Load: dtoverlay=imx708,= ++Params: rotation Mounting rotation of the camera sensor (0 or ++ 180, default 180) ++ orientation Sensor orientation (0 = front, 1 = rear, ++ 2 = external, default external) ++ vcm Select lens driver state. Default is enabled, ++ but vcm=off will disable. ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) ++ cam0 Adopt the default configuration for CAM0 on a ++ Compute Module (CSI0, i2c_vc, and cam0_reg). ++ ++ + Name: iqaudio-codec + Info: Configures the IQaudio Codec audio card + Load: dtoverlay=iqaudio-codec +diff --git a/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts b/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts +index ef24d5a7f78c..705c7ee2221d 100644 +--- a/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts ++++ b/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts +@@ -112,6 +112,16 @@ i2c@0 { + #undef cam_endpoint + #undef cam1_clk + ++ #define cam_node imx708_0 ++ #define cam_endpoint imx708_0_ep ++ #define vcm_node imx708_0_vcm ++ #define cam1_clk clk_24mhz ++ #include "imx708.dtsi" ++ #undef cam_node ++ #undef cam_endpoint ++ #undef vcm_node ++ #undef cam1_clk ++ + #define cam_node ov5647_0 + #define cam_endpoint ov5647_0_ep + #define cam1_clk clk_25mhz +@@ -182,6 +192,16 @@ i2c@1 { + #undef cam_endpoint + #undef cam1_clk + ++ #define cam_node imx708_1 ++ #define cam_endpoint imx708_1_ep ++ #define vcm_node imx708_1_vcm ++ #define cam1_clk clk_24mhz ++ #include "imx708.dtsi" ++ #undef cam_node ++ #undef cam_endpoint ++ #undef vcm_node ++ #undef cam1_clk ++ + #define cam_node ov5647_1 + #define cam_endpoint ov5647_1_ep + #define cam1_clk clk_25mhz +@@ -353,6 +373,12 @@ __overrides__ { + <&imx477_0_ep>, "remote-endpoint:0=",<&mux_in0>, + <&mux_in0>, "clock-noncontinuous?", + <&imx477_0>, "status=okay"; ++ cam0-imx708 = <&mux_in0>, "remote-endpoint:0=",<&imx708_0_ep>, ++ <&imx708_0_ep>, "remote-endpoint:0=",<&mux_in0>, ++ <&mux_in0>, "clock-noncontinuous?", ++ <&imx708_0>, "status=okay", ++ <&imx708_0_vcm>, "status=okay", ++ <&imx708_0>,"lens-focus:0=", <&imx708_0_vcm>; + cam0-ov5647 = <&mux_in0>, "remote-endpoint:0=",<&ov5647_0_ep>, + <&ov5647_0_ep>, "remote-endpoint:0=",<&mux_in0>, + <&ov5647_0>, "status=okay"; +@@ -381,6 +407,12 @@ __overrides__ { + <&imx477_1_ep>, "remote-endpoint:0=",<&mux_in1>, + <&mux_in1>, "clock-noncontinuous?", + <&imx477_1>, "status=okay"; ++ cam1-imx708 = <&mux_in1>, "remote-endpoint:0=",<&imx708_1_ep>, ++ <&imx708_1_ep>, "remote-endpoint:0=",<&mux_in1>, ++ <&mux_in1>, "clock-noncontinuous?", ++ <&imx708_1>, "status=okay", ++ <&imx708_1_vcm>, "status=okay", ++ <&imx708_1>,"lens-focus:0=", <&imx708_1_vcm>; + cam1-ov5647 = <&mux_in1>, "remote-endpoint:0=",<&ov5647_1_ep>, + <&ov5647_1_ep>, "remote-endpoint:0=",<&mux_in1>, + <&ov5647_1>, "status=okay"; +diff --git a/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts b/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts +index e1a9529c4173..222fda6c8221 100644 +--- a/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts ++++ b/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts +@@ -170,6 +170,16 @@ i2c@0 { + #undef cam_endpoint + #undef cam1_clk + ++ #define cam_node imx708_0 ++ #define cam_endpoint imx708_0_ep ++ #define vcm_node imx708_0_vcm ++ #define cam1_clk clk_24mhz ++ #include "imx708.dtsi" ++ #undef cam_node ++ #undef cam_endpoint ++ #undef vcm_node ++ #undef cam1_clk ++ + #define cam_node ov5647_0 + #define cam_endpoint ov5647_0_ep + #define cam1_clk clk_25mhz +@@ -240,6 +250,16 @@ i2c@1 { + #undef cam_endpoint + #undef cam1_clk + ++ #define cam_node imx708_1 ++ #define cam_endpoint imx708_1_ep ++ #define vcm_node imx708_1_vcm ++ #define cam1_clk clk_24mhz ++ #include "imx708.dtsi" ++ #undef cam_node ++ #undef cam_endpoint ++ #undef vcm_node ++ #undef cam1_clk ++ + #define cam_node ov5647_1 + #define cam_endpoint ov5647_1_ep + #define cam1_clk clk_25mhz +@@ -310,6 +330,16 @@ i2c@2 { + #undef cam_endpoint + #undef cam1_clk + ++ #define cam_node imx708_2 ++ #define cam_endpoint imx708_2_ep ++ #define vcm_node imx708_2_vcm ++ #define cam1_clk clk_24mhz ++ #include "imx708.dtsi" ++ #undef cam_node ++ #undef cam_endpoint ++ #undef vcm_node ++ #undef cam1_clk ++ + #define cam_node ov5647_2 + #define cam_endpoint ov5647_2_ep + #define cam1_clk clk_25mhz +@@ -380,6 +410,16 @@ i2c@3 { + #undef cam_endpoint + #undef cam1_clk + ++ #define cam_node imx708_3 ++ #define cam_endpoint imx708_3_ep ++ #define vcm_node imx708_3_vcm ++ #define cam1_clk clk_24mhz ++ #include "imx708.dtsi" ++ #undef cam_node ++ #undef cam_endpoint ++ #undef vcm_node ++ #undef cam1_clk ++ + #define cam_node ov5647_3 + #define cam_endpoint ov5647_3_ep + #define cam1_clk clk_25mhz +@@ -568,6 +608,12 @@ __overrides__ { + <&imx477_0_ep>, "remote-endpoint:0=",<&mux_in0>, + <&mux_in0>, "clock-noncontinuous?", + <&imx477_0>, "status=okay"; ++ cam0-imx708 = <&mux_in0>, "remote-endpoint:0=",<&imx708_0_ep>, ++ <&imx708_0_ep>, "remote-endpoint:0=",<&mux_in0>, ++ <&mux_in0>, "clock-noncontinuous?", ++ <&imx708_0>, "status=okay", ++ <&imx708_0_vcm>, "status=okay", ++ <&imx708_0>,"lens-focus:0=", <&imx708_0_vcm>; + cam0-ov5647 = <&mux_in0>, "remote-endpoint:0=",<&ov5647_0_ep>, + <&ov5647_0_ep>, "remote-endpoint:0=",<&mux_in0>, + <&ov5647_0>, "status=okay"; +@@ -596,6 +642,12 @@ __overrides__ { + <&imx477_1_ep>, "remote-endpoint:0=",<&mux_in1>, + <&mux_in1>, "clock-noncontinuous?", + <&imx477_1>, "status=okay"; ++ cam1-imx708 = <&mux_in1>, "remote-endpoint:0=",<&imx708_1_ep>, ++ <&imx708_1_ep>, "remote-endpoint:0=",<&mux_in1>, ++ <&mux_in1>, "clock-noncontinuous?", ++ <&imx708_1>, "status=okay", ++ <&imx708_1_vcm>, "status=okay", ++ <&imx708_1>,"lens-focus:0=", <&imx708_1_vcm>; + cam1-ov5647 = <&mux_in1>, "remote-endpoint:0=",<&ov5647_1_ep>, + <&ov5647_1_ep>, "remote-endpoint:0=",<&mux_in1>, + <&ov5647_1>, "status=okay"; +@@ -624,6 +676,12 @@ __overrides__ { + <&imx477_2_ep>, "remote-endpoint:0=",<&mux_in2>, + <&mux_in2>, "clock-noncontinuous?", + <&imx477_2>, "status=okay"; ++ cam2-imx708 = <&mux_in2>, "remote-endpoint:0=",<&imx708_2_ep>, ++ <&imx708_2_ep>, "remote-endpoint:0=",<&mux_in2>, ++ <&mux_in2>, "clock-noncontinuous?", ++ <&imx708_2>, "status=okay", ++ <&imx708_2_vcm>, "status=okay", ++ <&imx708_2>,"lens-focus:0=", <&imx708_2_vcm>; + cam2-ov5647 = <&mux_in2>, "remote-endpoint:0=",<&ov5647_2_ep>, + <&ov5647_2_ep>, "remote-endpoint:0=",<&mux_in2>, + <&ov5647_2>, "status=okay"; +@@ -652,6 +710,12 @@ __overrides__ { + <&imx477_3_ep>, "remote-endpoint:0=",<&mux_in3>, + <&mux_in3>, "clock-noncontinuous?", + <&imx477_3>, "status=okay"; ++ cam3-imx708 = <&mux_in3>, "remote-endpoint:0=",<&imx708_3_ep>, ++ <&imx708_3_ep>, "remote-endpoint:0=",<&mux_in3>, ++ <&mux_in3>, "clock-noncontinuous?", ++ <&imx708_3>, "status=okay", ++ <&imx708_3_vcm>, "status=okay", ++ <&imx708_3>,"lens-focus:0=", <&imx708_3_vcm>; + cam3-ov5647 = <&mux_in3>, "remote-endpoint:0=",<&ov5647_3_ep>, + <&ov5647_3_ep>, "remote-endpoint:0=",<&mux_in3>, + <&ov5647_3>, "status=okay"; +diff --git a/arch/arm/boot/dts/overlays/imx708-overlay.dts b/arch/arm/boot/dts/overlays/imx708-overlay.dts +new file mode 100644 +index 000000000000..9107e985c2a8 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/imx708-overlay.dts +@@ -0,0 +1,104 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++// Definitions for IMX708 camera module on VC I2C bus ++/dts-v1/; ++/plugin/; ++ ++#include ++ ++/{ ++ compatible = "brcm,bcm2835"; ++ ++ fragment@0 { ++ target = <&i2c0if>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ clk_frag: fragment@1 { ++ target = <&cam1_clk>; ++ __overlay__ { ++ status = "okay"; ++ clock-frequency = <24000000>; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&i2c0mux>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ reg_frag: fragment@3 { ++ target = <&cam1_reg>; ++ cam_reg: __overlay__ { ++ startup-delay-us = <70000>; ++ off-on-delay-us = <30000>; ++ regulator-min-microvolt = <2700000>; ++ regulator-max-microvolt = <2700000>; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&cam_node>; ++ __overlay__ { ++ lens-focus = <&vcm_node>; ++ }; ++ }; ++ ++ i2c_frag: fragment@100 { ++ target = <&i2c_csi_dsi>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ #include "imx708.dtsi" ++ }; ++ }; ++ ++ csi_frag: fragment@101 { ++ target = <&csi1>; ++ csi: __overlay__ { ++ status = "okay"; ++ brcm,media-controller; ++ ++ port { ++ csi_ep: endpoint { ++ remote-endpoint = <&cam_endpoint>; ++ clock-lanes = <0>; ++ data-lanes = <1 2>; ++ clock-noncontinuous; ++ }; ++ }; ++ }; ++ }; ++ ++ __overrides__ { ++ rotation = <&cam_node>,"rotation:0"; ++ orientation = <&cam_node>,"orientation:0"; ++ media-controller = <&csi>,"brcm,media-controller?"; ++ cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>, ++ <&csi_frag>, "target:0=",<&csi0>, ++ <&clk_frag>, "target:0=",<&cam0_clk>, ++ <®_frag>, "target:0=",<&cam0_reg>, ++ <&cam_node>, "clocks:0=",<&cam0_clk>, ++ <&cam_node>, "VANA1-supply:0=",<&cam0_reg>, ++ <&vcm_node>, "VDD-supply:0=",<&cam0_reg>; ++ vcm = <&vcm_node>, "status", ++ <0>, "=4"; ++ }; ++}; ++ ++&cam_node { ++ status = "okay"; ++}; ++ ++&cam_endpoint { ++ remote-endpoint = <&csi_ep>; ++}; ++ ++&vcm_node { ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/overlays/imx708.dtsi b/arch/arm/boot/dts/overlays/imx708.dtsi +new file mode 100644 +index 000000000000..1381caf22668 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/imx708.dtsi +@@ -0,0 +1,35 @@ ++// Fragment that configures a Sony IMX708 ++ ++cam_node: imx708@1a { ++ compatible = "sony,imx708"; ++ reg = <0x1a>; ++ status = "disabled"; ++ ++ clocks = <&cam1_clk>; ++ clock-names = "xclk"; ++ ++ VANA1-supply = <&cam1_reg>; /* 2.8v */ ++ VANA2-supply = <&cam_dummy_reg>;/* 1.8v */ ++ VDIG-supply = <&cam_dummy_reg>; /* 1.1v */ ++ VDDL-supply = <&cam_dummy_reg>; /* 1.8v */ ++ ++ rotation = <180>; ++ orientation = <2>; ++ ++ port { ++ cam_endpoint: endpoint { ++ clock-lanes = <0>; ++ data-lanes = <1 2>; ++ clock-noncontinuous; ++ link-frequencies = ++ /bits/ 64 <450000000>; ++ }; ++ }; ++}; ++ ++vcm_node: dw9817@c { ++ compatible = "dongwoon,dw9817-vcm"; ++ reg = <0x0c>; ++ status = "disabled"; ++ VDD-supply = <&cam1_reg>; ++}; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 3 Jan 2023 16:00:21 +0000 +Subject: [PATCH 559/590] net: phy: broadcom: Make LEDs 3+4 shadow LEDs 1+2 + +CM4 uses BCM54210PE, which supports 2 additional LEDs, choosing LED3 +for the amber LED because it shows activity by default (LED4 is not +connected). However, this makes it uncontrollable by the eth_led +dtparams which target LEDs 1+2. + +Solve the problem by making LEDs 3+4 mirror LEDs 1+2 (which is much +simpler than adding baseboard-specific overrides, but comes with a +risk of making one of the LEDs redundant). + +See: https://github.com/raspberrypi/linux/issues/5289 + +Signed-off-by: Phil Elwell +--- + drivers/net/phy/broadcom.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c +index d4c86aeb9748..ab7bbe2166d7 100644 +--- a/drivers/net/phy/broadcom.c ++++ b/drivers/net/phy/broadcom.c +@@ -416,6 +416,11 @@ static int bcm54xx_config_init(struct phy_device *phydev) + val = BCM5482_SHD_LEDS1_LED1(BCM_LED_SRC_MULTICOLOR1) | + BCM5482_SHD_LEDS1_LED3(BCM_LED_SRC_MULTICOLOR1); + bcm_phy_write_shadow(phydev, BCM5482_SHD_LEDS1, val); ++ /* BCM54210PE controls two extra LEDs with the next register. ++ * Make them shadow the first pair of LEDs - useful on CM4 which ++ * uses LED3 for ETH_LEDY instead of LED1. ++ */ ++ bcm_phy_write_shadow(phydev, BCM5482_SHD_LEDS1 + 1, val); + + val = BCM_LED_MULTICOLOR_IN_PHASE | + BCM5482_SHD_LEDS1_LED1(led_modes[0]) | +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 4 Jan 2023 09:14:53 +0000 +Subject: [PATCH 560/590] overlays: i2c-sensor: MS temp & pressure sensors + +Add support for the Measurement Specialities temperature and pressure +sensors to the i2c-sensor overlay. The supported devices are MS5637, +MS5803, MS5805, MS5837 and MS8607. + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/overlays/README | 20 ++++- + .../boot/dts/overlays/i2c-sensor-common.dtsi | 79 ++++++++++++++++++- + 2 files changed, 96 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index e1e694fd9c33..9b404673600c 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -1982,8 +1982,9 @@ Info: Adds support for a number of I2C barometric pressure, temperature, + light level and chemical sensors on i2c_arm + Load: dtoverlay=i2c-sensor,= + Params: addr Set the address for the BH1750, BME280, BME680, +- BMP280, CCS811, DS1621, HDC100X, LM75, SHT3x or +- TMP102 ++ BMP280, CCS811, DS1621, HDC100X, JC42, LM75, ++ MCP980x, MS5637, MS5803, MS5805, MS5837, MS8607, ++ SHT3x or TMP102 + + aht10 Select the Aosong AHT10 temperature and humidity + sensor +@@ -2044,6 +2045,21 @@ Params: addr Set the address for the BH1750, BME280, BME680, + use the "jc42" option. + Valid addresses are 0x18-0x1f (default 0x18) + ++ ms5637 Select the Measurement Specialities MS5637 ++ pressure and temperature sensor. ++ ++ ms5803 Select the Measurement Specialities MS5803 ++ pressure and temperature sensor. ++ ++ ms5805 Select the Measurement Specialities MS5805 ++ pressure and temperature sensor. ++ ++ ms5837 Select the Measurement Specialities MS5837 ++ pressure and temperature sensor. ++ ++ ms8607 Select the Measurement Specialities MS8607 ++ pressure and temperature sensor. ++ + no_timeout Disable the SMBUS timeout. N.B. Only supported + by some jc42 devices - using with an + incompatible device can stop it from being +diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +index c81d8e5db548..6504c7578b9d 100755 +--- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi ++++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +@@ -351,6 +351,76 @@ jc42: jc42@18 { + }; + }; + ++ fragment@23 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ ms5637: ms5637@76 { ++ compatible = "meas,ms5637"; ++ reg = <0x76>; ++ }; ++ }; ++ }; ++ ++ fragment@24 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ ms5803: ms5803@76 { ++ compatible = "meas,ms5803"; ++ reg = <0x76>; ++ }; ++ }; ++ }; ++ ++ fragment@25 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ ms5805: ms5805@76 { ++ compatible = "meas,ms5805"; ++ reg = <0x76>; ++ }; ++ }; ++ }; ++ ++ fragment@26 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ ms5837: ms5837@76 { ++ compatible = "meas,ms5837"; ++ reg = <0x76>; ++ }; ++ }; ++ }; ++ ++ fragment@27 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ ms8607: ms8607@76 { ++ compatible = "meas,ms8607-temppressure"; ++ reg = <0x76>; ++ }; ++ }; ++ }; ++ + __overrides__ { + bme280 = <0>,"+0"; + bmp085 = <0>,"+1"; +@@ -376,11 +446,18 @@ __overrides__ { + aht10 = <0>,"+20"; + mcp980x = <0>,"+21"; + jc42 = <0>,"+22"; ++ ms5637 = <0>,"+23"; ++ ms5803 = <0>,"+24"; ++ ms5805 = <0>,"+25"; ++ ms5837 = <0>,"+26"; ++ ms8607 = <0>,"+27"; + + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0", + <&ds1621>,"reg:0", <&bme680>,"reg:0", <&ccs811>,"reg:0", +- <&bh1750>,"reg:0", <&mcp980x>,"reg:0", <&jc42>,"reg:0"; ++ <&bh1750>,"reg:0", <&mcp980x>,"reg:0", <&jc42>,"reg:0", ++ <&ms5637>,"reg:0", <&ms5803>,"reg:0", <&ms5805>,"reg:0", ++ <&ms5837>,"reg:0", <&ms8607>,"reg:0"; + int_pin = <&max30102>, "interrupts:0"; + no_timeout = <&jc42>, "smbus-timeout-disable?"; + }; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 4 Jan 2023 09:39:44 +0000 +Subject: [PATCH 561/590] configs: Enable the MS5637 temp + pressure driver + +Signed-off-by: Phil Elwell +--- + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcm2711_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + arch/arm64/configs/bcm2711_defconfig | 1 + + arch/arm64/configs/bcmrpi3_defconfig | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index cde9c46006ca..dd2c43e6a696 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -1399,6 +1399,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=m + CONFIG_IIO_INTERRUPT_TRIGGER=m + CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m ++CONFIG_MS5637=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m + CONFIG_PWM=y +diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig +index 566641491f0b..40b2d104729d 100644 +--- a/arch/arm/configs/bcm2711_defconfig ++++ b/arch/arm/configs/bcm2711_defconfig +@@ -1423,6 +1423,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=m + CONFIG_IIO_INTERRUPT_TRIGGER=m + CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m ++CONFIG_MS5637=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m + CONFIG_PWM=y +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 8c8c6ddc451a..b556d98a476f 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -1392,6 +1392,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=m + CONFIG_IIO_INTERRUPT_TRIGGER=m + CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m ++CONFIG_MS5637=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m + CONFIG_PWM=y +diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig +index 28860860cb97..47c350bffadc 100644 +--- a/arch/arm64/configs/bcm2711_defconfig ++++ b/arch/arm64/configs/bcm2711_defconfig +@@ -1438,6 +1438,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=m + CONFIG_IIO_INTERRUPT_TRIGGER=m + CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m ++CONFIG_MS5637=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m + CONFIG_PWM=y +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +index 6af06a59eae5..051ccf171b25 100644 +--- a/arch/arm64/configs/bcmrpi3_defconfig ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -1337,6 +1337,7 @@ CONFIG_IIO_HRTIMER_TRIGGER=m + CONFIG_IIO_INTERRUPT_TRIGGER=m + CONFIG_IIO_SYSFS_TRIGGER=m + CONFIG_BMP280=m ++CONFIG_MS5637=m + CONFIG_MAXIM_THERMOCOUPLE=m + CONFIG_MAX31856=m + CONFIG_PWM=y +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Naushir Patuck +Date: Thu, 5 Jan 2023 14:44:48 +0000 +Subject: [PATCH 562/590] drivers: media: imx708: Enable long exposure mode + +Enable long exposure modes by using the long exposure shift register setting +in the imx708 sensor. + +Signed-off-by: Naushir Patuck +--- + drivers/media/i2c/imx708.c | 41 +++++++++++++++++++++++++++++++++----- + 1 file changed, 36 insertions(+), 5 deletions(-) + +diff --git a/drivers/media/i2c/imx708.c b/drivers/media/i2c/imx708.c +index f4c65aa3e18f..ee80035462d7 100644 +--- a/drivers/media/i2c/imx708.c ++++ b/drivers/media/i2c/imx708.c +@@ -44,6 +44,10 @@ + #define IMX708_REG_FRAME_LENGTH 0x0340 + #define IMX708_FRAME_LENGTH_MAX 0xffff + ++/* Long exposure multiplier */ ++#define IMX708_LONG_EXP_SHIFT_MAX 7 ++#define IMX708_LONG_EXP_SHIFT_REG 0x3100 ++ + /* Exposure control */ + #define IMX708_REG_EXPOSURE 0x0202 + #define IMX708_EXPOSURE_OFFSET 48 +@@ -806,6 +810,9 @@ struct imx708 { + + /* Rewrite common registers on stream on? */ + bool common_regs_written; ++ ++ /* Current long exposure factor in use. Set through V4L2_CID_VBLANK */ ++ unsigned int long_exp_shift; + }; + + static inline struct imx708 *to_imx708(struct v4l2_subdev *_sd) +@@ -994,7 +1001,8 @@ static int imx708_set_exposure(struct imx708 *imx708, unsigned int val) + * will automatically divide the medium and short ones by 4,16. + */ + ret = imx708_write_reg(imx708, IMX708_REG_EXPOSURE, +- IMX708_REG_VALUE_16BIT, val); ++ IMX708_REG_VALUE_16BIT, ++ val >> imx708->long_exp_shift); + + return ret; + } +@@ -1027,18 +1035,42 @@ static int imx708_set_analogue_gain(struct imx708 *imx708, unsigned int val) + return ret; + } + ++static int imx708_set_frame_length(struct imx708 *imx708, unsigned int val) ++{ ++ int ret = 0; ++ ++ imx708->long_exp_shift = 0; ++ ++ while (val > IMX708_FRAME_LENGTH_MAX) { ++ imx708->long_exp_shift++; ++ val >>= 1; ++ } ++ ++ ret = imx708_write_reg(imx708, IMX708_REG_FRAME_LENGTH, ++ IMX708_REG_VALUE_16BIT, val); ++ if (ret) ++ return ret; ++ ++ return imx708_write_reg(imx708, IMX708_LONG_EXP_SHIFT_REG, ++ IMX708_REG_VALUE_08BIT, imx708->long_exp_shift); ++} ++ + static void imx708_set_framing_limits(struct imx708 *imx708) + { + unsigned int hblank; + const struct imx708_mode *mode = imx708->mode; + ++ /* Default to no long exposure multiplier */ ++ imx708->long_exp_shift = 0; ++ + __v4l2_ctrl_modify_range(imx708->pixel_rate, + mode->pixel_rate, mode->pixel_rate, + 1, mode->pixel_rate); + + /* Update limits and set FPS to default */ + __v4l2_ctrl_modify_range(imx708->vblank, mode->vblank_min, +- IMX708_FRAME_LENGTH_MAX - mode->height, ++ ((1 << IMX708_LONG_EXP_SHIFT_MAX) * ++ IMX708_FRAME_LENGTH_MAX) - mode->height, + 1, mode->vblank_default); + + /* +@@ -1112,9 +1144,8 @@ static int imx708_set_ctrl(struct v4l2_ctrl *ctrl) + imx708->vflip->val << 1); + break; + case V4L2_CID_VBLANK: +- ret = imx708_write_reg(imx708, IMX708_REG_FRAME_LENGTH, +- IMX708_REG_VALUE_16BIT, +- imx708->mode->height + ctrl->val); ++ ret = imx708_set_frame_length(imx708, ++ imx708->mode->height + ctrl->val); + break; + case V4L2_CID_NOTIFY_GAINS: + ret = imx708_write_reg(imx708, IMX708_REG_COLOUR_BALANCE_BLUE, +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Plowman +Date: Tue, 10 Jan 2023 13:14:27 +0000 +Subject: [PATCH 563/590] drivers: media: i2c: imx708: Fix crop information + +The 1536x864 mode contained incorrect crop information. + +Signed-off-by: David Plowman +--- + drivers/media/i2c/imx708.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/media/i2c/imx708.c b/drivers/media/i2c/imx708.c +index ee80035462d7..7c76fa0c0dc9 100644 +--- a/drivers/media/i2c/imx708.c ++++ b/drivers/media/i2c/imx708.c +@@ -673,10 +673,10 @@ static const struct imx708_mode supported_modes_10bit_no_hdr[] = { + .height = 864, + .line_length_pix = 0x1460, + .crop = { +- .left = IMX708_PIXEL_ARRAY_LEFT, +- .top = IMX708_PIXEL_ARRAY_TOP, +- .width = 4608, +- .height = 2592, ++ .left = IMX708_PIXEL_ARRAY_LEFT + 768, ++ .top = IMX708_PIXEL_ARRAY_TOP + 432, ++ .width = 3072, ++ .height = 1728, + }, + .vblank_min = 40, + .vblank_default = 2755, +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 11 Jan 2023 10:06:12 +0000 +Subject: [PATCH 564/590] configs: Add DM_MULTIPATH=m + +"Allow volume managers to support multipath hardware." + +See: https://github.com/raspberrypi/linux/issues/4886 + +Signed-off-by: Phil Elwell +--- + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcm2711_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + arch/arm64/configs/bcm2711_defconfig | 1 + + arch/arm64/configs/bcmrpi3_defconfig | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index dd2c43e6a696..834bb97be30b 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -474,6 +474,7 @@ CONFIG_DM_MIRROR=m + CONFIG_DM_LOG_USERSPACE=m + CONFIG_DM_RAID=m + CONFIG_DM_ZERO=m ++CONFIG_DM_MULTIPATH=m + CONFIG_DM_DELAY=m + CONFIG_NETDEVICES=y + CONFIG_BONDING=m +diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig +index 40b2d104729d..96c447e31571 100644 +--- a/arch/arm/configs/bcm2711_defconfig ++++ b/arch/arm/configs/bcm2711_defconfig +@@ -486,6 +486,7 @@ CONFIG_DM_MIRROR=m + CONFIG_DM_LOG_USERSPACE=m + CONFIG_DM_RAID=m + CONFIG_DM_ZERO=m ++CONFIG_DM_MULTIPATH=m + CONFIG_DM_DELAY=m + CONFIG_NETDEVICES=y + CONFIG_BONDING=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index b556d98a476f..34e7ac7fe8ba 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -469,6 +469,7 @@ CONFIG_DM_MIRROR=m + CONFIG_DM_LOG_USERSPACE=m + CONFIG_DM_RAID=m + CONFIG_DM_ZERO=m ++CONFIG_DM_MULTIPATH=m + CONFIG_DM_DELAY=m + CONFIG_NETDEVICES=y + CONFIG_BONDING=m +diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig +index 47c350bffadc..ef84fc502977 100644 +--- a/arch/arm64/configs/bcm2711_defconfig ++++ b/arch/arm64/configs/bcm2711_defconfig +@@ -490,6 +490,7 @@ CONFIG_DM_MIRROR=m + CONFIG_DM_LOG_USERSPACE=m + CONFIG_DM_RAID=m + CONFIG_DM_ZERO=m ++CONFIG_DM_MULTIPATH=m + CONFIG_DM_DELAY=m + CONFIG_NETDEVICES=y + CONFIG_BONDING=m +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +index 051ccf171b25..affffde698bb 100644 +--- a/arch/arm64/configs/bcmrpi3_defconfig ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -471,6 +471,7 @@ CONFIG_DM_MIRROR=m + CONFIG_DM_LOG_USERSPACE=m + CONFIG_DM_RAID=m + CONFIG_DM_ZERO=m ++CONFIG_DM_MULTIPATH=m + CONFIG_DM_DELAY=m + CONFIG_NETDEVICES=y + CONFIG_BONDING=m +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Thu, 8 Dec 2022 17:21:00 +0000 +Subject: [PATCH 565/590] drm_probe_helper: Cancel previous job before starting + new one + +Currently we schedule a call to output_poll_execute from drm_kms_helper_poll_enable for 10s in future. +Later we try to replace that in drm_helper_probe_single_connector_modes with a 0s schedule with delayed_event set. + +But as there is already a job in the queue this fails, and the immediate job we wanted with delayed_event set +doesn't occur until 10s later. + +And that call acts as if connector state has changed, reprobing modes. +This has a side effect of waking up a display that has been blanked. + +Make sure we cancel the old job before submitting the immediate one. + +Signed-off-by: Dom Cobley +--- + drivers/gpu/drm/drm_probe_helper.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c +index 69b0b2b9cc1c..e248fb99e87a 100644 +--- a/drivers/gpu/drm/drm_probe_helper.c ++++ b/drivers/gpu/drm/drm_probe_helper.c +@@ -556,9 +556,11 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector, + * disable itself again. + */ + dev->mode_config.delayed_event = true; +- if (dev->mode_config.poll_enabled) ++ if (dev->mode_config.poll_enabled) { ++ cancel_delayed_work_sync(&dev->mode_config.output_poll_work); + schedule_delayed_work(&dev->mode_config.output_poll_work, + 0); ++ } + } + + /* Re-enable polling in case the global poll config changed. */ +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Wed, 11 Jan 2023 11:57:01 +0100 +Subject: [PATCH 566/590] drm/vc4: bo: Fix drmm_mutex_init memory hog + +Commit 374146cad469 ("drm/vc4: Switch to drmm_mutex_init") converted, +among other functions, vc4_create_object() to use drmm_mutex_init(). + +However, that function is used to allocate a BO, and therefore the +mutex needs to be freed much sooner than when the DRM device is removed +from the system. + +For each buffer allocation we thus end up allocating a small structure +as part of the DRM-managed mechanism that is never freed, eventually +leading us to no longer having any free memory anymore. + +Let's switch back to mutex_init/mutex_destroy to deal with it properly. + +Fixes: 374146cad469 ("drm/vc4: Switch to drmm_mutex_init") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_bo.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c +index 231add8b8e12..ce0ea446bd70 100644 +--- a/drivers/gpu/drm/vc4/vc4_bo.c ++++ b/drivers/gpu/drm/vc4/vc4_bo.c +@@ -179,6 +179,7 @@ static void vc4_bo_destroy(struct vc4_bo *bo) + bo->validated_shader = NULL; + } + ++ mutex_destroy(&bo->madv_lock); + drm_gem_dma_free(&bo->base); + } + +@@ -394,7 +395,6 @@ struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size) + { + struct vc4_dev *vc4 = to_vc4_dev(dev); + struct vc4_bo *bo; +- int ret; + + if (WARN_ON_ONCE(vc4->is_vc5)) + return ERR_PTR(-ENODEV); +@@ -406,9 +406,7 @@ struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size) + bo->madv = VC4_MADV_WILLNEED; + refcount_set(&bo->usecnt, 0); + +- ret = drmm_mutex_init(dev, &bo->madv_lock); +- if (ret) +- return ERR_PTR(ret); ++ mutex_init(&bo->madv_lock); + + mutex_lock(&vc4->bo_lock); + bo->label = VC4_BO_TYPE_KERNEL; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Mon, 14 Nov 2022 19:30:27 +0000 +Subject: [PATCH 567/590] drm/vc4: hdmi: Correct CSC setup for YCbCr4:4:4 + +The CSC requires the coefficients to be swapped around for +4:4:4 mode, but the swap was incorrectly defined. + +Correct the swap. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index 7d10cff07bce..ad7a7f067205 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -1326,12 +1326,12 @@ static void vc5_hdmi_set_csc_coeffs_swap(struct vc4_hdmi *vc4_hdmi, + lockdep_assert_held(&vc4_hdmi->hw_lock); + + /* YUV444 needs the CSC matrices using the channels in a different order */ +- HDMI_WRITE(HDMI_CSC_12_11, (coeffs[2][1] << 16) | coeffs[2][0]); +- HDMI_WRITE(HDMI_CSC_14_13, (coeffs[2][3] << 16) | coeffs[2][2]); +- HDMI_WRITE(HDMI_CSC_22_21, (coeffs[0][1] << 16) | coeffs[0][0]); +- HDMI_WRITE(HDMI_CSC_24_23, (coeffs[0][3] << 16) | coeffs[0][2]); +- HDMI_WRITE(HDMI_CSC_32_31, (coeffs[1][1] << 16) | coeffs[1][0]); +- HDMI_WRITE(HDMI_CSC_34_33, (coeffs[1][3] << 16) | coeffs[1][2]); ++ HDMI_WRITE(HDMI_CSC_12_11, (coeffs[1][1] << 16) | coeffs[1][0]); ++ HDMI_WRITE(HDMI_CSC_14_13, (coeffs[1][3] << 16) | coeffs[1][2]); ++ HDMI_WRITE(HDMI_CSC_22_21, (coeffs[2][1] << 16) | coeffs[2][0]); ++ HDMI_WRITE(HDMI_CSC_24_23, (coeffs[2][3] << 16) | coeffs[2][2]); ++ HDMI_WRITE(HDMI_CSC_32_31, (coeffs[0][1] << 16) | coeffs[0][0]); ++ HDMI_WRITE(HDMI_CSC_34_33, (coeffs[0][3] << 16) | coeffs[0][2]); + } + + static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Mon, 14 Nov 2022 19:32:10 +0000 +Subject: [PATCH 568/590] drm/vc4: hdmi: Add property to allow manual config of + RGB or YCbCr + +Add a custom property "Output format" that allows the overriding +of the default colourspace choice in the way that the old +firmware hdmi_pixel_encoding property did. If the chosen format is not +supported, then it will still drop back to the older behaviour. + +This won't be acceptable to upstream, but it adds back the missing +functionality of hdmi_pixel_encoding. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 60 ++++++++++++++++++++++++++++++++++ + drivers/gpu/drm/vc4/vc4_hdmi.h | 8 +++++ + 2 files changed, 68 insertions(+) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index ad7a7f067205..2e0461fbff0c 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -547,6 +547,7 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector, + + if (old_state->colorspace != new_state->colorspace || + old_vc4_state->broadcast_rgb != new_vc4_state->broadcast_rgb || ++ old_vc4_state->requested_output_format != new_vc4_state->requested_output_format || + !drm_connector_atomic_hdr_metadata_equal(old_state, new_state)) { + struct drm_crtc_state *crtc_state; + +@@ -581,6 +582,8 @@ int vc4_hdmi_connector_get_property(struct drm_connector *connector, + + if (property == vc4_hdmi->broadcast_rgb_property) { + *val = vc4_conn_state->broadcast_rgb; ++ } else if (property == vc4_hdmi->output_format_property) { ++ *val = vc4_conn_state->requested_output_format; + } else { + DRM_DEBUG_ATOMIC("Unknown property [PROP:%d:%s]\n", + property->base.id, property->name); +@@ -612,6 +615,9 @@ int vc4_hdmi_connector_set_property(struct drm_connector *connector, + if (property == vc4_hdmi->broadcast_rgb_property) { + vc4_conn_state->broadcast_rgb = val; + return 0; ++ } else if (property == vc4_hdmi->output_format_property) { ++ vc4_conn_state->requested_output_format = val; ++ return 0; + } + + DRM_DEBUG_ATOMIC("Unknown property [PROP:%d:%s]\n", +@@ -655,6 +661,7 @@ vc4_hdmi_connector_duplicate_state(struct drm_connector *connector) + new_state->tmds_char_rate = vc4_state->tmds_char_rate; + new_state->output_bpc = vc4_state->output_bpc; + new_state->output_format = vc4_state->output_format; ++ new_state->requested_output_format = vc4_state->requested_output_format; + new_state->broadcast_rgb = vc4_state->broadcast_rgb; + __drm_atomic_helper_connector_duplicate_state(connector, &new_state->base); + +@@ -702,6 +709,33 @@ vc4_hdmi_attach_broadcast_rgb_property(struct drm_device *dev, + drm_object_attach_property(&vc4_hdmi->connector.base, prop, 0); + } + ++static const struct drm_prop_enum_list output_format_names[] = { ++ { VC4_HDMI_OUTPUT_AUTO, "Automatic" }, ++ { VC4_HDMI_OUTPUT_RGB, "RGB" }, ++ { VC4_HDMI_OUTPUT_YUV422, "YCbCr 4:2:2" }, ++ { VC4_HDMI_OUTPUT_YUV444, "YCbCr 4:4:4" }, ++}; ++ ++static void ++vc4_hdmi_attach_output_format_property(struct drm_device *dev, ++ struct vc4_hdmi *vc4_hdmi) ++{ ++ struct drm_property *prop = vc4_hdmi->output_format_property; ++ ++ if (!prop) { ++ prop = drm_property_create_enum(dev, DRM_MODE_PROP_ENUM, ++ "Output format", ++ output_format_names, ++ ARRAY_SIZE(output_format_names)); ++ if (!prop) ++ return; ++ ++ vc4_hdmi->output_format_property = prop; ++ } ++ ++ drm_object_attach_property(&vc4_hdmi->connector.base, prop, 0); ++} ++ + static int vc4_hdmi_connector_init(struct drm_device *dev, + struct vc4_hdmi *vc4_hdmi) + { +@@ -749,6 +783,7 @@ static int vc4_hdmi_connector_init(struct drm_device *dev, + drm_connector_attach_hdr_output_metadata_property(connector); + + vc4_hdmi_attach_broadcast_rgb_property(dev, vc4_hdmi); ++ vc4_hdmi_attach_output_format_property(dev, vc4_hdmi); + + drm_connector_attach_encoder(connector, encoder); + +@@ -1886,6 +1921,11 @@ static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder, + vc4_hdmi->broadcast_rgb = vc4_state->broadcast_rgb; + vc4_hdmi->output_bpc = vc4_state->output_bpc; + vc4_hdmi->output_format = vc4_state->output_format; ++ vc4_hdmi->requested_output_format = vc4_state->requested_output_format; ++ vc4_hdmi->broadcast_rgb = vc4_state->broadcast_rgb; ++ memcpy(&vc4_hdmi->saved_adjusted_mode, ++ &crtc_state->adjusted_mode, ++ sizeof(vc4_hdmi->saved_adjusted_mode)); + mutex_unlock(&vc4_hdmi->mutex); + } + +@@ -2047,6 +2087,26 @@ vc4_hdmi_encoder_compute_format(const struct vc4_hdmi *vc4_hdmi, + const struct drm_display_info *info = &connector->display_info; + unsigned int format; + ++ if (vc4_state->requested_output_format != VC4_HDMI_OUTPUT_AUTO) { ++ drm_dbg(dev, "Trying with user requested output %u\n", ++ vc4_state->requested_output_format); ++ ++ format = vc4_state->requested_output_format; ++ if (vc4_hdmi_sink_supports_format_bpc(vc4_hdmi, info, mode, ++ format, bpc)) { ++ int ret; ++ ++ ret = vc4_hdmi_encoder_compute_clock(vc4_hdmi, vc4_state, ++ mode, bpc, format); ++ if (!ret) { ++ vc4_state->output_format = format; ++ return 0; ++ } ++ } ++ ++ return -EINVAL; ++ } ++ + drm_dbg(dev, "Trying with an RGB output\n"); + + format = VC4_HDMI_OUTPUT_RGB; +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h +index 268ce4122090..8d0bf52f55e7 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -111,6 +111,7 @@ struct vc4_hdmi_audio { + }; + + enum vc4_hdmi_output_format { ++ VC4_HDMI_OUTPUT_AUTO, + VC4_HDMI_OUTPUT_RGB, + VC4_HDMI_OUTPUT_YUV422, + VC4_HDMI_OUTPUT_YUV444, +@@ -130,6 +131,7 @@ struct vc4_hdmi { + struct delayed_work scrambling_work; + + struct drm_property *broadcast_rgb_property; ++ struct drm_property *output_format_property; + + struct i2c_adapter *ddc; + void __iomem *hdmicore_regs; +@@ -223,6 +225,11 @@ struct vc4_hdmi { + * for use outside of KMS hooks. Protected by @mutex. + */ + enum vc4_hdmi_output_format output_format; ++ /** ++ * @requested_output_format: Copy of @vc4_connector_state.requested_output_format ++ * for use outside of KMS hooks. Protected by @mutex. ++ */ ++ enum vc4_hdmi_output_format requested_output_format; + + /** + * @broadcast_rgb: Copy of @vc4_connector_state.broadcast_rgb +@@ -249,6 +256,7 @@ struct vc4_hdmi_connector_state { + unsigned long long tmds_char_rate; + unsigned int output_bpc; + enum vc4_hdmi_output_format output_format; ++ enum vc4_hdmi_output_format requested_output_format; + int broadcast_rgb; + }; + +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lukas Wunner +Date: Sat, 14 Jan 2023 10:03:46 +0100 +Subject: [PATCH 569/590] bcm2835-mmc: Honor return value of mmc_of_parse() + +bcm2835_mmc_probe() ignores errors returned by mmc_of_parse() and in +particular ignores -EPROBE_DEFER, which may be returned if the power +sequencing driver configured in the devicetree is compiled as a module. + +The user-visible result is that access to the SDIO device fails because +its power sequencing requirements have not been observed. Fix it. + +Signed-off-by: Lukas Wunner +--- + drivers/mmc/host/bcm2835-mmc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/mmc/host/bcm2835-mmc.c b/drivers/mmc/host/bcm2835-mmc.c +index 3c7b78a5e85f..7fdadf554991 100644 +--- a/drivers/mmc/host/bcm2835-mmc.c ++++ b/drivers/mmc/host/bcm2835-mmc.c +@@ -1474,7 +1474,9 @@ static int bcm2835_mmc_probe(struct platform_device *pdev) + } + + if (node) { +- mmc_of_parse(mmc); ++ ret = mmc_of_parse(mmc); ++ if (ret) ++ goto err; + + /* Read any custom properties */ + of_property_read_u32(node, +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 13 Jan 2023 14:32:45 +0000 +Subject: [PATCH 570/590] .github/workflows: Set warnings-as-errors for builds + +To avoid code with build warnings being introduced into the tree, force +CONFIG_WERROR=y in the build workflow. + +Signed-off-by: Phil Elwell +--- + .github/workflows/kernel-build.yml | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/.github/workflows/kernel-build.yml b/.github/workflows/kernel-build.yml +index 8e551dc4d0c5..5e446031c439 100644 +--- a/.github/workflows/kernel-build.yml ++++ b/.github/workflows/kernel-build.yml +@@ -38,6 +38,7 @@ jobs: + run: | + mkdir ${{github.workspace}}/build + make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2835_defconfig ++ scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y + make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image modules dtbs + mkdir -p ${{github.workspace}}/install/boot + make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +@@ -78,6 +79,7 @@ jobs: + run: | + mkdir ${{github.workspace}}/build + make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build defconfig ++ scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y + make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs + mkdir -p ${{github.workspace}}/install/boot + make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +@@ -118,6 +120,7 @@ jobs: + run: | + mkdir ${{github.workspace}}/build + make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2711_defconfig ++ scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y + make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs + mkdir -p ${{github.workspace}}/install/boot + make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +@@ -158,6 +161,7 @@ jobs: + run: | + mkdir ${{github.workspace}}/build + make ARCH=arm KERNEL=kernel7 CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2709_defconfig ++ scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y + make ARCH=arm KERNEL=kernel7 CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs + mkdir -p ${{github.workspace}}/install/boot + make ARCH=arm KERNEL=kernel7 CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +@@ -198,6 +202,7 @@ jobs: + run: | + mkdir ${{github.workspace}}/build + make ARCH=arm KERNEL=kernel7l CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2711_defconfig ++ scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y + make ARCH=arm KERNEL=kernel7l CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs + mkdir -p ${{github.workspace}}/install/boot + make ARCH=arm KERNEL=kernel7l CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +@@ -248,6 +253,7 @@ jobs: + run: | + mkdir ${{github.workspace}}/build + make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build bcm2711_defconfig ++ scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y + make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs + mkdir -p ${{github.workspace}}/install/boot + make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 17 Jan 2023 15:47:04 +0000 +Subject: [PATCH 571/590] overlays: i2c-sensor: Add mpu6050 and mpu9250 + +Add support for the MPU6050 and MPU9250 IMU sensors to the i2c-sensor +container overlay. At the same time, deprecate the standalone mpu6050 +overlay, but keep it around for now. + +(Also fix a few typos spotted while editing) + +See: https://github.com/raspberrypi/linux/issues/5325 + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/overlays/README | 26 ++++++----- + .../boot/dts/overlays/i2c-sensor-common.dtsi | 43 ++++++++++++++++++- + arch/arm/boot/dts/overlays/overlay_map.dts | 4 ++ + 3 files changed, 61 insertions(+), 12 deletions(-) + +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index 9b404673600c..79fe1f89bf16 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -1983,8 +1983,8 @@ Info: Adds support for a number of I2C barometric pressure, temperature, + Load: dtoverlay=i2c-sensor,= + Params: addr Set the address for the BH1750, BME280, BME680, + BMP280, CCS811, DS1621, HDC100X, JC42, LM75, +- MCP980x, MS5637, MS5803, MS5805, MS5837, MS8607, +- SHT3x or TMP102 ++ MCP980x, MPU6050, MPU9250, MS5637, MS5803, ++ MS5805, MS5837, MS8607, SHT3x or TMP102 + + aht10 Select the Aosong AHT10 temperature and humidity + sensor +@@ -2016,8 +2016,8 @@ Params: addr Set the address for the BH1750, BME280, BME680, + + htu21 Select the HTU21 temperature and humidity sensor + +- int_pin Set the GPIO to use for interrupts (max30102 +- only) ++ int_pin Set the GPIO to use for interrupts (max30102, ++ mpu6050 and mpu9250 only) + + jc42 Select any of the many JEDEC JC42.4-compliant + temperature sensors, including: +@@ -2045,6 +2045,12 @@ Params: addr Set the address for the BH1750, BME280, BME680, + use the "jc42" option. + Valid addresses are 0x18-0x1f (default 0x18) + ++ mpu6050 Select the InvenSense MPU6050 IMU. Valid ++ valid addresses are 0x68 and 0x69 (default 0x68) ++ ++ mpu9250 Select the InvenSense MPU9250 IMU. Valid ++ valid addresses are 0x68 and 0x69 (default 0x68) ++ + ms5637 Select the Measurement Specialities MS5637 + pressure and temperature sensor. + +@@ -2913,10 +2919,10 @@ Params: overclock_50 Clock (in MHz) to use when the MMC framework + + + Name: mpu6050 +-Info: Overlay for i2c connected mpu6050 imu +-Load: dtoverlay=mpu6050,= +-Params: interrupt GPIO pin for interrupt (default 4) +- addr I2C address of the device (default 0x68) ++Info: This overlay has been deprecated - use "dtoverlay=i2c-sensor,mpu6050" ++ instead. Note that "int_pin" is the new name for the "interrupt" ++ parameter. ++Load: + + + Name: mz61581 +@@ -3416,7 +3422,7 @@ Params: + + + Name: rpi-dac +-Info: This overlay has been renaamed to i2s-dac. ++Info: This overlay has been renamed to i2s-dac. + Load: + + +@@ -3546,7 +3552,7 @@ Params: poe_fan_temp0 Temperature (in millicelcius) at which the fan + + + Name: rpi-proto +-Info: This overlay has been renamaed to proto-codec. ++Info: This overlay has been renamed to proto-codec. + Load: + + +diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +index 6504c7578b9d..4b3519e4be52 100755 +--- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi ++++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +@@ -421,6 +421,40 @@ ms8607: ms8607@76 { + }; + }; + ++ fragment@28 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ mpu6050: mpu6050@68 { ++ compatible = "invensense,mpu6050"; ++ reg = <0x68>; ++ interrupt-parent = <&gpio>; ++ interrupts = <4 2>; ++ }; ++ }; ++ }; ++ ++ fragment@29 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ mpu9250: mpu9250@68 { ++ compatible = "invensense,mpu9250"; ++ reg = <0x68>; ++ interrupt-parent = <&gpio>; ++ interrupts = <4 2>; ++ }; ++ }; ++ }; ++ + __overrides__ { + bme280 = <0>,"+0"; + bmp085 = <0>,"+1"; +@@ -451,14 +485,19 @@ __overrides__ { + ms5805 = <0>,"+25"; + ms5837 = <0>,"+26"; + ms8607 = <0>,"+27"; ++ mpu6050 = <0>,"+28"; ++ mpu9250 = <0>,"+29"; + + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0", + <&ds1621>,"reg:0", <&bme680>,"reg:0", <&ccs811>,"reg:0", + <&bh1750>,"reg:0", <&mcp980x>,"reg:0", <&jc42>,"reg:0", + <&ms5637>,"reg:0", <&ms5803>,"reg:0", <&ms5805>,"reg:0", +- <&ms5837>,"reg:0", <&ms8607>,"reg:0"; +- int_pin = <&max30102>, "interrupts:0"; ++ <&ms5837>,"reg:0", <&ms8607>,"reg:0", ++ <&mpu6050>, "reg:0", <&mpu9250>, "reg:0"; ++ int_pin = <&max30102>, "interrupts:0", ++ <&mpu6050>, "interrupts:0", ++ <&mpu9250>, "interrupts:0"; + no_timeout = <&jc42>, "smbus-timeout-disable?"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/overlay_map.dts b/arch/arm/boot/dts/overlays/overlay_map.dts +index fda036488d41..f1d1e0cf30d2 100644 +--- a/arch/arm/boot/dts/overlays/overlay_map.dts ++++ b/arch/arm/boot/dts/overlays/overlay_map.dts +@@ -61,6 +61,10 @@ midi-uart5 { + bcm2711; + }; + ++ mpu6050 { ++ deprecated = "use i2c-sensor,mpu6050"; ++ }; ++ + pcie-32bit-dma { + bcm2711; + }; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 18 Jan 2023 09:34:31 +0000 +Subject: [PATCH 572/590] .github/workflows: Correct kernel builds artifacts + +Modify the kernel build workflow to create artifacts with the correct +names and structure, both as an example of what we expect and in case +anyone wants to use the output. + +Signed-off-by: Phil Elwell +--- + .github/workflows/kernel-build.yml | 76 ++++++++++++++++-------------- + 1 file changed, 41 insertions(+), 35 deletions(-) + +diff --git a/.github/workflows/kernel-build.yml b/.github/workflows/kernel-build.yml +index 5e446031c439..231fcc2a4601 100644 +--- a/.github/workflows/kernel-build.yml ++++ b/.github/workflows/kernel-build.yml +@@ -37,14 +37,15 @@ jobs: + - name: Build kernel + run: | + mkdir ${{github.workspace}}/build +- make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2835_defconfig ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2835_defconfig + scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image modules dtbs +- mkdir -p ${{github.workspace}}/install/boot ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs ++ mkdir -p ${{github.workspace}}/install/boot/overlays + make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install + cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp -r ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/Image ${{github.workspace}}/install/boot/ ++ cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel.img + + - name: Tar build + run: tar -cvf bcm2835_build.tar -C ${{github.workspace}}/install . +@@ -78,14 +79,15 @@ jobs: + - name: Build kernel + run: | + mkdir ${{github.workspace}}/build +- make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build defconfig ++ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build defconfig + scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs +- mkdir -p ${{github.workspace}}/install/boot +- make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install ++ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs ++ mkdir -p ${{github.workspace}}/install/boot/overlays ++ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install + cp ${{github.workspace}}/build/arch/arm64/boot/dts/broadcom/*.dtb ${{github.workspace}}/install/boot/ +- cp -r ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/ ++ cp ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/arch/arm64/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/kernel8.img + + - name: Tar build + run: tar -cvf arm64_build.tar -C ${{github.workspace}}/install . +@@ -119,14 +121,15 @@ jobs: + - name: Build kernel + run: | + mkdir ${{github.workspace}}/build +- make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2711_defconfig ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcmrpi_defconfig + scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs +- mkdir -p ${{github.workspace}}/install/boot +- make ARCH=arm KERNEL=kernel CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs ++ mkdir -p ${{github.workspace}}/install/boot/overlays ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install + cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp -r ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/ ++ cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel.img + + - name: Tar build + run: tar -cvf bcmrpi_build.tar -C ${{github.workspace}}/install . +@@ -160,14 +163,15 @@ jobs: + - name: Build kernel + run: | + mkdir ${{github.workspace}}/build +- make ARCH=arm KERNEL=kernel7 CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2709_defconfig ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2709_defconfig + scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm KERNEL=kernel7 CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs +- mkdir -p ${{github.workspace}}/install/boot +- make ARCH=arm KERNEL=kernel7 CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs ++ mkdir -p ${{github.workspace}}/install/boot/overlays ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install + cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp -r ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/ ++ cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel7.img + + - name: Tar build + run: tar -cvf bcm2709_build.tar -C ${{github.workspace}}/install . +@@ -201,14 +205,15 @@ jobs: + - name: Build kernel + run: | + mkdir ${{github.workspace}}/build +- make ARCH=arm KERNEL=kernel7l CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2711_defconfig ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2711_defconfig + scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm KERNEL=kernel7l CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs +- mkdir -p ${{github.workspace}}/install/boot +- make ARCH=arm KERNEL=kernel7l CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs ++ mkdir -p ${{github.workspace}}/install/boot/overlays ++ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install + cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp -r ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/ ++ cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel7l.img + + - name: Tar build + run: tar -cvf bcm2711_build.tar -C ${{github.workspace}}/install . +@@ -252,14 +257,15 @@ jobs: + - name: Build kernel + run: | + mkdir ${{github.workspace}}/build +- make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build bcm2711_defconfig ++ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build bcm2711_defconfig + scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs +- mkdir -p ${{github.workspace}}/install/boot +- make ARCH=arm64 KERNEL=kernel8 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install ++ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs ++ mkdir -p ${{github.workspace}}/install/boot/overlays ++ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install + cp ${{github.workspace}}/build/arch/arm64/boot/dts/broadcom/*.dtb ${{github.workspace}}/install/boot/ +- cp -r ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/ ++ cp ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/arch/arm64/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/kernel8.img + + - name: Tar build + run: tar -cvf bcm2711_arm64_build.tar -C ${{github.workspace}}/install . +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: PolarStarWalker +Date: Mon, 2 Jan 2023 02:17:20 +0300 +Subject: [PATCH 573/590] configs: Enable BNO055 IMU sensor + +Signed-off-by: PolarStarWalker +--- + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcm2711_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + arch/arm64/configs/bcm2711_defconfig | 1 + + arch/arm64/configs/bcmrpi3_defconfig | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index 834bb97be30b..df8abb56eabe 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -1391,6 +1391,7 @@ CONFIG_MAX30102=m + CONFIG_DHT11=m + CONFIG_HDC100X=m + CONFIG_HTU21=m ++CONFIG_BOSCH_BNO055_I2C=m + CONFIG_INV_MPU6050_I2C=m + CONFIG_APDS9960=m + CONFIG_BH1750=m +diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig +index 96c447e31571..99a12e0da4d8 100644 +--- a/arch/arm/configs/bcm2711_defconfig ++++ b/arch/arm/configs/bcm2711_defconfig +@@ -1415,6 +1415,7 @@ CONFIG_MAX30102=m + CONFIG_DHT11=m + CONFIG_HDC100X=m + CONFIG_HTU21=m ++CONFIG_BOSCH_BNO055_I2C=m + CONFIG_INV_MPU6050_I2C=m + CONFIG_APDS9960=m + CONFIG_BH1750=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 34e7ac7fe8ba..ddb488d71c9f 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -1384,6 +1384,7 @@ CONFIG_MAX30102=m + CONFIG_DHT11=m + CONFIG_HDC100X=m + CONFIG_HTU21=m ++CONFIG_BOSCH_BNO055_I2C=m + CONFIG_INV_MPU6050_I2C=m + CONFIG_APDS9960=m + CONFIG_BH1750=m +diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig +index ef84fc502977..a12e836a00ad 100644 +--- a/arch/arm64/configs/bcm2711_defconfig ++++ b/arch/arm64/configs/bcm2711_defconfig +@@ -1430,6 +1430,7 @@ CONFIG_MAX30102=m + CONFIG_DHT11=m + CONFIG_HDC100X=m + CONFIG_HTU21=m ++CONFIG_BOSCH_BNO055_I2C=m + CONFIG_INV_MPU6050_I2C=m + CONFIG_APDS9960=m + CONFIG_BH1750=m +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +index affffde698bb..5ded73782d58 100644 +--- a/arch/arm64/configs/bcmrpi3_defconfig ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -1329,6 +1329,7 @@ CONFIG_MAX30102=m + CONFIG_DHT11=m + CONFIG_HDC100X=m + CONFIG_HTU21=m ++CONFIG_BOSCH_BNO055_I2C=m + CONFIG_INV_MPU6050_I2C=m + CONFIG_APDS9960=m + CONFIG_BH1750=m +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 18 Jan 2023 16:37:01 +0000 +Subject: [PATCH 574/590] overlays: i2c-sensor: Use TABs for indentation + +A whitespace-only change replacing groups of 8 spaces with TABs. + +Signed-off-by: Phil Elwell +--- + .../boot/dts/overlays/i2c-sensor-common.dtsi | 34 +++++++++---------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +index 4b3519e4be52..564746f0341c 100755 +--- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi ++++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +@@ -427,14 +427,14 @@ __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; +- clock-frequency = <400000>; +- +- mpu6050: mpu6050@68 { +- compatible = "invensense,mpu6050"; +- reg = <0x68>; +- interrupt-parent = <&gpio>; +- interrupts = <4 2>; +- }; ++ clock-frequency = <400000>; ++ ++ mpu6050: mpu6050@68 { ++ compatible = "invensense,mpu6050"; ++ reg = <0x68>; ++ interrupt-parent = <&gpio>; ++ interrupts = <4 2>; ++ }; + }; + }; + +@@ -444,14 +444,14 @@ __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; +- clock-frequency = <400000>; +- +- mpu9250: mpu9250@68 { +- compatible = "invensense,mpu9250"; +- reg = <0x68>; +- interrupt-parent = <&gpio>; +- interrupts = <4 2>; +- }; ++ clock-frequency = <400000>; ++ ++ mpu9250: mpu9250@68 { ++ compatible = "invensense,mpu9250"; ++ reg = <0x68>; ++ interrupt-parent = <&gpio>; ++ interrupts = <4 2>; ++ }; + }; + }; + +@@ -488,7 +488,7 @@ __overrides__ { + mpu6050 = <0>,"+28"; + mpu9250 = <0>,"+29"; + +- addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", ++ addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0", + <&ds1621>,"reg:0", <&bme680>,"reg:0", <&ccs811>,"reg:0", + <&bh1750>,"reg:0", <&mcp980x>,"reg:0", <&jc42>,"reg:0", +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: PolarStarWalker +Date: Mon, 2 Jan 2023 02:13:27 +0300 +Subject: [PATCH 575/590] overlays: i2c-sensor: Add BNO055 IMU sensor + +Add support for the Bosch BNO055 9-dof IMU sensor. + +Signed-off-by: PolarStarWalker +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/overlays/README | 6 ++++ + .../boot/dts/overlays/i2c-sensor-common.dtsi | 28 ++++++++++++++++++- + 2 files changed, 33 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index 79fe1f89bf16..c3e264b8bbd3 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -2005,6 +2005,9 @@ Params: addr Set the address for the BH1750, BME280, BME680, + bmp280 Select the Bosch Sensortronic BMP280 + Valid addresses 0x76-0x77, default 0x76 + ++ bno055 Select the Bosch Sensortronic BNO055 IMU ++ Valid address 0x28-0x29, default 0x29 ++ + ccs811 Select the AMS CCS811 digital gas sensor + Valid addresses 0x5a-0x5b, default 0x5b + +@@ -2071,6 +2074,9 @@ Params: addr Set the address for the BH1750, BME280, BME680, + incompatible device can stop it from being + activated. + ++ reset_pin GPIO to be used to reset the device (bno055 ++ only, disabled by default) ++ + sht3x Select the Sensiron SHT3x temperature and + humidity sensor. Valid addresses 0x44-0x45, + default 0x44 +diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +index 564746f0341c..d97cbf4b8547 100755 +--- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi ++++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +@@ -2,6 +2,8 @@ + /dts-v1/; + /plugin/; + ++#include ++ + / { + compatible = "brcm,bcm2835"; + +@@ -455,6 +457,27 @@ mpu9250: mpu9250@68 { + }; + }; + ++ fragment@30 { ++ target = <&bno055>; ++ __dormant__ { ++ reset-gpios = <&gpio 5 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++ ++ fragment@31 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ bno055: bno055@29 { ++ compatible = "bosch,bno055"; ++ reg = <0x29>; ++ }; ++ }; ++ }; ++ + __overrides__ { + bme280 = <0>,"+0"; + bmp085 = <0>,"+1"; +@@ -487,6 +510,7 @@ __overrides__ { + ms8607 = <0>,"+27"; + mpu6050 = <0>,"+28"; + mpu9250 = <0>,"+29"; ++ bno055 = <0>,"+31"; + + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0", +@@ -494,10 +518,12 @@ __overrides__ { + <&bh1750>,"reg:0", <&mcp980x>,"reg:0", <&jc42>,"reg:0", + <&ms5637>,"reg:0", <&ms5803>,"reg:0", <&ms5805>,"reg:0", + <&ms5837>,"reg:0", <&ms8607>,"reg:0", +- <&mpu6050>, "reg:0", <&mpu9250>, "reg:0"; ++ <&mpu6050>,"reg:0", <&mpu9250>,"reg:0", ++ <&bno055>,"reg:0"; + int_pin = <&max30102>, "interrupts:0", + <&mpu6050>, "interrupts:0", + <&mpu9250>, "interrupts:0"; + no_timeout = <&jc42>, "smbus-timeout-disable?"; ++ reset_pin = <&bno055>,"reset-gpios:4", <0>,"+30"; + }; + }; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Thu, 19 Jan 2023 19:51:49 +0000 +Subject: [PATCH 576/590] dtoverlay: Update vc4-kms-dpi-generic for changed + mediabus formats + +Several of the media bus formats aren't merged upstream yet, +therefore the values change when upstream does introduce +new formats. + +As vc4-kms-dpi-generic references the media bus formats explicitly +by number, update it to match. + +Signed-off-by: Dave Stevenson +--- + arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts +index 85875c266296..8b006fcd9e58 100644 +--- a/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts ++++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts +@@ -65,10 +65,10 @@ __overrides__ { + + rgb565 = <&panel_generic>, "bus-format:0=0x1017", + <&dpi_node_generic>, "pinctrl-0:0=",<&dpi_16bit_gpio0>; +- rgb565-padhi = <&panel_generic>, "bus-format:0=0x1020", ++ rgb565-padhi = <&panel_generic>, "bus-format:0=0x1022", + <&dpi_node_generic>, "pinctrl-0:0=",<&dpi_16bit_cpadhi_gpio0>; +- bgr666 = <&panel_generic>, "bus-format:0=0x101f"; +- bgr666-padhi = <&panel_generic>, "bus-format:0=0x101e", ++ bgr666 = <&panel_generic>, "bus-format:0=0x1023"; ++ bgr666-padhi = <&panel_generic>, "bus-format:0=0x1024", + <&dpi_node_generic>, "pinctrl-0:0=",<&dpi_18bit_cpadhi_gpio0>; + rgb666-padhi = <&panel_generic>, "bus-format:0=0x1015", + <&dpi_node_generic>, "pinctrl-0:0=",<&dpi_18bit_cpadhi_gpio0>; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 16 Dec 2021 14:54:54 +0100 +Subject: [PATCH 577/590] drm/vc4: hvs: Defer dlist slots deallocation + +During normal operations, the cursor position update is done through an +asynchronous plane update, which on the vc4 driver basically just +modifies the right dlist word to move the plane to the new coordinates. + +However, when we have the overscan margins setup, we fall back to a +regular commit when we are next to the edges. And since that commit +happens to be on a cursor plane, it's considered a legacy cursor update +by KMS. + +The main difference it makes is that it won't wait for its completion +(ie, next vblank) before returning. This means if we have multiple +commits happening in rapid succession, we can have several of them +happening before the next vblank. + +In parallel, our dlist allocation is tied to a CRTC state, and each time +we do a commit we end up with a new CRTC state, with the previous one +being freed. This means that we free our previous dlist entry (but don't +clear it though) every time a new one is being committed. + +Now, if we were to have two commits happening before the next vblank, we +could end up freeing reusing the same dlist entries before the next +vblank. + +Indeed, we would start from an initial state taking, for example, the +dlist entries 10 to 20, then start a commit taking the entries 20 to 30 +and setting the dlist pointer to 20, and freeing the dlist entries 10 to +20. However, since we haven't reach vblank yet, the HVS is still using +the entries 10 to 20. + +If we were to make a new commit now, chances are the allocator are going +to give the 10 to 20 entries back, and we would change their content to +match the new state. If vblank hasn't happened yet, we just corrupted +the active dlist entries. + +A first attempt to solve this was made by creating an intermediate dlist +buffer to store the current (ie, as of the last commit) dlist content, +that we would update each time the HVS is done with a frame. However, if +the interrupt handler missed the vblank window, we would end up copying +our intermediate dlist to the hardware one during the composition, +essentially creating the same issue. + +Since making sure that our interrupt handler runs within a fixed, +constrained, time window would require to make Linux a real-time kernel, +this seems a bit out of scope. + +Instead, we can work around our original issue by keeping the dlist +slots allocation longer. That way, we won't reuse a dlist slot while +it's still in flight. In order to achieve this, instead of freeing the +dlist slot when its associated CRTC state is destroyed, we'll queue it +in a list. + +A naive implementation would free the buffers in that queue when we get +our end of frame interrupt. However, there's still a race since, just +like in the shadow dlist case, we don't control when the handler for +that interrupt is going to run. Thus, we can end up with a commit adding +an old dlist allocation to our queue during the window between our +actual interrupt and when our handler will run. And since that buffer is +still being used for the composition of the current frame, we can't free +it right away, exposing us to the original bug. + +Fortunately for us, the hardware provides a frame counter that is +increased each time the first line of a frame is being generated. +Associating the frame counter the image is supposed to go away to the +allocation, and then only deallocate buffers that have a counter below +or equal to the one we see when the deallocation code should prevent the +above race from occuring. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_crtc.c | 10 +- + drivers/gpu/drm/vc4/vc4_drv.h | 15 ++- + drivers/gpu/drm/vc4/vc4_hvs.c | 184 ++++++++++++++++++++++++++++++--- + 3 files changed, 186 insertions(+), 23 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c +index dd8b442d266e..882006fe4695 100644 +--- a/drivers/gpu/drm/vc4/vc4_crtc.c ++++ b/drivers/gpu/drm/vc4/vc4_crtc.c +@@ -1096,14 +1096,8 @@ void vc4_crtc_destroy_state(struct drm_crtc *crtc, + struct vc4_dev *vc4 = to_vc4_dev(crtc->dev); + struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(state); + +- if (drm_mm_node_allocated(&vc4_state->mm)) { +- unsigned long flags; +- +- spin_lock_irqsave(&vc4->hvs->mm_lock, flags); +- drm_mm_remove_node(&vc4_state->mm); +- spin_unlock_irqrestore(&vc4->hvs->mm_lock, flags); +- +- } ++ vc4_hvs_mark_dlist_entry_stale(vc4->hvs, vc4_state->mm); ++ vc4_state->mm = NULL; + + drm_atomic_helper_crtc_destroy_state(crtc, state); + } +diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h +index b905acd33f10..c3057bda6ade 100644 +--- a/drivers/gpu/drm/vc4/vc4_drv.h ++++ b/drivers/gpu/drm/vc4/vc4_drv.h +@@ -346,6 +346,9 @@ struct vc4_hvs { + struct drm_mm lbm_mm; + spinlock_t mm_lock; + ++ struct list_head stale_dlist_entries; ++ struct work_struct free_dlist_work; ++ + struct drm_mm_node mitchell_netravali_filter; + + struct debugfs_regset32 regset; +@@ -648,10 +651,16 @@ struct drm_connector *vc4_get_crtc_connector(struct drm_crtc *crtc, + struct drm_encoder *vc4_get_crtc_encoder(struct drm_crtc *crtc, + struct drm_crtc_state *state); + ++struct vc4_hvs_dlist_allocation { ++ struct list_head node; ++ struct drm_mm_node mm_node; ++ unsigned int channel; ++ u8 target_frame_count; ++}; ++ + struct vc4_crtc_state { + struct drm_crtc_state base; +- /* Dlist area for this CRTC configuration. */ +- struct drm_mm_node mm; ++ struct vc4_hvs_dlist_allocation *mm; + bool txp_armed; + unsigned int assigned_channel; + +@@ -1077,6 +1086,8 @@ struct vc4_hvs *__vc4_hvs_alloc(struct vc4_dev *vc4, struct platform_device *pde + void vc4_hvs_stop_channel(struct vc4_hvs *hvs, unsigned int output); + int vc4_hvs_get_fifo_from_output(struct vc4_hvs *hvs, unsigned int output); + u8 vc4_hvs_get_fifo_frame_count(struct vc4_hvs *hvs, unsigned int fifo); ++void vc4_hvs_mark_dlist_entry_stale(struct vc4_hvs *hvs, ++ struct vc4_hvs_dlist_allocation *alloc); + int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state); + void vc4_hvs_atomic_begin(struct drm_crtc *crtc, struct drm_atomic_state *state); + void vc4_hvs_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *state); +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index c228d68c8a47..bcb02f448144 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -412,6 +412,152 @@ static void vc5_hvs_update_gamma_lut(struct vc4_hvs *hvs, + vc5_hvs_lut_load(hvs, vc4_crtc); + } + ++static void vc4_hvs_irq_enable_eof(const struct vc4_hvs *hvs, ++ unsigned int channel) ++{ ++ struct vc4_dev *vc4 = hvs->vc4; ++ u32 irq_mask = vc4->is_vc5 ? ++ SCALER5_DISPCTRL_DSPEIEOF(channel) : ++ SCALER_DISPCTRL_DSPEIEOF(channel); ++ ++ HVS_WRITE(SCALER_DISPCTRL, ++ HVS_READ(SCALER_DISPCTRL) | irq_mask); ++} ++ ++static void vc4_hvs_irq_clear_eof(const struct vc4_hvs *hvs, ++ unsigned int channel) ++{ ++ struct vc4_dev *vc4 = hvs->vc4; ++ u32 irq_mask = vc4->is_vc5 ? ++ SCALER5_DISPCTRL_DSPEIEOF(channel) : ++ SCALER_DISPCTRL_DSPEIEOF(channel); ++ ++ HVS_WRITE(SCALER_DISPCTRL, ++ HVS_READ(SCALER_DISPCTRL) & ~irq_mask); ++} ++ ++static struct vc4_hvs_dlist_allocation * ++vc4_hvs_alloc_dlist_entry(struct vc4_hvs *hvs, ++ unsigned int channel, ++ size_t dlist_count) ++{ ++ struct vc4_hvs_dlist_allocation *alloc; ++ unsigned long flags; ++ int ret; ++ ++ if (channel == VC4_HVS_CHANNEL_DISABLED) ++ return NULL; ++ ++ alloc = kzalloc(sizeof(*alloc), GFP_KERNEL); ++ if (!alloc) ++ return ERR_PTR(-ENOMEM); ++ ++ spin_lock_irqsave(&hvs->mm_lock, flags); ++ ret = drm_mm_insert_node(&hvs->dlist_mm, &alloc->mm_node, ++ dlist_count); ++ spin_unlock_irqrestore(&hvs->mm_lock, flags); ++ if (ret) ++ return ERR_PTR(ret); ++ ++ alloc->channel = channel; ++ ++ return alloc; ++} ++ ++void vc4_hvs_mark_dlist_entry_stale(struct vc4_hvs *hvs, ++ struct vc4_hvs_dlist_allocation *alloc) ++{ ++ unsigned long flags; ++ u8 frcnt; ++ ++ if (!alloc) ++ return; ++ ++ if (!drm_mm_node_allocated(&alloc->mm_node)) ++ return; ++ ++ frcnt = vc4_hvs_get_fifo_frame_count(hvs, alloc->channel); ++ alloc->target_frame_count = (frcnt + 1) & ((1 << 6) - 1); ++ ++ spin_lock_irqsave(&hvs->mm_lock, flags); ++ ++ list_add_tail(&alloc->node, &hvs->stale_dlist_entries); ++ ++ HVS_WRITE(SCALER_DISPSTAT, SCALER_DISPSTAT_EOF(alloc->channel)); ++ vc4_hvs_irq_enable_eof(hvs, alloc->channel); ++ ++ spin_unlock_irqrestore(&hvs->mm_lock, flags); ++} ++ ++static void vc4_hvs_schedule_dlist_sweep(struct vc4_hvs *hvs, ++ unsigned int channel) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&hvs->mm_lock, flags); ++ ++ if (!list_empty(&hvs->stale_dlist_entries)) ++ queue_work(system_unbound_wq, &hvs->free_dlist_work); ++ ++ vc4_hvs_irq_clear_eof(hvs, channel); ++ ++ spin_unlock_irqrestore(&hvs->mm_lock, flags); ++} ++ ++/* ++ * Frame counts are essentially sequence numbers over 6 bits, and we ++ * thus can use sequence number arithmetic and follow the RFC1982 to ++ * implement proper comparison between them. ++ */ ++static bool vc4_hvs_frcnt_lte(u8 cnt1, u8 cnt2) ++{ ++ return (s8)((cnt1 << 2) - (cnt2 << 2)) <= 0; ++} ++ ++/* ++ * Some atomic commits (legacy cursor updates, mostly) will not wait for ++ * the next vblank and will just return once the commit has been pushed ++ * to the hardware. ++ * ++ * On the hardware side, our HVS stores the planes parameters in its ++ * context RAM, and will use part of the RAM to store data during the ++ * frame rendering. ++ * ++ * This interacts badly if we get multiple commits before the next ++ * vblank since we could end up overwriting the DLIST entries used by ++ * previous commits if our dlist allocation reuses that entry. In such a ++ * case, we would overwrite the data currently being used by the ++ * hardware, resulting in a corrupted frame. ++ * ++ * In order to work around this, we'll queue the dlist entries in a list ++ * once the associated CRTC state is destroyed. The HVS only allows us ++ * to know which entry is being active, but not which one are no longer ++ * being used, so in order to avoid freeing entries that are still used ++ * by the hardware we add a guesstimate of the frame count where our ++ * entry will no longer be used, and thus will only free those entries ++ * when we will have reached that frame count. ++ */ ++static void vc4_hvs_dlist_free_work(struct work_struct *work) ++{ ++ struct vc4_hvs *hvs = container_of(work, struct vc4_hvs, free_dlist_work); ++ struct vc4_hvs_dlist_allocation *cur, *next; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&hvs->mm_lock, flags); ++ list_for_each_entry_safe(cur, next, &hvs->stale_dlist_entries, node) { ++ u8 frcnt; ++ ++ frcnt = vc4_hvs_get_fifo_frame_count(hvs, cur->channel); ++ if (!vc4_hvs_frcnt_lte(cur->target_frame_count, frcnt)) ++ continue; ++ ++ list_del(&cur->node); ++ drm_mm_remove_node(&cur->mm_node); ++ kfree(cur); ++ } ++ spin_unlock_irqrestore(&hvs->mm_lock, flags); ++} ++ + u8 vc4_hvs_get_fifo_frame_count(struct vc4_hvs *hvs, unsigned int fifo) + { + struct drm_device *drm = &hvs->vc4->base; +@@ -643,13 +789,12 @@ int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state) + { + struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc); + struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc_state); ++ struct vc4_hvs_dlist_allocation *alloc; + struct drm_device *dev = crtc->dev; + struct vc4_dev *vc4 = to_vc4_dev(dev); + struct drm_plane *plane; +- unsigned long flags; + const struct drm_plane_state *plane_state; + u32 dlist_count = 0; +- int ret; + + /* The pixelvalve can only feed one encoder (and encoders are + * 1:1 with connectors.) +@@ -662,12 +807,11 @@ int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state) + + dlist_count++; /* Account for SCALER_CTL0_END. */ + +- spin_lock_irqsave(&vc4->hvs->mm_lock, flags); +- ret = drm_mm_insert_node(&vc4->hvs->dlist_mm, &vc4_state->mm, +- dlist_count); +- spin_unlock_irqrestore(&vc4->hvs->mm_lock, flags); +- if (ret) +- return ret; ++ alloc = vc4_hvs_alloc_dlist_entry(vc4->hvs, vc4_state->assigned_channel, dlist_count); ++ if (IS_ERR(alloc)) ++ return PTR_ERR(alloc); ++ ++ vc4_state->mm = alloc; + + return vc4_hvs_gamma_check(crtc, state); + } +@@ -683,8 +827,9 @@ static void vc4_hvs_install_dlist(struct drm_crtc *crtc) + if (!drm_dev_enter(dev, &idx)) + return; + ++ WARN_ON(!vc4_state->mm); + HVS_WRITE(SCALER_DISPLISTX(vc4_state->assigned_channel), +- vc4_state->mm.start); ++ vc4_state->mm->mm_node.start); + + drm_dev_exit(idx); + } +@@ -711,8 +856,10 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc) + spin_unlock_irqrestore(&dev->event_lock, flags); + } + ++ WARN_ON(!vc4_state->mm); ++ + spin_lock_irqsave(&vc4_crtc->irq_lock, flags); +- vc4_crtc->current_dlist = vc4_state->mm.start; ++ vc4_crtc->current_dlist = vc4_state->mm->mm_node.start; + spin_unlock_irqrestore(&vc4_crtc->irq_lock, flags); + } + +@@ -769,8 +916,7 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc, + struct vc4_plane_state *vc4_plane_state; + bool debug_dump_regs = false; + bool enable_bg_fill = false; +- u32 __iomem *dlist_start = vc4->hvs->dlist + vc4_state->mm.start; +- u32 __iomem *dlist_next = dlist_start; ++ u32 __iomem *dlist_start, *dlist_next; + unsigned int zpos = 0; + bool found = false; + int idx; +@@ -788,6 +934,9 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc, + vc4_hvs_dump_state(hvs); + } + ++ dlist_start = vc4->hvs->dlist + vc4_state->mm->mm_node.start; ++ dlist_next = dlist_start; ++ + /* Copy all the active planes' dlist contents to the hardware dlist. */ + do { + found = false; +@@ -821,7 +970,8 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc, + writel(SCALER_CTL0_END, dlist_next); + dlist_next++; + +- WARN_ON_ONCE(dlist_next - dlist_start != vc4_state->mm.size); ++ WARN_ON(!vc4_state->mm); ++ WARN_ON_ONCE(dlist_next - dlist_start != vc4_state->mm->mm_node.size); + + if (enable_bg_fill) + /* This sets a black background color fill, as is the case +@@ -960,6 +1110,11 @@ static irqreturn_t vc4_hvs_irq_handler(int irq, void *data) + + irqret = IRQ_HANDLED; + } ++ ++ if (status & SCALER_DISPSTAT_EOF(channel)) { ++ vc4_hvs_schedule_dlist_sweep(hvs, channel); ++ irqret = IRQ_HANDLED; ++ } + } + + /* Clear every per-channel interrupt flag. */ +@@ -1024,6 +1179,9 @@ struct vc4_hvs *__vc4_hvs_alloc(struct vc4_dev *vc4, struct platform_device *pde + + spin_lock_init(&hvs->mm_lock); + ++ INIT_LIST_HEAD(&hvs->stale_dlist_entries); ++ INIT_WORK(&hvs->free_dlist_work, vc4_hvs_dlist_free_work); ++ + /* Set up the HVS display list memory manager. We never + * overwrite the setup from the bootloader (just 128b out of + * our 16K), since we don't want to scramble the screen when +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Wed, 11 Jan 2023 17:30:58 +0000 +Subject: [PATCH 578/590] vc4/hdmi: Always enable GCP with AVMUTE cleared + +See: https://forum.libreelec.tv/thread/24780-le-10-0-1-rpi4-no-picture-after-update-from-le-10-0-0 + +Issue is some displays go blank at the point of firmware to kms handover. +Plugging/unplugging hdmi cable, power cycling display, or switching standby off/on +typically resolve this case. + +Finally managed to find a display that suffers from this, and track down the issue. + +The firmware uses AVMUTE in normal operation. It will set AVMUTE before disabling hdmi +clocks and phy. It will clear AVMUTE after clocks and phy are set up for a new hdmi mode. + +But with the hdmi handover from firmware to kms, AVMUTE will be set by firmware. + +kms driver typically has no GCP packet (except for deep colour modes). +The spec isn't clear on whether to consider the AVMUTE as continuing indefinitely +in the absense of a GCP packet, or to consider that state to have ended. + +Most displays behave as we want, but there are a number (from mutiple manufacturers) +which need to see AVMUTE cleared before displaying a picture. + +Lets just always enable GCP packet with AVMUTE cleared. That resolves the issue on +problematic displays. + +From HDMI 1.4 spec: +A CD field of zero (Color Depth not indicated) shall be used whenever the Sink does +not indicate support for Deep Color. This value may also be used in Deep Color mode +to transmit a GCP indicating only non-Deep Color information (e.g. AVMUTE). + +So use CD=0 where we were previously not enabling a GCP. + +Signed-off-by: Dom Cobley +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index 2e0461fbff0c..2a26a8fd7c47 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -107,6 +107,10 @@ + #define VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_1_SHIFT 8 + #define VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_1_MASK VC4_MASK(15, 8) + ++#define VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_0_MASK VC4_MASK(7, 0) ++#define VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_0_SET_AVMUTE BIT(0) ++#define VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_0_CLEAR_AVMUTE BIT(4) ++ + # define VC4_HD_M_SW_RST BIT(2) + # define VC4_HD_M_ENABLE BIT(0) + +@@ -1550,7 +1554,6 @@ static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + VC4_HDMI_VERTB_VBP)); + unsigned long flags; + unsigned char gcp; +- bool gcp_en; + u32 reg; + int idx; + +@@ -1585,16 +1588,13 @@ static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + switch (vc4_state->output_bpc) { + case 12: + gcp = 6; +- gcp_en = true; + break; + case 10: + gcp = 5; +- gcp_en = true; + break; + case 8: + default: +- gcp = 4; +- gcp_en = false; ++ gcp = 0; + break; + } + +@@ -1603,8 +1603,7 @@ static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + * doesn't signal in GCP. + */ + if (vc4_state->output_format == VC4_HDMI_OUTPUT_YUV422) { +- gcp = 4; +- gcp_en = false; ++ gcp = 0; + } + + reg = HDMI_READ(HDMI_DEEP_COLOR_CONFIG_1); +@@ -1617,11 +1616,12 @@ static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + reg = HDMI_READ(HDMI_GCP_WORD_1); + reg &= ~VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_1_MASK; + reg |= VC4_SET_FIELD(gcp, VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_1); ++ reg &= ~VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_0_MASK; ++ reg |= VC5_HDMI_GCP_WORD_1_GCP_SUBPACKET_BYTE_0_CLEAR_AVMUTE; + HDMI_WRITE(HDMI_GCP_WORD_1, reg); + + reg = HDMI_READ(HDMI_GCP_CONFIG); +- reg &= ~VC5_HDMI_GCP_CONFIG_GCP_ENABLE; +- reg |= gcp_en ? VC5_HDMI_GCP_CONFIG_GCP_ENABLE : 0; ++ reg |= VC5_HDMI_GCP_CONFIG_GCP_ENABLE; + HDMI_WRITE(HDMI_GCP_CONFIG, reg); + + reg = HDMI_READ(HDMI_MISC_CONTROL); +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: John Cox +Date: Thu, 19 Jan 2023 16:46:32 +0000 +Subject: [PATCH 579/590] media: bcm2835-v4l2-codec: Enable selection ioctl for + ISP + +The ISP cases do nothing. Remove the break that separates them from the +deinterlace case so they now do the same as deinterlace. This enables +simple width & height setting, but does not enable setting left and +top coordinates. + +Signed-off-by: John Cox +--- + .../staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +index 3fec9d2306fb..462a5f8644da 100644 +--- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c ++++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +@@ -1857,7 +1857,6 @@ static int vidioc_g_selection(struct file *file, void *priv, + } + break; + case ISP: +- break; + case DEINTERLACE: + if (s->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { + switch (s->target) { +@@ -1981,7 +1980,6 @@ static int vidioc_s_selection(struct file *file, void *priv, + } + break; + case ISP: +- break; + case DEINTERLACE: + if (s->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { + switch (s->target) { +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Mon, 23 Jan 2023 16:50:51 +0000 +Subject: [PATCH 580/590] .github/workflows: Switch to a matrix build + +Remove the per-build duplication by putting build parameters in a +matrix. + +Signed-off-by: Phil Elwell +--- + .github/workflows/kernel-build.yml | 293 ++++++----------------------- + 1 file changed, 59 insertions(+), 234 deletions(-) + +diff --git a/.github/workflows/kernel-build.yml b/.github/workflows/kernel-build.yml +index 231fcc2a4601..9bfff5998f21 100644 +--- a/.github/workflows/kernel-build.yml ++++ b/.github/workflows/kernel-build.yml +@@ -15,93 +15,40 @@ env: + NUM_JOBS: 3 + + jobs: +- build-bcm2835: +- +- runs-on: ubuntu-latest +- +- steps: +- - name: Update install +- run: +- sudo apt-get update +- +- - name: Install toolchain +- run: +- sudo apt-get install gcc-arm-linux-gnueabihf +- timeout-minutes: 5 +- +- - uses: actions/checkout@v3 +- with: +- fetch-depth: 1 +- clean: true +- +- - name: Build kernel +- run: | +- mkdir ${{github.workspace}}/build +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2835_defconfig +- scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs +- mkdir -p ${{github.workspace}}/install/boot/overlays +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +- cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel.img +- +- - name: Tar build +- run: tar -cvf bcm2835_build.tar -C ${{github.workspace}}/install . +- +- - name: Upload results +- uses: actions/upload-artifact@v3 +- with: +- name: bcm2835_build +- path: bcm2835_build.tar +- retention-days: 7 +- +- build-arm64: +- +- runs-on: ubuntu-latest +- +- steps: +- - name: Update install +- run: +- sudo apt-get update +- +- - name: Install toolchain +- run: +- sudo apt-get install gcc-aarch64-linux-gnu +- timeout-minutes: 5 +- +- - uses: actions/checkout@v3 +- with: +- fetch-depth: 1 +- clean: true +- +- - name: Build kernel +- run: | +- mkdir ${{github.workspace}}/build +- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build defconfig +- scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs +- mkdir -p ${{github.workspace}}/install/boot/overlays +- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +- cp ${{github.workspace}}/build/arch/arm64/boot/dts/broadcom/*.dtb ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/arch/arm64/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/kernel8.img +- +- - name: Tar build +- run: tar -cvf arm64_build.tar -C ${{github.workspace}}/install . +- +- - name: Upload results +- uses: actions/upload-artifact@v3 +- with: +- name: arm64_build +- path: arm64_build.tar +- retention-days: 7 +- +- build-bcmrpi: +- ++ build: + runs-on: ubuntu-latest ++ strategy: ++ matrix: ++ include: ++ - name: bcm2835 ++ arch: arm ++ defconfig: bcm2835_defconfig ++ kernel: kernel ++ ++ - name: arm64 ++ arch: arm64 ++ defconfig: defconfig ++ kernel: kernel8 ++ ++ - name: bcmrpi ++ arch: arm ++ defconfig: bcmrpi_defconfig ++ kernel: kernel ++ ++ - name: bcm2709 ++ arch: arm ++ defconfig: bcm2709_defconfig ++ kernel: kernel7 ++ ++ - name: bcm2711 ++ arch: arm ++ defconfig: bcm2711_defconfig ++ kernel: kernel7l ++ ++ - name: bcm2711_arm64 ++ arch: arm64 ++ defconfig: bcm2711_defconfig ++ kernel: kernel8 + + steps: + - name: Update install +@@ -110,143 +57,11 @@ jobs: + + - name: Install toolchain + run: +- sudo apt-get install gcc-arm-linux-gnueabihf +- timeout-minutes: 5 +- +- - uses: actions/checkout@v3 +- with: +- fetch-depth: 1 +- clean: true +- +- - name: Build kernel +- run: | +- mkdir ${{github.workspace}}/build +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcmrpi_defconfig +- scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs +- mkdir -p ${{github.workspace}}/install/boot/overlays +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +- cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel.img +- +- - name: Tar build +- run: tar -cvf bcmrpi_build.tar -C ${{github.workspace}}/install . +- +- - name: Upload results +- uses: actions/upload-artifact@v3 +- with: +- name: bcmrpi_build +- path: bcmrpi_build.tar +- retention-days: 7 +- +- build-bcm2709: +- +- runs-on: ubuntu-latest +- +- steps: +- - name: Update install +- run: +- sudo apt-get update +- +- - name: Install toolchain +- run: +- sudo apt-get install gcc-arm-linux-gnueabihf +- timeout-minutes: 5 +- +- - uses: actions/checkout@v3 +- with: +- fetch-depth: 1 +- clean: true +- +- - name: Build kernel +- run: | +- mkdir ${{github.workspace}}/build +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2709_defconfig +- scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs +- mkdir -p ${{github.workspace}}/install/boot/overlays +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +- cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel7.img +- +- - name: Tar build +- run: tar -cvf bcm2709_build.tar -C ${{github.workspace}}/install . +- +- - name: Upload results +- uses: actions/upload-artifact@v3 +- with: +- name: bcm2709_build +- path: bcm2709_build.tar +- retention-days: 7 +- +- build-bcm2711: +- +- runs-on: ubuntu-latest +- +- steps: +- - name: Update install +- run: +- sudo apt-get update +- +- - name: Install toolchain +- run: +- sudo apt-get install gcc-arm-linux-gnueabihf +- timeout-minutes: 5 +- +- - uses: actions/checkout@v3 +- with: +- fetch-depth: 1 +- clean: true +- +- - name: Build kernel +- run: | +- mkdir ${{github.workspace}}/build +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2711_defconfig +- scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs +- mkdir -p ${{github.workspace}}/install/boot/overlays +- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +- cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel7l.img +- +- - name: Tar build +- run: tar -cvf bcm2711_build.tar -C ${{github.workspace}}/install . +- +- - name: Upload results +- uses: actions/upload-artifact@v3 +- with: +- name: bcm2711_build +- path: bcm2711_build.tar +- retention-days: 7 +- +- build-bcm2711-arm64: +- +- runs-on: ubuntu-latest +- +- steps: +- - name: Update install +- run: +- sudo apt-get update +- +- - name: Install toolchain +- run: +- sudo apt-get install gcc-arm-linux-gnueabihf +- timeout-minutes: 5 +- +- - uses: actions/checkout@v3 +- with: +- fetch-depth: 1 +- clean: true +- +- - name: Install toolchain +- run: +- sudo apt-get install gcc-aarch64-linux-gnu ++ if [[ "${{matrix.arch}}" == "arm64" ]]; then ++ sudo apt-get install gcc-aarch64-linux-gnu; ++ else ++ sudo apt-get install gcc-arm-linux-gnueabihf; ++ fi + timeout-minutes: 5 + + - uses: actions/checkout@v3 +@@ -254,25 +69,35 @@ jobs: + fetch-depth: 1 + clean: true + +- - name: Build kernel ++ - name: Build kernel ${{matrix.name}} + run: | + mkdir ${{github.workspace}}/build +- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build bcm2711_defconfig ++ export ARCH=${{matrix.arch}} ++ if [[ "$ARCH" == "arm64" ]]; then ++ export CROSS_COMPILE=aarch64-linux-gnu- ++ export DTS_SUBDIR=broadcom ++ export IMAGE=Image.gz ++ else ++ export CROSS_COMPILE=arm-linux-gnueabihf- ++ export DTS_SUBDIR= ++ export IMAGE=zImage ++ fi ++ make O=${{github.workspace}}/build ${{matrix.defconfig}} + scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y +- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs ++ make O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} $IMAGE modules dtbs + mkdir -p ${{github.workspace}}/install/boot/overlays +- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install +- cp ${{github.workspace}}/build/arch/arm64/boot/dts/broadcom/*.dtb ${{github.workspace}}/install/boot/ +- cp ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/arch/arm64/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ +- cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/kernel8.img ++ make O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install ++ cp ${{github.workspace}}/build/arch/${ARCH}/boot/dts/${DTS_SUBDIR}/*.dtb ${{github.workspace}}/install/boot/ ++ cp ${{github.workspace}}/build/arch/${ARCH}/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/arch/${ARCH}/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ ++ cp ${{github.workspace}}/build/arch/${ARCH}/boot/$IMAGE ${{github.workspace}}/install/boot/${{matrix.kernel}}.img + + - name: Tar build +- run: tar -cvf bcm2711_arm64_build.tar -C ${{github.workspace}}/install . ++ run: tar -cvf ${{matrix.name}}_build.tar -C ${{github.workspace}}/install . + + - name: Upload results + uses: actions/upload-artifact@v3 + with: +- name: bcm2711_arm64_build +- path: bcm2711_arm64_build.tar ++ name: ${{matrix.name}}_build ++ path: ${{matrix.name}}_build.tar + retention-days: 7 +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 24 Jan 2023 11:43:46 +0000 +Subject: [PATCH 581/590] configs: Enable the sht4x driver + +See: https://github.com/raspberrypi/linux/issues/5334 + +Signed-off-by: Phil Elwell +--- + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcm2711_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + arch/arm64/configs/bcm2711_defconfig | 1 + + arch/arm64/configs/bcmrpi3_defconfig | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index df8abb56eabe..4b1f46c9e9e6 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -735,6 +735,7 @@ CONFIG_SENSORS_PWM_FAN=m + CONFIG_SENSORS_RASPBERRYPI_HWMON=m + CONFIG_SENSORS_SHT21=m + CONFIG_SENSORS_SHT3x=m ++CONFIG_SENSORS_SHT4x=m + CONFIG_SENSORS_SHTC1=m + CONFIG_SENSORS_EMC2305=m + CONFIG_SENSORS_INA2XX=m +diff --git a/arch/arm/configs/bcm2711_defconfig b/arch/arm/configs/bcm2711_defconfig +index 99a12e0da4d8..d31636cfb8dc 100644 +--- a/arch/arm/configs/bcm2711_defconfig ++++ b/arch/arm/configs/bcm2711_defconfig +@@ -752,6 +752,7 @@ CONFIG_SENSORS_PWM_FAN=m + CONFIG_SENSORS_RASPBERRYPI_HWMON=m + CONFIG_SENSORS_SHT21=m + CONFIG_SENSORS_SHT3x=m ++CONFIG_SENSORS_SHT4x=m + CONFIG_SENSORS_SHTC1=m + CONFIG_SENSORS_EMC2305=m + CONFIG_SENSORS_INA2XX=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index ddb488d71c9f..fa7e0f6429d2 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -729,6 +729,7 @@ CONFIG_SENSORS_PWM_FAN=m + CONFIG_SENSORS_RASPBERRYPI_HWMON=m + CONFIG_SENSORS_SHT21=m + CONFIG_SENSORS_SHT3x=m ++CONFIG_SENSORS_SHT4x=m + CONFIG_SENSORS_SHTC1=m + CONFIG_SENSORS_EMC2305=m + CONFIG_SENSORS_INA2XX=m +diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig +index a12e836a00ad..55e60829faed 100644 +--- a/arch/arm64/configs/bcm2711_defconfig ++++ b/arch/arm64/configs/bcm2711_defconfig +@@ -757,6 +757,7 @@ CONFIG_SENSORS_PWM_FAN=m + CONFIG_SENSORS_RASPBERRYPI_HWMON=m + CONFIG_SENSORS_SHT21=m + CONFIG_SENSORS_SHT3x=m ++CONFIG_SENSORS_SHT4x=m + CONFIG_SENSORS_SHTC1=m + CONFIG_SENSORS_EMC2305=m + CONFIG_SENSORS_INA2XX=m +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +index 5ded73782d58..46b4ef4476f6 100644 +--- a/arch/arm64/configs/bcmrpi3_defconfig ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -728,6 +728,7 @@ CONFIG_SENSORS_PWM_FAN=m + CONFIG_SENSORS_RASPBERRYPI_HWMON=m + CONFIG_SENSORS_SHT21=m + CONFIG_SENSORS_SHT3x=m ++CONFIG_SENSORS_SHT4x=m + CONFIG_SENSORS_SHTC1=m + CONFIG_SENSORS_EMC2305=m + CONFIG_SENSORS_INA2XX=m +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 24 Jan 2023 11:34:38 +0000 +Subject: [PATCH 582/590] overlays: i2c-sensor: Add SHT4X support + +Add support for the Sensirion SHT4X temperature and humidity +sensor. + +See: https://github.com/raspberrypi/linux/issues/5334 + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/overlays/README | 8 ++++++-- + .../boot/dts/overlays/i2c-sensor-common.dtsi | 18 +++++++++++++++++- + 2 files changed, 23 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index c3e264b8bbd3..f4db53efa636 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -2077,8 +2077,12 @@ Params: addr Set the address for the BH1750, BME280, BME680, + reset_pin GPIO to be used to reset the device (bno055 + only, disabled by default) + +- sht3x Select the Sensiron SHT3x temperature and +- humidity sensor. Valid addresses 0x44-0x45, ++ sht3x Select the Sensirion SHT3x temperature and ++ humidity sensors. Valid addresses 0x44-0x45, ++ default 0x44 ++ ++ sht4x Select the Sensirion SHT4x temperature and ++ humidity sensors. Valid addresses 0x44-0x45, + default 0x44 + + si7020 Select the Silicon Labs Si7013/20/21 humidity/ +diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +index d97cbf4b8547..52b08c68987a 100755 +--- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi ++++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +@@ -478,6 +478,21 @@ bno055: bno055@29 { + }; + }; + ++ fragment@32 { ++ target = <&i2cbus>; ++ __dormant__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ sht4x: sht4x@44 { ++ compatible = "sht4x"; ++ reg = <0x44>; ++ status = "okay"; ++ }; ++ }; ++ }; ++ + __overrides__ { + bme280 = <0>,"+0"; + bmp085 = <0>,"+1"; +@@ -511,6 +526,7 @@ __overrides__ { + mpu6050 = <0>,"+28"; + mpu9250 = <0>,"+29"; + bno055 = <0>,"+31"; ++ sht4x = <0>,"+32"; + + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", + <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0", +@@ -519,7 +535,7 @@ __overrides__ { + <&ms5637>,"reg:0", <&ms5803>,"reg:0", <&ms5805>,"reg:0", + <&ms5837>,"reg:0", <&ms8607>,"reg:0", + <&mpu6050>,"reg:0", <&mpu9250>,"reg:0", +- <&bno055>,"reg:0"; ++ <&bno055>,"reg:0", <&sht4x>,"reg:0"; + int_pin = <&max30102>, "interrupts:0", + <&mpu6050>, "interrupts:0", + <&mpu9250>, "interrupts:0"; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Gow +Date: Fri, 25 Nov 2022 16:43:04 +0800 +Subject: [PATCH 583/590] kunit: Provide a static key to check if KUnit is + actively running tests + +KUnit does a few expensive things when enabled. This hasn't been a +problem because KUnit was only enabled on test kernels, but with a few +people enabling (but not _using_) KUnit on production systems, we need a +runtime way of handling this. + +Provide a 'kunit_running' static key (defaulting to false), which allows +us to hide any KUnit code behind a static branch. This should reduce the +performance impact (on other code) of having KUnit enabled to a single +NOP when no tests are running. + +Note that, while it looks unintuitive, tests always run entirely within +__kunit_test_suites_init(), so it's safe to decrement the static key at +the end of this function, rather than in __kunit_test_suites_exit(), +which is only there to clean up results in debugfs. + +Signed-off-by: David Gow +Reviewed-by: Daniel Latypov +Signed-off-by: Shuah Khan +--- + include/kunit/test.h | 4 ++++ + lib/kunit/test.c | 6 ++++++ + 2 files changed, 10 insertions(+) + +diff --git a/include/kunit/test.h b/include/kunit/test.h +index b1ab6b32216d..fe5632b5ca6a 100644 +--- a/include/kunit/test.h ++++ b/include/kunit/test.h +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -27,6 +28,9 @@ + + #include + ++/* Static key: true if any KUnit tests are currently running */ ++DECLARE_STATIC_KEY_FALSE(kunit_running); ++ + struct kunit; + + /* Size of log associated with test. */ +diff --git a/lib/kunit/test.c b/lib/kunit/test.c +index 2a6992fe7c3e..6dd27657d855 100644 +--- a/lib/kunit/test.c ++++ b/lib/kunit/test.c +@@ -20,6 +20,8 @@ + #include "string-stream.h" + #include "try-catch-impl.h" + ++DEFINE_STATIC_KEY_FALSE(kunit_running); ++ + #if IS_BUILTIN(CONFIG_KUNIT) + /* + * Fail the current test and print an error message to the log. +@@ -612,10 +614,14 @@ int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_ + return 0; + } + ++ static_branch_inc(&kunit_running); ++ + for (i = 0; i < num_suites; i++) { + kunit_init_suite(suites[i]); + kunit_run_tests(suites[i]); + } ++ ++ static_branch_dec(&kunit_running); + return 0; + } + EXPORT_SYMBOL_GPL(__kunit_test_suites_init); +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Gow +Date: Fri, 25 Nov 2022 16:43:05 +0800 +Subject: [PATCH 584/590] kunit: Use the static key when retrieving the current + test + +In order to detect if a KUnit test is running, and to access its +context, the 'kunit_test' member of the current task_struct is used. +Usually, this is accessed directly or via the kunit_fail_current_task() +function. + +In order to speed up the case where no test is running, add a wrapper, +kunit_get_current_test(), which uses the static key to fail early. +Equally, Speed up kunit_fail_current_test() by using the static key. + +This should make it convenient for code to call this +unconditionally in fakes or error paths, without worrying that this will +slow the code down significantly. + +If CONFIG_KUNIT=n (or m), this compiles away to nothing. If +CONFIG_KUNIT=y, it will compile down to a NOP (on most architectures) if +no KUnit test is currently running. + +Note that kunit_get_current_test() does not work if KUnit is built as a +module. This mirrors the existing restriction on kunit_fail_current_test(). + +Note that the definition of kunit_fail_current_test() still wraps an +empty, inline function if KUnit is not built-in. This is to ensure that +the printf format string __attribute__ will still work. + +Also update the documentation to suggest users use the new +kunit_get_current_test() function, update the example, and to describe +the behaviour when KUnit is disabled better. + +Cc: Jonathan Corbet +Cc: Sadiya Kazi +Signed-off-by: David Gow +Reviewed-by: Daniel Latypov +Signed-off-by: Shuah Khan +--- + Documentation/dev-tools/kunit/usage.rst | 30 +++++++++----- + include/kunit/test-bug.h | 53 +++++++++++++++++++++++-- + 2 files changed, 71 insertions(+), 12 deletions(-) + +diff --git a/Documentation/dev-tools/kunit/usage.rst b/Documentation/dev-tools/kunit/usage.rst +index 2737863ef365..d9aed5db3936 100644 +--- a/Documentation/dev-tools/kunit/usage.rst ++++ b/Documentation/dev-tools/kunit/usage.rst +@@ -625,17 +625,23 @@ as shown in next section: *Accessing The Current Test*. + Accessing The Current Test + -------------------------- + +-In some cases, we need to call test-only code from outside the test file. +-For example, see example in section *Injecting Test-Only Code* or if +-we are providing a fake implementation of an ops struct. Using +-``kunit_test`` field in ``task_struct``, we can access it via +-``current->kunit_test``. ++In some cases, we need to call test-only code from outside the test file. This ++is helpful, for example, when providing a fake implementation of a function, or ++to fail any current test from within an error handler. ++We can do this via the ``kunit_test`` field in ``task_struct``, which we can ++access using the ``kunit_get_current_test()`` function in ``kunit/test-bug.h``. + +-The example below includes how to implement "mocking": ++``kunit_get_current_test()`` is safe to call even if KUnit is not enabled. If ++KUnit is not enabled, was built as a module (``CONFIG_KUNIT=m``), or no test is ++running in the current task, it will return ``NULL``. This compiles down to ++either a no-op or a static key check, so will have a negligible performance ++impact when no test is running. ++ ++The example below uses this to implement a "mock" implementation of a function, ``foo``: + + .. code-block:: c + +- #include /* for current */ ++ #include /* for kunit_get_current_test */ + + struct test_data { + int foo_result; +@@ -644,7 +650,7 @@ The example below includes how to implement "mocking": + + static int fake_foo(int arg) + { +- struct kunit *test = current->kunit_test; ++ struct kunit *test = kunit_get_current_test(); + struct test_data *test_data = test->priv; + + KUNIT_EXPECT_EQ(test, test_data->want_foo_called_with, arg); +@@ -675,7 +681,7 @@ Each test can have multiple resources which have string names providing the same + flexibility as a ``priv`` member, but also, for example, allowing helper + functions to create resources without conflicting with each other. It is also + possible to define a clean up function for each resource, making it easy to +-avoid resource leaks. For more information, see Documentation/dev-tools/kunit/api/test.rst. ++avoid resource leaks. For more information, see Documentation/dev-tools/kunit/api/resource.rst. + + Failing The Current Test + ------------------------ +@@ -703,3 +709,9 @@ structures as shown below: + static void my_debug_function(void) { } + #endif + ++``kunit_fail_current_test()`` is safe to call even if KUnit is not enabled. If ++KUnit is not enabled, was built as a module (``CONFIG_KUNIT=m``), or no test is ++running in the current task, it will do nothing. This compiles down to either a ++no-op or a static key check, so will have a negligible performance impact when ++no test is running. ++ +diff --git a/include/kunit/test-bug.h b/include/kunit/test-bug.h +index 5fc58081d511..c1b2e14eab64 100644 +--- a/include/kunit/test-bug.h ++++ b/include/kunit/test-bug.h +@@ -9,16 +9,63 @@ + #ifndef _KUNIT_TEST_BUG_H + #define _KUNIT_TEST_BUG_H + +-#define kunit_fail_current_test(fmt, ...) \ +- __kunit_fail_current_test(__FILE__, __LINE__, fmt, ##__VA_ARGS__) +- + #if IS_BUILTIN(CONFIG_KUNIT) + ++#include /* For static branch */ ++#include ++ ++/* Static key if KUnit is running any tests. */ ++DECLARE_STATIC_KEY_FALSE(kunit_running); ++ ++/** ++ * kunit_get_current_test() - Return a pointer to the currently running ++ * KUnit test. ++ * ++ * If a KUnit test is running in the current task, returns a pointer to its ++ * associated struct kunit. This pointer can then be passed to any KUnit ++ * function or assertion. If no test is running (or a test is running in a ++ * different task), returns NULL. ++ * ++ * This function is safe to call even when KUnit is disabled. If CONFIG_KUNIT ++ * is not enabled, it will compile down to nothing and will return quickly no ++ * test is running. ++ */ ++static inline struct kunit *kunit_get_current_test(void) ++{ ++ if (!static_branch_unlikely(&kunit_running)) ++ return NULL; ++ ++ return current->kunit_test; ++} ++ ++ ++/** ++ * kunit_fail_current_test() - If a KUnit test is running, fail it. ++ * ++ * If a KUnit test is running in the current task, mark that test as failed. ++ * ++ * This macro will only work if KUnit is built-in (though the tests ++ * themselves can be modules). Otherwise, it compiles down to nothing. ++ */ ++#define kunit_fail_current_test(fmt, ...) do { \ ++ if (static_branch_unlikely(&kunit_running)) { \ ++ __kunit_fail_current_test(__FILE__, __LINE__, \ ++ fmt, ##__VA_ARGS__); \ ++ } \ ++ } while (0) ++ ++ + extern __printf(3, 4) void __kunit_fail_current_test(const char *file, int line, + const char *fmt, ...); + + #else + ++static inline struct kunit *kunit_get_current_test(void) { return NULL; } ++ ++/* We define this with an empty helper function so format string warnings work */ ++#define kunit_fail_current_test(fmt, ...) \ ++ __kunit_fail_current_test(__FILE__, __LINE__, fmt, ##__VA_ARGS__) ++ + static inline __printf(3, 4) void __kunit_fail_current_test(const char *file, int line, + const char *fmt, ...) + { +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Wed, 25 Jan 2023 12:38:37 +0100 +Subject: [PATCH 585/590] drm/vc4: hvs: Initialize the dlist allocation list + entry + +The vc4_hvs_dlist_allocation structure has a list that we don't +initialize when we allocate a new instance. + +This makes any call reading the list structure (such as list_empty) fail +with a NULL pointer dereference. + +Let's make sure our list is always initialized. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hvs.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index bcb02f448144..9c8cea86d3f2 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -452,6 +452,8 @@ vc4_hvs_alloc_dlist_entry(struct vc4_hvs *hvs, + if (!alloc) + return ERR_PTR(-ENOMEM); + ++ INIT_LIST_HEAD(&alloc->node); ++ + spin_lock_irqsave(&hvs->mm_lock, flags); + ret = drm_mm_insert_node(&hvs->dlist_mm, &alloc->mm_node, + dlist_count); +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Wed, 25 Jan 2023 12:54:36 +0100 +Subject: [PATCH 586/590] drm/vc4: hvs: Move the dlist allocation destruction + to a function + +We'll need to destroy a dlist allocation in multiple code paths, so +let's move it to a separate function. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hvs.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index 9c8cea86d3f2..f49992bf707c 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -466,6 +466,18 @@ vc4_hvs_alloc_dlist_entry(struct vc4_hvs *hvs, + return alloc; + } + ++static void vc4_hvs_free_dlist_entry_locked(struct vc4_hvs *hvs, ++ struct vc4_hvs_dlist_allocation *alloc) ++{ ++ lockdep_assert_held(&hvs->mm_lock); ++ ++ if (!list_empty(&alloc->node)) ++ list_del(&alloc->node); ++ ++ drm_mm_remove_node(&alloc->mm_node); ++ kfree(alloc); ++} ++ + void vc4_hvs_mark_dlist_entry_stale(struct vc4_hvs *hvs, + struct vc4_hvs_dlist_allocation *alloc) + { +@@ -553,9 +565,7 @@ static void vc4_hvs_dlist_free_work(struct work_struct *work) + if (!vc4_hvs_frcnt_lte(cur->target_frame_count, frcnt)) + continue; + +- list_del(&cur->node); +- drm_mm_remove_node(&cur->mm_node); +- kfree(cur); ++ vc4_hvs_free_dlist_entry_locked(hvs, cur); + } + spin_unlock_irqrestore(&hvs->mm_lock, flags); + } +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Wed, 25 Jan 2023 13:05:26 +0100 +Subject: [PATCH 587/590] drm/vc4: hvs: Destroy dlist allocations immediately + when running a test + +When running a kunit test, the driver runs with a mock device. As such, +any attempt to read or write to a hardware register will fail the +current test immediately. + +The dlist allocation management recently introduced will read the +current frame count from the HVS to defer its destruction until a +subsequent frame has been output. This obviously involves a register +read that fails the Kunit tests. + +Change the destruction deferral function to destroy the allocation +immediately if we run under kunit. This is essentially harmless since +the main reason for that deferall is to prevent any access to the +hardware dlist while a frame described by that list is rendered. On our +mock driver, we have neither a hardware dlist nor a rendering, so it +doesn't matter. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hvs.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index f49992bf707c..f2706db3f1ee 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -490,6 +490,18 @@ void vc4_hvs_mark_dlist_entry_stale(struct vc4_hvs *hvs, + if (!drm_mm_node_allocated(&alloc->mm_node)) + return; + ++ /* ++ * Kunit tests run with a mock device and we consider any hardware ++ * access a test failure. Let's free the dlist allocation right away if ++ * we're running under kunit, we won't risk a dlist corruption anyway. ++ */ ++ if (kunit_get_current_test()) { ++ spin_lock_irqsave(&hvs->mm_lock, flags); ++ vc4_hvs_free_dlist_entry_locked(hvs, alloc); ++ spin_unlock_irqrestore(&hvs->mm_lock, flags); ++ return; ++ } ++ + frcnt = vc4_hvs_get_fifo_frame_count(hvs, alloc->channel); + alloc->target_frame_count = (frcnt + 1) & ((1 << 6) - 1); + +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 24 Jan 2023 16:54:16 +0000 +Subject: [PATCH 588/590] ARM: dts: Set the LED default-state to "off" + +The default-state property for an LED determines the state of the LED +when its trigger is set to "none". Many users expect that specifying a +trigger of "none" means that the LED will be off, and there is a logic +to that assumption, but the current default of "keep" makes the +assumption false. + +Given that no Pi models have a default-trigger of "none", changing the +default-state should have no visible impact for most people, but doing +so will permit a more obvious and more consistent way of turning off +the LEDs. + +Note that 6.2 included an upstream DT reorganisation that required some +downstream changes, and while doing that I changed the default states. +This commit brings rpi-6.1.y into line with rpi-6.2.y. + +See: https://github.com/raspberrypi/firmware/issues/1742 + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 2 ++ + arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts | 1 + + arch/arm/boot/dts/bcm2708-rpi-b.dts | 1 + + arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 1 + + arch/arm/boot/dts/bcm2708-rpi-zero-w.dts | 1 + + arch/arm/boot/dts/bcm2708-rpi-zero.dts | 1 + + arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 2 ++ + arch/arm/boot/dts/bcm2709-rpi-cm2.dts | 1 + + arch/arm/boot/dts/bcm2710-rpi-2-b.dts | 2 ++ + arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 2 ++ + arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 2 ++ + arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 1 + + arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts | 1 + + arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 2 ++ + arch/arm/boot/dts/bcm2711-rpi-400.dts | 3 ++- + arch/arm/boot/dts/bcm2711-rpi-cm4.dts | 2 ++ + arch/arm/boot/dts/bcm2711-rpi-cm4s.dts | 1 + + 17 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +index b3b18a7b5fe9..ebfd7b4092cd 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +@@ -158,12 +158,14 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "input"; + gpios = <&gpio 35 0>; + }; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts b/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts +index 50ac75e8d3d9..75cde9a76016 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b-rev1.dts +@@ -176,6 +176,7 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 16 1>; + }; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts +index 4d7444a31bb6..4a0d98b530b8 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts +@@ -158,6 +158,7 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 16 1>; + }; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi +index c7845d2ba7ff..de4ded34d686 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi ++++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi +@@ -4,6 +4,7 @@ + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts +index 323fa2ebf730..6c239a4ecaf9 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts +@@ -214,6 +214,7 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "actpwr"; + gpios = <&gpio 47 GPIO_ACTIVE_LOW>; + }; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-zero.dts b/arch/arm/boot/dts/bcm2708-rpi-zero.dts +index 406f945d4093..f217bfebb3b7 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-zero.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-zero.dts +@@ -155,6 +155,7 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "actpwr"; + gpios = <&gpio 47 GPIO_ACTIVE_LOW>; + }; +diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +index c6220e6d5fbc..232c206bbbfb 100644 +--- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts ++++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +@@ -158,12 +158,14 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "input"; + gpios = <&gpio 35 0>; + }; +diff --git a/arch/arm/boot/dts/bcm2709-rpi-cm2.dts b/arch/arm/boot/dts/bcm2709-rpi-cm2.dts +index c9e47c46f4f7..a9e966dc0399 100644 +--- a/arch/arm/boot/dts/bcm2709-rpi-cm2.dts ++++ b/arch/arm/boot/dts/bcm2709-rpi-cm2.dts +@@ -192,6 +192,7 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&virtgpio 0 0>; + }; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-2-b.dts b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts +index c77ff30aa738..11f12c6562cd 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-2-b.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts +@@ -158,12 +158,14 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "input"; + gpios = <&gpio 35 0>; + }; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts +index 04621bd197c3..e0f0be339992 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts +@@ -234,12 +234,14 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 29 0>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "default-on"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + }; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts +index e0b233562c03..da6069828dde 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts +@@ -249,12 +249,14 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&virtgpio 0 0>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "input"; + gpios = <&expgpio 7 0>; + }; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +index 086200a82d3a..c8bc0a8f24c2 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +@@ -191,6 +191,7 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&virtgpio 0 0>; + }; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts b/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts +index 6522d2aa3d52..8dc7fa4b4b82 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts +@@ -227,6 +227,7 @@ &i2s { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "actpwr"; + gpios = <&gpio 29 GPIO_ACTIVE_LOW>; + }; +diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +index 43a6cdcb7150..28c4a41c1c86 100644 +--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts ++++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +@@ -507,12 +507,14 @@ audio_pins: audio_pins { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "default-on"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + }; +diff --git a/arch/arm/boot/dts/bcm2711-rpi-400.dts b/arch/arm/boot/dts/bcm2711-rpi-400.dts +index 67df994170c7..9c49e01748a9 100644 +--- a/arch/arm/boot/dts/bcm2711-rpi-400.dts ++++ b/arch/arm/boot/dts/bcm2711-rpi-400.dts +@@ -514,13 +514,14 @@ audio_pins: audio_pins { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "default-on"; +- default-state = "on"; + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "default-on"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + }; +diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts +index 58a7d541a938..0ef6af181214 100644 +--- a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts ++++ b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts +@@ -519,12 +519,14 @@ audio_pins: audio_pins { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; + }; + + pwr_led: led-pwr { + label = "led1"; ++ default-state = "off"; + linux,default-trigger = "default-on"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + }; +diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4s.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4s.dts +index ee6cbabba714..81e6cc67cffe 100644 +--- a/arch/arm/boot/dts/bcm2711-rpi-cm4s.dts ++++ b/arch/arm/boot/dts/bcm2711-rpi-cm4s.dts +@@ -389,6 +389,7 @@ &ddc1 { + &leds { + act_led: led-act { + label = "led0"; ++ default-state = "off"; + linux,default-trigger = "mmc0"; + }; + }; +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell <8911409+pelwell@users.noreply.github.com> +Date: Wed, 25 Jan 2023 10:19:52 +0000 +Subject: [PATCH 589/590] README.md: Replace 6.0 build status with 6.2 + +6.0 is EOL and 6.2 is heading towards release, so update the build status display accordingly. +--- + README.md | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/README.md b/README.md +index 605abc67589e..09fad0ca57dc 100644 +--- a/README.md ++++ b/README.md +@@ -21,10 +21,10 @@ Build status for rpi-5.15.y: + [![Pi kernel build tests](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml/badge.svg?branch=rpi-5.15.y)](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml) + [![dtoverlaycheck](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml/badge.svg?branch=rpi-5.15.y)](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml) + +-Build status for rpi-6.0.y: +-[![Pi kernel build tests](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml/badge.svg?branch=rpi-6.0.y)](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml) +-[![dtoverlaycheck](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml/badge.svg?branch=rpi-6.0.y)](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml) +- + Build status for rpi-6.1.y: + [![Pi kernel build tests](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml/badge.svg?branch=rpi-6.1.y)](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml) + [![dtoverlaycheck](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml/badge.svg?branch=rpi-6.1.y)](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml) ++ ++Build status for rpi-6.2.y: ++[![Pi kernel build tests](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml/badge.svg?branch=rpi-6.2.y)](https://github.com/raspberrypi/linux/actions/workflows/kernel-build.yml) ++[![dtoverlaycheck](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml/badge.svg?branch=rpi-6.2.y)](https://github.com/raspberrypi/linux/actions/workflows/dtoverlaycheck.yml) +-- +2.39.1 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 25 Jan 2023 15:01:43 +0000 +Subject: [PATCH 590/590] .github/workflows: Retain artifacts for 90 days + +Signed-off-by: Phil Elwell +--- + .github/workflows/kernel-build.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.github/workflows/kernel-build.yml b/.github/workflows/kernel-build.yml +index 9bfff5998f21..87eb13939be6 100644 +--- a/.github/workflows/kernel-build.yml ++++ b/.github/workflows/kernel-build.yml +@@ -100,4 +100,4 @@ jobs: + with: + name: ${{matrix.name}}_build + path: ${{matrix.name}}_build.tar +- retention-days: 7 ++ retention-days: 90 +-- +2.39.1 diff --git a/SPECS/raspberrypi2.spec b/SPECS/raspberrypi2.spec index 8ae9a5a..f0974b6 100644 --- a/SPECS/raspberrypi2.spec +++ b/SPECS/raspberrypi2.spec @@ -1,5 +1,5 @@ -%global commit_firmware_long b8a7365c70c68a85a52200cd84b94ea7332bce94 -%global commit_linux_long 3e3acdd755007b8f5839088d8946981207c217bf +%global commit_firmware_long 52cf38d0ae55a8b7426e55974292a920265b7927 +%global commit_linux_long c21b16bf2268acbcb9de1f3a20a4fd1d76a2081f ExclusiveArch: aarch64 armv7hl @@ -32,7 +32,7 @@ ExclusiveArch: aarch64 armv7hl %define extra_version 1 %define kversion 6.1 -%define patchlevel 0 +%define patchlevel 8 Name: raspberrypi2 Version: %{kversion}.%{patchlevel} @@ -156,7 +156,7 @@ source scl_source enable devtoolset-8 || : %endif export KERNEL=kernel%{armtarget} make bcm%{bcmmodel}_defconfig -make %{?_smp_mflags} %{build_image} modules dtbs +make %{?_smp_mflags} HOSTCFLAGS="%{?build_cflags}" HOSTLDFLAGS="%{?build_ldflags}" %{build_image} modules dtbs %install %if 0%{?rhel} == 7 @@ -291,6 +291,9 @@ cp $(ls -1 /boot/config-kernel-*-*|sort -V|tail -1) /boot/config-kernel.inc %doc /boot/LICENCE.broadcom %changelog +* Sun Jan 29 2023 Pablo Greco - 6.1.8 +- Update to version v6.1.8 + * Sat Dec 17 2022 Pablo Greco - 6.1.0 - Update to version v6.1.0