From 276000bd7a79d0d7bfc9fb91849e7dc39436d7a1 Mon Sep 17 00:00:00 2001 From: Pablo Greco Date: Nov 06 2021 13:54:20 +0000 Subject: Update to 5.10.78 --- diff --git a/.raspberrypi2.metadata b/.raspberrypi2.metadata index 5f080f0..316278a 100644 --- a/.raspberrypi2.metadata +++ b/.raspberrypi2.metadata @@ -1,3 +1,3 @@ be0b909f1fbb760cc2d5cf146e1da3b2af0cf899 SOURCES/linux-5.10.tar.xz -d115792ed906ca8b0374edca2418a1663b86837c SOURCES/d2ab264b688a223e23029ffbba86820c8c6cb329.tar.gz -c8b8f8fcde64cbce35d68926460f70ecf8f0f933 SOURCES/patch-5.10.74.xz +21258cd15b5b6090295f9dad236bfb978285cc0c SOURCES/c8c985aed7b849deefc77236d9fc550ee7bec15d.tar.gz +c8fe26a015d1f4715f41813bbdd41d2d2ee1e34f SOURCES/patch-5.10.78.xz diff --git a/SOURCES/rpi-5.10.x.patch b/SOURCES/rpi-5.10.x.patch index e09299b..63efc99 100644 --- a/SOURCES/rpi-5.10.x.patch +++ b/SOURCES/rpi-5.10.x.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dan Pasanen Date: Thu, 21 Sep 2017 09:55:42 -0500 -Subject: [PATCH 001/889] arm: partially revert +Subject: [PATCH 001/941] arm: partially revert 702b94bff3c50542a6e4ab9a4f4cef093262fe65 * Re-expose some dmi APIs for use in VCSM @@ -79,7 +79,7 @@ index 724f8dac1e5b..aa74173092dd 100644 #endif diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S -index e2c743aa2eb2..726c103fe555 100644 +index d9f7dfe2a7ed..687d126d1c6c 100644 --- a/arch/arm/mm/proc-macros.S +++ b/arch/arm/mm/proc-macros.S @@ -334,6 +334,8 @@ ENTRY(\name\()_cache_fns) @@ -112,7 +112,7 @@ index e21249548e9f..33e4a9b8f1ba 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 29 Oct 2018 14:45:45 +0000 -Subject: [PATCH 002/889] Revert "rtc: pcf8523: properly handle oscillator stop +Subject: [PATCH 002/941] Revert "rtc: pcf8523: properly handle oscillator stop bit" This reverts commit ede44c908d44b166a5b6bd7caacd105c2ff5a70f. @@ -174,7 +174,7 @@ index 57d351dfe272..0aa1e8f9ee75 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 15 Mar 2019 21:11:10 +0000 -Subject: [PATCH 003/889] Revert "staging: bcm2835-audio: Drop DT dependency" +Subject: [PATCH 003/941] Revert "staging: bcm2835-audio: Drop DT dependency" This reverts commit b7491a9fca2dc2535b9dc922550a37c5baae9d3d. --- @@ -276,7 +276,7 @@ index c250fbef2fa3..b42917c25050 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 20 Apr 2020 13:41:10 +0100 -Subject: [PATCH 004/889] Revert "spi: spidev: Fix CS polarity if GPIO +Subject: [PATCH 004/941] Revert "spi: spidev: Fix CS polarity if GPIO descriptors are used" This reverts commit 83b2a8fe43bda0c11981ad6afa5dd0104d78be28. @@ -314,7 +314,7 @@ index 859910ec8d9f..225577709c03 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 3 Nov 2020 11:49:53 +0000 -Subject: [PATCH 005/889] Revert "mailbox: avoid timer start from callback" +Subject: [PATCH 005/941] Revert "mailbox: avoid timer start from callback" This reverts commit c7dacf5b0f32957b24ef29df1207dc2cd8307743. @@ -378,7 +378,7 @@ index 3e7d4b20ab34..0b821a5b2db8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 1 Mar 2021 09:12:44 +0000 -Subject: [PATCH 006/889] Revert "Bluetooth: Always request for user +Subject: [PATCH 006/941] Revert "Bluetooth: Always request for user confirmation for Just Works (LE SC)" This reverts commit ffee202a78c2980688bc5d2f7d56480e69a5e0c9. @@ -429,7 +429,7 @@ index 2b7879afc333..36ac2db5340c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 1 Mar 2021 09:14:35 +0000 -Subject: [PATCH 007/889] Revert "Bluetooth: Always request for user +Subject: [PATCH 007/941] Revert "Bluetooth: Always request for user confirmation for Just Works" This reverts commit 92516cd97fd4d8ad5b1421a0d51771044f453a5f. @@ -478,7 +478,7 @@ index 36ac2db5340c..7c3be6b3d454 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Steve Glendinning Date: Thu, 19 Feb 2015 18:47:12 +0000 -Subject: [PATCH 008/889] smsx95xx: fix crimes against truesize +Subject: [PATCH 008/941] 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. @@ -531,7 +531,7 @@ index 465e11dcdf12..1501859a3d15 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sam Nazarko Date: Fri, 1 Apr 2016 17:27:21 +0100 -Subject: [PATCH 009/889] smsc95xx: Experimental: Enable turbo_mode and +Subject: [PATCH 009/941] smsc95xx: Experimental: Enable turbo_mode and packetsize=2560 by default See: http://forum.kodi.tv/showthread.php?tid=285288 @@ -580,7 +580,7 @@ index 1501859a3d15..b51571e38832 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 -Subject: [PATCH 010/889] Allow mac address to be set in smsc95xx +Subject: [PATCH 010/941] Allow mac address to be set in smsc95xx Signed-off-by: popcornmix --- @@ -682,7 +682,7 @@ index b51571e38832..2c7c91b4d418 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 12:43:36 +0000 -Subject: [PATCH 011/889] Protect __release_resource against resources without +Subject: [PATCH 011/941] Protect __release_resource against resources without parents Without this patch, removing a device tree overlay can crash here. @@ -716,7 +716,7 @@ index 817545ff80b9..375a43d99b28 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 9 Feb 2017 14:33:30 +0000 -Subject: [PATCH 012/889] irq-bcm2836: Avoid "Invalid trigger warning" +Subject: [PATCH 012/941] irq-bcm2836: Avoid "Invalid trigger warning" Initialise the level for each IRQ to avoid a warning from the arm arch timer code. @@ -746,7 +746,7 @@ index cbc7c740e4dc..f4247c257581 100644 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 013/889] irqchip: bcm2835: Add FIQ support +Subject: [PATCH 013/941] irqchip: bcm2835: Add FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -881,7 +881,7 @@ index a1e004af23e7..50a03f8c9c57 100644 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 014/889] irqchip: irq-bcm2835: Add 2836 FIQ support +Subject: [PATCH 014/941] irqchip: irq-bcm2835: Add 2836 FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -986,7 +986,7 @@ index 50a03f8c9c57..b3219aa763a6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 10:26:09 +0100 -Subject: [PATCH 015/889] spi: spidev: Completely disable the spidev warning +Subject: [PATCH 015/941] 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. @@ -1016,7 +1016,7 @@ index 225577709c03..a262479f0a92 100644 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 016/889] dmaengine: bcm2835: Load driver early and support +Subject: [PATCH 016/941] dmaengine: bcm2835: Load driver early and support legacy API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -1125,7 +1125,7 @@ index 630dfbb01a40..bf7ba96a39f9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jan 2016 17:25:12 +0000 -Subject: [PATCH 017/889] firmware: Updated mailbox header +Subject: [PATCH 017/941] firmware: Updated mailbox header --- include/soc/bcm2835/raspberrypi-firmware.h | 3 +++ @@ -1158,7 +1158,7 @@ index fdfef7fe40df..900268868196 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 15 Jun 2016 16:48:41 +0100 -Subject: [PATCH 018/889] rtc: Add SPI alias for pcf2123 driver +Subject: [PATCH 018/941] rtc: Add SPI alias for pcf2123 driver Without this alias, Device Tree won't cause the driver to be loaded. @@ -1184,7 +1184,7 @@ index c3691fa4210e..ead1fd376d2d 100644 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 019/889] watchdog: bcm2835: Support setting reboot partition +Subject: [PATCH 019/941] watchdog: bcm2835: Support setting reboot partition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1292,7 +1292,7 @@ index dec6ca019bea..62937e6f83ca 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 Apr 2016 19:40:12 +0100 -Subject: [PATCH 020/889] reboot: Use power off rather than busy spinning when +Subject: [PATCH 020/941] reboot: Use power off rather than busy spinning when halt is requested --- @@ -1321,7 +1321,7 @@ index 0ce388f15422..63373adab475 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 9 Nov 2016 13:02:52 +0000 -Subject: [PATCH 021/889] bcm: Make RASPBERRYPI_POWER depend on PM +Subject: [PATCH 021/941] bcm: Make RASPBERRYPI_POWER depend on PM --- drivers/soc/bcm/Kconfig | 1 + @@ -1346,7 +1346,7 @@ index 24f92a6e882a..a6a705ec30c7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Fri, 2 Sep 2016 16:45:27 +0100 -Subject: [PATCH 022/889] Register the clocks early during the boot process, so +Subject: [PATCH 022/941] 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. @@ -1397,7 +1397,7 @@ index 1ac803e14fa3..2482458795c2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 6 Dec 2016 17:05:39 +0000 -Subject: [PATCH 023/889] bcm2835-rng: Avoid initialising if already enabled +Subject: [PATCH 023/941] bcm2835-rng: Avoid initialising if already enabled Avoids the 0x40000 cycles of warmup again if firmware has already used it --- @@ -1428,7 +1428,7 @@ index 1a7c43b43c6b..ee47667d0710 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Feb 2017 17:20:08 +0000 -Subject: [PATCH 024/889] clk-bcm2835: Mark used PLLs and dividers CRITICAL +Subject: [PATCH 024/941] 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 @@ -1462,7 +1462,7 @@ index 2482458795c2..0f716cb070a7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Feb 2017 17:20:08 +0000 -Subject: [PATCH 025/889] clk-bcm2835: Add claim-clocks property +Subject: [PATCH 025/941] 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, @@ -1588,7 +1588,7 @@ index 0f716cb070a7..50f018fbb562 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 6 Mar 2017 09:06:18 +0000 -Subject: [PATCH 026/889] clk-bcm2835: Read max core clock from firmware +Subject: [PATCH 026/941] 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 @@ -1709,7 +1709,7 @@ index 50f018fbb562..f1ef788c1194 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 9 Feb 2017 14:36:44 +0000 -Subject: [PATCH 027/889] sound: Demote deferral errors to INFO level +Subject: [PATCH 027/941] 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. @@ -1750,7 +1750,7 @@ index e677422c1058..880ae162eaa5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Claggy3 Date: Sat, 11 Feb 2017 14:00:30 +0000 -Subject: [PATCH 028/889] Update vfpmodule.c +Subject: [PATCH 028/941] 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 @@ -1893,7 +1893,7 @@ index 2cb355c1b5b7..1e2dcf81aefa 100644 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 029/889] i2c: bcm2835: Add debug support +Subject: [PATCH 029/941] i2c: bcm2835: Add debug support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -2088,7 +2088,7 @@ index 37443edbf754..18b2e9e3d752 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 18 Dec 2014 16:07:15 -0800 -Subject: [PATCH 030/889] mm: Remove the PFN busy warning +Subject: [PATCH 030/941] mm: Remove the PFN busy warning See commit dae803e165a11bc88ca8dbc07a11077caf97bbcb -- the warning is expected sometimes when using CMA. However, that commit still spams @@ -2119,7 +2119,7 @@ index e8e0f1cec8b0..299688722120 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Jan 2018 16:52:45 +0000 -Subject: [PATCH 031/889] irqchip: irq-bcm2836: Remove regmap and syscon use +Subject: [PATCH 031/941] 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 @@ -2239,7 +2239,7 @@ index f4247c257581..2187672e5be3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 17 Oct 2017 15:04:29 +0100 -Subject: [PATCH 032/889] lan78xx: Enable LEDs and auto-negotiation +Subject: [PATCH 032/941] 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 @@ -2251,7 +2251,7 @@ Signed-off-by: Phil Elwell 1 file changed, 11 insertions(+) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index a5cd42bae962..ba8db84b5d43 100644 +index a4f9912b3636..65b9ff30edcb 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2461,6 +2461,11 @@ static int lan78xx_reset(struct lan78xx_net *dev) @@ -2293,7 +2293,7 @@ index a5cd42bae962..ba8db84b5d43 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Feb 2016 17:26:48 +0000 -Subject: [PATCH 033/889] amba_pl011: Don't use DT aliases for numbering +Subject: [PATCH 033/941] 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 @@ -2328,7 +2328,7 @@ index 87dc3fc15694..fe48193de094 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 1 Mar 2017 16:07:39 +0000 -Subject: [PATCH 034/889] amba_pl011: Round input clock up +Subject: [PATCH 034/941] 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 @@ -2420,7 +2420,7 @@ index fe48193de094..339ecce1ad0d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Sep 2017 10:32:19 +0100 -Subject: [PATCH 035/889] amba_pl011: Insert mb() for correct FIFO handling +Subject: [PATCH 035/941] 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 @@ -2453,7 +2453,7 @@ index 339ecce1ad0d..afb0175bf592 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Sep 2017 10:32:19 +0100 -Subject: [PATCH 036/889] amba_pl011: Add cts-event-workaround DT property +Subject: [PATCH 036/941] 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 @@ -2511,7 +2511,7 @@ index afb0175bf592..17ef9c2a4d72 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 11 Jul 2019 13:13:39 +0100 -Subject: [PATCH 037/889] tty: amba-pl011: Make TX optimisation conditional +Subject: [PATCH 037/941] tty: amba-pl011: Make TX optimisation conditional pl011_tx_chars takes a "from_irq" parameter to reduce the number of register accesses. When from_irq is true the function assumes that the @@ -2602,7 +2602,7 @@ index 17ef9c2a4d72..8b1f8167c85d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 24 Jan 2020 11:38:28 +0000 -Subject: [PATCH 038/889] tty: amba-pl011: Add un/throttle support +Subject: [PATCH 038/941] tty: amba-pl011: Add un/throttle support The PL011 driver lacks throttle and unthrottle methods. As a result, sending more data to the Pi than it can immediately sink while CRTSCTS @@ -2669,7 +2669,7 @@ index 8b1f8167c85d..9df9bc8f9dfd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 29 Jan 2020 09:35:19 +0000 -Subject: [PATCH 039/889] tty: amba-pl011: Avoid rare write-when-full error +Subject: [PATCH 039/941] 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 @@ -2717,7 +2717,7 @@ index 9df9bc8f9dfd..760301512509 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 -Subject: [PATCH 040/889] pinctrl-bcm2835: Set base to 0 give expected gpio +Subject: [PATCH 040/941] pinctrl-bcm2835: Set base to 0 give expected gpio numbering Signed-off-by: Noralf Tronnes @@ -2745,7 +2745,7 @@ index 1d21129f7751..bbf761c41dc5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 -Subject: [PATCH 041/889] Main bcm2708/bcm2709 linux port +Subject: [PATCH 041/941] Main bcm2708/bcm2709 linux port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -2907,7 +2907,7 @@ index 39761d190545..9766d8b50778 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 -Subject: [PATCH 042/889] Add dwc_otg driver +Subject: [PATCH 042/941] Add dwc_otg driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -64730,7 +64730,7 @@ index 000000000000..cdc9963176e5 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 17:06:34 +0100 -Subject: [PATCH 043/889] bcm2708 framebuffer driver +Subject: [PATCH 043/941] bcm2708 framebuffer driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -68304,7 +68304,7 @@ index 900268868196..df2ba29b4ae0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Thu, 14 Mar 2019 13:27:54 +0000 -Subject: [PATCH 044/889] Pulled in the multi frame buffer support from the Pi3 +Subject: [PATCH 044/941] Pulled in the multi frame buffer support from the Pi3 repo --- @@ -69139,7 +69139,7 @@ index df2ba29b4ae0..bc3829dfcc33 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 -Subject: [PATCH 045/889] fbdev: add FBIOCOPYAREA ioctl +Subject: [PATCH 045/941] fbdev: add FBIOCOPYAREA ioctl Based on the patch authored by Ali Gholami Rudi at https://lkml.org/lkml/2009/7/13/153 @@ -69486,7 +69486,7 @@ index 4c14e8be7267..3c6f12b76214 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Harm Hanemaaijer Date: Thu, 20 Jun 2013 20:21:39 +0200 -Subject: [PATCH 046/889] Speed up console framebuffer imageblit function +Subject: [PATCH 046/941] Speed up console framebuffer imageblit function Especially on platforms with a slower CPU but a relatively high framebuffer fill bandwidth, like current ARM devices, the existing @@ -69701,7 +69701,7 @@ index a2bb276a8b24..436494fba15a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 -Subject: [PATCH 047/889] dmaengine: Add support for BCM2708 +Subject: [PATCH 047/941] dmaengine: Add support for BCM2708 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -70355,7 +70355,7 @@ index 000000000000..6ca874d332a8 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 -Subject: [PATCH 048/889] MMC: added alternative MMC driver +Subject: [PATCH 048/941] MMC: added alternative MMC driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -72307,7 +72307,7 @@ index 42df06c6b19c..e7f45a2b0c72 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 25 Mar 2015 17:49:47 +0000 -Subject: [PATCH 049/889] Adding bcm2835-sdhost driver, and an overlay to +Subject: [PATCH 049/941] Adding bcm2835-sdhost driver, and an overlay to enable it BCM2835 has two SD card interfaces. This driver uses the other one. @@ -74799,7 +74799,7 @@ index 000000000000..7caba5e12f79 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 28 Oct 2016 15:36:43 +0100 -Subject: [PATCH 050/889] vc_mem: Add vc_mem driver for querying firmware +Subject: [PATCH 050/941] vc_mem: Add vc_mem driver for querying firmware memory addresses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -75303,7 +75303,7 @@ index 000000000000..3c7079237496 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Fri, 21 Aug 2015 23:14:48 +0100 -Subject: [PATCH 051/889] Add /dev/gpiomem device for rootless user GPIO access +Subject: [PATCH 051/941] Add /dev/gpiomem device for rootless user GPIO access Signed-off-by: Luke Wren @@ -75613,7 +75613,7 @@ index 000000000000..f5e7f1ba8fb6 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:14:45 +0100 -Subject: [PATCH 052/889] Add SMI driver +Subject: [PATCH 052/941] Add SMI driver Signed-off-by: Luke Wren @@ -77550,7 +77550,7 @@ index 000000000000..ee3a75edfc03 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 15:44:08 +0100 -Subject: [PATCH 053/889] Add Chris Boot's i2c driver +Subject: [PATCH 053/941] Add Chris Boot's i2c driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -78221,7 +78221,7 @@ index 000000000000..962f2e5c7455 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 054/889] char: broadcom: Add vcio module +Subject: [PATCH 054/941] char: broadcom: Add vcio module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -78486,7 +78486,7 @@ index 000000000000..d2598663a2b5 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 055/889] firmware: bcm2835: Support ARCH_BCM270x +Subject: [PATCH 055/941] firmware: bcm2835: Support ARCH_BCM270x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -78566,7 +78566,7 @@ index 1d965c1252ca..f039319020be 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 -Subject: [PATCH 056/889] BCM2708: Add core Device Tree support +Subject: [PATCH 056/941] BCM2708: Add core Device Tree support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -81485,7 +81485,7 @@ index 000000000000..4e47480dd933 + status = "disabled"; +}; diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index 5395e8c2484e..3e67c2b634be 100644 +index 167538518a1e..feef4da786b2 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts @@ -2,7 +2,6 @@ @@ -81505,7 +81505,7 @@ index 5395e8c2484e..3e67c2b634be 100644 status = "okay"; }; -@@ -301,3 +300,306 @@ +@@ -302,3 +301,306 @@ &vec { status = "disabled"; }; @@ -82635,7 +82635,7 @@ index 000000000000..4f903a787d65 + status = "disabled"; +}; diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 3d040f6e2a20..6e0339266027 100644 +index 398ecd7b9b68..d1a39fa077c0 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -318,7 +318,8 @@ @@ -105052,7 +105052,7 @@ index 94133708889d..9c0df5bde46c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 Feb 2015 13:50:57 +0000 -Subject: [PATCH 057/889] BCM270x_DT: Add pwr_led, and the required "input" +Subject: [PATCH 057/941] BCM270x_DT: Add pwr_led, and the required "input" trigger The "input" trigger makes the associated GPIO an input. This is to support @@ -105236,7 +105236,7 @@ index 6a8d6409c993..aefab0783075 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:54:08 +0100 -Subject: [PATCH 058/889] Added Device IDs for August DVB-T 205 +Subject: [PATCH 058/941] Added Device IDs for August DVB-T 205 --- drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 ++++ @@ -105264,7 +105264,7 @@ index c278b9b0f102..05f2297cf583 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 28 Nov 2016 16:50:04 +0000 -Subject: [PATCH 059/889] Improve __copy_to_user and __copy_from_user +Subject: [PATCH 059/941] Improve __copy_to_user and __copy_from_user performance Provide a __copy_from_user that uses memcpy. On BCM2708, use @@ -105340,10 +105340,10 @@ index 111a1d8a41dd..867a4465cebf 100644 + #endif diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h -index a13d90206472..f24d3fabccd6 100644 +index d9db752c51fe..c1198f741fc0 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h -@@ -516,6 +516,9 @@ do { \ +@@ -518,6 +518,9 @@ do { \ extern unsigned long __must_check arm_copy_from_user(void *to, const void __user *from, unsigned long n); @@ -106887,7 +106887,7 @@ index 084734d3da5c..6af65533dbea 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 25 Jun 2015 12:16:11 +0100 -Subject: [PATCH 060/889] gpio-poweroff: Allow it to work on Raspberry Pi +Subject: [PATCH 060/941] 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 @@ -106928,7 +106928,7 @@ index 1c5af2fef142..3e670131f2a8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 14:32:47 +0100 -Subject: [PATCH 061/889] mfd: Add Raspberry Pi Sense HAT core driver +Subject: [PATCH 061/941] mfd: Add Raspberry Pi Sense HAT core driver mfd: Add rpi_sense_core of compatible string --- @@ -107814,7 +107814,7 @@ index 000000000000..56196dc2af10 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 25 Jan 2016 15:48:59 +0000 -Subject: [PATCH 062/889] Add support for all the downstream rpi sound card +Subject: [PATCH 062/941] Add support for all the downstream rpi sound card drivers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -123060,7 +123060,7 @@ index 880ae162eaa5..54cbdb75f109 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Fri, 16 Oct 2020 15:17:07 +0200 -Subject: [PATCH 063/889] Fixes a problem when module probes before i2c module +Subject: [PATCH 063/941] Fixes a problem when module probes before i2c module is available The driver crashed while a NULL pointer returned by i2c_get_adapter() @@ -123112,7 +123112,7 @@ index a6d078bc4a9a..157ab4c2cc85 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 21 Oct 2015 14:55:21 +0100 -Subject: [PATCH 064/889] rpi_display: add backlight driver and overlay +Subject: [PATCH 064/941] 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 @@ -123295,7 +123295,7 @@ index 000000000000..14a0d9b03739 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 23 Feb 2016 19:56:04 +0000 -Subject: [PATCH 065/889] bcm2835-virtgpio: Virtual GPIO driver +Subject: [PATCH 065/941] bcm2835-virtgpio: Virtual GPIO driver Add a virtual GPIO driver that uses the firmware mailbox interface to request that the VPU toggles LEDs. @@ -123562,7 +123562,7 @@ index 000000000000..49e28ad9760e From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Pantelis Antoniou Date: Wed, 3 Dec 2014 13:23:28 +0200 -Subject: [PATCH 066/889] OF: DT-Overlay configfs interface +Subject: [PATCH 066/941] 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. @@ -124003,7 +124003,7 @@ index 000000000000..178f0629b0f0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Cheong2K Date: Fri, 26 Feb 2016 18:20:10 +0800 -Subject: [PATCH 067/889] brcm: adds support for BCM43341 wifi +Subject: [PATCH 067/941] brcm: adds support for BCM43341 wifi brcmfmac: Disable power management @@ -124154,7 +124154,7 @@ index 6d5d5c39c635..bfe4b8e5a716 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 17 Dec 2015 13:37:07 +0000 -Subject: [PATCH 068/889] hci_h5: Don't send conf_req when ACTIVE +Subject: [PATCH 068/941] 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. @@ -124183,7 +124183,7 @@ index 996729e78105..6d179e455721 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 13 Apr 2015 17:16:29 +0100 -Subject: [PATCH 069/889] config: Add default configs +Subject: [PATCH 069/941] config: Add default configs --- arch/arm/configs/bcm2709_defconfig | 1473 +++++++++++++++++++++++++ @@ -131561,7 +131561,7 @@ index 000000000000..d542d2522076 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Michael Zoran Date: Sat, 14 Jan 2017 21:43:57 -0800 -Subject: [PATCH 070/889] ARM64: Round-Robin dispatch IRQs between CPUs. +Subject: [PATCH 070/941] 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 @@ -131641,7 +131641,7 @@ index 2187672e5be3..0b2af88b69a0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Michael Zoran Date: Sat, 11 Feb 2017 01:18:31 -0800 -Subject: [PATCH 071/889] ARM64: Force hardware emulation of deprecated +Subject: [PATCH 071/941] ARM64: Force hardware emulation of deprecated instructions. --- @@ -131675,7 +131675,7 @@ index 7364de008bab..a11467132346 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 25 Aug 2017 19:18:13 +0100 -Subject: [PATCH 072/889] cache: export clean and invalidate +Subject: [PATCH 072/941] cache: export clean and invalidate hack: cache: Fix linker error --- @@ -131736,7 +131736,7 @@ index dc8f152f3556..536df5db66e4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Tue, 14 Nov 2017 15:13:15 +0000 -Subject: [PATCH 073/889] AXI performance monitor driver (#2222) +Subject: [PATCH 073/941] AXI performance monitor driver (#2222) Uses the debugfs I/F to provide access to the AXI bus performance monitors. @@ -132438,7 +132438,7 @@ index 000000000000..5ae2bdaa88b4 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 074/889] ARM: bcm2835: Set Serial number and Revision +Subject: [PATCH 074/941] ARM: bcm2835: Set Serial number and Revision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -132507,7 +132507,7 @@ index bfc556f76720..73ec2427fbcf 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 16 Jul 2018 14:40:13 +0100 -Subject: [PATCH 075/889] dwc-otg: FIQ: Fix "bad mode in data abort handler" +Subject: [PATCH 075/941] 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 @@ -132629,7 +132629,7 @@ index 73ec2427fbcf..9b6c921106b5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 Dec 2017 09:18:32 +0000 -Subject: [PATCH 076/889] ARM: Activate FIQs to avoid __irq_startup warnings +Subject: [PATCH 076/941] 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. @@ -132671,7 +132671,7 @@ index 98ca3e3fa847..c3fe7d3cf482 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Sep 2016 09:16:19 +0100 -Subject: [PATCH 077/889] raspberrypi-firmware: Export the general transaction +Subject: [PATCH 077/941] raspberrypi-firmware: Export the general transaction function. The vc4-firmware-kms module is going to be doing the MBOX FB call. @@ -132709,7 +132709,7 @@ index f039319020be..2929fb4cea80 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 20 Feb 2018 10:07:27 +0000 -Subject: [PATCH 078/889] i2c-gpio: Also set bus numbers from reg property +Subject: [PATCH 078/941] 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 @@ -132750,7 +132750,7 @@ index a4a6825c8758..cfbcf3952ddc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: hdoverobinson Date: Tue, 13 Mar 2018 06:58:39 -0400 -Subject: [PATCH 079/889] added capture_clear option to pps-gpio via dtoverlay +Subject: [PATCH 079/941] added capture_clear option to pps-gpio via dtoverlay (#2433) --- @@ -132777,7 +132777,7 @@ index e0de1df2ede0..ee7d8f4e7f2e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 9 Mar 2018 12:01:00 +0000 -Subject: [PATCH 080/889] lan78xx: Read initial EEE status from DT +Subject: [PATCH 080/941] lan78xx: Read initial EEE status from DT Add two new DT properties: * microchip,eee-enabled - a boolean to enable EEE @@ -132790,7 +132790,7 @@ Signed-off-by: Phil Elwell 1 file changed, 16 insertions(+) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index ba8db84b5d43..cf4500e4b460 100644 +index 65b9ff30edcb..7ed593fbff94 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2643,6 +2643,22 @@ static int lan78xx_open(struct net_device *net) @@ -132823,7 +132823,7 @@ index ba8db84b5d43..cf4500e4b460 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 -Subject: [PATCH 081/889] hid: Reduce default mouse polling interval to 60Hz +Subject: [PATCH 081/941] hid: Reduce default mouse polling interval to 60Hz Reduces overhead when using X --- @@ -132861,7 +132861,7 @@ index 009a0469d54f..2d18616f45e2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nick Bulleid Date: Thu, 10 May 2018 21:57:02 +0100 -Subject: [PATCH 082/889] Add ability to export gpio used by gpio-poweroff +Subject: [PATCH 082/941] Add ability to export gpio used by gpio-poweroff Signed-off-by: Nick Bulleid @@ -132926,7 +132926,7 @@ index 3e670131f2a8..e5dca66360a7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sat, 12 May 2018 21:35:43 +0100 -Subject: [PATCH 083/889] firmware/raspberrypi: Notify firmware of a reboot +Subject: [PATCH 083/941] firmware/raspberrypi: Notify firmware of a reboot Register for reboot notifications, sending RPI_FIRMWARE_NOTIFY_REBOOT over the mailbox interface on reception. @@ -133016,7 +133016,7 @@ index 2929fb4cea80..a7fde9de6f70 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 14 Jun 2018 11:21:04 +0100 -Subject: [PATCH 084/889] irqchip: irq-bcm2835: Calc. FIQ_START at boot-time +Subject: [PATCH 084/941] 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 @@ -133088,7 +133088,7 @@ index 18b7483588c2..0e6c0811dc1e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 14 Jun 2018 15:07:26 +0100 -Subject: [PATCH 085/889] of: configfs: Use of_overlay_fdt_apply API call +Subject: [PATCH 085/941] of: configfs: Use of_overlay_fdt_apply API call The published API to the dynamic overlay application mechanism now takes a Flattened Device Tree blob as input so that it can manage the @@ -133208,7 +133208,7 @@ index 178f0629b0f0..ac04301dabe1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 13 Jun 2018 15:21:10 +0100 -Subject: [PATCH 086/889] net: lan78xx: Disable TCP Segmentation Offload (TSO) +Subject: [PATCH 086/941] 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 @@ -133227,7 +133227,7 @@ Signed-off-by: Dave Stevenson 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index cf4500e4b460..aa6ec5e4f492 100644 +index 7ed593fbff94..4e83c766e367 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -425,6 +425,15 @@ static int msg_level = -1; @@ -133270,7 +133270,7 @@ index cf4500e4b460..aa6ec5e4f492 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 20 Jun 2018 12:20:01 +0100 -Subject: [PATCH 087/889] brcmfmac: Re-enable firmware roaming support +Subject: [PATCH 087/941] 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 @@ -133305,7 +133305,7 @@ index 591dcd04b4b4..e3758bd86acf 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 5 Apr 2018 14:46:11 +0100 -Subject: [PATCH 088/889] lan78xx: Move enabling of EEE into PHY init code +Subject: [PATCH 088/941] 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 @@ -133319,7 +133319,7 @@ Signed-off-by: Phil Elwell 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index aa6ec5e4f492..b027f223fb4b 100644 +index 4e83c766e367..0b929409760c 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2175,6 +2175,22 @@ static int lan78xx_phy_init(struct lan78xx_net *dev) @@ -133375,7 +133375,7 @@ index aa6ec5e4f492..b027f223fb4b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 9 Jul 2018 12:54:25 +0100 -Subject: [PATCH 089/889] Add rpi-poe-fan driver +Subject: [PATCH 089/941] Add rpi-poe-fan driver Signed-off-by: Serge Schneider @@ -133973,7 +133973,7 @@ index 000000000000..c9654e9e9f2d From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 17 Sep 2018 17:31:18 +0100 -Subject: [PATCH 090/889] cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 +Subject: [PATCH 090/941] cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with MEDIA_SUBDRV_AUTOSELECT --- @@ -133999,7 +133999,7 @@ index 857ef4ace6e9..deae75ea3c44 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Sat, 6 Oct 2018 16:46:18 +0200 -Subject: [PATCH 091/889] hwmon: raspberrypi: Prevent voltage low warnings from +Subject: [PATCH 091/941] hwmon: raspberrypi: Prevent voltage low warnings from filling log Although the correct fix for low voltage warnings is to @@ -134080,7 +134080,7 @@ index d3a64a35f7a9..db3b03438dd0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Sat, 13 Oct 2018 13:31:21 +0200 -Subject: [PATCH 092/889] firmware: raspberrypi: Add backward compatible +Subject: [PATCH 092/941] firmware: raspberrypi: Add backward compatible get_throttled Avoid a hard userspace ABI change by adding a compatible get_throttled @@ -134165,7 +134165,7 @@ index a7fde9de6f70..bfbbf00d795c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 6 Nov 2018 12:57:48 +0000 -Subject: [PATCH 093/889] sc16is7xx: Don't spin if no data received +Subject: [PATCH 093/941] sc16is7xx: Don't spin if no data received See: https://github.com/raspberrypi/linux/issues/2676 @@ -134194,7 +134194,7 @@ index 9adb8362578c..f64e051c0030 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ram Chandrasekar Date: Mon, 7 May 2018 11:54:08 -0600 -Subject: [PATCH 094/889] drivers: thermal: step_wise: add support for +Subject: [PATCH 094/941] drivers: thermal: step_wise: add support for hysteresis Step wise governor increases the mitigation level when the temperature @@ -134294,7 +134294,7 @@ index 2ae7198d3067..abe34cfe21fe 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 2 Oct 2018 11:14:15 +0100 -Subject: [PATCH 095/889] drivers: thermal: step_wise: avoid throttling at +Subject: [PATCH 095/941] drivers: thermal: step_wise: avoid throttling at hysteresis temperature after dropping below it Signed-off-by: Serge Schneider @@ -134322,7 +134322,7 @@ index abe34cfe21fe..5c8602933201 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Fri, 2 Nov 2018 11:55:49 +0000 -Subject: [PATCH 096/889] Update issue templates (#2736) +Subject: [PATCH 096/941] Update issue templates (#2736) --- .github/ISSUE_TEMPLATE/bug_report.md | 34 ++++++++++++++++++++++++++++ @@ -134376,7 +134376,7 @@ index 000000000000..09bdc4a96838 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Nov 2018 19:46:58 +0000 -Subject: [PATCH 097/889] net: lan78xx: Support auto-downshift to 100Mb/s +Subject: [PATCH 097/941] 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 @@ -134477,7 +134477,7 @@ index 517288da19fd..626c450d71f4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 10 Jan 2019 17:58:06 +0000 -Subject: [PATCH 098/889] firmware: raspberrypi: Report the fw variant during +Subject: [PATCH 098/941] firmware: raspberrypi: Report the fw variant during probe The driver already reported the firmware build date during probe. @@ -134586,7 +134586,7 @@ index bc3829dfcc33..4728741132b1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joshua Emele Date: Wed, 7 Nov 2018 16:07:40 -0800 -Subject: [PATCH 099/889] lan78xx: Debounce link events to minimize poll storm +Subject: [PATCH 099/941] 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 @@ -134600,7 +134600,7 @@ See: https://github.com/raspberrypi/linux/issues/2447 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index b027f223fb4b..ac07246e97f4 100644 +index 0b929409760c..9c0f3b5797fc 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -434,6 +434,11 @@ static bool enable_tso; @@ -134637,7 +134637,7 @@ index b027f223fb4b..ac07246e97f4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 5 Mar 2019 09:51:22 +0000 -Subject: [PATCH 100/889] lan78xx: EEE support is now a PHY property +Subject: [PATCH 100/941] 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. @@ -134650,7 +134650,7 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index ac07246e97f4..b64c9c8020e6 100644 +index 9c0f3b5797fc..053f3faf1631 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2180,7 +2180,7 @@ static int lan78xx_phy_init(struct lan78xx_net *dev) @@ -134669,7 +134669,7 @@ index ac07246e97f4..b64c9c8020e6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 20 Jul 2018 22:03:41 +0100 -Subject: [PATCH 101/889] bcm2835-dma: Add support for per-channel flags +Subject: [PATCH 101/941] 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 @@ -134723,7 +134723,7 @@ index bf7ba96a39f9..87b5d0bef355 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Fri, 29 Mar 2019 10:53:14 +0000 -Subject: [PATCH 102/889] rtc: rv3028: Add backup switchover mode support +Subject: [PATCH 102/941] rtc: rv3028: Add backup switchover mode support Signed-off-by: Phil Howard --- @@ -134779,7 +134779,7 @@ index fa226f0fe67d..20baf2257631 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: P33M Date: Thu, 2 May 2019 11:53:45 +0100 -Subject: [PATCH 103/889] lan78xx: use default alignment for rx buffers +Subject: [PATCH 103/941] lan78xx: use default alignment for rx buffers The lan78xx uses a 12-byte hardware rx header, so there is no need to allocate SKBs with NET_IP_ALIGN set. Removes alignment faults @@ -134789,7 +134789,7 @@ in both dwc_otg and in ipv6 processing. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index b64c9c8020e6..acfbda466d2f 100644 +index 053f3faf1631..31eb1a420fb1 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -3169,7 +3169,7 @@ static int rx_submit(struct lan78xx_net *dev, struct urb *urb, gfp_t flags) @@ -134808,7 +134808,7 @@ index b64c9c8020e6..acfbda466d2f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:55:37 +0000 -Subject: [PATCH 104/889] media: ov5647: Add set_fmt and get_fmt calls. +Subject: [PATCH 104/941] media: ov5647: Add set_fmt and get_fmt calls. There's no way to query the subdevice for the supported resolutions. @@ -134861,7 +134861,7 @@ index e7d2e5b4ad4b..3e587eb0a30e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:56:33 +0000 -Subject: [PATCH 105/889] media: ov5647: Add support for PWDN GPIO. +Subject: [PATCH 105/941] media: ov5647: Add support for PWDN GPIO. Add support for an optional GPIO connected to PWDN on the sensor. @@ -134959,7 +134959,7 @@ index 3e587eb0a30e..c39e3d20e3ef 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:56:47 +0000 -Subject: [PATCH 106/889] media: ov5647: Add support for non-continuous clock +Subject: [PATCH 106/941] media: ov5647: Add support for non-continuous clock mode The driver was only supporting continuous clock mode @@ -135044,7 +135044,7 @@ index c39e3d20e3ef..8a1a515388e0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:56:59 +0000 -Subject: [PATCH 107/889] media: tc358743: Increase FIFO level to 374. +Subject: [PATCH 107/941] 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 @@ -135081,7 +135081,7 @@ index f21da11caf22..471a56cf96b8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Thu, 21 Sep 2017 17:30:24 +0200 -Subject: [PATCH 108/889] media: tc358743: fix connected/active CSI-2 lane +Subject: [PATCH 108/941] media: tc358743: fix connected/active CSI-2 lane reporting g_mbus_config was supposed to indicate all supported lane numbers, not @@ -135163,7 +135163,7 @@ index c20e2dc6d432..396fb88266be 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:21 +0000 -Subject: [PATCH 109/889] media: tc358743: Add support for 972Mbit/s link freq. +Subject: [PATCH 109/941] 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. @@ -135248,7 +135248,7 @@ index 44ae2f33334a..24f176ee8a7b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:34 +0000 -Subject: [PATCH 110/889] media: tc358743: Check I2C succeeded during probe. +Subject: [PATCH 110/941] 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. @@ -135352,7 +135352,7 @@ index 24f176ee8a7b..ba8f63dbbd37 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:46 +0000 -Subject: [PATCH 111/889] media: adv7180: Default to the first valid input +Subject: [PATCH 111/941] media: adv7180: Default to the first valid input The hardware default is differential CVBS on AIN1 & 2, which isn't very useful. @@ -135403,7 +135403,7 @@ index 4498d14d3429..e98dd2bee1e5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:57:56 +0000 -Subject: [PATCH 112/889] media: adv7180: Add YPrPb support for ADV7282M +Subject: [PATCH 112/941] 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 @@ -135433,7 +135433,7 @@ index e98dd2bee1e5..4103690a71df 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:58:08 +0000 -Subject: [PATCH 113/889] media: videodev2: Add helper defines for printing +Subject: [PATCH 113/941] media: videodev2: Add helper defines for printing FOURCCs New helper defines that allow printing of a FOURCC using @@ -135467,7 +135467,7 @@ index 534eaa4d39bc..56c443cc2c3d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:59:06 +0000 -Subject: [PATCH 114/889] dt-bindings: Document BCM283x CSI2/CCP2 receiver +Subject: [PATCH 114/941] dt-bindings: Document BCM283x CSI2/CCP2 receiver Document the DT bindings for the CSI2/CCP2 receiver peripheral (known as Unicam) on BCM283x SoCs. @@ -135577,7 +135577,7 @@ index 000000000000..7714fb374b34 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 31 Oct 2018 14:59:40 +0000 -Subject: [PATCH 115/889] MAINTAINERS: Add entry for BCM2835 Unicam driver +Subject: [PATCH 115/941] MAINTAINERS: Add entry for BCM2835 Unicam driver Adds entry for the new BCM2835 Unicam (CSI-2 receiver) driver @@ -135611,7 +135611,7 @@ index 4fef10dd2975..cbfee297e9f9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 22 Nov 2018 17:31:06 +0000 -Subject: [PATCH 116/889] media: tc358743: Return an appropriate colorspace +Subject: [PATCH 116/941] media: tc358743: Return an appropriate colorspace from tc358743_set_fmt When calling tc358743_set_fmt, the code was calling tc358743_get_fmt @@ -135715,7 +135715,7 @@ index ba8f63dbbd37..b77b900bf6ad 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 29 Oct 2018 16:20:46 +0000 -Subject: [PATCH 117/889] staging: mmal-vchiq: Avoid use of bool in structures +Subject: [PATCH 117/941] staging: mmal-vchiq: Avoid use of bool in structures Fixes up a checkpatch error "Avoid using bool structure members because of possible alignment issues". @@ -135745,7 +135745,7 @@ index d697ea55a0da..4a2fc257fb9f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 24 Sep 2018 18:15:38 +0100 -Subject: [PATCH 118/889] staging: mmal-vchiq: Add support for event callbacks. +Subject: [PATCH 118/941] staging: mmal-vchiq: Add support for event callbacks. (Preparation for the codec driver). The codec uses the event mechanism to report things such as @@ -136113,7 +136113,7 @@ index 1dc81ecf9268..e87f88f99338 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 24 Sep 2018 18:26:02 +0100 -Subject: [PATCH 119/889] staging: vc04_services: Support sending data to MMAL +Subject: [PATCH 119/941] staging: vc04_services: Support sending data to MMAL ports Add the ability to send data to ports. This only supports @@ -136161,7 +136161,7 @@ index 4d2ba6851d87..2f25b96673e5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 29 Oct 2018 17:57:45 +0000 -Subject: [PATCH 120/889] media: videobuf2: Allow exporting of a struct dmabuf +Subject: [PATCH 120/941] 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 @@ -136252,7 +136252,7 @@ index bbb3f26fbde9..7a4aa9cb28c9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 22 Jan 2019 12:04:09 +0000 -Subject: [PATCH 121/889] staging: mmal-vchiq: Fix client_component for 64 bit +Subject: [PATCH 121/941] staging: mmal-vchiq: Fix client_component for 64 bit kernel The MMAL client_component field is used with the event @@ -136293,7 +136293,7 @@ index 2f25b96673e5..43b80a32c922 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 24 Jan 2019 15:09:28 +0000 -Subject: [PATCH 122/889] clk: clk-bcm2835: Use %zd when printing size_t +Subject: [PATCH 122/941] 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". @@ -136323,7 +136323,7 @@ index f1ef788c1194..2674b979a072 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 18 Sep 2018 11:08:51 +0100 -Subject: [PATCH 123/889] media: ov5647: Use gpiod_set_value_cansleep +Subject: [PATCH 123/941] media: ov5647: Use gpiod_set_value_cansleep All calls to the gpio library are in contexts that can sleep, therefore there is no issue with having those GPIOs controlled @@ -136383,7 +136383,7 @@ index 8a1a515388e0..07550377be2e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 13 Feb 2019 12:33:29 +0000 -Subject: [PATCH 124/889] staging: mmal_vchiq: Add in the Bayer encoding +Subject: [PATCH 124/941] staging: mmal_vchiq: Add in the Bayer encoding formats The list of formats was copied before Bayer support was added. @@ -136440,7 +136440,7 @@ index 2be9941a1f30..44ba91aa6d47 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 18 Feb 2019 15:52:29 +0000 -Subject: [PATCH 125/889] staging: mmal-vchiq: Update mmal_parameters.h with +Subject: [PATCH 125/941] staging: mmal-vchiq: Update mmal_parameters.h with recently defined params mmal_parameters.h hasn't been updated to reflect additions made @@ -136502,7 +136502,7 @@ index a1e39b1b1701..1793103b18fd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 1 May 2019 13:27:23 +0100 -Subject: [PATCH 126/889] staging: mmal-vchiq: Free the event context for +Subject: [PATCH 126/941] staging: mmal-vchiq: Free the event context for control ports vchiq_mmal_component_init calls init_event_context for the @@ -136536,7 +136536,7 @@ index 43b80a32c922..312cd6b74c30 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 2 May 2019 15:50:01 +0100 -Subject: [PATCH 127/889] staging: mmal-vchiq: Fix memory leak in error path +Subject: [PATCH 127/941] staging: mmal-vchiq: Fix memory leak in error path On error, vchiq_mmal_component_init could leave the event context allocated for ports. @@ -136618,7 +136618,7 @@ index 312cd6b74c30..f5222a4b26b3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 12 Jun 2019 17:15:05 +0100 -Subject: [PATCH 128/889] w1: w1-gpio: Make GPIO an output for strong pullup +Subject: [PATCH 128/941] 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 @@ -136651,7 +136651,7 @@ index d4632aace402..4832cd8c2596 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 20 Feb 2019 08:49:39 +0000 -Subject: [PATCH 129/889] arm: bcm2835: Fix FIQ early ioremap +Subject: [PATCH 129/941] arm: bcm2835: Fix FIQ early ioremap The ioremapping creates mappings within the vmalloc area. The equivalent early function, create_mapping, now checks that the @@ -136730,7 +136730,7 @@ index 9b6c921106b5..9bd9842da59f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 29 May 2019 15:47:42 +0100 -Subject: [PATCH 130/889] arm: bcm2835: DMA can only address 1GB +Subject: [PATCH 130/941] 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. @@ -136761,7 +136761,7 @@ index 9bd9842da59f..7d59a9364175 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Sat, 4 May 2019 17:06:15 +0200 -Subject: [PATCH 131/889] hwrng: iproc-rng200: Add BCM2838 support +Subject: [PATCH 131/941] 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. @@ -136922,7 +136922,7 @@ index 01583faf9893..2a92ea658096 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 2 Aug 2019 15:20:11 +0100 -Subject: [PATCH 132/889] mmc: sdhci-iproc: Fix vmmc regulators on iProc +Subject: [PATCH 132/941] mmc: sdhci-iproc: Fix vmmc regulators on iProc The Linux support for controlling card power via regulators appears to be contentious. I would argue that the default behaviour is contrary to @@ -136974,7 +136974,7 @@ index b9eb2ec61a83..7658898cf39b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 1 Nov 2018 17:31:37 +0000 -Subject: [PATCH 133/889] vchiq: Add 36-bit address support +Subject: [PATCH 133/941] vchiq: 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 @@ -137186,7 +137186,7 @@ index 0784c5002417..f8b1c005af62 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 30 Apr 2019 19:15:30 +0100 -Subject: [PATCH 134/889] bcm2835-pcm.c: Support multichannel audio +Subject: [PATCH 134/941] bcm2835-pcm.c: Support multichannel audio --- .../vc04_services/bcm2835-audio/bcm2835-pcm.c | 17 +++++++++-------- @@ -137238,7 +137238,7 @@ index 096f2c54258a..3c0033101e6e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 12 Sep 2018 14:44:53 +0100 -Subject: [PATCH 135/889] bcmgenet: constrain max DMA burst length +Subject: [PATCH 135/941] bcmgenet: constrain max DMA burst length --- drivers/net/ethernet/broadcom/genet/bcmgenet.h | 2 +- @@ -137264,7 +137264,7 @@ index f6ca01da141d..45ea07829b8c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 27 Mar 2019 13:45:46 +0000 -Subject: [PATCH 136/889] bcmgenet: Better coalescing parameter defaults +Subject: [PATCH 136/941] bcmgenet: Better coalescing parameter defaults Set defaults for TX and RX packet coalescing to be equivalent to: @@ -137313,7 +137313,7 @@ index db74241935ab..05d138849867 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 14 May 2019 17:17:59 +0100 -Subject: [PATCH 137/889] net: genet: enable link energy detect powerdown for +Subject: [PATCH 137/941] net: genet: enable link energy detect powerdown for external PHYs There are several warts surrounding bcmgenet_mii_probe() as this @@ -137350,7 +137350,7 @@ index f9e91304d232..7abd5ddebd8e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Mon, 13 May 2019 11:05:27 +0000 -Subject: [PATCH 138/889] spi: bcm2835: enable shared interrupt support +Subject: [PATCH 138/941] spi: bcm2835: enable shared interrupt support Add shared interrupt support for this driver. @@ -137391,7 +137391,7 @@ index 33c32e931767..1240422970df 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 23 Jan 2019 16:11:50 +0000 -Subject: [PATCH 139/889] clk-bcm2835: Don't wait for pllh lock +Subject: [PATCH 139/941] clk-bcm2835: Don't wait for pllh lock Signed-off-by: Phil Elwell --- @@ -137435,7 +137435,7 @@ index 2674b979a072..38f97f1707d2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 11 Jan 2019 17:31:07 -0800 -Subject: [PATCH 140/889] soc: bcm: bcm2835-pm: Add support for 2711. +Subject: [PATCH 140/941] soc: bcm: bcm2835-pm: Add support for 2711. Without the actual power management part any more, there's a lot less to set up for V3D. We just need to clear the RSTN field for the power @@ -137547,7 +137547,7 @@ index ed37dc40e82a..b2d157091e12 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 2 May 2019 15:11:05 -0700 -Subject: [PATCH 141/889] clk: bcm2835: Add support for setting leaf clock +Subject: [PATCH 141/941] 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 @@ -137606,7 +137606,7 @@ index 38f97f1707d2..4cf4f5e12fe2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 2 May 2019 15:24:04 -0700 -Subject: [PATCH 142/889] clk: bcm2835: Allow reparenting leaf clocks while +Subject: [PATCH 142/941] clk: bcm2835: Allow reparenting leaf clocks while they're running. This falls under the same "we can reprogram glitch-free as long as we @@ -137683,7 +137683,7 @@ index 4cf4f5e12fe2..3c55594684cd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 11 Jun 2019 10:55:00 +0100 -Subject: [PATCH 143/889] usb: add plumbing for updating interrupt endpoint +Subject: [PATCH 143/941] usb: add plumbing for updating interrupt endpoint interval state xHCI caches device and endpoint data after the interface is configured, @@ -137799,7 +137799,7 @@ index 9f05016d823f..710e24d74759 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 11 Jun 2019 11:33:39 +0100 -Subject: [PATCH 144/889] xhci: implement xhci_fixup_endpoint for interval +Subject: [PATCH 144/941] xhci: implement xhci_fixup_endpoint for interval adjustments Must be called in a non-atomic context, after the endpoint @@ -137812,7 +137812,7 @@ Signed-off-by: Jonathan Bell 1 file changed, 98 insertions(+) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index 6389dc99bc9a..425a066ed977 100644 +index 0d6dc2e20f2a..c424435fa960 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1467,6 +1467,103 @@ static int xhci_check_maxpacket(struct xhci_hcd *xhci, unsigned int slot_id, @@ -137919,7 +137919,7 @@ index 6389dc99bc9a..425a066ed977 100644 /* * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it -@@ -5362,6 +5459,7 @@ static const struct hc_driver xhci_hc_driver = { +@@ -5367,6 +5464,7 @@ static const struct hc_driver xhci_hc_driver = { .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, @@ -137934,7 +137934,7 @@ index 6389dc99bc9a..425a066ed977 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 11 Jun 2019 11:42:03 +0100 -Subject: [PATCH 145/889] usbhid: call usb_fixup_endpoint after mangling +Subject: [PATCH 145/941] usbhid: call usb_fixup_endpoint after mangling intervals Lets the mousepoll override mechanism work with xhci. @@ -137963,7 +137963,7 @@ index 2d18616f45e2..1f0e61d1312d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 11 Jun 2019 17:38:28 +0100 -Subject: [PATCH 146/889] arm: bcm2835: Add bcm2838 compatible string. +Subject: [PATCH 146/941] arm: bcm2835: Add bcm2838 compatible string. Signed-off-by: Phil Elwell --- @@ -137989,7 +137989,7 @@ index 7d59a9364175..282a023027fc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 4 Oct 2018 17:22:43 -0700 -Subject: [PATCH 147/889] drm/v3d: Add support for 2711. +Subject: [PATCH 147/941] drm/v3d: Add support for 2711. Signed-off-by: Eric Anholt --- @@ -138015,7 +138015,7 @@ index 9f7c26193831..a463f8c0ad4c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 14 Jan 2019 12:35:43 -0800 -Subject: [PATCH 148/889] drm/v3d: Skip MMU flush if the device is currently +Subject: [PATCH 148/941] drm/v3d: Skip MMU flush if the device is currently off. If it's off, we know it will be reset on poweron, so the MMU won't @@ -138073,7 +138073,7 @@ index 5a453532901f..8986e7b96461 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 14 Jan 2019 14:47:57 -0800 -Subject: [PATCH 149/889] drm/v3d: Hook up the runtime PM ops. +Subject: [PATCH 149/941] drm/v3d: Hook up the runtime PM ops. In translating the runtime PM code from vc4, I missed the ".pm" assignment to actually connect them up. Fixes missing MMU setup if @@ -138111,109 +138111,9 @@ index a463f8c0ad4c..5f581fe8c918 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jonathan Bell -Date: Thu, 11 Jul 2019 17:55:43 +0100 -Subject: [PATCH 150/889] xhci: add quirk for host controllers that don't - update endpoint DCS - -Seen on a VLI VL805 PCIe to USB controller. For non-stream endpoints -at least, if the xHC halts on a particular TRB due to an error then -the DCS field in the Out Endpoint Context maintained by the hardware -is not updated with the current cycle state. - -Using the quirk XHCI_EP_CTX_BROKEN_DCS and instead fetch the DCS bit -from the TRB that the xHC stopped on. - -See: https://github.com/raspberrypi/linux/issues/3060 - -Signed-off-by: Jonathan Bell ---- - drivers/usb/host/xhci-pci.c | 4 +++- - drivers/usb/host/xhci-ring.c | 26 +++++++++++++++++++++++++- - drivers/usb/host/xhci.h | 1 + - 3 files changed, 29 insertions(+), 2 deletions(-) - -diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 119d1a8fbb19..618a131bdd53 100644 ---- a/drivers/usb/host/xhci-pci.c -+++ b/drivers/usb/host/xhci-pci.c -@@ -274,8 +274,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) - pdev->device == 0x3432) - xhci->quirks |= XHCI_BROKEN_STREAMS; - -- if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) -+ if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { - xhci->quirks |= XHCI_LPM_SUPPORT; -+ xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; -+ } - - if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && - pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) -diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index dc2068e3bedb..c8d733ff3eb5 100644 ---- a/drivers/usb/host/xhci-ring.c -+++ b/drivers/usb/host/xhci-ring.c -@@ -556,7 +556,10 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, - struct xhci_virt_ep *ep = &dev->eps[ep_index]; - struct xhci_ring *ep_ring; - struct xhci_segment *new_seg; -+ struct xhci_segment *halted_seg = NULL; - union xhci_trb *new_deq; -+ union xhci_trb *halted_trb; -+ int index = 0; - dma_addr_t addr; - u64 hw_dequeue; - bool cycle_found = false; -@@ -594,7 +597,28 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, - hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id); - new_seg = ep_ring->deq_seg; - new_deq = ep_ring->dequeue; -- state->new_cycle_state = hw_dequeue & 0x1; -+ -+ /* -+ * Quirk: xHC write-back of the DCS field in the hardware dequeue -+ * pointer is wrong - use the cycle state of the TRB pointed to by -+ * the dequeue pointer. -+ */ -+ if (xhci->quirks & XHCI_EP_CTX_BROKEN_DCS && -+ !(ep->ep_state & EP_HAS_STREAMS)) -+ halted_seg = trb_in_td(xhci, cur_td->start_seg, -+ cur_td->first_trb, cur_td->last_trb, -+ hw_dequeue & ~0xf, false); -+ if (halted_seg) { -+ index = ((dma_addr_t)(hw_dequeue & ~0xf) - halted_seg->dma) / -+ sizeof(*halted_trb); -+ halted_trb = &halted_seg->trbs[index]; -+ state->new_cycle_state = halted_trb->generic.field[3] & 0x1; -+ xhci_dbg(xhci, "Endpoint DCS = %d TRB index = %d cycle = %d\n", -+ (u8)(hw_dequeue & 0x1), index, -+ state->new_cycle_state); -+ } else { -+ state->new_cycle_state = hw_dequeue & 0x1; -+ } - state->stream_id = stream_id; - - /* -diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 1c97c8d81154..5441604e8967 100644 ---- a/drivers/usb/host/xhci.h -+++ b/drivers/usb/host/xhci.h -@@ -1884,6 +1884,7 @@ struct xhci_hcd { - #define XHCI_DISABLE_SPARSE BIT_ULL(38) - #define XHCI_SG_TRB_CACHE_SIZE_QUIRK BIT_ULL(39) - #define XHCI_NO_SOFT_RETRY BIT_ULL(40) -+#define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(41) - - unsigned int num_active_eps; - unsigned int limit_active_eps; --- -2.18.4 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 12 Jul 2019 15:38:35 +0100 -Subject: [PATCH 151/889] i2c: bcm2835: Set clock-stretch timeout to 35ms +Subject: [PATCH 150/941] 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 @@ -138266,7 +138166,7 @@ index 18b2e9e3d752..5b2589b6b9cc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 6 Aug 2019 15:23:14 +0100 -Subject: [PATCH 152/889] clk-bcm2835: Avoid null pointer exception +Subject: [PATCH 151/941] clk-bcm2835: Avoid null pointer exception clk_desc_array[BCM2835_PLLB] doesn't exist so we dereference null when iterating @@ -138301,7 +138201,7 @@ index 3c55594684cd..d686c51a68a9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 14 Jan 2019 15:13:17 -0800 -Subject: [PATCH 153/889] drm/v3d: HACK: gut runtime pm for now. +Subject: [PATCH 152/941] drm/v3d: HACK: gut runtime pm for now. Something is still unstable -- on starting a new glxgears from an idle X11, I get an MMU violation in high addresses. The CTS also failed @@ -138418,7 +138318,7 @@ index 5f581fe8c918..e6dffb116eb3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 2 May 2019 13:22:53 -0700 -Subject: [PATCH 154/889] drm/v3d: Clock V3D down when not in use. +Subject: [PATCH 153/941] 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. @@ -138589,7 +138489,7 @@ index 182c586525eb..b7b439de8660 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 9 May 2019 14:30:37 +0100 -Subject: [PATCH 155/889] drivers: char: add chardev for mmap'ing the RPiVid +Subject: [PATCH 154/941] drivers: char: add chardev for mmap'ing the RPiVid control registers Based on the gpiomem driver, allow mapping of the decoder register @@ -139047,7 +138947,7 @@ index b2d157091e12..f70a810c55f7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 1 Aug 2019 16:41:20 +0100 -Subject: [PATCH 156/889] hid: usb: Add device quirks for Freeway Airmouse T3 +Subject: [PATCH 155/941] hid: usb: Add device quirks for Freeway Airmouse T3 and MX3 These wireless mouse/keyboard combo remote control devices specify @@ -139118,7 +139018,7 @@ index be53c723c729..9f9d5778114e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Tue, 16 Jul 2019 12:18:21 +0100 -Subject: [PATCH 157/889] Add HDMI1 facility to the driver. +Subject: [PATCH 156/941] Add HDMI1 facility to the driver. For generic ALSA, all you need is the bcm2835.h change, but have also added structures for IEC958 HDMI. Not sure how to @@ -139211,7 +139111,7 @@ index 1b36475872d6..02f50768af96 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 9 Aug 2019 08:51:43 +0100 -Subject: [PATCH 158/889] net: bcmgenet: Workaround #2 for Pi4 Ethernet fail +Subject: [PATCH 157/941] 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 @@ -139268,7 +139168,7 @@ index 05d138849867..82cd64876d66 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 13 Aug 2019 15:53:29 +0100 -Subject: [PATCH 159/889] xhci: Use more event ring segment table entries +Subject: [PATCH 158/941] 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 @@ -139315,7 +139215,7 @@ index ed380ee58ab5..0d336f7451c7 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 5441604e8967..f852e3f2cbd0 100644 +index 45584a278336..3089c4880606 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1653,8 +1653,8 @@ struct urb_priv { @@ -139336,7 +139236,7 @@ index 5441604e8967..f852e3f2cbd0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 15 Aug 2019 12:02:34 +0100 -Subject: [PATCH 160/889] configs: arm64/bcm2711: Enable V3D +Subject: [PATCH 159/941] configs: arm64/bcm2711: Enable V3D Enable the V3D driver, which depends on BCM2835_POWER. @@ -139370,7 +139270,7 @@ index 9a5c44606337..b0e048697964 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 3 Sep 2019 18:16:56 +0100 -Subject: [PATCH 161/889] arch/arm: Add model string to cpuinfo +Subject: [PATCH 160/941] arch/arm: Add model string to cpuinfo Signed-off-by: Phil Elwell --- @@ -139412,7 +139312,7 @@ index b06602cea99c..647caa3f6c7f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 3 Sep 2019 18:17:25 +0100 -Subject: [PATCH 162/889] arch/arm64: Add Revision, Serial, Model to cpuinfo +Subject: [PATCH 161/941] arch/arm64: Add Revision, Serial, Model to cpuinfo Signed-off-by: Phil Elwell --- @@ -139476,7 +139376,7 @@ index 77605aec25fe..721350d21074 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 28 Aug 2019 13:34:30 +0100 -Subject: [PATCH 163/889] media: dt-bindings: Add binding for the Sony IMX219 +Subject: [PATCH 162/941] media: dt-bindings: Add binding for the Sony IMX219 sensor The IMX219 is an 8MPix CSI2 sensor, supporting 2 or 4 data lanes. @@ -139560,7 +139460,7 @@ index 000000000000..a02f1ce1e120 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Sep 2019 15:04:51 +0100 -Subject: [PATCH 164/889] v4l2: Add a Greyworld AWB mode. +Subject: [PATCH 163/941] 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) @@ -139602,7 +139502,7 @@ index a184c4939438..fbe96b80a748 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Sep 2019 15:13:06 +0100 -Subject: [PATCH 165/889] staging: bcm2835-camera: Add greyworld AWB mode +Subject: [PATCH 164/941] 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. @@ -139647,7 +139547,7 @@ index 1793103b18fd..27bafc5f01d2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 18 Sep 2019 17:22:36 +0100 -Subject: [PATCH 166/889] drm/v3d: Delete pm_runtime support +Subject: [PATCH 165/941] drm/v3d: Delete pm_runtime support The pm_runtime was blocking changelist submission, so delete it as a temporary workaround. @@ -139717,7 +139617,7 @@ index 8986e7b96461..618503f2f2f1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 23 Sep 2019 09:26:41 +0100 -Subject: [PATCH 167/889] kbuild: Allow .dtbo overlays to be built piecemeal +Subject: [PATCH 166/941] kbuild: Allow .dtbo overlays to be built piecemeal Before 4.20, it was possible to build an arbitrary overlay by copying it to arm/boot/dts/overlays/mytest-overlay.dts and running: @@ -139739,7 +139639,7 @@ Signed-off-by: Phil Elwell 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile -index 84d540aed24c..099b4e54d6f2 100644 +index a58f49e415dc..49c7041fd947 100644 --- a/Makefile +++ b/Makefile @@ -1354,6 +1354,9 @@ ifneq ($(dtstree),) @@ -139759,7 +139659,7 @@ index 84d540aed24c..099b4e54d6f2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Thu, 19 Sep 2019 20:45:30 +0200 -Subject: [PATCH 168/889] ARM: bcm: Switch board, clk and pinctrl to bcm2711 +Subject: [PATCH 167/941] ARM: bcm: Switch board, clk and pinctrl to bcm2711 compatible After the decision to use bcm2711 compatible for upstream, we should @@ -139791,7 +139691,7 @@ index 282a023027fc..e538e0f899a5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Tue, 24 Sep 2019 18:26:55 +0100 -Subject: [PATCH 169/889] Rename HDMI ALSA device names, check for enable state +Subject: [PATCH 168/941] Rename HDMI ALSA device names, check for enable state HDMI Alsa devices renamed to match names used by DRM, to HDMI 1 and HDMI 2 @@ -139936,7 +139836,7 @@ index eb8a8a5b7ec8..f926784c622d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Thu, 10 Oct 2019 19:12:08 +0200 -Subject: [PATCH 170/889] dt-bindings: Add binding for the Infineon IRS1125 +Subject: [PATCH 169/941] dt-bindings: Add binding for the Infineon IRS1125 sensor Adds a binding for the Infineon IRS1125 time-of-flight depth @@ -140009,7 +139909,7 @@ index 000000000000..25a48028c957 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Thu, 10 Oct 2019 19:12:36 +0200 -Subject: [PATCH 171/889] media: i2c: Add a driver for the Infineon IRS1125 +Subject: [PATCH 170/941] media: i2c: Add a driver for the Infineon IRS1125 depth sensor The Infineon IRS1125 is a time of flight depth sensor that @@ -141254,7 +141154,7 @@ index 000000000000..dccaca23aa76 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 Nov 2019 14:01:41 +0000 -Subject: [PATCH 172/889] drm/v3d: Don't clear MMU control bits on exception +Subject: [PATCH 171/941] drm/v3d: Don't clear MMU control bits on exception MMU exception conditions are reported in the V3D_MMU_CTRL register as write-1-to-clear (W1C) bits. The MMU interrupt handling code clears any @@ -141294,7 +141194,7 @@ index c88686489b88..b804783e2795 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 Nov 2019 20:18:08 +0000 -Subject: [PATCH 173/889] drm/v3d: Suppress all but the first MMU error +Subject: [PATCH 172/941] 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. @@ -141339,7 +141239,7 @@ index b804783e2795..063418907a19 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 12 Nov 2019 16:41:21 +0000 -Subject: [PATCH 174/889] drm/v3d: Plug dma_fence leak +Subject: [PATCH 173/941] 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 @@ -141373,7 +141273,7 @@ index 49c7920608e2..bfbe33a9492d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 Nov 2019 13:57:48 +0000 -Subject: [PATCH 175/889] staging: vchiq_arm: Register vcsm-cma as a platform +Subject: [PATCH 174/941] staging: vchiq_arm: Register vcsm-cma as a platform driver Following the same pattern as bcm2835-camera and bcm2835-audio, @@ -141419,7 +141319,7 @@ index b8579af3948c..5d4b976820fa 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 Nov 2019 13:57:58 +0000 -Subject: [PATCH 176/889] staging: vchiq_arm: Register bcm2835-codec as a +Subject: [PATCH 175/941] staging: vchiq_arm: Register bcm2835-codec as a platform driver Following the same pattern as bcm2835-camera and bcm2835-audio, @@ -141465,7 +141365,7 @@ index 5d4b976820fa..3bbe533007e5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 14 Nov 2019 11:59:01 +0000 -Subject: [PATCH 177/889] net: bcmgenet: The second IRQ is optional +Subject: [PATCH 176/941] net: bcmgenet: The second IRQ is optional As of 5.4, the kernel logs errors for absent IRQs unless requested with platform_get_irq_optional. @@ -141495,7 +141395,7 @@ index 063418907a19..0f7a23f051df 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Thu, 31 Oct 2019 14:39:44 +0000 -Subject: [PATCH 178/889] net:phy:2711 Allow ethernet LED mode to be set via +Subject: [PATCH 177/941] net:phy:2711 Allow ethernet LED mode to be set via device tree Add device tree entries and code to allow the specification of @@ -141547,7 +141447,7 @@ index dbed15dc0fe7..10d70bde381c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: James Hughes Date: Thu, 7 Nov 2019 14:59:59 +0000 -Subject: [PATCH 179/889] net:phy:2711 Change the default ethernet LED actions +Subject: [PATCH 178/941] net:phy:2711 Change the default ethernet LED actions This should return default behaviour back to that of previous releases. @@ -141586,7 +141486,7 @@ index 10d70bde381c..6de9b072b6b9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 23 Aug 2019 16:34:38 +0100 -Subject: [PATCH 180/889] v3d_drv: Handle missing clock more gracefully +Subject: [PATCH 179/941] v3d_drv: Handle missing clock more gracefully Signed-off-by: popcornmix --- @@ -141619,7 +141519,7 @@ index 065fb20cc4a8..bfbea29c6c1f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 5 Sep 2019 17:59:14 +0100 -Subject: [PATCH 181/889] v3d_gem: Kick the clock so firmware knows we are +Subject: [PATCH 180/941] 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 @@ -141652,7 +141552,7 @@ index bfbe33a9492d..b4fb899a9409 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 9 Sep 2019 15:49:56 +0100 -Subject: [PATCH 182/889] clk-raspberrypi: Allow cpufreq driver to also adjust +Subject: [PATCH 181/941] clk-raspberrypi: Allow cpufreq driver to also adjust gpu clocks For performance/power it is beneficial to adjust gpu clocks with arm clock. @@ -141683,7 +141583,7 @@ index f89b9cfc4309..f4884a5b598a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 3 Sep 2019 20:28:00 +0100 -Subject: [PATCH 183/889] clk-bcm2835: Disable v3d clock +Subject: [PATCH 182/941] clk-bcm2835: Disable v3d clock This is controlled by firmware, see clk-raspberrypi.c @@ -141747,7 +141647,7 @@ index d686c51a68a9..84f24244d1b5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 22 Nov 2019 16:23:32 +0000 -Subject: [PATCH 184/889] drm/v3d: Set dma_mask as well as coherent_dma_mask +Subject: [PATCH 183/941] drm/v3d: Set dma_mask as well as coherent_dma_mask Both coherent_dma_mask and dma_mask act as constraints on allocations and bounce buffer usage, so be sure to set dma_mask to the appropriate @@ -141780,7 +141680,7 @@ index bfbea29c6c1f..3237f47a4792 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 29 Jan 2019 16:13:25 +0000 -Subject: [PATCH 185/889] staging: vchiq_arm: Set up dma ranges on child +Subject: [PATCH 184/941] staging: vchiq_arm: Set up dma ranges on child devices The VCHIQ driver now loads the audio, camera, codec, and vc-sm @@ -141819,7 +141719,7 @@ index 3bbe533007e5..ed6c1747be64 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 18 Jun 2019 12:15:50 +0100 -Subject: [PATCH 186/889] staging: vchiq: Use the old dma controller for OF +Subject: [PATCH 185/941] 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 @@ -141876,7 +141776,7 @@ index ed6c1747be64..5e704b366676 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Fri, 27 Dec 2019 11:40:56 +0100 -Subject: [PATCH 187/889] ARM: bcm: Backport BCM2711 support from upstream +Subject: [PATCH 186/941] ARM: bcm: Backport BCM2711 support from upstream Make the BCM2711 a different machine, but keep it in board_bcm2835. @@ -141929,7 +141829,7 @@ index e538e0f899a5..91a758c61f48 100644 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 188/889] Initialise rpi-firmware before clk-bcm2835 +Subject: [PATCH 187/941] 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 @@ -141984,7 +141884,7 @@ index a3f9d0cbcebb..a47609ec7e63 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 3 Feb 2020 17:30:46 +0000 -Subject: [PATCH 189/889] staging: vchiq_arm: Give vchiq children DT nodes +Subject: [PATCH 188/941] 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 @@ -142029,7 +141929,7 @@ index 5e704b366676..8d518bd9a6cd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 6 Jan 2020 16:04:30 +0000 -Subject: [PATCH 190/889] pinctrl: bcm2835: Remove gpiochip on error +Subject: [PATCH 189/941] 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. @@ -142060,7 +141960,7 @@ index bbf761c41dc5..2696029e1689 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 6 Jan 2020 14:05:42 +0000 -Subject: [PATCH 191/889] pinctrl: bcm2835: Change init order for gpio hogs +Subject: [PATCH 190/941] pinctrl: bcm2835: Change init order for gpio hogs pinctrl-bcm2835 is a combined pinctrl/gpio driver. Currently the gpio side is registered first, but this breaks gpio hogs (which are @@ -142144,7 +142044,7 @@ index 2696029e1689..edb3a863871d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 25 Feb 2020 17:38:20 +0000 -Subject: [PATCH 192/889] pinctrl: bcm2835: Accept fewer than expected IRQs +Subject: [PATCH 191/941] pinctrl: bcm2835: Accept fewer than expected IRQs The downstream .dts files only request two GPIO IRQs. Truncate the array of parent IRQs when irq_of_parse_and_map returns 0. @@ -142181,7 +142081,7 @@ index edb3a863871d..bda29f421e78 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 2 Mar 2020 14:40:19 +0000 -Subject: [PATCH 193/889] drivers: char: vcio: Use common compat header +Subject: [PATCH 192/941] drivers: char: vcio: Use common compat header The definition of compat_ptr is now common for most platforms, but requires the inclusion of . @@ -142210,7 +142110,7 @@ index d2598663a2b5..a39155a94fb7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 2 Mar 2020 14:42:23 +0000 -Subject: [PATCH 194/889] video: fbdev: bcm2708_fb: Use common compat header +Subject: [PATCH 193/941] video: fbdev: bcm2708_fb: Use common compat header The definition of compat_ptr is now common for most platforms, but requires the inclusion of . @@ -142239,7 +142139,7 @@ index 0e9ec3f593b8..17e9260655e4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 6 Feb 2020 12:23:15 +0000 -Subject: [PATCH 195/889] of: overlay: Correct symbol path fixups +Subject: [PATCH 194/941] 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 @@ -142282,7 +142182,7 @@ index 43a77d720008..bccef312f4c3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jim Quinlan Date: Mon, 15 Jan 2018 18:28:39 -0500 -Subject: [PATCH 196/889] dt-bindings: pci: Add DT docs for Brcmstb PCIe device +Subject: [PATCH 195/941] 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 @@ -142366,7 +142266,7 @@ index 000000000000..a1a9ad5e70ca From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nataliya Korovkina Date: Thu, 12 Mar 2020 17:22:53 -0400 -Subject: [PATCH 197/889] Kbuild: Allow .dtbo overlays to be built, adjust. +Subject: [PATCH 196/941] Kbuild: Allow .dtbo overlays to be built, adjust. This is adjustment to commit d368ceaacdccd7732dc97d1d7987bdf7149d62e3 "kbuild: Allow .dtbo overlays to be built piecemeal" @@ -142379,7 +142279,7 @@ Signed-off-by: Nataliya Korovkina 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile -index 099b4e54d6f2..11026140a242 100644 +index 49c7041fd947..1272da9cb1ec 100644 --- a/Makefile +++ b/Makefile @@ -1354,7 +1354,7 @@ ifneq ($(dtstree),) @@ -142398,7 +142298,7 @@ index 099b4e54d6f2..11026140a242 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 Apr 2020 11:22:44 +0100 -Subject: [PATCH 198/889] bcmgenet: Disable skip_umac_reset by default +Subject: [PATCH 197/941] bcmgenet: Disable skip_umac_reset by default Possible fixed upstream by 'net: bcmgenet: keep MAC in reset until PHY is up' @@ -142427,7 +142327,7 @@ index 82cd64876d66..06e0e3d0f2b5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 24 Jan 2020 14:22:06 +0000 -Subject: [PATCH 199/889] drm/fourcc: Add packed 10bit YUV 4:2:0 format +Subject: [PATCH 198/941] drm/fourcc: Add packed 10bit YUV 4:2:0 format Adds a format that is 3 10bit YUV 4:2:0 samples packed into a 32bit work (with 2 spare bits). @@ -142490,7 +142390,7 @@ index 5498d7a6556a..3aeab2680295 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Fri, 13 Dec 2019 17:04:25 +0100 -Subject: [PATCH 200/889] media: uapi: hevc: Add scaling matrix control +Subject: [PATCH 199/941] media: uapi: hevc: Add scaling matrix control Taken from https://patchwork.linuxtv.org/patch/60728/ Changes (mainly documentation) have been requested. @@ -142652,7 +142552,7 @@ index a3b650ab00f6..3cf7da003cd9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Fri, 13 Dec 2019 17:04:27 +0100 -Subject: [PATCH 201/889] media: uapi: hevc: Add segment address field +Subject: [PATCH 200/941] media: uapi: hevc: Add segment address field From https://patchwork.linuxtv.org/patch/60725/ Changes requested, but mainly docs. @@ -142721,7 +142621,7 @@ index 3cf7da003cd9..ffc701e268eb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 23 Mar 2020 19:00:17 +0000 -Subject: [PATCH 202/889] media: uapi: Add hevc ctrls for WPP decoding +Subject: [PATCH 201/941] media: uapi: Add hevc ctrls for WPP decoding WPP can allow greater parallelism within the decode, but needs offset information to be passed in. @@ -142767,7 +142667,7 @@ index ffc701e268eb..6a4901d7caf3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 24 Jan 2020 14:28:21 +0000 -Subject: [PATCH 203/889] media: videodev2.h: Add a format for column YUV4:2:0 +Subject: [PATCH 202/941] 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 @@ -143084,7 +142984,7 @@ index 56c443cc2c3d..568801746d2d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 17 Mar 2020 10:53:16 +0000 -Subject: [PATCH 204/889] media: dt-bindings: media: Add binding for the +Subject: [PATCH 203/941] 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. @@ -143199,7 +143099,7 @@ index cbfee297e9f9..b5113e381d78 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 5 Mar 2020 18:30:41 +0000 -Subject: [PATCH 205/889] staging: media: Add Raspberry Pi V4L2 H265 decoder +Subject: [PATCH 204/941] staging: media: Add Raspberry Pi V4L2 H265 decoder This driver is for the HEVC/H265 decoder block on the Raspberry Pi 4, and conforms to the V4L2 stateless decoder API. @@ -147581,7 +147481,7 @@ index 000000000000..9c4f3fb2f9f6 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 6 Dec 2019 13:05:27 +0100 -Subject: [PATCH 206/889] mmc: sdhci: Silence MMC warnings +Subject: [PATCH 205/941] mmc: sdhci: Silence MMC warnings When the MMC isn't plugged in, the driver will spam the console which is pretty annoying when using NFS. @@ -147592,7 +147492,7 @@ Signed-off-by: Maxime Ripard 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c -index b1e1d327cb8e..30d5f2debfd9 100644 +index 07d131fac760..1be14eaf6229 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -41,7 +41,7 @@ @@ -147604,7 +147504,7 @@ index b1e1d327cb8e..30d5f2debfd9 100644 #define MAX_TUNING_LOOP 40 -@@ -3127,7 +3127,7 @@ static void sdhci_timeout_timer(struct timer_list *t) +@@ -3133,7 +3133,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)) { @@ -147613,7 +147513,7 @@ index b1e1d327cb8e..30d5f2debfd9 100644 mmc_hostname(host->mmc)); sdhci_dumpregs(host); -@@ -3149,7 +3149,7 @@ static void sdhci_timeout_data_timer(struct timer_list *t) +@@ -3155,7 +3155,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))) { @@ -147629,7 +147529,7 @@ index b1e1d327cb8e..30d5f2debfd9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 13 Feb 2020 17:51:09 +0100 -Subject: [PATCH 207/889] dt-bindings: clock: Add a binding for the RPi +Subject: [PATCH 206/941] dt-bindings: clock: Add a binding for the RPi Firmware clocks The firmare running on the RPi VideoCore can be used to discover and @@ -147699,7 +147599,7 @@ index 000000000000..d37bc311321d From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 13 Feb 2020 16:45:24 +0100 -Subject: [PATCH 208/889] dt-bindings: display: vc4: hdmi: Add BCM2711 HDMI +Subject: [PATCH 207/941] dt-bindings: display: vc4: hdmi: Add BCM2711 HDMI controllers bindings The HDMI controllers found in the BCM2711 SoC need some adjustments to the @@ -147879,7 +147779,7 @@ index f54b4e4808f0..899d8cfa1731 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 27 Jan 2020 10:22:44 +0000 -Subject: [PATCH 209/889] drm: Checking of the pitch is only valid for linear +Subject: [PATCH 208/941] drm: Checking of the pitch is only valid for linear formats framebuffer_check was computing a minimum pitch value and ensuring @@ -147925,7 +147825,7 @@ index 2f5b0c2bb0fe..89ced6af9c5c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 20 Apr 2020 22:18:52 +0100 -Subject: [PATCH 210/889] driver: char: rpivid: Remove legacy name support +Subject: [PATCH 209/941] driver: char: rpivid: Remove legacy name support Signed-off-by: Phil Elwell --- @@ -147984,7 +147884,7 @@ index fbf3d4f3fe0c..5f4c91924ec1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 17 Apr 2020 10:46:19 +0100 -Subject: [PATCH 211/889] spi: Force CS_HIGH if GPIO descriptors are used +Subject: [PATCH 210/941] 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 @@ -148047,7 +147947,7 @@ index 8c261eac2cee..4436fd319df3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 21 Apr 2020 11:30:23 +0100 -Subject: [PATCH 212/889] driver: char: rpivid: Don't map more than wanted +Subject: [PATCH 211/941] driver: char: rpivid: Don't map more than wanted Limit mappings to the permitted range, but don't map more than asked for otherwise we walk off the end of the allocated VMA. @@ -148104,7 +148004,7 @@ index 5f4c91924ec1..9f38083f4cb6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 1 Apr 2020 08:39:49 +0100 -Subject: [PATCH 213/889] media: bcm2835-unicam: Driver for CCP2/CSI2 camera +Subject: [PATCH 212/941] media: bcm2835-unicam: Driver for CCP2/CSI2 camera interface Add driver for the Unicam camera receiver block on @@ -150835,7 +150735,7 @@ index 000000000000..ae059a171d0f From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 1 Apr 2020 08:46:29 +0100 -Subject: [PATCH 214/889] media: uapi: v4l2-core: Add sensor ancillary data +Subject: [PATCH 213/941] media: uapi: v4l2-core: Add sensor ancillary data V4L2 foucc type. Add V4L2_META_FMT_SENSOR_DATA format 4CC. @@ -150933,7 +150833,7 @@ index 568801746d2d..d93d5bb7059b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 21 Jan 2020 14:06:47 +0000 -Subject: [PATCH 215/889] media: uapi: Add MEDIA_BUS_FMT_SENSOR_DATA media bus +Subject: [PATCH 214/941] media: uapi: Add MEDIA_BUS_FMT_SENSOR_DATA media bus format This patch adds MEDIA_BUS_FMT_SENSOR_DATA used by the bcm2835-unicam @@ -151005,7 +150905,7 @@ index 84fa53ffb13f..3c2848e91c1b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 7 Apr 2020 10:42:14 +0100 -Subject: [PATCH 216/889] media: bcm2835-unicam: Add support for mulitple +Subject: [PATCH 215/941] media: bcm2835-unicam: Add support for mulitple device nodes. Move device node specific state out of the device state structure and @@ -152094,7 +151994,7 @@ index 9da9f22c3db5..b34551a3f44b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 16 Apr 2020 11:35:41 +0100 -Subject: [PATCH 217/889] media: bcm2835-unicam: Add embedded data node. +Subject: [PATCH 216/941] media: bcm2835-unicam: Add embedded data node. This patch adds a new node in the bcm2835-unicam driver to support CSI-2 embedded data streams. The subdevice is queried to see if @@ -153268,7 +153168,7 @@ index b34551a3f44b..d5e0f70b600c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 2 Apr 2020 16:08:51 +0100 -Subject: [PATCH 218/889] media: bcm2835-unicam: Use dummy buffer if none have +Subject: [PATCH 217/941] media: bcm2835-unicam: Use dummy buffer if none have been queued If no buffer has been queued by a userland application, we use an @@ -153582,7 +153482,7 @@ index d5e0f70b600c..933f1ba49e3d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Tue, 24 Mar 2020 23:13:02 +0200 -Subject: [PATCH 219/889] media: bcm2835-unicam: Disable event-related ioctls +Subject: [PATCH 218/941] media: bcm2835-unicam: Disable event-related ioctls on metadata node The unicam driver supports both the SOURCE_CHANGE and CTRL events. Both @@ -153619,7 +153519,7 @@ index 933f1ba49e3d..2d4c7a247fc5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Tue, 24 Mar 2020 23:13:02 +0200 -Subject: [PATCH 220/889] media: bcm2835-unicam: Add support for the FRAME_SYNC +Subject: [PATCH 219/941] media: bcm2835-unicam: Add support for the FRAME_SYNC event The FRAME_SYNC event is useful for userspace image processing algorithms @@ -153680,7 +153580,7 @@ index 2d4c7a247fc5..21d3a8585118 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 12 Mar 2020 14:09:38 +0000 -Subject: [PATCH 221/889] media: imx219: Advertise embedded data node on media +Subject: [PATCH 220/941] media: imx219: Advertise embedded data node on media pad 1 This commit updates the imx219 driver to adverise support for embedded @@ -154022,7 +153922,7 @@ index 4771d0ef2c46..5af610f7fc08 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 21 Apr 2020 16:26:03 +0100 -Subject: [PATCH 222/889] media: bcm2835-unicam: Re-fetch mbus code from subdev +Subject: [PATCH 221/941] media: bcm2835-unicam: Re-fetch mbus code from subdev on a g_fmt call The sensor subdevice may change the Bayer order if a H/V flip is @@ -154077,7 +153977,7 @@ index 21d3a8585118..d4684fb2797f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 23 Apr 2020 10:20:26 +0100 -Subject: [PATCH 223/889] media: uapi: v4l2-core: Add ISP statistics output +Subject: [PATCH 222/941] media: uapi: v4l2-core: Add ISP statistics output V4L2 fourcc type Add V4L2_META_FMT_BCM2835_ISP_STATS V4L2 format type. @@ -154184,7 +154084,7 @@ index d93d5bb7059b..e9fbb04a3519 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 21 Apr 2020 15:06:19 +0100 -Subject: [PATCH 224/889] media: uapi: v4l-ctrls: Add CID base for the +Subject: [PATCH 223/941] media: uapi: v4l-ctrls: Add CID base for the bcm2835-isp driver We are reserving controls for the new bcm2835-isp driver. @@ -154364,7 +154264,7 @@ index fbe96b80a748..0b8ae128b961 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 22 Apr 2020 08:32:32 +0100 -Subject: [PATCH 225/889] staging: vchiq: Load bcm2835_isp driver from vchiq +Subject: [PATCH 224/941] 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. @@ -154409,7 +154309,7 @@ index 8d518bd9a6cd..08083aa61808 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 4 Apr 2019 13:33:47 +0100 -Subject: [PATCH 226/889] bcm2835-dma: Add proper 40-bit DMA support +Subject: [PATCH 225/941] 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. @@ -155215,7 +155115,7 @@ index 87b5d0bef355..ac0458a8027f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 20 Apr 2020 11:01:21 +0100 -Subject: [PATCH 227/889] media: i2c: imx219: Declare that the driver can +Subject: [PATCH 226/941] media: i2c: imx219: Declare that the driver can create events The flag V4L2_SUBDEV_FL_HAS_EVENTS is required if the subdev can @@ -155248,7 +155148,7 @@ index 5af610f7fc08..79faa8cce94e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 15 Jan 2020 13:40:38 +0000 -Subject: [PATCH 228/889] media: ov5647: Fix return codes from +Subject: [PATCH 227/941] media: ov5647: Fix return codes from ov5647_write/ov5647_read functions. Previously they were returning positive non-zero codes for success, @@ -155328,7 +155228,7 @@ index 07550377be2e..6ecc018ac431 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 29 Jan 2020 15:30:53 +0000 -Subject: [PATCH 229/889] media: ov5647: Add basic support for multiple sensor +Subject: [PATCH 228/941] media: ov5647: Add basic support for multiple sensor modes. Specifically: @@ -155741,7 +155641,7 @@ index 6ecc018ac431..0d84b7640cf3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 29 Jan 2020 15:31:23 +0000 -Subject: [PATCH 230/889] media: ov5647: Add V4L2 controls for analogue gain, +Subject: [PATCH 229/941] media: ov5647: Add V4L2 controls for analogue gain, exposure and AWB Added basic v4l2_ctrl_handler infrastructure (there was none @@ -156024,7 +155924,7 @@ index 0d84b7640cf3..16cfafc9cf9c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 29 Jan 2020 15:31:28 +0000 -Subject: [PATCH 231/889] media: ov5647: Add extra 10-bit sensor modes. +Subject: [PATCH 230/941] media: ov5647: Add extra 10-bit sensor modes. The 8-bit VGA mode remains, we add the following 10-bit modes: @@ -156579,7 +156479,7 @@ index 16cfafc9cf9c..fc6c5d9c4532 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 29 Jan 2020 15:31:32 +0000 -Subject: [PATCH 232/889] media: ov5647: change defaults to better match raw +Subject: [PATCH 231/941] media: ov5647: change defaults to better match raw camera applications. Specifically: @@ -156644,7 +156544,7 @@ index fc6c5d9c4532..66b3ee5cc190 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 11:46:07 +0100 -Subject: [PATCH 233/889] media: i2c: ov5647: Add support for g_selection to +Subject: [PATCH 232/941] media: i2c: ov5647: Add support for g_selection to reflect cropping/binning In order to apply lens shading correctly the client needs to know how @@ -156856,7 +156756,7 @@ index 66b3ee5cc190..e7c7e3ab4b38 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 11:50:52 +0100 -Subject: [PATCH 234/889] media: i2c: ov5467: Fixup error path to release mutex +Subject: [PATCH 233/941] media: i2c: ov5467: Fixup error path to release mutex "87f3ab9 media: ov5647: Add basic support for multiple sensor modes." added a return path ov5647_set_fmt that didn't release the device @@ -156891,7 +156791,7 @@ index e7c7e3ab4b38..09d68b0b4a13 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 12:25:13 +0100 -Subject: [PATCH 235/889] media: i2c: ov5647: Support V4L2_CID_PIXEL_RATE +Subject: [PATCH 234/941] media: i2c: ov5647: Support V4L2_CID_PIXEL_RATE Clients need to know the pixel rate in order to compute exposure and frame rate values. @@ -157028,7 +156928,7 @@ index 09d68b0b4a13..02d72feb837e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 17:25:56 +0100 -Subject: [PATCH 236/889] media: i2c: ov5647: Set V4L2_SUBDEV_FL_HAS_EVENTS +Subject: [PATCH 235/941] media: i2c: ov5647: Set V4L2_SUBDEV_FL_HAS_EVENTS flag The ov5647 subdev can generate control events, therefore set @@ -157177,7 +157077,7 @@ index 02d72feb837e..c012e0b3d68b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 21:39:58 +0100 -Subject: [PATCH 237/889] media: i2c: ov5647: Add support for V4L2_CID_VBLANK +Subject: [PATCH 236/941] media: i2c: ov5647: Add support for V4L2_CID_VBLANK Adds vblank control to allow for frame rate control. @@ -157388,7 +157288,7 @@ index c012e0b3d68b..445a0ce186ec 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 21:47:25 +0100 -Subject: [PATCH 238/889] media: i2c: ov5647: Neither analogue gain nor +Subject: [PATCH 237/941] media: i2c: ov5647: Neither analogue gain nor exposure need EXECUTE_ON_WRITE The controls for analogue gain and exposure were defined with @@ -157452,7 +157352,7 @@ index 445a0ce186ec..49247711221c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 22:11:01 +0100 -Subject: [PATCH 239/889] media: i2c: ov5647: Use member names in mode tables +Subject: [PATCH 238/941] media: i2c: ov5647: Use member names in mode tables To make adding new members to the mode structures easier, use the member names in the initialisers. @@ -157569,7 +157469,7 @@ index 49247711221c..da4ef30d8f32 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 30 Apr 2020 11:03:00 +0100 -Subject: [PATCH 240/889] media: i2c: ov5647: Advertise the correct exposure +Subject: [PATCH 239/941] media: i2c: ov5647: Advertise the correct exposure range Exposure is clipped by the VTS of the mode, so needs to be updated as @@ -157694,7 +157594,7 @@ index da4ef30d8f32..6d84d2785f74 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 16:45:02 +0100 -Subject: [PATCH 241/889] media: bcm2835-unicam: Add support for +Subject: [PATCH 240/941] media: bcm2835-unicam: Add support for VIDIOC_[S|G]_SELECTION Sensors are now reflecting cropping and scaling parameters through @@ -157782,7 +157682,7 @@ index d4684fb2797f..0e1d525a0b35 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 29 Apr 2020 22:05:09 +0100 -Subject: [PATCH 242/889] media: bcm2835-unicam: Do not stop streaming in +Subject: [PATCH 241/941] media: bcm2835-unicam: Do not stop streaming in unicam_release unicam_release calls _vb2_fop_release, which will call stop_streaming @@ -157816,7 +157716,7 @@ index 0e1d525a0b35..c7e211d04ed3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 30 Apr 2020 09:52:50 +0100 -Subject: [PATCH 243/889] media: bcm2835-unicam: Fix reference counting in +Subject: [PATCH 242/941] media: bcm2835-unicam: Fix reference counting in unicam_open The reference counting of node->open was only incremented after @@ -157860,7 +157760,7 @@ index c7e211d04ed3..a79fc4d99d36 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jacko Dirks Date: Tue, 5 May 2020 14:28:14 +0200 -Subject: [PATCH 244/889] media: i2c: tc358743: Fix fallthrough warning +Subject: [PATCH 243/941] media: i2c: tc358743: Fix fallthrough warning Signed-off-by: Jacko Dirks --- @@ -157886,7 +157786,7 @@ index b77b900bf6ad..ee6779a81d43 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jacko Dirks Date: Tue, 5 May 2020 14:33:31 +0200 -Subject: [PATCH 245/889] media: bcm2835: unicam: Fix uninitialized warning +Subject: [PATCH 244/941] media: bcm2835: unicam: Fix uninitialized warning Signed-off-by: Jacko Dirks --- @@ -157913,7 +157813,7 @@ index a79fc4d99d36..92e5deb4c6fd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 5 May 2020 19:45:41 +0100 -Subject: [PATCH 246/889] video: bcm2708_fb: Disable FB if no displays found +Subject: [PATCH 245/941] 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 @@ -157953,7 +157853,7 @@ index 17e9260655e4..dac5c021ce52 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 7 May 2020 15:50:54 +0100 -Subject: [PATCH 247/889] dt-bindings: media: i2c: Add IMX477 CMOS sensor +Subject: [PATCH 246/941] dt-bindings: media: i2c: Add IMX477 CMOS sensor binding Add YAML device tree binding for IMX477 CMOS image sensor. @@ -158090,7 +157990,7 @@ index 000000000000..0994e13e67f6 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 13 May 2020 18:28:27 +0100 -Subject: [PATCH 248/889] media: bcm2835-unicam: Always service interrupts +Subject: [PATCH 247/941] 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 @@ -158147,7 +158047,7 @@ index 92e5deb4c6fd..52a534d932bf 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 13 May 2020 20:10:15 +0100 -Subject: [PATCH 249/889] sc16is7xx: Fix for hardware flow control +Subject: [PATCH 248/941] sc16is7xx: Fix for hardware flow control The SC16IS7XX hardware flow control is mishandled by the driver in a number of ways: @@ -158223,7 +158123,7 @@ index f64e051c0030..8e3b83fac33c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 15 May 2020 13:42:10 +0100 -Subject: [PATCH 250/889] staging: vc04_services: mmal-vchiq: Update parameters +Subject: [PATCH 249/941] staging: vc04_services: mmal-vchiq: Update parameters list Adds in a couple of new MMAL parameter defines. @@ -158257,7 +158157,7 @@ index 27bafc5f01d2..89059bca0b77 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 15 May 2020 13:48:59 +0100 -Subject: [PATCH 251/889] staging:vc04_services: bcm2835-camera: Request +Subject: [PATCH 250/941] staging:vc04_services: bcm2835-camera: Request headers with I-frame V4L2 wishes to have the codec header bytes in the same buffer as the @@ -158293,7 +158193,7 @@ index df90c1f9d148..bea37cb163fc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 8 Apr 2020 15:23:56 +0100 -Subject: [PATCH 252/889] kbuild: Disable gcc plugins +Subject: [PATCH 251/941] kbuild: Disable gcc plugins The GCC plugin feature leads to different kernel configurations on what ought to be equivalent build systems because they depend on the build @@ -158327,7 +158227,7 @@ index b79fd0bea838..c3d0c8fedbdd 100755 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 19 May 2020 11:46:47 +0100 -Subject: [PATCH 253/889] media: bcm2835-unicam: Retain packing information on +Subject: [PATCH 252/941] media: bcm2835-unicam: Retain packing information on G_FMT The change to retrieve the pixel format always on g_fmt didn't @@ -158381,7 +158281,7 @@ index 52a534d932bf..b32b2d33a4e2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 5 May 2020 15:23:32 +0100 -Subject: [PATCH 254/889] zswap: Defer zswap initialisation +Subject: [PATCH 253/941] 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 @@ -158512,7 +158412,7 @@ index fbb782924ccc..0ca7f6a68d20 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 22 May 2020 11:35:33 +0100 -Subject: [PATCH 255/889] SQUASH: pinctrl: bcm2835: Set base for bcm2711 GPIO +Subject: [PATCH 254/941] SQUASH: pinctrl: bcm2835: Set base for bcm2711 GPIO to 0 Without this patch GPIOs don't seem to work properly, primarily @@ -158545,7 +158445,7 @@ index bda29f421e78..c5d88157f4b2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 20 May 2020 16:36:33 +0100 -Subject: [PATCH 256/889] staging: vchiq_arm: Clean up 40-bit DMA support +Subject: [PATCH 255/941] staging: vchiq_arm: Clean up 40-bit DMA support Manage the split between addresses for the VPU and addresses for the 40-bit DMA controller with a dedicated DMA device pointer that on non- @@ -158727,7 +158627,7 @@ index 08083aa61808..c3ca18e4e85c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 28 May 2020 11:09:48 +0100 -Subject: [PATCH 257/889] media: bcm2835-unicam: change minimum number of +Subject: [PATCH 256/941] 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 @@ -158761,7 +158661,7 @@ index b32b2d33a4e2..e76323af0952 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 19 May 2020 09:46:12 +0100 -Subject: [PATCH 258/889] brcmfmac: BCM43436 needs dedicated firmware +Subject: [PATCH 257/941] brcmfmac: BCM43436 needs dedicated firmware Signed-off-by: Phil Elwell --- @@ -158797,7 +158697,7 @@ index bfe4b8e5a716..d6a4d6b8ea29 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hristo Venev Date: Fri, 5 Jun 2020 09:22:49 +0000 -Subject: [PATCH 259/889] snd_bcm2835: disable HDMI audio when vc4 is used +Subject: [PATCH 258/941] snd_bcm2835: disable HDMI audio when vc4 is used (#3640) Things don't work too well when both the vc4 driver and the firmware @@ -158836,7 +158736,7 @@ index f926784c622d..31968fec297f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 24 Apr 2018 14:42:27 +0100 -Subject: [PATCH 260/889] gpiolib: Don't prevent IRQ usage of output GPIOs +Subject: [PATCH 259/941] 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 @@ -158892,7 +158792,7 @@ index af5bb8fedfea..2bd26c985246 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 11 Jun 2020 09:57:03 +0100 -Subject: [PATCH 261/889] PCI: brcmstb: Add DT property to control L1SS +Subject: [PATCH 260/941] 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. @@ -158977,7 +158877,7 @@ index 9c3d2982248d..fea54f6fb7b1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:24:31 +0200 -Subject: [PATCH 262/889] media: irs1125: Using i2c_transfer for ic2 reads +Subject: [PATCH 261/941] 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. @@ -159048,7 +158948,7 @@ index 25e1dd5a08ef..6680afea5894 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:27:42 +0200 -Subject: [PATCH 263/889] media: irs1125: Refactoring and debug messages +Subject: [PATCH 262/941] media: irs1125: Refactoring and debug messages Changed some variable names to comply with checkpatch --strict mode. Debug messages added. @@ -159177,7 +159077,7 @@ index 6680afea5894..289f0c25b141 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:31:36 +0200 -Subject: [PATCH 264/889] media: irs1125: Atomic access to imager +Subject: [PATCH 263/941] media: irs1125: Atomic access to imager reconfiguration Instead of changing the exposure and framerate settings for all sequences, @@ -159566,7 +159466,7 @@ index dccaca23aa76..96d676123d5e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Markus Proeller Date: Tue, 16 Jun 2020 13:33:56 +0200 -Subject: [PATCH 265/889] media: irs1125: Keep HW in sync after imager reset +Subject: [PATCH 264/941] 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 @@ -159753,7 +159653,7 @@ index d59e05004a03..30c3d2640386 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxim Mikityanskiy Date: Sat, 20 Jun 2020 15:40:00 +0300 -Subject: [PATCH 266/889] staging: bcm2835-audio: Add missing MODULE_ALIAS +Subject: [PATCH 265/941] staging: bcm2835-audio: Add missing MODULE_ALIAS Commit 8353fe6f1e0f ("Revert "staging: bcm2835-audio: Drop DT dependency"") reverts the upstream change and makes bcm2835-audio use @@ -159789,7 +159689,7 @@ index 31968fec297f..a0cba3823e5e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 26 Jun 2020 11:51:05 +0100 -Subject: [PATCH 267/889] brcmfmac: Prefer a ccode from OTP over nvram file +Subject: [PATCH 266/941] 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. @@ -159926,7 +159826,7 @@ index d821a4758f8c..adfea97c9a43 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 23 Jun 2020 10:05:57 +0100 -Subject: [PATCH 268/889] drivers: media: Remove the downstream version of +Subject: [PATCH 267/941] drivers: media: Remove the downstream version of bcm2835-unicam About to be replaced by the upstream version. @@ -163117,7 +163017,7 @@ index ae059a171d0f..000000000000 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 4 May 2020 12:25:41 +0300 -Subject: [PATCH 269/889] media: bcm2835-unicam: Driver for CCP2/CSI2 camera +Subject: [PATCH 268/941] media: bcm2835-unicam: Driver for CCP2/CSI2 camera interface Add a driver for the Unicam camera receiver block on BCM283x processors. @@ -166285,7 +166185,7 @@ index 000000000000..ae059a171d0f From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 23 Jun 2020 14:32:51 +0100 -Subject: [PATCH 270/889] media: bcm2835-unicam: Add support for +Subject: [PATCH 269/941] 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 @@ -166347,7 +166247,7 @@ index 2e9387cbc1e0..9adfb2d217af 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Jun 2020 15:53:44 +0100 -Subject: [PATCH 271/889] media: bcm2835-unicam: Avoid gcc warning over {0} on +Subject: [PATCH 270/941] media: bcm2835-unicam: Avoid gcc warning over {0} on endpoint Older gcc versions object to = { 0 } initialisation if the first @@ -166380,7 +166280,7 @@ index 9adfb2d217af..a65e1da55142 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Fri, 12 Jun 2020 15:53:46 +0200 -Subject: [PATCH 272/889] media: i2c: imx290: set the format before +Subject: [PATCH 271/941] media: i2c: imx290: set the format before VIDIOC_SUBDEV_G_FMT is called Commit d46cfdc86c30d5ec768924f0b1e2683c8d20b671 upstream. @@ -166426,7 +166326,7 @@ index adcddf3204f7..ad2318390678 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 08:28:51 +0100 -Subject: [PATCH 273/889] media: i2c: imx290: Add support for 74.25MHz clock +Subject: [PATCH 272/941] media: i2c: imx290: Add support for 74.25MHz clock The existing driver only supported a clock of 37.125MHz, but the sensor also supports 74.25MHz. @@ -166696,7 +166596,7 @@ index ad2318390678..fe1078f7721e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Jun 2020 13:41:43 +0100 -Subject: [PATCH 274/889] media: i2c: imx290: Correct range for V4L2_CID_GAIN +Subject: [PATCH 273/941] media: i2c: imx290: Correct range for V4L2_CID_GAIN to 0-238 The datasheet lists the gain as being 0.0 to 72.0dB in 0.3dB steps, which @@ -166728,7 +166628,7 @@ index fe1078f7721e..c193b7b8d8e5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Jun 2020 14:36:40 +0100 -Subject: [PATCH 275/889] media: i2c: imx290: Convert HMAX setting into +Subject: [PATCH 274/941] media: i2c: imx290: Convert HMAX setting into V4L2_CID_HBLANK Userspace needs to know HBLANK if it is to work out exposure times @@ -166893,7 +166793,7 @@ index c193b7b8d8e5..b12213f6355b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Jun 2020 18:09:12 +0100 -Subject: [PATCH 276/889] media: i2c: imx290: Add support for V4L2_CID_VBLANK +Subject: [PATCH 275/941] media: i2c: imx290: Add support for V4L2_CID_VBLANK In order to calculate framerate and durations userspace needs the vertical blanking information. This can be configurable, @@ -167040,7 +166940,7 @@ index b12213f6355b..357614af64f7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Jun 2020 18:19:13 +0100 -Subject: [PATCH 277/889] media: i2c: imx290: Add exposure control to the +Subject: [PATCH 276/941] media: i2c: imx290: Add exposure control to the driver. Adds support for V4L2_CID_EXPOSURE so that userspace can control @@ -167139,7 +167039,7 @@ index 357614af64f7..2eae36b0ad5c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Jun 2020 18:34:16 +0100 -Subject: [PATCH 278/889] media: i2c: imx290: Add H and V flip controls +Subject: [PATCH 277/941] media: i2c: imx290: Add H and V flip controls The sensor supports horizontal and vertical flips, so support them through V4L2_CID_HFLIP and V4L2_CID_VFLIP. @@ -167228,7 +167128,7 @@ index 2eae36b0ad5c..3d6734da7d64 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 16:52:14 +0100 -Subject: [PATCH 279/889] media: dt-bindings: media: i2c: Add mono version to +Subject: [PATCH 278/941] media: dt-bindings: media: i2c: Add mono version to IMX290 bindings The IMX290 module is available as either monochrome or colour and @@ -167270,7 +167170,7 @@ index a3cc21410f7c..294e63650d9e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 17:03:11 +0100 -Subject: [PATCH 280/889] media : i2c: imx290: Add support for the mono sensor +Subject: [PATCH 279/941] media : i2c: imx290: Add support for the mono sensor variant. The IMX290 module is available as either mono or colour (Bayer). @@ -167461,7 +167361,7 @@ index 3d6734da7d64..09df70849928 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Jun 2020 18:11:49 +0100 -Subject: [PATCH 281/889] media: i2c: imx290: Switch set_hmax to use +Subject: [PATCH 280/941] media: i2c: imx290: Switch set_hmax to use imx290_write_buffered_reg imx290_set_hmax was using two independent writes to set up hmax, @@ -167510,7 +167410,7 @@ index 09df70849928..b824dfe29bbd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 2 Jul 2020 13:53:20 +0100 -Subject: [PATCH 282/889] serial: 8250: bcm2835aux - defer if clock is zero +Subject: [PATCH 281/941] serial: 8250: bcm2835aux - defer if clock is zero See: https://github.com/raspberrypi/linux/issues/3700 @@ -167544,7 +167444,7 @@ index fd95860cd661..fc36e5963e30 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 May 2020 16:59:03 +0100 -Subject: [PATCH 283/889] media: Add a pixel format for MIPI packed 12bit luma +Subject: [PATCH 282/941] media: Add a pixel format for MIPI packed 12bit luma only. This is the format used by monochrome 12bit image sensors. @@ -167652,7 +167552,7 @@ index e9fbb04a3519..e72c28ea0235 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 17:51:03 +0100 -Subject: [PATCH 284/889] media: Add a pixel format for MIPI packed 14bit luma +Subject: [PATCH 283/941] media: Add a pixel format for MIPI packed 14bit luma only. This is the format used by monochrome 14bit image sensors. @@ -167769,7 +167669,7 @@ index e72c28ea0235..53d526dbe004 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 17:53:32 +0100 -Subject: [PATCH 285/889] media: bcm2835-unicam: Add support for 12bit mono +Subject: [PATCH 284/941] media: bcm2835-unicam: Add support for 12bit mono packed format Now that V4L2_PIX_FMT_Y12P is defined, allow passing raw 12bit @@ -167800,7 +167700,7 @@ index a65e1da55142..5edb58cc9f03 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Jun 2020 18:03:47 +0100 -Subject: [PATCH 286/889] media: bcm2835-unicam: Add support for 14bit mono +Subject: [PATCH 285/941] media: bcm2835-unicam: Add support for 14bit mono sources Now that V4L2_PIX_FMT_Y14 and V4L2_PIX_FMT_Y14P are defined, @@ -167835,7 +167735,7 @@ index 5edb58cc9f03..778153943160 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 1 Jul 2020 10:57:57 +0100 -Subject: [PATCH 287/889] media: bcm2835-unicam: Add support for unpacked 14bit +Subject: [PATCH 286/941] media: bcm2835-unicam: Add support for unpacked 14bit Bayer formats Now that the 14bit non-packed Bayer formats are defined, add them @@ -167883,7 +167783,7 @@ index 778153943160..c97ecfc0e55b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 1 Jul 2020 20:28:27 +0100 -Subject: [PATCH 288/889] bcm2835-dma: Add NO_WAIT_RESP flag +Subject: [PATCH 287/941] 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. @@ -167943,7 +167843,7 @@ index ac0458a8027f..84b1009da23b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Fri, 17 May 2019 18:23:03 +0800 -Subject: [PATCH 289/889] media: i2c: add ov9281 driver. +Subject: [PATCH 288/941] media: i2c: add ov9281 driver. Change-Id: I7b77250bbc56d2f861450cf77271ad15f9b88ab1 Signed-off-by: Zefa Chen @@ -169172,7 +169072,7 @@ index 000000000000..4a6324a3e5da From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 14 Apr 2020 15:47:09 +0100 -Subject: [PATCH 290/889] media: i2c: ov9281: fix mclk issue when probe +Subject: [PATCH 289/941] media: i2c: ov9281: fix mclk issue when probe multiple camera. Takes the ov9281 part only from the Rockchip's patch. @@ -169238,7 +169138,7 @@ index 4a6324a3e5da..0d6759942f79 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 14 Apr 2020 15:51:50 +0100 -Subject: [PATCH 291/889] media: i2c: ov9281: add enum_frame_interval function +Subject: [PATCH 290/941] media: i2c: ov9281: add enum_frame_interval function for iq tool 2.2 and hal3 Adds the ov9281 parts of the Rockchip patch adding enum_frame_interval to @@ -169341,7 +169241,7 @@ index 0d6759942f79..273aa904683c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 14 Apr 2020 16:12:33 +0100 -Subject: [PATCH 292/889] media: i2c: ov9281: Fixup for recent kernel releases, +Subject: [PATCH 291/941] media: i2c: ov9281: Fixup for recent kernel releases, and remove custom code The Rockchip driver was based on a 4.4 kernel, and had several custom @@ -170024,7 +169924,7 @@ index 273aa904683c..7b9bea476cfb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 6 Jul 2020 17:51:32 +0100 -Subject: [PATCH 293/889] media: i2c: ov9281: Read chip ID via 2 reads +Subject: [PATCH 292/941] media: i2c: ov9281: Read chip ID via 2 reads Vision Components have made an OV9281 module which blocks reading back the majority of registers to comply with NDAs, and in doing @@ -170072,7 +169972,7 @@ index 7b9bea476cfb..bb8efc3d3cba 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 10:31:53 +0100 -Subject: [PATCH 294/889] media: i2c: imx290: Explicitly set v&h blank on mode +Subject: [PATCH 293/941] media: i2c: imx290: Explicitly set v&h blank on mode change __v4l2_ctrl_modify_range only updates the current value should @@ -170124,7 +170024,7 @@ index b824dfe29bbd..b28834823f86 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 11:23:48 +0100 -Subject: [PATCH 295/889] media: i2c: imx290: Add support for g_selection to +Subject: [PATCH 294/941] media: i2c: imx290: Add support for g_selection to report cropping Userspace needs to know the cropping arrangements for each mode, @@ -170286,7 +170186,7 @@ index b28834823f86..24bf40d729b7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 11:51:26 +0100 -Subject: [PATCH 296/889] media: i2c: imx290: Set the colorspace fields in the +Subject: [PATCH 295/941] media: i2c: imx290: Set the colorspace fields in the format The colorspace fields were left untouched in imx290_set_fmt @@ -170323,7 +170223,7 @@ index 24bf40d729b7..2e646fb01856 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 14:23:40 +0100 -Subject: [PATCH 297/889] media: bcm2835-unicam: Reinstate V4L2_CAP_READWRITE +Subject: [PATCH 296/941] media: bcm2835-unicam: Reinstate V4L2_CAP_READWRITE in the caps v4l2-compliance throws a failure if the device doesn't advertise @@ -170357,7 +170257,7 @@ index c97ecfc0e55b..20b46a9e04c3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 14:52:43 +0100 -Subject: [PATCH 298/889] media: bcm2835-unicam: Ensure type is VIDEO_CAPTURE +Subject: [PATCH 297/941] 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 @@ -170399,7 +170299,7 @@ index 20b46a9e04c3..de288f87ff2f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 11 May 2020 13:02:22 +0100 -Subject: [PATCH 299/889] media: bcm2835: unicam: Set VPU min clock freq to +Subject: [PATCH 298/941] media: bcm2835: unicam: Set VPU min clock freq to 250Mhz. When streaming with Unicam, the VPU must have a clock frequency of at @@ -170532,7 +170432,7 @@ index de288f87ff2f..295db7564614 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Mon, 11 May 2020 13:06:27 +0100 -Subject: [PATCH 300/889] dt-bindings: bcm2835-unicam: Update documentation +Subject: [PATCH 299/941] dt-bindings: bcm2835-unicam: Update documentation with new clock params Update the documentation to reflect the new "VPU" clock needed @@ -170576,7 +170476,7 @@ index 7714fb374b34..164d0377dcd2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 4 Jul 2020 01:45:08 +0300 -Subject: [PATCH 301/889] media: i2c: ov5647: Parse and register properties +Subject: [PATCH 300/941] media: i2c: ov5647: Parse and register properties Parse device properties and register controls for them using the V4L2 fwnode properties helpers. @@ -170631,7 +170531,7 @@ index 6d84d2785f74..86a821a172b3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Jul 2020 10:33:19 +0100 -Subject: [PATCH 302/889] leds: Add the actpwr trigger +Subject: [PATCH 301/941] 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 @@ -170877,7 +170777,7 @@ index 000000000000..1a52107ceb03 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 21 Jul 2020 17:34:09 +0100 -Subject: [PATCH 303/889] staging: vchiq_arm: children inherit DMA config +Subject: [PATCH 302/941] 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 @@ -170919,7 +170819,7 @@ index c3ca18e4e85c..a936102dbc34 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 22 Jul 2020 17:59:31 +0100 -Subject: [PATCH 304/889] bcm2835-dma: Advertise the full DMA range +Subject: [PATCH 303/941] bcm2835-dma: Advertise the full DMA range Unless the DMA mask is set wider than 32 bits, DMA mapping will use a bounce buffer. @@ -171002,7 +170902,7 @@ index 84b1009da23b..d1127b9058a4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 29 Jul 2020 13:47:55 +0100 -Subject: [PATCH 305/889] ARM: proc-v7: Force misalignment of early stmia +Subject: [PATCH 304/941] ARM: proc-v7: Force misalignment of early stmia In an attempt to prevent the problem of CPUn not starting, explicitly misalign the scratch space used to save registers acros the cache @@ -171068,7 +170968,7 @@ index 28c9d32fa99a..3e77e8982df3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hristo Venev Date: Wed, 19 Aug 2020 17:02:22 +0300 -Subject: [PATCH 306/889] media: bcm2835: unicam: Select MEDIA_CONTROLLER and +Subject: [PATCH 305/941] media: bcm2835: unicam: Select MEDIA_CONTROLLER and VIDEO_V4L2_SUBDEV_API That is what almost all other drivers appear to be doing. @@ -171101,7 +171001,7 @@ index ec46e3ef053c..7d5a0e6ba762 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hristo Venev Date: Wed, 19 Aug 2020 17:05:53 +0300 -Subject: [PATCH 307/889] staging: media: rpivid: Select MEDIA_CONTROLLER and +Subject: [PATCH 306/941] staging: media: rpivid: Select MEDIA_CONTROLLER and MEDIA_CONTROLLER_REQUEST_API MEDIA_CONTROLLER_REQUEST_API is a hidden option. If rpivid depends on it, @@ -171139,7 +171039,7 @@ index 58b470c80db1..304c3edf0e71 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 27 Aug 2020 16:30:26 +0100 -Subject: [PATCH 308/889] media: bcm2835-unicam: Drop WARN on uing direct cache +Subject: [PATCH 307/941] media: bcm2835-unicam: Drop WARN on uing direct cache alias Pi 0&1 pass all ARM accesses through the VPU L2 cache, therefore @@ -171179,7 +171079,7 @@ index 295db7564614..35ddb97f7f75 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 10 Jul 2020 12:40:50 +0100 -Subject: [PATCH 309/889] media: i2c: tc358743: Only allow supported pixel fmts +Subject: [PATCH 308/941] media: i2c: tc358743: Only allow supported pixel fmts in set_fmt Fix commit "media: tc358743: Return an appropriate colorspace from @@ -171215,7 +171115,7 @@ index ee6779a81d43..ce64c25c1511 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 7 Jul 2020 18:29:10 +0100 -Subject: [PATCH 310/889] media: i2c: ov9281: Add support for 8 bit readout +Subject: [PATCH 309/941] media: i2c: ov9281: Add support for 8 bit readout The sensor supports 8 bit mode as well as 10bit, so add the relevant code to allow selection of this. @@ -171409,7 +171309,7 @@ index bb8efc3d3cba..9610c24ceff1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 3 Sep 2020 14:02:21 +0100 -Subject: [PATCH 311/889] bcm2835-mmc: uninitialized_var is no more +Subject: [PATCH 310/941] bcm2835-mmc: uninitialized_var is no more --- drivers/mmc/host/bcm2835-mmc.c | 2 +- @@ -171435,7 +171335,7 @@ index caf46be8eb0d..cdc1318e5936 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 3 Sep 2020 14:02:41 +0100 -Subject: [PATCH 312/889] dwc_otg: whitelist_table is now productlist_table +Subject: [PATCH 311/941] dwc_otg: whitelist_table is now productlist_table --- drivers/usb/core/otg_productlist.h | 2 +- @@ -171461,7 +171361,7 @@ index 1839e169469b..b16e528859a8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: detule Date: Tue, 2 Oct 2018 04:10:08 -0400 -Subject: [PATCH 313/889] vchiq_2835_arm: Implement a DMA pool for small bulk +Subject: [PATCH 312/941] vchiq_2835_arm: Implement a DMA pool for small bulk transfers (#2699) During a bulk transfer we request a DMA allocation to hold the @@ -171589,7 +171489,7 @@ index 76179739de12..2a1d8d6541b2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 3 Sep 2020 17:09:07 +0100 -Subject: [PATCH 314/889] include/firmware: Add enum for +Subject: [PATCH 313/941] include/firmware: Add enum for RPI_FIRMWARE_FRAMEBUFFER_GET_DISPLAY_ID Used by audio and FKMS. @@ -171618,7 +171518,7 @@ index 4728741132b1..21bfcafae74e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 19 May 2020 14:54:28 +0100 -Subject: [PATCH 315/889] drm/vc4: Adopt the dma configuration from the HVS or +Subject: [PATCH 314/941] drm/vc4: Adopt the dma configuration from the HVS or V3D component vc4_drv isn't necessarily under the /soc node in DT as it is a @@ -171678,7 +171578,7 @@ index 839610f8092a..de02c57ed276 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 10 Mar 2020 22:21:15 +0000 -Subject: [PATCH 316/889] vc4_hdmi: Set HDMI_MAI_FMT +Subject: [PATCH 315/941] vc4_hdmi: Set HDMI_MAI_FMT The hardware uses this for generating the right audio data island packets when using formats other than PCM @@ -171810,7 +171710,7 @@ index be2c32a519b3..489f921ef44d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Tue, 17 Mar 2020 12:12:22 +0100 -Subject: [PATCH 317/889] drm/vc4: add iec958 controls to vc4_hdmi +Subject: [PATCH 316/941] drm/vc4: add iec958 controls to vc4_hdmi Although vc4 get an IEC958 formatted stream passed in from userspace the driver needs the info from the channel status bits to properly @@ -171937,7 +171837,7 @@ index 0526a9cf608a..dec3e0a9ab07 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Thu, 19 Mar 2020 20:00:35 +0100 -Subject: [PATCH 318/889] drm/vc4: move setup from hw_params to prepare +Subject: [PATCH 317/941] drm/vc4: move setup from hw_params to prepare Configuring HDMI audio registers in prepare allows us to take IEC958 bits into account which are set by the alsa hook after @@ -172001,7 +171901,7 @@ index a7758efaa078..846b027126d0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 10 Jul 2020 11:51:16 +0100 -Subject: [PATCH 319/889] drm/vc4: enable HBR MAI format on HBR streams +Subject: [PATCH 318/941] drm/vc4: enable HBR MAI format on HBR streams Signed-off-by: Matthias Reichl --- @@ -172032,7 +171932,7 @@ index 846b027126d0..7f740fde0b4d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 25 Jun 2020 18:48:40 +0100 -Subject: [PATCH 320/889] vc4_hdmi: Remove firmware logic for MAI threshold +Subject: [PATCH 319/941] vc4_hdmi: Remove firmware logic for MAI threshold setting This was a workaround for bugs in hardware on earlier Pi models @@ -172085,7 +171985,7 @@ index 7f740fde0b4d..5a8f4adc3840 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 30 Jun 2020 11:23:49 +0100 -Subject: [PATCH 321/889] vc_hdmi: Set VC4_HDMI_MAI_CONFIG_FORMAT_REVERSE +Subject: [PATCH 320/941] vc_hdmi: Set VC4_HDMI_MAI_CONFIG_FORMAT_REVERSE Without this bit set, HDMI_MAI_FORMAT doesn't pick up the format and samplerate from DVP_CFG_MAI0_FMT and you @@ -172115,7 +172015,7 @@ index 5a8f4adc3840..a016f30a662d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 20 Apr 2020 18:00:38 +0100 -Subject: [PATCH 322/889] vc4: Report channel mapping back to userspace +Subject: [PATCH 321/941] vc4: Report channel mapping back to userspace This follows logic in hdmi-codec.c to use speaker layout from ELD to choose a suitable speaker mapping based on @@ -172627,7 +172527,7 @@ index dec3e0a9ab07..e9dbdc80eb2d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 24 Jan 2020 14:25:41 +0000 -Subject: [PATCH 323/889] drm/vc4: Add support for DRM_FORMAT_P030 to vc4 +Subject: [PATCH 322/941] drm/vc4: Add support for DRM_FORMAT_P030 to vc4 planes This currently doesn't handle non-zero source rectangles correctly, @@ -172796,7 +172696,7 @@ index af4b8944a603..ec591839810a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 17 Sep 2019 18:28:17 +0100 -Subject: [PATCH 324/889] drm/vc4: Add support for YUV color encodings and +Subject: [PATCH 323/941] drm/vc4: Add support for YUV color encodings and ranges The BT601/BT709 color encoding and limited vs full @@ -172943,7 +172843,7 @@ index 489f921ef44d..78fd28599aeb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 7 Sep 2020 17:32:27 +0100 -Subject: [PATCH 325/889] drm/vc4: Add firmware-kms mode +Subject: [PATCH 324/941] drm/vc4: Add firmware-kms mode This is a squash of all firmware-kms related patches from previous branches, up to and including @@ -175327,7 +175227,7 @@ index 21bfcafae74e..b3ab1c091f41 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 19 May 2020 16:20:30 +0100 -Subject: [PATCH 326/889] drm/vc4: Add FKMS as an acceptable node for dma +Subject: [PATCH 325/941] drm/vc4: Add FKMS as an acceptable node for dma ranges. Under FKMS, the firmware (via FKMS) also requires the VideoCore cache @@ -175360,7 +175260,7 @@ index c8f9031fa946..d6576841d0fe 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 8 May 2020 10:00:12 +0100 -Subject: [PATCH 327/889] media: i2c: Add driver for Sony IMX477 sensor +Subject: [PATCH 326/941] media: i2c: Add driver for Sony IMX477 sensor Adds a driver for the 12MPix Sony IMX477 CSI2 sensor. Whilst the sensor supports 2 or 4 CSI2 data lanes, this driver @@ -177639,7 +177539,7 @@ index 000000000000..ec56b0cfd57b From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 8 May 2020 09:41:17 +0100 -Subject: [PATCH 328/889] media: i2c: imx477: Add support for adaptive frame +Subject: [PATCH 327/941] media: i2c: imx477: Add support for adaptive frame control Use V4L2_CID_EXPOSURE_AUTO_PRIORITY to control if the driver should @@ -177827,7 +177727,7 @@ index ec56b0cfd57b..bd0e2c291a32 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 19 May 2020 16:56:33 +0100 -Subject: [PATCH 329/889] media: i2c: imx477: Return correct result on sensor +Subject: [PATCH 328/941] media: i2c: imx477: Return correct result on sensor id verification The test should return -EIO if the register read id does not match @@ -177858,7 +177758,7 @@ index bd0e2c291a32..e42a8633087d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 4 Jul 2020 01:45:08 +0300 -Subject: [PATCH 330/889] media: i2c: imx477: Parse and register properties +Subject: [PATCH 329/941] media: i2c: imx477: Parse and register properties Parse device properties and register controls for them using the V4L2 fwnode properties helpers. @@ -177909,7 +177809,7 @@ index e42a8633087d..3fbb173fa079 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 13 May 2020 18:28:27 +0100 -Subject: [PATCH 331/889] media: bcm2835-unicam: Always service interrupts +Subject: [PATCH 330/941] 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 @@ -177966,7 +177866,7 @@ index 35ddb97f7f75..d4ba911fe7e7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jacko Dirks Date: Tue, 5 May 2020 14:33:31 +0200 -Subject: [PATCH 332/889] media: bcm2835: unicam: Fix uninitialized warning +Subject: [PATCH 331/941] media: bcm2835: unicam: Fix uninitialized warning Signed-off-by: Jacko Dirks --- @@ -177993,7 +177893,7 @@ index d4ba911fe7e7..8b091d3a0d15 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 23 Jun 2020 15:14:05 +0100 -Subject: [PATCH 333/889] media: bcm2835-unicam: Fixup review comments from +Subject: [PATCH 332/941] media: bcm2835-unicam: Fixup review comments from Hans. Updates the driver based on the upstream review comments from @@ -178245,7 +178145,7 @@ index 8b091d3a0d15..7dc96c3e8e83 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 19 May 2020 11:46:47 +0100 -Subject: [PATCH 334/889] media: bcm2835-unicam: Retain packing information on +Subject: [PATCH 333/941] media: bcm2835-unicam: Retain packing information on G_FMT The change to retrieve the pixel format always on g_fmt didn't @@ -178299,7 +178199,7 @@ index 7dc96c3e8e83..98ae97c367ea 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 28 May 2020 11:09:48 +0100 -Subject: [PATCH 335/889] media: bcm2835-unicam: change minimum number of +Subject: [PATCH 334/941] 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 @@ -178333,7 +178233,7 @@ index 98ae97c367ea..6501fb205e20 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 1 Sep 2020 18:15:27 +0100 -Subject: [PATCH 336/889] staging/fbtft: Add support for display variants +Subject: [PATCH 335/941] 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 @@ -178548,7 +178448,7 @@ index 76f8c090a837..f4f5ff0dc0c0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 3 Feb 2020 09:32:22 +0000 -Subject: [PATCH 337/889] brcmfmac: Increase power saving delay to 2s +Subject: [PATCH 336/941] 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, @@ -178587,7 +178487,7 @@ index 496f6125a3f6..e51b42b547be 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 21 Sep 2020 14:02:44 +0100 -Subject: [PATCH 338/889] rpivid_h265: Fix width/height typo +Subject: [PATCH 337/941] rpivid_h265: Fix width/height typo Signed-off-by: popcornmix --- @@ -178614,7 +178514,7 @@ index 47d4de42c584..b677910e237c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 25 Sep 2020 15:07:23 +0100 -Subject: [PATCH 339/889] net: bcmgenet: Reset RBUF on first open +Subject: [PATCH 338/941] 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 @@ -178690,7 +178590,7 @@ index 06e0e3d0f2b5..8da6f867b6d2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 28 Sep 2020 20:23:30 +0100 -Subject: [PATCH 340/889] char: Add broadcom char drivers back to build files +Subject: [PATCH 339/941] char: Add broadcom char drivers back to build files See: https://github.com/raspberrypi/linux/issues/3875 Signed-off-by: popcornmix @@ -178728,7 +178628,7 @@ index ffce287ef415..463ff9f136e4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 7 Oct 2020 15:09:29 +0100 -Subject: [PATCH 341/889] dwc_otg: initialise sched_frame for periodic QHs that +Subject: [PATCH 340/941] dwc_otg: initialise sched_frame for periodic QHs that were parked If a periodic QH has no remaining QTDs, then it is removed from all @@ -178767,7 +178667,7 @@ index 2823dc9af63f..4503af692aef 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 8 Oct 2020 15:35:14 +0100 -Subject: [PATCH 342/889] staging: bcm2835-camera: Replace deprecated +Subject: [PATCH 341/941] staging: bcm2835-camera: Replace deprecated V4L2_PIX_FMT_BGR32 V4L2_PIX_FMT_BGR32 is deprecated as it is ambiguous over where @@ -178803,7 +178703,7 @@ index bea37cb163fc..e0a96dbb843d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 8 Oct 2020 18:49:52 +0100 -Subject: [PATCH 343/889] staging: vc04_services: Add new vc-sm-cma driver +Subject: [PATCH 342/941] staging: vc04_services: Add new vc-sm-cma driver Add Broadcom VideoCore Shared Memory support. @@ -181767,7 +181667,7 @@ index 000000000000..988fdd967922 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 May 2020 18:09:04 +0100 -Subject: [PATCH 344/889] staging: vchiq-mmal: Add support for 14bit Bayer +Subject: [PATCH 343/941] staging: vchiq-mmal: Add support for 14bit Bayer Add in the missing defines. @@ -181800,7 +181700,7 @@ index 44ba91aa6d47..be8af09a6c80 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 May 2020 18:11:14 +0100 -Subject: [PATCH 345/889] staging: mmal-vchiq: Add monochrome image formats +Subject: [PATCH 344/941] staging: mmal-vchiq: Add monochrome image formats Adds support for monochrome image formats in the various MIPI packings. @@ -181835,7 +181735,7 @@ index be8af09a6c80..897e6cdf8dd9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 25 Sep 2018 16:07:55 +0100 -Subject: [PATCH 346/889] staging: mmal-vchiq: Use vc-sm-cma to support zero +Subject: [PATCH 345/941] 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 @@ -182009,7 +181909,7 @@ index e87f88f99338..247521fbcc1d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 8 Oct 2020 20:24:12 +0100 -Subject: [PATCH 347/889] staging: vc04_services: Add a V4L2 M2M codec driver +Subject: [PATCH 346/941] staging: vc04_services: Add a V4L2 M2M codec driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -185099,7 +184999,7 @@ index 000000000000..d490ff67f747 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 11 Oct 2020 00:48:55 +0200 -Subject: [PATCH 348/889] bcm2835-dma: only reserve channel 0 if legacy dma +Subject: [PATCH 347/941] 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 @@ -185137,7 +185037,7 @@ index d1127b9058a4..0cbfa9d559a2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 12 Oct 2020 17:03:14 +0100 -Subject: [PATCH 349/889] uapi: bcm2835-isp: Add bcm2835-isp uapi header file +Subject: [PATCH 348/941] 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. @@ -185482,7 +185382,7 @@ index 000000000000..cf8c0437f159 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 23 Apr 2020 10:17:37 +0100 -Subject: [PATCH 350/889] staging: vc04_services: ISP: Add a more complex ISP +Subject: [PATCH 349/941] staging: vc04_services: ISP: Add a more complex ISP processing component Driver for the BCM2835 ISP hardware block. This driver uses the MMAL @@ -187917,7 +187817,7 @@ index 89059bca0b77..5b596b5c057f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 31 Jul 2019 17:36:34 +0100 -Subject: [PATCH 351/889] drm/vc4: A present but empty dmas disables audio +Subject: [PATCH 350/941] drm/vc4: A present but empty dmas disables audio Overlays are unable to remove properties in the base DTB, but they can overwrite them. Allow a present but empty 'dmas' property @@ -187956,7 +187856,7 @@ index 30de86b63a58..3ee0b82a5718 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 6 Oct 2020 18:44:42 +0100 -Subject: [PATCH 352/889] drm/vc4: Add debugfs node that dumps the current +Subject: [PATCH 351/941] drm/vc4: Add debugfs node that dumps the current display lists This allows easy analysis of display lists when debugging. @@ -188032,7 +187932,7 @@ index ad691571d759..b5015d036d46 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 30 Sep 2020 12:00:54 +0100 -Subject: [PATCH 353/889] gpio: Add gpio-fsm driver +Subject: [PATCH 352/941] 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 @@ -189228,7 +189128,7 @@ index 000000000000..eb40cfdc71df From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 21 Oct 2020 18:34:56 +0100 -Subject: [PATCH 354/889] drm/vc4: Add all the HDMI registers into the debugfs +Subject: [PATCH 353/941] drm/vc4: Add all the HDMI registers into the debugfs dumps The vc5 HDMI registers hadn't been added into the debugfs @@ -189333,7 +189233,7 @@ index e9dbdc80eb2d..165d80928143 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 19 Mar 2020 10:04:46 +0000 -Subject: [PATCH 355/889] ARM: dts: bcm271x: Use a53 pmu, drop RPI364 +Subject: [PATCH 354/941] ARM: dts: bcm271x: Use a53 pmu, drop RPI364 The upstream bcm2837.dtsi uses cortex-a53-pmu, so we can do the same but with a fallback to the cortex-a7-pmu which is supported by the @@ -189416,7 +189316,7 @@ index 1fd86f81f542..bf69a4b0b172 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 23 Oct 2020 14:15:41 +0100 -Subject: [PATCH 356/889] overlays: Add option to disable composite to +Subject: [PATCH 355/941] overlays: Add option to disable composite to vc4-kms-v3d Composite gets enabled automatically if HDMI isn't detected, @@ -189460,7 +189360,7 @@ index 6d34a2bff49b..5a4efdeed663 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 11 Mar 2020 12:07:57 +0000 -Subject: [PATCH 357/889] overlays: imx219: Correct link frequency to match the +Subject: [PATCH 356/941] overlays: imx219: Correct link frequency to match the upstream driver The upstream driver is checking the link frequency parameter, and @@ -189491,7 +189391,7 @@ index 3484bde5a9e8..dce07b335c4e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 23 Oct 2020 15:45:11 +0100 -Subject: [PATCH 358/889] dts: Add CM4 to arm64 dt files +Subject: [PATCH 357/941] dts: Add CM4 to arm64 dt files Signed-off-by: Dave Stevenson --- @@ -189528,7 +189428,7 @@ index 000000000000..8064a58155f1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 26 Oct 2020 12:38:27 +0000 -Subject: [PATCH 359/889] drm/vc4: Add the 2711 HVS as a suitable DMA node +Subject: [PATCH 358/941] 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. @@ -189557,8 +189457,8 @@ index d6576841d0fe..617c113b033f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell -Date: Mon, 26 Oct 2020 14:03:35 +0000 -Subject: [PATCH 360/889] xhci: quirks: add link TRB quirk for VL805 +Date: Thu, 11 Jul 2019 17:55:43 +0100 +Subject: [PATCH 359/941] 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 @@ -189574,14 +189474,14 @@ Signed-off-by: Jonathan Bell --- drivers/usb/host/xhci-pci.c | 1 + drivers/usb/host/xhci-ring.c | 10 ++++++++++ - drivers/usb/host/xhci.h | 1 + - 3 files changed, 12 insertions(+) + drivers/usb/host/xhci.h | 3 ++- + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 618a131bdd53..153165fb8d88 100644 +index 8c65e9476b41..17e8a5724efb 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -277,6 +277,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) +@@ -279,6 +279,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; @@ -189590,10 +189490,10 @@ index 618a131bdd53..153165fb8d88 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 c8d733ff3eb5..7649cb9e277f 100644 +index 4512c4223392..6303834ea2ce 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -653,6 +653,16 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, +@@ -659,6 +659,16 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, } while (!cycle_found || !td_last_trb_found); @@ -189611,13 +189511,15 @@ index c8d733ff3eb5..7649cb9e277f 100644 state->new_deq_ptr = new_deq; diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index f852e3f2cbd0..38650e4a99d2 100644 +index 3089c4880606..38650e4a99d2 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1885,6 +1885,7 @@ struct xhci_hcd { +@@ -1884,7 +1884,8 @@ struct xhci_hcd { + #define XHCI_DISABLE_SPARSE BIT_ULL(38) #define XHCI_SG_TRB_CACHE_SIZE_QUIRK BIT_ULL(39) #define XHCI_NO_SOFT_RETRY BIT_ULL(40) - #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(41) +-#define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(42) ++#define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(41) +#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(42) unsigned int num_active_eps; @@ -189629,7 +189531,7 @@ index f852e3f2cbd0..38650e4a99d2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Oct 2020 15:01:21 +0000 -Subject: [PATCH 361/889] dts: Tidy the Raspberry Pi Makefile entries +Subject: [PATCH 360/941] dts: Tidy the Raspberry Pi Makefile entries Signed-off-by: Phil Elwell --- @@ -189680,7 +189582,7 @@ index 1e861e2bf2e0..996e670a6018 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Oct 2020 10:23:22 +0000 -Subject: [PATCH 362/889] staging: bcm2835-audio: Add disable-headphones flag +Subject: [PATCH 361/941] staging: bcm2835-audio: Add disable-headphones flag Add a property to allow the headphone output to be disabled. Use an integer property rather than a boolean so that an overlay can clear it. @@ -189720,7 +189622,7 @@ index a0cba3823e5e..ccda115ab9e0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Oct 2020 10:18:50 +0000 -Subject: [PATCH 363/889] ARM: dts: Disable headphone audio on Zeroes, CM4 +Subject: [PATCH 362/941] ARM: dts: Disable headphone audio on Zeroes, CM4 Signed-off-by: Phil Elwell --- @@ -189772,7 +189674,7 @@ index 0ca3a0126220..fa7b16040f36 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Oct 2020 10:21:23 +0000 -Subject: [PATCH 364/889] overlays: Enable headphone audio in audremap +Subject: [PATCH 363/941] overlays: Enable headphone audio in audremap Signed-off-by: Phil Elwell --- @@ -189804,7 +189706,7 @@ index d624bb3a3fea..7324890ead86 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 26 Oct 2020 16:38:21 +0000 -Subject: [PATCH 365/889] rpisense-fb: Set pseudo_pallete to prevent crash on +Subject: [PATCH 364/941] rpisense-fb: Set pseudo_pallete to prevent crash on fbcon takeover Signed-off-by: Serge Schneider @@ -189840,7 +189742,7 @@ index 26432a5a0b4b..325977def531 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Oct 2020 10:35:43 +0000 -Subject: [PATCH 366/889] ARM: dts: Expand PCIe space on BCM2711 +Subject: [PATCH 365/941] ARM: dts: Expand PCIe space on BCM2711 Attempts to connect external GPUs to Compute Module 4's PCIe bus have highlighted that the existing "outbound window" - the fraction of the @@ -189855,7 +189757,7 @@ Signed-off-by: Phil Elwell 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 6e0339266027..27c622ebee0d 100644 +index d1a39fa077c0..770fa94776ef 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -503,8 +503,8 @@ @@ -189876,7 +189778,7 @@ index 6e0339266027..27c622ebee0d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Oct 2020 21:51:29 +0000 -Subject: [PATCH 367/889] configs: Set RASPBERRYPI_FIRMWARE for arm64 bcm2711 +Subject: [PATCH 366/941] configs: Set RASPBERRYPI_FIRMWARE for arm64 bcm2711 RASPBERRYPI_FIRMWARE was missing from the arm64 bcm2711_defconfig. bcmrpi3_defconfig was also missing a few options. Add the misssing @@ -190030,7 +189932,7 @@ index d542d2522076..6247c74639f7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Oct 2020 09:59:49 +0000 -Subject: [PATCH 368/889] dwc_otg: Minimise header and fix build warnings +Subject: [PATCH 367/941] dwc_otg: Minimise header and fix build warnings Delete a large amount of unused declaration from "usb.h", some of which were causing build warnings, and get the module building cleanly. @@ -190935,7 +190837,7 @@ index e55ea9c74be4..76e94b4ebb43 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Oct 2020 12:10:04 +0000 -Subject: [PATCH 369/889] gpio-fsm: Fix a build warning +Subject: [PATCH 368/941] gpio-fsm: Fix a build warning Signed-off-by: Phil Elwell --- @@ -190963,7 +190865,7 @@ index eb8b4d58d2d0..2cab50e51315 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Oct 2020 12:10:40 +0000 -Subject: [PATCH 370/889] rpivid_h625: Fix build warnings +Subject: [PATCH 369/941] rpivid_h625: Fix build warnings Signed-off-by: Phil Elwell --- @@ -191037,7 +190939,7 @@ index b677910e237c..fc3caed58187 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Oct 2020 12:12:22 +0000 -Subject: [PATCH 371/889] bcm2708_fb: Fix a build warning +Subject: [PATCH 370/941] bcm2708_fb: Fix a build warning Signed-off-by: Phil Elwell --- @@ -191065,7 +190967,7 @@ index dac5c021ce52..365c5b96b8a0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Knell Date: Wed, 28 Oct 2020 14:18:42 +0000 -Subject: [PATCH 372/889] PiFi-40 defconfigs +Subject: [PATCH 371/941] PiFi-40 defconfigs Signed-off-by: David Knell --- @@ -191143,7 +191045,7 @@ index 6247c74639f7..bc02ce537715 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Knell Date: Wed, 28 Oct 2020 14:20:56 +0000 -Subject: [PATCH 373/889] PiFi-40 Devicetree files +Subject: [PATCH 372/941] PiFi-40 Devicetree files Signed-off-by: David Knell --- @@ -191245,7 +191147,7 @@ index 000000000000..51a20e54977f From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Knell Date: Wed, 28 Oct 2020 14:21:37 +0000 -Subject: [PATCH 374/889] PiFi-40 driver, Makefile and Kconfig +Subject: [PATCH 373/941] PiFi-40 driver, Makefile and Kconfig Signed-off-by: David Knell --- @@ -191588,7 +191490,7 @@ index 000000000000..ae699fb0485c From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 27 Oct 2020 12:24:14 +0000 -Subject: [PATCH 375/889] bcm2835-pcm: Fix up multichannel pcm audio +Subject: [PATCH 374/941] bcm2835-pcm: Fix up multichannel pcm audio Fixes: a9c1660ff5f02d048c5f31abf1fd1108ccf9ef87 Signed-off-by: Dom Cobley @@ -191649,7 +191551,7 @@ index 3c0033101e6e..fa5cf5b9550f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Thu, 22 Oct 2020 15:30:55 +0100 -Subject: [PATCH 376/889] watchdog: bcm2835: Ignore params after the partition +Subject: [PATCH 375/941] watchdog: bcm2835: Ignore params after the partition number Use sscanf to extract the partition number and ignore extra parameters @@ -191684,7 +191586,7 @@ index 62937e6f83ca..de25e3682f03 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 20 Oct 2020 11:55:37 +0100 -Subject: [PATCH 377/889] firmware: raspberrypi: Add support for tryonce reboot +Subject: [PATCH 376/941] firmware: raspberrypi: Add support for tryonce reboot flag Define a new mailbox (SET_REBOOT_FLAGS) which may be used to @@ -191764,7 +191666,7 @@ index b3ab1c091f41..e3daf5ee4a9c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Tue, 14 May 2019 17:00:41 +0100 -Subject: [PATCH 378/889] phy: broadcom: split out the BCM54213PE from the +Subject: [PATCH 377/941] phy: broadcom: split out the BCM54213PE from the BCM54210E IDs The last nibble is a revision ID, and the 54213pe is a later rev @@ -191842,7 +191744,7 @@ index 54665952d6ad..92948c26da2a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 29 Oct 2020 14:10:56 +0000 -Subject: [PATCH 379/889] phy: broadcom: Add bcm54213pe configuration +Subject: [PATCH 378/941] phy: broadcom: Add bcm54213pe configuration Signed-off-by: Phil Elwell --- @@ -191882,7 +191784,7 @@ index 671517aae345..8b0ac38742d0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 2 Nov 2020 14:56:18 +0000 -Subject: [PATCH 380/889] configs: Add CONFIG_MAX31856=m +Subject: [PATCH 379/941] configs: Add CONFIG_MAX31856=m Enable support for MAX31856 temperature sensors. @@ -191964,7 +191866,7 @@ index bc02ce537715..680b51ab0642 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 22 Oct 2020 17:11:12 +0100 -Subject: [PATCH 381/889] overlays: Add MAX31856 support to maxtherm overlay +Subject: [PATCH 380/941] overlays: Add MAX31856 support to maxtherm overlay Extend the maxtherm overlay with support for the MAX31856. The driver reads the thermocouple type from a property, which is much @@ -192074,7 +191976,7 @@ index 34d5727069ec..9964e246c14f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2020 14:21:33 +0100 -Subject: [PATCH 382/889] ARM: dts: Add bcm2711-rpi-400.dts +Subject: [PATCH 381/941] ARM: dts: Add bcm2711-rpi-400.dts Signed-off-by: Phil Elwell --- @@ -192745,7 +192647,7 @@ index 000000000000..90c2b5a195d4 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 4 Nov 2020 11:25:02 +0000 -Subject: [PATCH 383/889] overlays: Deprecate and delete the sdtweak overlay +Subject: [PATCH 382/941] overlays: Deprecate and delete the sdtweak overlay The sdtweak overlay has been superseded by the board-specific sd_* parameters such as sd_poll_once, sd_overclock etc. @@ -192870,7 +192772,7 @@ index 38157d2f9bf3..000000000000 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 5 Nov 2020 11:39:35 +0000 -Subject: [PATCH 384/889] ARM: dts: bcm27xx: Remove enable_headphones setting +Subject: [PATCH 383/941] ARM: dts: bcm27xx: Remove enable_headphones setting The enable_headphones parameter of the snd_bcm2835 module is forced to 1 if enable_compat_alsa is 0, so setting them both on the kernel @@ -192955,10 +192857,10 @@ index 8989c00b03e5..d69d6a187e0c 100644 aliases { diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index 3e67c2b634be..f4a8570397f9 100644 +index feef4da786b2..06b6c6c977b7 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -322,7 +322,7 @@ +@@ -323,7 +323,7 @@ / { chosen { @@ -193000,7 +192902,7 @@ index fa7b16040f36..49c69fdaef49 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: menschel Date: Fri, 6 Nov 2020 23:32:22 +0100 -Subject: [PATCH 385/889] configs: Add CAN_MCP251XFD=m and CAN_ISOTP=m +Subject: [PATCH 384/941] configs: Add CAN_MCP251XFD=m and CAN_ISOTP=m * Add mcp251xfd driver module to the RPi kernel builds. * Add isotp can protocol module to the RPi kernel builds. @@ -193095,7 +192997,7 @@ index 680b51ab0642..ff74c23ef24e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 9 Nov 2020 19:49:32 +0000 -Subject: [PATCH 386/889] vc4_hdmi: Report that 3d/stereo is allowed +Subject: [PATCH 385/941] vc4_hdmi: Report that 3d/stereo is allowed Signed-off-by: Dom Cobley --- @@ -193121,7 +193023,7 @@ index be9dc99f0ff5..9bff19e468a0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 11 Nov 2020 17:08:33 +0000 -Subject: [PATCH 387/889] PCI: brcmstb: Restore initial fundamental reset +Subject: [PATCH 386/941] 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 @@ -193162,7 +193064,7 @@ index fea54f6fb7b1..bd0263d739c9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 10 Nov 2020 20:04:08 +0000 -Subject: [PATCH 388/889] vc4: Clear unused infoframe packet RAM registers +Subject: [PATCH 387/941] vc4: Clear unused infoframe packet RAM registers Using a hdmi analyser the bytes in packet ram registers beyond the length were visible in the @@ -193213,7 +193115,7 @@ index 9bff19e468a0..5e7f22ef3dc2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Nov 2020 18:45:10 +0000 -Subject: [PATCH 389/889] Input: edt-ft5x06: Poll the device if no interrupt is +Subject: [PATCH 388/941] Input: edt-ft5x06: Poll the device if no interrupt is configured. Not all systems have the interrupt line wired up, so switch to @@ -193316,7 +193218,7 @@ index 6ff81d48da86..7e8acc0c19be 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Nov 2020 18:52:25 +0000 -Subject: [PATCH 390/889] dtoverlays: Add an overlay for the EDT FT5406 +Subject: [PATCH 389/941] dtoverlays: Add an overlay for the EDT FT5406 touchscreen This touchscreen controller is used by the 7" DSI panel, and @@ -193423,7 +193325,7 @@ index 000000000000..407af59bf468 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 23 Apr 2020 10:17:18 +0100 -Subject: [PATCH 391/889] drm/panel/raspberrypi-touchscreen: Use independent +Subject: [PATCH 390/941] drm/panel/raspberrypi-touchscreen: Use independent I2C actions with delay. We now have the hardware I2C controller pinmuxed to the drive the @@ -193487,7 +193389,7 @@ index bbdd086be7f5..057263c89998 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 10 Nov 2020 11:21:56 +0000 -Subject: [PATCH 392/889] drm/panel/raspberrypi-ts: Insert delay before polling +Subject: [PATCH 391/941] drm/panel/raspberrypi-ts: Insert delay before polling for startup state In switching to the hardware I2C controller there is an issue @@ -193519,7 +193421,7 @@ index 057263c89998..804bdcc978dd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 10 Nov 2020 17:49:35 +0000 -Subject: [PATCH 393/889] Add devicetree support for RaspberryPi 7" panel over +Subject: [PATCH 392/941] Add devicetree support for RaspberryPi 7" panel over DSI I2C Signed-off-by: Dave Stevenson @@ -193630,7 +193532,7 @@ index 000000000000..086f4ffd633a From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Fri, 15 Nov 2019 00:54:07 +0100 -Subject: [PATCH 394/889] mcp251xfd: add overlay +Subject: [PATCH 393/941] mcp251xfd: add overlay Signed-off-by: Marc Kleine-Budde --- @@ -193924,7 +193826,7 @@ index 000000000000..65c861bbd340 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 23 Nov 2020 14:53:14 +0000 -Subject: [PATCH 395/889] configs: Regenerate the defconfigs +Subject: [PATCH 394/941] configs: Regenerate the defconfigs The CAN_ISOTP setting was in the wrong position, and it's better for bisecting and reverting if this doesn't get rolled into the next @@ -194039,7 +193941,7 @@ index ff74c23ef24e..6939accc59bf 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 23 Nov 2020 14:56:18 +0000 -Subject: [PATCH 396/889] configs: Restore BRIDGE_NETFILTER=m +Subject: [PATCH 395/941] configs: Restore BRIDGE_NETFILTER=m CONFIG_BRIDGE_NETFILTER=m used to be the default when CONFIG_NETFILTER was enabled, but that was removed in 5.9. The way that defconfigs work @@ -194124,7 +194026,7 @@ index 6939accc59bf..88ae301afcb4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 23 Nov 2020 16:17:31 +0100 -Subject: [PATCH 397/889] configs: Enable WireGuard kernel module on armhf +Subject: [PATCH 396/941] configs: Enable WireGuard kernel module on armhf configs CONFIG_WIREGUARD=m implies CONFIG_ARM_CRYPTO=y, hence the latter is removed. @@ -194203,7 +194105,7 @@ index d8484c28caed..77c400a1ecd9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Sun, 22 Nov 2020 11:01:08 +0000 -Subject: [PATCH 398/889] media: ov9281: Add 1280x720 and 640x480 modes +Subject: [PATCH 397/941] media: ov9281: Add 1280x720 and 640x480 modes Breaks out common register set and adds the different registers for 1280x720 (cropped) and 640x480 (skipped) modes @@ -194418,7 +194320,7 @@ index 9610c24ceff1..12621c2dccd5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 12 Nov 2020 17:01:52 +0000 -Subject: [PATCH 399/889] dt-bindings: Add compatible for BCM2711 DSI1 +Subject: [PATCH 398/941] 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. @@ -194447,7 +194349,7 @@ index eb44e072b6e5..90ee069ada8d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 12 Nov 2020 18:42:30 +0000 -Subject: [PATCH 400/889] dt: Use compatible string for BCM2711 DSI1 +Subject: [PATCH 399/941] dt: Use compatible string for BCM2711 DSI1 Updates the compatible string for DSI1 on BCM2711 to differentiate it from BCM2835. @@ -194458,7 +194360,7 @@ Signed-off-by: Dave Stevenson 1 file changed, 1 insertion(+) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 27c622ebee0d..9c615dd3715e 100644 +index 770fa94776ef..1a2a38080621 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -554,6 +554,7 @@ @@ -194476,7 +194378,7 @@ index 27c622ebee0d..9c615dd3715e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 30 Nov 2020 16:16:03 +0000 -Subject: [PATCH 401/889] drm/vc4: Correct DSI register definition +Subject: [PATCH 400/941] drm/vc4: Correct DSI register definition The DSI1_PHY_AFEC0_PD_DLANE1 and DSI1_PHY_AFEC0_PD_DLANE3 register definitions were swapped, so trying to use more than a single data @@ -194516,7 +194418,7 @@ index eaf276978ee7..2646a6dbf584 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sudeep Date: Fri, 23 Oct 2020 15:47:17 +0530 -Subject: [PATCH 402/889] Allo boss2 driver +Subject: [PATCH 401/941] Allo boss2 driver Signed-off-by: Sudeep --- @@ -195712,7 +195614,7 @@ index 000000000000..5ad7f16964aa From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sudeep Date: Fri, 23 Oct 2020 15:51:15 +0530 -Subject: [PATCH 403/889] Add allo boss2 overlay +Subject: [PATCH 402/941] Add allo boss2 overlay Signed-off-by: Sudeep --- @@ -195821,7 +195723,7 @@ index 000000000000..a6adfb495eb9 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sudeep Date: Fri, 23 Oct 2020 15:52:38 +0530 -Subject: [PATCH 404/889] Add allo boss2 config +Subject: [PATCH 403/941] Add allo boss2 config Signed-off-by: Sudeep --- @@ -195899,7 +195801,7 @@ index 88ae301afcb4..2359f9c08650 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: paul-1 <6473457+paul-1@users.noreply.github.com> Date: Wed, 4 Nov 2020 19:17:48 -0500 -Subject: [PATCH 405/889] Overlay: Update Allo Piano Plus dac driver for 5.4.y +Subject: [PATCH 404/941] Overlay: Update Allo Piano Plus dac driver for 5.4.y kernels. Create unique names for the two instances of the codec driver. @@ -195935,7 +195837,7 @@ index 374c553db062..d47a35def4f7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 2 Dec 2020 15:22:23 +0000 -Subject: [PATCH 406/889] media: bcm2835-unicam: Correctly handle error +Subject: [PATCH 405/941] media: bcm2835-unicam: Correctly handle error propagation for stream on On a failure in start_streaming(), the error code would not propagate to @@ -195968,7 +195870,7 @@ index 6501fb205e20..c13a0a20fd12 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 2 Dec 2020 15:26:09 +0000 -Subject: [PATCH 407/889] media: bcm2835-unicam: Return early from +Subject: [PATCH 406/941] media: bcm2835-unicam: Return early from stop_streaming() if stopped clk_disable_unprepare() is called unconditionally in stop_streaming(). @@ -196038,7 +195940,7 @@ index c13a0a20fd12..60309de02369 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 2 Dec 2020 16:48:41 +0000 -Subject: [PATCH 408/889] media: bcm2835-unicam: Clear clock state when +Subject: [PATCH 407/941] media: bcm2835-unicam: Clear clock state when stopping streaming Commit 65e08c465020d4c5b51afb452efc2246d80fd66f failed to clear the @@ -196069,7 +195971,7 @@ index 60309de02369..a8b3f5433f04 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 3 Dec 2020 13:44:42 +0000 -Subject: [PATCH 409/889] PCI: brcmstb: Advertise MSI-X support +Subject: [PATCH 408/941] 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 @@ -196102,7 +196004,7 @@ index bd0263d739c9..840f264f7a9b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 7 Dec 2020 09:35:57 +0000 -Subject: [PATCH 410/889] ARM: dts: CM4 audio pins are not connected +Subject: [PATCH 409/941] ARM: dts: CM4 audio pins are not connected Signed-off-by: Phil Elwell --- @@ -196129,7 +196031,7 @@ index 49c69fdaef49..dbe8afe9ac5f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 7 Dec 2020 08:33:19 +0000 -Subject: [PATCH 411/889] configs: Add RTC_DRV_PCF85063=m +Subject: [PATCH 410/941] configs: Add RTC_DRV_PCF85063=m Include the driver module for the PCF85063 and PCF85063A RTC devices. @@ -196209,7 +196111,7 @@ index 2359f9c08650..5d6f27ec87f6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 7 Dec 2020 08:49:53 +0000 -Subject: [PATCH 412/889] overlays: Add PCF85063 and PCF85063A to i2c-rtc +Subject: [PATCH 411/941] overlays: Add PCF85063 and PCF85063A to i2c-rtc Add support for the PCF85063 and PCF85063A RTC devices to the i2c-rtc overlay. @@ -196556,7 +196458,7 @@ index 735ca303e4fa..759f532d5be1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 7 Dec 2020 17:18:39 +0000 -Subject: [PATCH 413/889] overlays: Fix cut-and-paste error in README +Subject: [PATCH 412/941] overlays: Fix cut-and-paste error in README Signed-off-by: Phil Elwell --- @@ -196586,7 +196488,7 @@ index d4cf4176a54b..2fa2bbb943cd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 4 Nov 2020 18:31:02 +0000 -Subject: [PATCH 414/889] staging/bcm2835-codec: Ensure OUTPUT timestamps are +Subject: [PATCH 413/941] staging/bcm2835-codec: Ensure OUTPUT timestamps are always forwarded The firmware by default tries to ensure that decoded frame @@ -196647,7 +196549,7 @@ index 5b596b5c057f..efda4dc039c3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 15 Dec 2020 16:38:37 +0000 -Subject: [PATCH 415/889] net: lan78xx: Ack pending PHY ints when resetting +Subject: [PATCH 414/941] 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 @@ -196665,7 +196567,7 @@ Signed-off-by: Phil Elwell 1 file changed, 3 insertions(+) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index acfbda466d2f..2c54e4eadde6 100644 +index 31eb1a420fb1..053a634fb31d 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -1181,6 +1181,9 @@ static int lan78xx_link_reset(struct lan78xx_net *dev) @@ -196685,7 +196587,7 @@ index acfbda466d2f..2c54e4eadde6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 15 Dec 2020 17:02:17 +0000 -Subject: [PATCH 416/889] overlays: mpu6050: Add 'addr' parameter +Subject: [PATCH 415/941] overlays: mpu6050: Add 'addr' parameter The mpu6050 starts up at address 0x68 by default, but can be set to 0x69 if the ADO pin is pulled high. Give the overlay an addr parameter @@ -196729,7 +196631,7 @@ index 3109d90562ae..1b4c06535687 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 15 Dec 2020 16:26:51 +0000 -Subject: [PATCH 417/889] drm/vc4: Make normalize_zpos conditional on using +Subject: [PATCH 416/941] drm/vc4: Make normalize_zpos conditional on using fkms Eric's view was that there was no point in having zpos @@ -196764,7 +196666,7 @@ index 65513a90d606..5d0974cdeaaa 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 16 Dec 2020 09:28:17 +0000 -Subject: [PATCH 418/889] overlays: Add missing addresses to ads1015/ads1115 +Subject: [PATCH 417/941] overlays: Add missing addresses to ads1015/ads1115 The overlays for the ads1015 and ads1115 I2C ADCs omitted the addresses in the main device node names. As well as breaking the conventions for @@ -196813,7 +196715,7 @@ index 4fc571c2db33..e44ced704ee2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 9 Dec 2020 11:30:12 +0000 -Subject: [PATCH 419/889] media: i2c: imx477: Selection compliance fixes +Subject: [PATCH 418/941] media: i2c: imx477: Selection compliance fixes To comply with the intended usage of the V4L2 selection target when used to retrieve a sensor image properties, adjust the rectangles @@ -196899,7 +196801,7 @@ index 3fbb173fa079..f68e7718b09c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Sun, 13 Dec 2020 16:45:58 +0000 -Subject: [PATCH 420/889] staging/vc04_services/codec: Add support for CID +Subject: [PATCH 419/941] staging/vc04_services/codec: Add support for CID MPEG_HEADER_MODE Control V4L2_CID_MPEG_VIDEO_HEADER_MODE controls whether the encoder @@ -196969,7 +196871,7 @@ index 3791ab4b4244..c368246cbb6a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Sun, 13 Dec 2020 16:54:43 +0000 -Subject: [PATCH 421/889] staging/vc04_services/codec: Clear last buf dequeued +Subject: [PATCH 420/941] staging/vc04_services/codec: Clear last buf dequeued flag on START It appears that the V4L2 M2M framework requires the driver to manually @@ -197012,7 +196914,7 @@ index c368246cbb6a..9673d807ca67 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 8 Oct 2020 14:44:08 +0200 -Subject: [PATCH 422/889] drm/atomic: Pass the full state to CRTC atomic +Subject: [PATCH 421/941] drm/atomic: Pass the full state to CRTC atomic enable/disable Commit 351f950db4ab28c321a1bd4b92e4bb03e34c4703 upstream. @@ -197728,7 +197630,7 @@ index a0253297bc76..6b03ceeb5ba1 100644 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); struct mdp4_kms *mdp4_kms = get_kms(crtc); diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c -index 7d7668998501..6082b0db700f 100644 +index a8fa084dfa49..d612b4783e12 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c @@ -483,7 +483,7 @@ static u32 mdp5_crtc_get_vblank_counter(struct drm_crtc *crtc) @@ -198285,7 +198187,7 @@ index 4efec30f8bad..bde42988c4b5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 28 Oct 2020 13:32:21 +0100 -Subject: [PATCH 423/889] drm/atomic: Pass the full state to CRTC atomic_check +Subject: [PATCH 422/941] drm/atomic: Pass the full state to CRTC atomic_check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -198890,7 +198792,7 @@ index 6b03ceeb5ba1..af80f3baf05b 100644 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); DBG("%s: check", mdp4_crtc->name); diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c -index 6082b0db700f..3d6aeb8916f2 100644 +index d612b4783e12..2318a5c20a8d 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c @@ -7,6 +7,7 @@ @@ -199376,7 +199278,7 @@ index bde42988c4b5..b97441deaf93 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 28 Oct 2020 13:32:22 +0100 -Subject: [PATCH 424/889] drm/atomic: Pass the full state to CRTC atomic begin +Subject: [PATCH 423/941] drm/atomic: Pass the full state to CRTC atomic begin and flush MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -200068,7 +199970,7 @@ index af80f3baf05b..34e3186e236d 100644 struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); struct drm_device *dev = crtc->dev; diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c -index 3d6aeb8916f2..baf9f1d550c6 100644 +index 2318a5c20a8d..58dd302950d9 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c @@ -772,13 +772,13 @@ static int mdp5_crtc_atomic_check(struct drm_crtc *crtc, @@ -200474,7 +200376,7 @@ index b97441deaf93..f2de050085be 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 7 Dec 2020 16:57:11 +0100 -Subject: [PATCH 425/889] drm/vc4: hvs: Align the HVS atomic hooks to the new +Subject: [PATCH 424/941] drm/vc4: hvs: Align the HVS atomic hooks to the new API Since the CRTC setup in vc4 is split between the PixelValves/TXP and the @@ -200595,7 +200497,7 @@ index 9970f90e1fe3..22430640786f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:36 +0100 -Subject: [PATCH 426/889] drm/vc4: Pass the atomic state to encoder hooks +Subject: [PATCH 425/941] drm/vc4: Pass the atomic state to encoder hooks We'll need to access the connector state in our encoder setup, so let's just pass the whole DRM state to our private encoder hooks. @@ -200766,7 +200668,7 @@ index 5e7f22ef3dc2..fca379ef7369 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:38 +0100 -Subject: [PATCH 427/889] drm/vc4: hdmi: Don't access the connector state in +Subject: [PATCH 426/941] drm/vc4: hdmi: Don't access the connector state in reset if kmalloc fails drm_atomic_helper_connector_reset uses kmalloc which, from an API @@ -200807,7 +200709,7 @@ index fca379ef7369..929c6a39bc49 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:39 +0100 -Subject: [PATCH 428/889] drm/vc4: hdmi: Create a custom connector state +Subject: [PATCH 427/941] drm/vc4: hdmi: Create a custom connector state When run with a higher bpc than 8, the clock of the HDMI controller needs to be adjusted. Let's create a connector state that will be used at @@ -200903,7 +200805,7 @@ index 165d80928143..040408d870a4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:40 +0100 -Subject: [PATCH 429/889] drm/vc4: hdmi: Store pixel frequency in the connector +Subject: [PATCH 428/941] drm/vc4: hdmi: Store pixel frequency in the connector state The pixel rate is for now quite simple to compute, but with more features @@ -201008,7 +200910,7 @@ index 040408d870a4..c319172b6e99 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:41 +0100 -Subject: [PATCH 430/889] drm/vc4: hdmi: Use the connector state pixel rate for +Subject: [PATCH 429/941] drm/vc4: hdmi: Use the connector state pixel rate for the PHY The PHY initialisation parameters are not based on the pixel clock but @@ -201120,7 +201022,7 @@ index 057796b54c51..36535480f8e2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:43 +0100 -Subject: [PATCH 431/889] drm/vc4: hdmi: Enable 10/12 bpc output +Subject: [PATCH 430/941] drm/vc4: hdmi: Enable 10/12 bpc output The BCM2711 supports higher bpc count than just 8, so let's support it in our driver. @@ -201333,7 +201235,7 @@ index 6c0dfbbe1a7e..20a1438a72cb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 1 Dec 2020 14:57:41 +0000 -Subject: [PATCH 432/889] drm/vc4: Fixup fkms for API change +Subject: [PATCH 431/941] drm/vc4: Fixup fkms for API change Atomic flush and check changed API, so fix up the downstream-only FKMS driver. @@ -201389,7 +201291,7 @@ index f83efe013a5b..44b1addeb22e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 30 Dec 2020 20:00:38 +0000 -Subject: [PATCH 433/889] overlays: Rebuild "upstream" with latest ovmerge +Subject: [PATCH 432/941] overlays: Rebuild "upstream" with latest ovmerge The latest ovmerge drops disabled fragments, causing the "upstream" overlay to change. @@ -201688,7 +201590,7 @@ index 6195e02bf9ff..e0f7cc8ba9ea 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: menschel Date: Wed, 30 Dec 2020 21:55:34 +0100 -Subject: [PATCH 434/889] Add overlay for Seeed Studio CAN BUS FD HAT (#4034) +Subject: [PATCH 433/941] Add overlay for Seeed Studio CAN BUS FD HAT (#4034) This patch adds the overlay for the Seeed Studio CAN BUS FD HAT with two CAN FD Channels and an RTC. @@ -201916,7 +201818,7 @@ index 000000000000..e843d0b19745 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: gesangtome Date: Fri, 1 Jan 2021 18:03:17 +0800 -Subject: [PATCH 435/889] vc-sm-cma: fixed kbuild problem +Subject: [PATCH 434/941] vc-sm-cma: fixed kbuild problem error logs: drivers/staging/vc04_services/vc-sm-cma/Kconfig:1:error: recursive dependency detected! @@ -201952,7 +201854,7 @@ index a7c1a7bf516e..5df9198cdab1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Sat, 2 Jan 2021 10:51:58 +0000 -Subject: [PATCH 436/889] staging/vc04-services/codec: Fix logical precedence +Subject: [PATCH 435/941] staging/vc04-services/codec: Fix logical precedence issue Two issues identified with operator precedence in logical @@ -201994,7 +201896,7 @@ index 9673d807ca67..8a8f1e8db7d0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 10:43:20 +0000 -Subject: [PATCH 437/889] staging/vc04_services: Add additional unpacked raw +Subject: [PATCH 436/941] staging/vc04_services: Add additional unpacked raw formats Support has been added for the unpacked (16bpp) versions of @@ -202051,7 +201953,7 @@ index 8eb6334ee055..59f7ad3a5b3b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 10:45:16 +0000 -Subject: [PATCH 438/889] staging/bcm2835-codec: Add the unpacked (16bpp) raw +Subject: [PATCH 437/941] staging/bcm2835-codec: Add the unpacked (16bpp) raw formats Now that the firmware supports the unpacked (16bpp) variants @@ -202224,7 +202126,7 @@ index 8a8f1e8db7d0..c883db63808f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 11:41:26 +0000 -Subject: [PATCH 439/889] staging/bcm2835-codec: Log the number of excess +Subject: [PATCH 438/941] staging/bcm2835-codec: Log the number of excess supported formats When logging that the firmware has provided more supported formats @@ -202273,7 +202175,7 @@ index c883db63808f..94691ab7175a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 11:37:10 +0000 -Subject: [PATCH 440/889] staging/bcm2835-isp: Add the unpacked (16bpp) raw +Subject: [PATCH 439/941] staging/bcm2835-isp: Add the unpacked (16bpp) raw formats Now that the firmware supports the unpacked (16bpp) variants @@ -202455,7 +202357,7 @@ index 8bb3d115b27a..9a313ffcabf5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 11:43:22 +0000 -Subject: [PATCH 441/889] staging/bcm2835-isp: Log the number of excess +Subject: [PATCH 440/941] staging/bcm2835-isp: Log the number of excess supported formats When logging that the firmware has provided more supported formats @@ -202490,7 +202392,7 @@ index 9a313ffcabf5..afac2ad65790 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 30 Dec 2020 14:51:29 +0000 -Subject: [PATCH 442/889] bcm2835-dma: Add bcm2835-dma: Add DMA_WIDE_SOURCE and +Subject: [PATCH 441/941] bcm2835-dma: Add bcm2835-dma: Add DMA_WIDE_SOURCE and DMA_WIDE_DEST flags Use (reserved) bits 24 and 25 of the dreq value @@ -202560,7 +202462,7 @@ index 0cbfa9d559a2..5517d2135168 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 11 Jan 2021 14:49:33 +0000 -Subject: [PATCH 443/889] bcm2835-dma: Move WAIT_RESP from extra to info +Subject: [PATCH 442/941] bcm2835-dma: Move WAIT_RESP from extra to info Questionable: Might want to drop Signed-off-by: popcornmix @@ -202591,7 +202493,7 @@ index 5517d2135168..8b97b9f10a1a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 6 Jan 2021 18:16:10 +0000 -Subject: [PATCH 444/889] bcm2835-dma: Avoid losing CS flags after interrupt +Subject: [PATCH 443/941] bcm2835-dma: Avoid losing CS flags after interrupt Signed-off-by: Dom Cobley --- @@ -202618,7 +202520,7 @@ index 8b97b9f10a1a..94a1b40b1645 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 11 Jan 2021 13:06:23 +0000 -Subject: [PATCH 445/889] dt: Enable DMA_WIDE_SOURCE and DMA_WIDE_DEST for hdmi +Subject: [PATCH 444/941] dt: Enable DMA_WIDE_SOURCE and DMA_WIDE_DEST for hdmi audio Signed-off-by: popcornmix @@ -202669,7 +202571,7 @@ index bd77ba3a3562..47b958428d0c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 6 Jan 2021 18:16:29 +0000 -Subject: [PATCH 446/889] bcm2711-rpi.dtsi: Bump hdmi audio dma panic priority +Subject: [PATCH 445/941] bcm2711-rpi.dtsi: Bump hdmi audio dma panic priority to max Set panic priority to 15 and leave normal priority at 0 @@ -202708,7 +202610,7 @@ index 3dbfd601ca39..8053ef54acc8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Paul Elder Date: Tue, 22 Dec 2020 14:27:46 +0900 -Subject: [PATCH 447/889] media: i2c: ov5647: Selection compliance fixes +Subject: [PATCH 446/941] media: i2c: ov5647: Selection compliance fixes To comply with the intended usage of the V4L2 selection target when used to retrieve a sensor image properties, adjust the rectangles @@ -202802,7 +202704,7 @@ index 86a821a172b3..40d0d45a2481 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Sat, 2 Jan 2021 21:08:59 +0100 -Subject: [PATCH 448/889] overlays: give Seeed Studio CAN BUS FD HAT a -v2 +Subject: [PATCH 447/941] overlays: give Seeed Studio CAN BUS FD HAT a -v2 postfix There are several versions of the Seeed Studio CAN BUS FD HAT. This is the @@ -202860,7 +202762,7 @@ rename to arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Sat, 2 Jan 2021 21:38:58 +0100 -Subject: [PATCH 449/889] overlays: Add overlay for Seeed Studio CAN BUS FD HAT +Subject: [PATCH 448/941] overlays: Add overlay for Seeed Studio CAN BUS FD HAT v1 (based on mcp2517fd) This patch adds the overlay for the Seeed Studio CAN BUS FD HAT v1 with two CAN @@ -203063,7 +202965,7 @@ index 000000000000..210d027a073e From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aaron Shaw Date: Sat, 2 Jan 2021 02:34:03 +0000 -Subject: [PATCH 450/889] overlays: add wm8960-soundcard overlay +Subject: [PATCH 449/941] overlays: add wm8960-soundcard overlay add overlay for waveshare wm8960 simple-audio-card @@ -203203,7 +203105,7 @@ index 000000000000..289fa4dacdf1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aaron Shaw Date: Sat, 26 Dec 2020 03:13:14 +0000 -Subject: [PATCH 451/889] overlays: add spi override to merus-amp overlay +Subject: [PATCH 450/941] overlays: add spi override to merus-amp overlay adds an override to the merus-amp overlay to turn the spi bus off @@ -203255,7 +203157,7 @@ index 4501fbdc253d..bbffd7d26324 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 Jan 2021 17:28:57 +0000 -Subject: [PATCH 452/889] dt: Add a camera regulator node to all downstream Pi +Subject: [PATCH 451/941] dt: Add a camera regulator node to all downstream Pi platforms The current firmware fixup of camera sensor overlays is not @@ -203552,10 +203454,10 @@ index f972979281f5..6743c984a316 100644 &uart0 { diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index f4a8570397f9..32e7af96aa83 100644 +index 06b6c6c977b7..00050e0a31fd 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -319,6 +319,7 @@ +@@ -320,6 +320,7 @@ #include "bcm2711-rpi.dtsi" #include "bcm283x-rpi-csi1-2lane.dtsi" #include "bcm283x-rpi-i2c0mux_0_44.dtsi" @@ -203563,7 +203465,7 @@ index f4a8570397f9..32e7af96aa83 100644 / { chosen { -@@ -585,6 +586,10 @@ +@@ -586,6 +587,10 @@ pinctrl-0 = <&audio_pins>; }; @@ -203616,7 +203518,7 @@ index 000000000000..55237d03ed94 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 6 Jan 2021 17:42:31 +0000 -Subject: [PATCH 453/889] dtoverlays: Update sensor overlays to use cam1_reg +Subject: [PATCH 452/941] dtoverlays: Update sensor overlays to use cam1_reg where possible Update those overlays that use the regulator framework to use the @@ -203873,7 +203775,7 @@ index 40b298d3dd86..b7a9c8c539da 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Sat, 9 Jan 2021 17:03:32 +0100 -Subject: [PATCH 454/889] overlays: seeed-can-fd-hat: clarify how to identify +Subject: [PATCH 453/941] overlays: seeed-can-fd-hat: clarify how to identify HAT version It turns out the used CAN SPI chip is not a good way to identify the version of @@ -203924,7 +203826,7 @@ index 5076ca440742..bc889782a30b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 19 Jan 2021 08:57:21 +0000 -Subject: [PATCH 455/889] configs: Enable BCM2835 thermal driver in kernel8 +Subject: [PATCH 454/941] configs: Enable BCM2835 thermal driver in kernel8 The arm64 version of bcm2711_defconfig is intended for Pi 4, but the Raspberry Pi OS kernel8.img built from it is also used for Pi 3. It is @@ -203958,7 +203860,7 @@ index 325ff25a243d..eeb52d96e26b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 14 Jan 2021 09:18:42 +0000 -Subject: [PATCH 456/889] uapi: bcm2835-isp: Add colour denoise configuration +Subject: [PATCH 455/941] uapi: bcm2835-isp: Add colour denoise configuration Add a configuration structure for colour denoise to the bcm2835_isp driver. @@ -204020,7 +203922,7 @@ index cf8c0437f159..c50e3ca81565 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 14 Jan 2021 09:20:52 +0000 -Subject: [PATCH 457/889] staging: vc04_services: ISP: Add colour denoise +Subject: [PATCH 456/941] staging: vc04_services: ISP: Add colour denoise control Add colour denoise control to the bcm2835 driver through a new v4l2 @@ -204105,7 +204007,7 @@ index efda4dc039c3..79438d23912f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 21 Jan 2021 18:27:08 +0000 -Subject: [PATCH 458/889] configs: Add CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +Subject: [PATCH 457/941] configs: Add CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m Signed-off-by: popcornmix --- @@ -204183,7 +204085,7 @@ index 5d6f27ec87f6..5b6a5d59b394 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 22 Jan 2021 09:28:06 +0000 -Subject: [PATCH 459/889] configs: Add CONFIG_USB_NET_AQC111=m +Subject: [PATCH 458/941] configs: Add CONFIG_USB_NET_AQC111=m See: https://github.com/raspberrypi/linux/pull/4086 @@ -204263,7 +204165,7 @@ index 5b6a5d59b394..655b1d87720b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Thu, 10 Dec 2020 19:22:45 +0100 -Subject: [PATCH 460/889] dt-bindings: nvmem: Add bindings for rmem driver +Subject: [PATCH 459/941] dt-bindings: nvmem: Add bindings for rmem driver Firmware/co-processors might use reserved memory areas in order to pass data stemming from an nvmem device otherwise non accessible to Linux. @@ -204345,7 +204247,7 @@ index 000000000000..29b53871aa02 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Thu, 10 Dec 2020 12:13:49 +0100 -Subject: [PATCH 461/889] nvmem: Add driver to expose reserved memory as nvmem +Subject: [PATCH 460/941] nvmem: Add driver to expose reserved memory as nvmem Firmware/co-processors might use reserved memory areas in order to pass data stemming from an nvmem device otherwise non accessible to Linux. @@ -204521,7 +204423,7 @@ index b557a0fcd4ba..281856ac1988 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Fri, 11 Dec 2020 12:22:01 +0100 -Subject: [PATCH 462/889] ARM: dts: bcm2711: Add reserved memory template to +Subject: [PATCH 461/941] ARM: dts: bcm2711: Add reserved memory template to hold firmware configuration RPi4's co-processor will copy the board's bootloader[1] configuration @@ -204546,7 +204448,7 @@ Changes since v1: 1 file changed, 17 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index 32e7af96aa83..b8339a629fb9 100644 +index 00050e0a31fd..784f47078c05 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts @@ -24,6 +24,7 @@ @@ -204587,7 +204489,7 @@ index 32e7af96aa83..b8339a629fb9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Fri, 11 Dec 2020 13:04:37 +0100 -Subject: [PATCH 463/889] arm64: defconfig: Enable nvmem's rmem driver +Subject: [PATCH 462/941] arm64: defconfig: Enable nvmem's rmem driver It'll be used by the RPi4 family of boards to access its bootloader configuration. @@ -204616,7 +204518,7 @@ index 5cfe3cf6f2ac..a9f496d74639 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Fri, 11 Dec 2020 13:15:41 +0100 -Subject: [PATCH 464/889] ARM: multi_v7_defconfig: Enable nvmem's rmem driver +Subject: [PATCH 463/941] ARM: multi_v7_defconfig: Enable nvmem's rmem driver It'll be used by the RPi4 family of boards to access its bootloader configuration. @@ -204645,7 +204547,7 @@ index a611b0c1e540..ea2715c9f923 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 22 Jan 2021 12:08:19 +0000 -Subject: [PATCH 465/889] configs: Add NVMEM_RMEM=m for 2711 +Subject: [PATCH 464/941] configs: Add NVMEM_RMEM=m for 2711 Signed-off-by: Phil Elwell --- @@ -204684,7 +204586,7 @@ index 590a235f9e25..4c4068953a97 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 22 Jan 2021 16:15:06 +0000 -Subject: [PATCH 466/889] configs: Add CRYPTO_ADIANTUM=m +Subject: [PATCH 465/941] configs: Add CRYPTO_ADIANTUM=m See: https://github.com/raspberrypi/linux/issues/3648 @@ -204764,7 +204666,7 @@ index 655b1d87720b..1ca2f13a2af5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 28 Jan 2021 11:30:04 +0000 -Subject: [PATCH 467/889] spi: bcm2835: Workaround/fix for zero-length +Subject: [PATCH 466/941] spi: bcm2835: Workaround/fix for zero-length transfers A relatively recent commit ([1]) contained optimisation for the PIO @@ -204820,7 +204722,7 @@ index 1240422970df..4f40d2b9d468 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Jan 2021 10:34:11 +0000 -Subject: [PATCH 468/889] kbuild: Silence unavoidable dtc overlay warnings +Subject: [PATCH 467/941] 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 @@ -204857,7 +204759,7 @@ index 9c0df5bde46c..43758c8d4b68 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 1 Feb 2021 12:45:29 +0000 -Subject: [PATCH 469/889] configs: Enable CONFIG_MEDIA_CEC_RC +Subject: [PATCH 468/941] configs: Enable CONFIG_MEDIA_CEC_RC See: https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=301072 --- @@ -204943,7 +204845,7 @@ index 1ca2f13a2af5..aa89eb5704cb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Fri, 29 Jan 2021 08:26:44 +0100 -Subject: [PATCH 470/889] Adds the DT-overlays to support Hifiberry AMP100 +Subject: [PATCH 469/941] Adds the DT-overlays to support Hifiberry AMP100 Adds new DT-overlay to control AMP100. @@ -205086,7 +204988,7 @@ index 000000000000..ebdef55d6110 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Fri, 29 Jan 2021 16:16:39 +0100 -Subject: [PATCH 471/889] Enhances the Hifiberry DAC+ driver for Hifiberry +Subject: [PATCH 470/941] Enhances the Hifiberry DAC+ driver for Hifiberry AMP100 support Adds the necessary GPIO handling and ALSA mixer extensions. @@ -205330,7 +205232,7 @@ index 157ab4c2cc85..bdcac1b6992c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 3 Feb 2021 16:23:43 +0000 -Subject: [PATCH 472/889] ARM: dts: Declare Pi400 and CM4 have no audio pins +Subject: [PATCH 471/941] ARM: dts: Declare Pi400 and CM4 have no audio pins The audio_pins node is left as a placeholder for the audremap overlay, and it must have (empty) brcm,function and brcm,pins properties @@ -205379,7 +205281,7 @@ index 7ab0aba5f1a3..9ab2feb4424f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 4 Feb 2021 17:29:32 +0000 -Subject: [PATCH 473/889] media: i2c: imx290: Replace V4L2_CID_GAIN with +Subject: [PATCH 472/941] media: i2c: imx290: Replace V4L2_CID_GAIN with V4L2_CID_ANALOGUE_GAIN Most software (including libcamera) requires V4L2_CID_ANALOGUE_GAIN, @@ -205423,7 +205325,7 @@ index 2e646fb01856..a2df46e4aabc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 4 Feb 2021 21:21:44 +0000 -Subject: [PATCH 474/889] media: i2c: imx290: Fix number of controls in +Subject: [PATCH 473/941] media: i2c: imx290: Fix number of controls in v4l2_ctrl_handler_init The number is only a hint, but may as well be correct. @@ -205457,7 +205359,7 @@ index a2df46e4aabc..33ce80686163 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 5 Feb 2021 12:04:06 +0000 -Subject: [PATCH 475/889] configs: Add MICREL_PHY=y +Subject: [PATCH 474/941] configs: Add MICREL_PHY=y Signed-off-by: Phil Elwell --- @@ -205496,7 +205398,7 @@ index 6acc0dbe9187..a2531896a8b6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:22:55 +0100 -Subject: [PATCH 476/889] ARM: bcm: Select BRCMSTB_L2_IRQ for bcm2835 +Subject: [PATCH 475/941] ARM: bcm: Select BRCMSTB_L2_IRQ for bcm2835 The BCM2711 has a number of instances of interrupt controllers handled by the driver behind the BRCMSTB_L2_IRQ Kconfig option (irq-brcmstb-l2). @@ -205541,7 +205443,7 @@ index 5c4ac1c9f4e0..2c5620822895 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:23:02 +0100 -Subject: [PATCH 477/889] drm/vc4: hdmi: Introduce a CEC clock +Subject: [PATCH 476/941] drm/vc4: hdmi: Introduce a CEC clock While the BCM2835 had the CEC clock derived from the HSM clock, the BCM2711 has a dedicated parent clock for it. @@ -205609,7 +205511,7 @@ index f18f1d775241..c9b4b7678df4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:23:03 +0100 -Subject: [PATCH 478/889] drm/vc4: hdmi: Split the interrupt handlers +Subject: [PATCH 477/941] drm/vc4: hdmi: Split the interrupt handlers The BCM2711 has two different interrupt sources to transmit and receive CEC messages, provided through an external interrupt chip shared between @@ -205756,7 +205658,7 @@ index 574bbed72383..335a9574007d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:23:04 +0100 -Subject: [PATCH 479/889] drm/vc4: hdmi: Support BCM2711 CEC interrupt setup +Subject: [PATCH 478/941] drm/vc4: hdmi: Support BCM2711 CEC interrupt setup The HDMI controller found in the BCM2711 has an external interrupt controller for the CEC and hotplug interrupt shared between the two @@ -205880,7 +205782,7 @@ index c9b4b7678df4..ae1be14812b8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 11 Jan 2021 15:23:05 +0100 -Subject: [PATCH 480/889] drm/vc4: hdmi: Remove cec_available flag +Subject: [PATCH 479/941] drm/vc4: hdmi: Remove cec_available flag Now that our HDMI controller supports CEC for the BCM2711, let's remove that flag. @@ -205936,7 +205838,7 @@ index ae1be14812b8..cb2af9f144df 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:23:06 +0100 -Subject: [PATCH 481/889] drm/vc4: hdmi: Don't register the CEC adapter if +Subject: [PATCH 480/941] drm/vc4: hdmi: Don't register the CEC adapter if there's no interrupts We introduced the BCM2711 support to the vc4 HDMI controller with 5.10, @@ -205979,7 +205881,7 @@ index 21b547c158b1..b39cc371abdf 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:23:07 +0100 -Subject: [PATCH 482/889] dt-binding: display: bcm2711-hdmi: Add CEC and +Subject: [PATCH 481/941] dt-binding: display: bcm2711-hdmi: Add CEC and hotplug interrupts The CEC and hotplug interrupts were missing when that binding was @@ -206036,7 +205938,7 @@ index 7ce06f9f9f8e..6e8ac910bdd8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:23:08 +0100 -Subject: [PATCH 483/889] ARM: dts: bcm2711: Add the BSC interrupt controller +Subject: [PATCH 482/941] ARM: dts: bcm2711: Add the BSC interrupt controller The BSC controllers used for the HDMI DDC have an interrupt controller shared between both instances. Let's add it to avoid polling. @@ -206048,7 +205950,7 @@ Signed-off-by: Maxime Ripard 1 file changed, 12 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 9c615dd3715e..1646231f0076 100644 +index 1a2a38080621..36ccfcccfa8f 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -308,6 +308,14 @@ @@ -206091,7 +205993,7 @@ index 9c615dd3715e..1646231f0076 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 11 Jan 2021 15:23:09 +0100 -Subject: [PATCH 484/889] ARM: dts: bcm2711: Add the CEC interrupt controller +Subject: [PATCH 483/941] ARM: dts: bcm2711: Add the CEC interrupt controller The CEC and hotplug interrupts go through an interrupt controller shared between the two HDMI controllers. @@ -206106,7 +206008,7 @@ Signed-off-by: Maxime Ripard 1 file changed, 18 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 1646231f0076..733d9ccf0514 100644 +index 36ccfcccfa8f..417596be04bc 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -316,6 +316,14 @@ @@ -206155,7 +206057,7 @@ index 1646231f0076..733d9ccf0514 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 9 Dec 2020 16:37:01 +0000 -Subject: [PATCH 485/889] bcm2711: Disable bsc_intr and aon_intr by default and +Subject: [PATCH 484/941] bcm2711: Disable bsc_intr and aon_intr by default and enable in overlay Signed-off-by: Dom Cobley @@ -206165,7 +206067,7 @@ Signed-off-by: Dom Cobley 2 files changed, 16 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 733d9ccf0514..271e6ff814df 100644 +index 417596be04bc..c6d789394345 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -314,6 +314,7 @@ @@ -206216,7 +206118,7 @@ index f721f12d729d..8e9220f303f0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:42 +0100 -Subject: [PATCH 486/889] drm/vc4: hdmi: Limit the BCM2711 to the max without +Subject: [PATCH 485/941] drm/vc4: hdmi: Limit the BCM2711 to the max without scrambling Unlike the previous generations, the HSM clock limitation is way above @@ -206267,7 +206169,7 @@ index b39cc371abdf..08f337a156ad 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 11 Jan 2021 17:08:20 +0000 -Subject: [PATCH 487/889] bcm2711: Remove old GIC interrupt +Subject: [PATCH 486/941] bcm2711: Remove old GIC interrupt Now handled through aon_intr @@ -206277,7 +206179,7 @@ Signed-off-by: Dom Cobley 1 file changed, 2 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 271e6ff814df..a4cd27fced4e 100644 +index c6d789394345..98a6cb9d1bd9 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -362,7 +362,6 @@ @@ -206303,7 +206205,7 @@ index 271e6ff814df..a4cd27fced4e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 8 Feb 2021 11:48:35 +0000 -Subject: [PATCH 488/889] staging:bcm2835-camera: Fix the cherry-pick of AWB +Subject: [PATCH 487/941] staging:bcm2835-camera: Fix the cherry-pick of AWB Greyworld The cherry-pick of the patch that added the greyworld AWB mode @@ -206337,7 +206239,7 @@ index a7af25f90449..f73daa38fa66 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Knell Date: Mon, 8 Feb 2021 03:33:30 +0000 -Subject: [PATCH 489/889] Overlays for PiFi-Mini amp +Subject: [PATCH 488/941] Overlays for PiFi-Mini amp Signed-off-by: David Knell --- @@ -206431,7 +206333,7 @@ index 000000000000..963597d611b5 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Knell Date: Mon, 8 Feb 2021 03:35:15 +0000 -Subject: [PATCH 490/889] Added PiFi-Mini to rpi-simple-soundcard.c +Subject: [PATCH 489/941] Added PiFi-Mini to rpi-simple-soundcard.c Signed-off-by: David Knell --- @@ -206581,7 +206483,7 @@ index bf61a4239073..c25351e6ee90 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 12 Jan 2021 13:55:39 +0000 -Subject: [PATCH 491/889] bcm2835-isp: Allow formats with different colour +Subject: [PATCH 490/941] bcm2835-isp: Allow formats with different colour spaces. Each supported format now includes a mask showing the allowed colour @@ -207301,7 +207203,7 @@ index 4d24aec7203d..5cca8bdd1d65 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Mon, 1 Feb 2021 16:53:46 +0100 -Subject: [PATCH 492/889] Hifiberry DAC+ADC Pro fix for the PLL when changing +Subject: [PATCH 491/941] Hifiberry DAC+ADC Pro fix for the PLL when changing sample rates Adds 2 msecs delay when switching between oscillators to allow @@ -207363,7 +207265,7 @@ index 4c03927107e3..8b04d30bcbee 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mathias Anhalt Date: Sun, 24 Jan 2021 15:15:01 +0100 -Subject: [PATCH 493/889] Fixed picture line bug in all ov9281 modes +Subject: [PATCH 492/941] Fixed picture line bug in all ov9281 modes Signed-off-by: Mathias Anhalt --- @@ -207407,7 +207309,7 @@ index 12621c2dccd5..c646f11ef1d5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mathias Anhalt Date: Wed, 3 Feb 2021 20:34:09 +0100 -Subject: [PATCH 494/889] Added hflip and vflip controls to ov9281 +Subject: [PATCH 493/941] Added hflip and vflip controls to ov9281 Signed-off-by: Mathias Anhalt --- @@ -207525,7 +207427,7 @@ index c646f11ef1d5..16777b6f8e14 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 12 Feb 2021 17:45:57 +0000 -Subject: [PATCH 495/889] Partial revert "bcm2711: Disable bsc_intr and +Subject: [PATCH 494/941] Partial revert "bcm2711: Disable bsc_intr and aon_intr by default and enable in overlay" This reverts commit c765fd45856a34b9e46daa9263faeafe006c3985. @@ -207539,7 +207441,7 @@ Signed-off-by: Dave Stevenson 2 files changed, 8 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index a4cd27fced4e..7661afa8ef52 100644 +index 98a6cb9d1bd9..8adb8f3dd68d 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -314,7 +314,6 @@ @@ -207575,7 +207477,7 @@ index 8e9220f303f0..6a11260a4f1a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 12 Feb 2021 17:49:25 +0000 -Subject: [PATCH 496/889] Revert "ARM: dts: bcm2711: Add the BSC interrupt +Subject: [PATCH 495/941] Revert "ARM: dts: bcm2711: Add the BSC interrupt controller" This reverts commit 93a3b097c467bd5efc1ae3a271c336fdad3b2108. @@ -207594,7 +207496,7 @@ Signed-off-by: Dave Stevenson 1 file changed, 12 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 7661afa8ef52..ffd5fed3c4ed 100644 +index 8adb8f3dd68d..9b7b10b7a452 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -308,14 +308,6 @@ @@ -207637,7 +207539,7 @@ index 7661afa8ef52..ffd5fed3c4ed 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 15 Feb 2021 10:25:35 +0000 -Subject: [PATCH 497/889] gpio-fsm: Rename 'num-soft-gpios' to avoid warning +Subject: [PATCH 496/941] gpio-fsm: Rename 'num-soft-gpios' to avoid warning As of 5.10, the Device Tree parser warns about properties that look like references to "suppliers" of various services. "num-soft-gpios" @@ -207675,7 +207577,7 @@ index 2cab50e51315..708f258fda35 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 15 Feb 2021 10:32:18 +0000 -Subject: [PATCH 498/889] overlays: Rename gpio-fsm property num-soft-gpios +Subject: [PATCH 497/941] overlays: Rename gpio-fsm property num-soft-gpios The gpio-fsm property "num-soft-gpios" triggers a kernel DT checker that warns about the lack of #gpio-cells on a random node with the @@ -207721,7 +207623,7 @@ index afc9f034b5fc..3c997266a67d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laurentiu Palcu Date: Wed, 27 Nov 2019 14:42:35 +0000 -Subject: [PATCH 499/889] drm: fix HDR static metadata type field numbering +Subject: [PATCH 498/941] drm: fix HDR static metadata type field numbering According to CTA-861 specification, HDR static metadata data block allows a sink to indicate which HDR metadata types it supports by setting the SM_0 to @@ -207758,7 +207660,7 @@ index 9850d59d6f1c..c8ec982ff498 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 2 Dec 2020 18:36:24 +0000 -Subject: [PATCH 500/889] drm/vc4: Add HDR metadata property to the VC5 HDMI +Subject: [PATCH 499/941] drm/vc4: Add HDR metadata property to the VC5 HDMI connectors Now that we can export deeper colour depths, add in the signalling @@ -207865,7 +207767,7 @@ index cb2af9f144df..33b5f120bbeb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 5 Feb 2021 14:07:12 +0000 -Subject: [PATCH 501/889] drm/vc4: Add connector check to trigger mode_change +Subject: [PATCH 500/941] drm/vc4: Add connector check to trigger mode_change when hdr metadata changes Signed-off-by: Dom Cobley @@ -207938,7 +207840,7 @@ index afe9308311af..f288a052c40c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Mon, 8 Feb 2021 16:01:37 +0000 -Subject: [PATCH 502/889] staging: rpivid: Fix crash when CMA alloc fails +Subject: [PATCH 501/941] staging: rpivid: Fix crash when CMA alloc fails If realloc to increase coeff size fails then attempt to re-allocate the original size. If that also fails then flag a fatal error to abort @@ -208064,7 +207966,7 @@ index fc3caed58187..e6b07920aa8c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 4 Feb 2021 14:23:58 +0000 -Subject: [PATCH 503/889] dt: Add option for dpi without DE and PCLK (for +Subject: [PATCH 502/941] dt: Add option for dpi without DE and PCLK (for VGA666) VGA666 doesn't use the DE or PCLK signals, therefore there is @@ -208100,7 +208002,7 @@ index e657affae46f..12c7b0b2bb5f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 4 Feb 2021 14:50:59 +0000 -Subject: [PATCH 504/889] defconfigs: Add DRM_DISPLAY_CONNECTOR and +Subject: [PATCH 503/941] defconfigs: Add DRM_DISPLAY_CONNECTOR and DRM_SIMPLE_BRIDGE for VGA666 VGA666 uses "vga-connector" from DRM_DISPLAY_CONNECTOR, and @@ -208188,7 +208090,7 @@ index aa89eb5704cb..f0a791a03abd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 4 Feb 2021 14:41:10 +0000 -Subject: [PATCH 505/889] dtoverlays: Add an overlay for the VGA666 when used +Subject: [PATCH 504/941] dtoverlays: Add an overlay for the VGA666 when used with vc4-kms-v3d Includes optional use of GPIOs 0&1 / BSC0 for DDC to read the EDID @@ -208352,7 +208254,7 @@ index 000000000000..6e787099e861 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 12 Feb 2021 17:31:37 +0000 -Subject: [PATCH 506/889] drm/vc4: Change the default DPI format to being +Subject: [PATCH 505/941] 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 @@ -208392,7 +208294,7 @@ index a90f2545baee..db63f4e11b17 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sat, 17 Oct 2020 15:42:54 +0100 -Subject: [PATCH 507/889] gpio-fsm: Show state info in /sys/class/gpio-fsm +Subject: [PATCH 506/941] gpio-fsm: Show state info in /sys/class/gpio-fsm Add gpio-fsm sysfs entries under /sys/class/gpio-fsm. For each state machine show the current state, which state (if any) will be entered @@ -208582,7 +208484,7 @@ index 708f258fda35..d71a81d9b669 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 17 Feb 2021 09:21:30 +0000 -Subject: [PATCH 508/889] gpio-fsm: Fix shutdown timeout handling +Subject: [PATCH 507/941] gpio-fsm: Fix shutdown timeout handling The driver is intended to jump directly to a shutdown state in the event of a timeout during shutdown, but the sense of the test was @@ -208614,7 +208516,7 @@ index d71a81d9b669..306f5123546c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 17 Feb 2021 09:29:26 +0000 -Subject: [PATCH 509/889] overlays: fsm-demo: Ensure all LEDs are turned off +Subject: [PATCH 508/941] overlays: fsm-demo: Ensure all LEDs are turned off If the shutdown process is delayed enough to trigger the shutdown timeout then one or more states in the shutdown sequence might be @@ -208646,7 +208548,7 @@ index 9b5da179914f..e9944f5cd258 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 17 Feb 2021 09:52:27 +0000 -Subject: [PATCH 510/889] configs: Add various missing IPV6 modules +Subject: [PATCH 509/941] configs: Add various missing IPV6 modules See: https://github.com/raspberrypi/linux/issues/4144 @@ -208881,7 +208783,7 @@ index f0a791a03abd..60bda75b6965 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 10 Feb 2021 10:18:53 +0000 -Subject: [PATCH 511/889] media: i2c: imx477: Remove auto frame length +Subject: [PATCH 510/941] media: i2c: imx477: Remove auto frame length adjusting The V4L2_CID_EXPOSURE_AUTO_PRIORITY was used to let the sensor control @@ -209029,7 +208931,7 @@ index f68e7718b09c..30055244166b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Wed, 10 Feb 2021 10:50:32 +0000 -Subject: [PATCH 512/889] media: i2c: imx477: Add very long exposure control to +Subject: [PATCH 511/941] media: i2c: imx477: Add very long exposure control to the driver Add support for very long exposures by using the exposure multiplier @@ -209161,7 +209063,7 @@ index 30055244166b..0143e3129258 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 17 Feb 2021 18:08:12 +0000 -Subject: [PATCH 513/889] media: i2c: imx290: Fix up exposure calcuations and +Subject: [PATCH 512/941] media: i2c: imx290: Fix up exposure calcuations and ranges Should now correspond exactly to the datasheet. @@ -209226,7 +209128,7 @@ index 33ce80686163..43e2f294a53b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 18 Feb 2021 11:58:29 +0000 -Subject: [PATCH 514/889] media: i2c: imx290: Handle exposure correctly when +Subject: [PATCH 513/941] media: i2c: imx290: Handle exposure correctly when vblank changes When vblank changes we must modify the exposure range. Also, with this @@ -209274,7 +209176,7 @@ index 43e2f294a53b..255f66985306 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: pifi-bz <73530753+pifi-bz@users.noreply.github.com> Date: Fri, 19 Feb 2021 13:14:32 +0200 -Subject: [PATCH 515/889] DAC overlays (#4154) +Subject: [PATCH 514/941] DAC overlays (#4154) Adding overlays for PiFi DAC Zero and PiFi DAC HD. @@ -209441,7 +209343,7 @@ index 000000000000..645ea74cb435 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Peter Harper Date: Mon, 22 Feb 2021 12:34:20 +0000 -Subject: [PATCH 516/889] configs: Change CONFIG_BLK_DEV_NVME=y for 2711 +Subject: [PATCH 515/941] configs: Change CONFIG_BLK_DEV_NVME=y for 2711 See https://github.com/raspberrypi/linux/issues/4163 --- @@ -209482,7 +209384,7 @@ index b5dce7480cff..8a643571a458 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 18 Feb 2021 15:05:57 +0000 -Subject: [PATCH 517/889] media: i2c: imx477: Fix crop height for 2028x1080 +Subject: [PATCH 516/941] media: i2c: imx477: Fix crop height for 2028x1080 mode The crop height for this mode was set at 2600 lines, it should be 2160 @@ -209513,7 +209415,7 @@ index 0143e3129258..e3d164555b09 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Thu, 18 Feb 2021 15:23:11 +0000 -Subject: [PATCH 518/889] media: i2c: imx477: Replace existing 1012x760 mode +Subject: [PATCH 517/941] media: i2c: imx477: Replace existing 1012x760 mode The existing 1012x760 120 fps mode has significant IQ problem using the internal sensor scaler. Replace this mode with a 1332x990 120 fps @@ -209716,7 +209618,7 @@ index e3d164555b09..0c552b9d54c5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 19 Feb 2021 10:30:49 +0000 -Subject: [PATCH 519/889] media: i2c: imx477: Remove internal +Subject: [PATCH 518/941] media: i2c: imx477: Remove internal v4l2_mbus_framefmt from the state The only field in this struct that is used is the format code, so @@ -209792,7 +209694,7 @@ index 0c552b9d54c5..f43c86407d97 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 19 Feb 2021 11:06:40 +0000 -Subject: [PATCH 520/889] media: i2c: imx477: Remove unused function parameter +Subject: [PATCH 519/941] media: i2c: imx477: Remove unused function parameter The struct imx477 *ctrl parameter is not used in the function imx477_adjust_exposure_range(), so remove it. @@ -209832,7 +209734,7 @@ index f43c86407d97..34bfd22cadc6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 26 Feb 2021 14:19:00 +0000 -Subject: [PATCH 521/889] overlays: i2c-rtc: Add the Dallas DS1340 +Subject: [PATCH 520/941] overlays: i2c-rtc: Add the Dallas DS1340 See: https://github.com/raspberrypi/linux/issues/4180 @@ -209903,7 +209805,7 @@ index 759f532d5be1..408b71ec97b5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 26 Feb 2021 14:20:05 +0000 -Subject: [PATCH 522/889] overlays: Update the upstream overlay +Subject: [PATCH 521/941] overlays: Update the upstream overlay Signed-off-by: Phil Elwell --- @@ -209934,7 +209836,7 @@ index e0f7cc8ba9ea..f73a1879e690 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 5 Mar 2021 15:40:45 +0000 -Subject: [PATCH 523/889] media: bcm2835-unicam: Fix bug in buffer swapping +Subject: [PATCH 522/941] media: bcm2835-unicam: Fix bug in buffer swapping logic If multiple sets of interrupts occur simultaneously, it may be unsafe @@ -210016,7 +209918,7 @@ index a8b3f5433f04..234f0eaf9c8c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 8 Mar 2021 15:32:25 +0000 -Subject: [PATCH 524/889] Assign crypto aliases to different AES implementation +Subject: [PATCH 523/941] Assign crypto aliases to different AES implementation modules The kernel modules aes-neon-blk and aes-neon-bs perform poorly, at least on @@ -210131,7 +210033,7 @@ index fb507d569922..cc52829d426a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 11 Mar 2021 16:11:46 +0000 -Subject: [PATCH 525/889] overlays: Improve the i2c-rtc,i2c_csi_dsi option +Subject: [PATCH 524/941] overlays: Improve the i2c-rtc,i2c_csi_dsi option The i2c_csi_dsi parameter of the i2c-rtc overlay (added for the CM4IO board) causes the RTC devices to be probed on the I2C0 bus appearing @@ -210187,7 +210089,7 @@ index 408b71ec97b5..b9842e11b5e0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 11 Mar 2021 16:59:05 +0000 -Subject: [PATCH 526/889] configs: Add CONFIG_RTS_HCTOSYS=y +Subject: [PATCH 525/941] configs: Add CONFIG_RTS_HCTOSYS=y The recently improved RTC_HCTOSYS option now works with RTC drivers in modules, making it much more useful in that it removes the need to run @@ -210271,7 +210173,7 @@ index 60bda75b6965..584e82f7de99 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 1 Feb 2021 18:48:47 +0000 -Subject: [PATCH 527/889] media/v4l2_m2m: In buffered mode run jobs if either +Subject: [PATCH 526/941] media/v4l2_m2m: In buffered mode run jobs if either port is streaming In order to get the intended behaviour of the stateful video @@ -210310,7 +210212,7 @@ index b221b4e438a1..87729a56dda0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 1 Feb 2021 18:55:37 +0000 -Subject: [PATCH 528/889] staging/bcm2835-codec: Correct logging of size_t to +Subject: [PATCH 527/941] staging/bcm2835-codec: Correct logging of size_t to %zu Fixes: "staging/bcm2835-codec: Log the number of excess supported formats" @@ -210350,7 +210252,7 @@ index 94691ab7175a..0c4d8bf77b91 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 2 Feb 2021 15:50:18 +0000 -Subject: [PATCH 529/889] staging/bcm2835-codec: Add support for pixel aspect +Subject: [PATCH 528/941] staging/bcm2835-codec: Add support for pixel aspect ratio If the format is detected by the driver and a V4L2_EVENT_SOURCE_CHANGE @@ -210438,7 +210340,7 @@ index 0c4d8bf77b91..46f659e55f18 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 2 Feb 2021 16:46:39 +0000 -Subject: [PATCH 530/889] staging/bcm2835-codec: Implement additional +Subject: [PATCH 529/941] staging/bcm2835-codec: Implement additional g_selection calls for decode v4l_cropcap calls our vidioc_g_pixelaspect function to get the pixel @@ -210479,7 +210381,7 @@ index 46f659e55f18..7aa6c53e279e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 10 Mar 2021 19:07:48 +0000 -Subject: [PATCH 531/889] staging/bcm2835-codec: Add VC-1 support. +Subject: [PATCH 530/941] staging/bcm2835-codec: Add VC-1 support. Providing the relevant licence has been purchased, then Pi0-3 can decode VC-1. @@ -210514,7 +210416,7 @@ index 7aa6c53e279e..5729a8a7d94e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Sun, 24 Jan 2021 15:44:10 +0000 -Subject: [PATCH 532/889] vc4/drm: Avoid full hdmi audio fifo writes +Subject: [PATCH 531/941] vc4/drm: Avoid full hdmi audio fifo writes We are getting occasional VC4_HD_MAI_CTL_ERRORF in HDMI_MAI_CTL which seem to correspond with audio dropouts. @@ -210552,7 +210454,7 @@ index f288a052c40c..e10bad628681 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 12 Mar 2021 11:26:29 +0000 -Subject: [PATCH 533/889] vc4/drm: Increase hdmi audio axi priority to avoid +Subject: [PATCH 532/941] vc4/drm: Increase hdmi audio axi priority to avoid lost samples With HBR audio (8 channel 192kHz) we get occasional VC4_HD_MAI_CTL_DLATE error flags in @@ -210594,7 +210496,7 @@ index 8053ef54acc8..20581ee97827 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Assaf Gordon Date: Fri, 12 Mar 2021 00:13:07 -0700 -Subject: [PATCH 534/889] overlays: gpio-led: new overlay +Subject: [PATCH 533/941] overlays: gpio-led: new overlay Add generic connection between the kernel's LED framework and RPI's GPIO pins. @@ -210796,7 +210698,7 @@ index 000000000000..d8e9d53f1b61 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Mon, 15 Mar 2021 17:25:02 +0100 -Subject: [PATCH 535/889] overlays: Add pcie-32bit-dma overlay +Subject: [PATCH 534/941] overlays: Add pcie-32bit-dma overlay In order to accommodate full PCI DMA access to memory on newer BCM2711 revisions, we're forced to map PCIe's view of physical memory with an @@ -210895,7 +210797,7 @@ index 000000000000..cca3e83721b7 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 22 Mar 2021 09:27:16 +0000 -Subject: [PATCH 536/889] ARM: dts: bcm2711: Add aliases for additional SPIs +Subject: [PATCH 535/941] ARM: dts: bcm2711: Add aliases for additional SPIs Without aliases for the new SPI interfaces in BCM2711, spidev instances will be allocated sequential numbers that may not match the number of @@ -210909,10 +210811,10 @@ Signed-off-by: Phil Elwell 3 files changed, 12 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index b8339a629fb9..bc2f231f3568 100644 +index 784f47078c05..a2ef72331135 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -354,6 +354,10 @@ +@@ -355,6 +355,10 @@ i2c4 = &i2c4; i2c5 = &i2c5; i2c6 = &i2c6; @@ -210960,7 +210862,7 @@ index 9ab2feb4424f..9a999405ab85 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: ProBackup-nl <515451+ProBackup-nl@users.noreply.github.com> Date: Thu, 18 Mar 2021 18:21:43 +0100 -Subject: [PATCH 537/889] Make rpi poe fan less noisy in cool environments +Subject: [PATCH 536/941] Make rpi poe fan less noisy in cool environments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -210990,7 +210892,7 @@ index 544038b614e1..af812132a8f7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 22 Mar 2021 19:43:48 +0000 -Subject: [PATCH 538/889] vc4/drm: Fix source offsets with DRM_FORMAT_P030 +Subject: [PATCH 537/941] vc4/drm: Fix source offsets with DRM_FORMAT_P030 Spec says: bits [31:4] of the given address should point to the 128-bit word containing the desired starting pixel, @@ -211067,7 +210969,7 @@ index 3d33fe3dacea..4198eb81e62d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 15 Mar 2021 13:28:06 +0000 -Subject: [PATCH 539/889] vc4/drm: vc4_plane: Remove subpixel positioning check +Subject: [PATCH 538/941] vc4/drm: vc4_plane: Remove subpixel positioning check There is little harm in ignoring fractional coordinates (they just get truncated). @@ -211135,7 +211037,7 @@ index 4198eb81e62d..5a268ac6d6fc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 22 Feb 2021 18:47:19 +0000 -Subject: [PATCH 540/889] clk-raspberrypi: Also support HEVC clock +Subject: [PATCH 539/941] clk-raspberrypi: Also support HEVC clock Signed-off-by: Dom Cobley --- @@ -211161,7 +211063,7 @@ index f4884a5b598a..94ce38a2d5aa 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 22 Feb 2021 18:47:43 +0000 -Subject: [PATCH 541/889] dt: Switch hevc clock from fixed to firmware driver +Subject: [PATCH 540/941] dt: Switch hevc clock from fixed to firmware driver Signed-off-by: Dom Cobley --- @@ -211204,7 +211106,7 @@ index 0a611b31b9d4..bdd1c0e5a915 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 22 Feb 2021 18:50:50 +0000 -Subject: [PATCH 542/889] rpivid: Request maximum hevc clock +Subject: [PATCH 541/941] rpivid: Request maximum hevc clock Query maximum and minimum clock from driver and use those @@ -211261,7 +211163,7 @@ index 3b9e51ca05b3..b377c17dfb21 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 17 Mar 2021 12:34:57 +0000 -Subject: [PATCH 543/889] staging/bcm2835-camera: Add support for DMABUFs +Subject: [PATCH 542/941] staging/bcm2835-camera: Add support for DMABUFs DMABUFs are all handled by videobuf2, so there is no reason not to enable support for them. @@ -211304,7 +211206,7 @@ index e0a96dbb843d..7bee6e1bc69a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 19 Feb 2021 10:25:01 +0000 -Subject: [PATCH 544/889] staging: fbtft: Add minipitft13 variant +Subject: [PATCH 543/941] 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 @@ -211415,7 +211317,7 @@ index 3a280cc1892c..af4e975e7b30 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 18 Feb 2021 21:05:44 +0000 -Subject: [PATCH 545/889] overlays: Add minipitft13 overlay +Subject: [PATCH 544/941] overlays: Add minipitft13 overlay minipitft13 is an overlay for the Adafruit 1.3" 240x240 display (code 4484). @@ -211524,7 +211426,7 @@ index 000000000000..b1a0a2a41f72 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 3 Mar 2021 10:31:13 +0000 -Subject: [PATCH 546/889] overlays: ghost-amp: Minor tweaks +Subject: [PATCH 545/941] overlays: ghost-amp: Minor tweaks 1. Reduce the delay between RELAY1 and RELAY2 to 1000ms. 2. Rename the states to simplify LED control by an external script. @@ -211602,7 +211504,7 @@ index 3c997266a67d..f051dfb0879f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 29 Mar 2021 12:05:06 +0100 -Subject: [PATCH 547/889] overlays: Add README entry for minipitft13 +Subject: [PATCH 546/941] overlays: Add README entry for minipitft13 Signed-off-by: Phil Elwell --- @@ -211638,7 +211540,7 @@ index d8a9ba5e9955..a5f1913d0367 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 31 Mar 2021 10:22:30 +0100 -Subject: [PATCH 548/889] ARM: dts: update bcm2711-rpi-cm4.dts and -400 +Subject: [PATCH 547/941] ARM: dts: update bcm2711-rpi-cm4.dts and -400 Neither CM4 nor Pi 400 have appeared upstream yet, and as a result they have missed out on improvements to the Pi 4B platform. @@ -211851,7 +211753,7 @@ index 9a999405ab85..a39e5c216e63 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 31 Mar 2021 18:12:55 +0100 -Subject: [PATCH 549/889] vc4/drm: SQUASH: Fix source offsets with +Subject: [PATCH 548/941] vc4/drm: SQUASH: Fix source offsets with DRM_FORMAT_P030 x_off should only be within current stripe @@ -211887,7 +211789,7 @@ index 5a268ac6d6fc..dc3581470261 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jo Henke <37883863+jo-he@users.noreply.github.com> Date: Tue, 6 Apr 2021 11:21:35 +0000 -Subject: [PATCH 550/889] dwc-otg: fix clang -Wignored-attributes warning +Subject: [PATCH 549/941] dwc-otg: fix clang -Wignored-attributes warning warning: attribute declaration must precede definition --- @@ -211929,7 +211831,7 @@ index 537cc237b4bc..86b4aaf977fb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jo Henke <37883863+jo-he@users.noreply.github.com> Date: Tue, 6 Apr 2021 11:38:28 +0000 -Subject: [PATCH 551/889] dwc-otg: fix clang -Wsometimes-uninitialized warning +Subject: [PATCH 550/941] dwc-otg: fix clang -Wsometimes-uninitialized warning warning: variable 'retval' is used uninitialized whenever 'if' condition is false --- @@ -211956,7 +211858,7 @@ index 799ab14b9eda..e1c1e3804095 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jo Henke <37883863+jo-he@users.noreply.github.com> Date: Tue, 6 Apr 2021 11:45:14 +0000 -Subject: [PATCH 552/889] dwc-otg: fix clang -Wpointer-bool-conversion warning +Subject: [PATCH 551/941] dwc-otg: fix clang -Wpointer-bool-conversion warning warning: address of array 'desc->wMaxPacketSize' will always evaluate to 'true' @@ -211986,7 +211888,7 @@ index 9dabbe5c9791..2ffd4f11d0bf 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: paul-1 <6473457+paul-1@users.noreply.github.com> Date: Fri, 2 Apr 2021 10:56:19 -0400 -Subject: [PATCH 553/889] Update Allo Piano Dac Driver +Subject: [PATCH 552/941] Update Allo Piano Dac Driver Add unique names to the individual dac coded drivers Remove some of the codec controls that are not used. @@ -212269,7 +212171,7 @@ index 0e04c4739858..fd0fe58421b0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 19 Mar 2021 11:21:41 +0100 -Subject: [PATCH 554/889] drm/connector: Create a helper to attach the +Subject: [PATCH 553/941] drm/connector: Create a helper to attach the hdr_output_metadata property All the drivers that implement HDR output call pretty much the same @@ -212382,7 +212284,7 @@ index 928136556174..7954234b7fdc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 19 Mar 2021 13:05:53 +0100 -Subject: [PATCH 555/889] drm/connector: Add helper to compare HDR metadata +Subject: [PATCH 554/941] drm/connector: Add helper to compare HDR metadata All the drivers that support the HDR metadata property have a similar function to compare the metadata from one connector state to the next, @@ -212564,7 +212466,7 @@ index 7954234b7fdc..ca94c7ae20eb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 9 Apr 2021 17:31:55 +0200 -Subject: [PATCH 556/889] drm/vc4: Use the new helpers +Subject: [PATCH 555/941] drm/vc4: Use the new helpers We just introduced new helpers, so let's use them. @@ -212632,7 +212534,7 @@ index e10bad628681..505e1466b3d4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 9 Apr 2021 17:07:32 +0200 -Subject: [PATCH 557/889] drm/connector: Add a helper to attach the colorspace +Subject: [PATCH 556/941] drm/connector: Add a helper to attach the colorspace property The intel driver uses the same logic to attach the Colorspace property @@ -212708,7 +212610,7 @@ index ca94c7ae20eb..42cbacd1acb5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 9 Apr 2021 17:16:42 +0200 -Subject: [PATCH 558/889] drm/vc4: hdmi: Signal the proper colorimetry info in +Subject: [PATCH 557/941] drm/vc4: hdmi: Signal the proper colorimetry info in the infoframe Our driver while supporting HDR didn't send the proper colorimetry info @@ -212764,7 +212666,7 @@ index 505e1466b3d4..21bb87217653 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 4 Nov 2020 18:54:20 +0000 -Subject: [PATCH 559/889] staging: vcsm-cma: Fix memory leak from not detaching +Subject: [PATCH 558/941] staging: vcsm-cma: Fix memory leak from not detaching dmabuf When importing there was a missing call to detach the buffer, @@ -212847,7 +212749,7 @@ index 40ce67f06fac..88c4df822922 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 12 Apr 2021 17:27:43 +0100 -Subject: [PATCH 560/889] vc4/kms: vc4_plane: Support 2020 colourspace for yuv +Subject: [PATCH 559/941] vc4/kms: vc4_plane: Support 2020 colourspace for yuv planes https://gist.github.com/popcornmix/6b3e23103c60170b02b148e0ba5d6ed7 @@ -212960,7 +212862,7 @@ index 78fd28599aeb..7538b84a6dca 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Thu, 15 Apr 2021 13:15:14 +0100 -Subject: [PATCH 561/889] sound/usb: add device quirks for A4Tech FHD 1080p +Subject: [PATCH 560/941] sound/usb: add device quirks for A4Tech FHD 1080p webcams These devices use a type of Sonix chipset that produces broken microphone @@ -212975,7 +212877,7 @@ Signed-off-by: Jonathan Bell 2 files changed, 10 insertions(+) diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h -index 5728bf722c88..18e5cec82bc2 100644 +index 949c6d129f2a..af8814f2830a 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -46,6 +46,15 @@ @@ -213013,7 +212915,7 @@ index a45b27a2ed4e..0a36f70d6912 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Fri, 16 Apr 2021 11:40:23 +0100 -Subject: [PATCH 562/889] sound/usb: call usb_autopm_get_interface() for +Subject: [PATCH 561/941] sound/usb: call usb_autopm_get_interface() for devices that should not be suspended Webcams with microphones are composite devices, and autosuspend is set @@ -213052,7 +212954,7 @@ index 0a36f70d6912..12fb94a7b753 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 16 Apr 2021 09:31:17 +0100 -Subject: [PATCH 563/889] overlays: ghost-amp: Add DAC mute control +Subject: [PATCH 562/941] overlays: ghost-amp: Add DAC mute control Signed-off-by: Phil Elwell --- @@ -213144,7 +213046,7 @@ index f051dfb0879f..dbedb4b76c74 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 13 Apr 2021 11:00:01 +0200 -Subject: [PATCH 564/889] clk: Introduce a clock request API +Subject: [PATCH 563/941] clk: Introduce a clock request API It's not unusual to find clocks being shared across multiple devices that need to change the rate depending on what the device is doing at a @@ -213436,7 +213338,7 @@ index 7fd6a1febcf4..ab53a0873c8d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 13 Apr 2021 11:55:55 +0200 -Subject: [PATCH 565/889] drm/vc4: hdmi: Convert to the new clock request API +Subject: [PATCH 564/941] drm/vc4: hdmi: Convert to the new clock request API The new clock request API allows us to increase the rate of the HSM clock to match our pixel rate requirements while decreasing it when @@ -213520,7 +213422,7 @@ index 33b5f120bbeb..11a4b737d0ab 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 13 Apr 2021 14:10:03 +0100 -Subject: [PATCH 566/889] drm/vc4: hdmi: Convert to the new clock request API +Subject: [PATCH 565/941] drm/vc4: hdmi: Convert to the new clock request API The new clock request API allows us to increase the rate of the core clock as required during mode set while decreasing it when @@ -213568,7 +213470,7 @@ index 5d0974cdeaaa..48e3dc11c493 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 13 Apr 2021 16:48:35 +0100 -Subject: [PATCH 567/889] bcm2835-unicam: Switch to new clock api +Subject: [PATCH 566/941] bcm2835-unicam: Switch to new clock api Signed-off-by: Dom Cobley --- @@ -213627,7 +213529,7 @@ index 234f0eaf9c8c..0d737e0c7f52 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 19 Apr 2021 19:30:26 +0100 -Subject: [PATCH 568/889] rpivid: Switch to new clock api +Subject: [PATCH 567/941] rpivid: Switch to new clock api Signed-off-by: Dom Cobley --- @@ -213689,7 +213591,7 @@ index b377c17dfb21..def891a86e55 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Mon, 2 Nov 2020 11:45:04 +0000 -Subject: [PATCH 569/889] net: usb: r8152: Provide missing documentation for +Subject: [PATCH 568/941] net: usb: r8152: Provide missing documentation for some struct members commit 34e653efb602e0651867fb5ab14369b555a61dcd upstream. @@ -213767,7 +213669,7 @@ index 0bb5b1c78654..c941ac428218 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Mon, 2 Nov 2020 11:45:09 +0000 -Subject: [PATCH 570/889] net: usb: r8152: Fix a couple of spelling errors in +Subject: [PATCH 569/941] net: usb: r8152: Fix a couple of spelling errors in fw_phy_nc's docs commit 9f07814d01ad085b2d9f1d55b4ce532fb2c27110 upstream. @@ -213807,7 +213709,7 @@ index c941ac428218..717b176f4c0b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Wed, 4 Nov 2020 10:19:22 +0800 -Subject: [PATCH 571/889] net/usb/r8153_ecm: support ECM mode for RTL8153 +Subject: [PATCH 570/941] net/usb/r8153_ecm: support ECM mode for RTL8153 commit c1aedf015ebdd0232757a66e2daccf1246bd609c upstream. @@ -214141,7 +214043,7 @@ index 000000000000..20d88b1defc3 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Emil Renner Berthing Date: Sun, 31 Jan 2021 00:47:29 +0100 -Subject: [PATCH 572/889] net: usb: r8152: use new tasklet API +Subject: [PATCH 571/941] net: usb: r8152: use new tasklet API commit f3163f1cb87141c7a41a15a5d4c98b353f807b04 upstream. @@ -214188,7 +214090,7 @@ index cf3d2041104d..cec110d9eb98 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Wed, 3 Feb 2021 17:14:28 +0800 -Subject: [PATCH 573/889] r8152: replace several functions about phy patch +Subject: [PATCH 572/941] r8152: replace several functions about phy patch request commit a08c0d309d8c078d22717d815cf9853f6f2c07bd upstream. @@ -214392,7 +214294,7 @@ index cec110d9eb98..1ce4c6bc4cb5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Wed, 3 Feb 2021 17:14:29 +0800 -Subject: [PATCH 574/889] r8152: adjust the flow of power cut for RTL8153B +Subject: [PATCH 573/941] r8152: adjust the flow of power cut for RTL8153B commit 80fd850b31f09263ad175b2f640d5c5c6f76ed41 upstream. @@ -214532,7 +214434,7 @@ index 1ce4c6bc4cb5..0dc972dfe8ad 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 19 Feb 2021 17:04:40 +0800 -Subject: [PATCH 575/889] r8152: enable U1/U2 for USB_SPEED_SUPER +Subject: [PATCH 574/941] r8152: enable U1/U2 for USB_SPEED_SUPER commit 7a0ae61acde2cebd69665837170405eced86a6c7 upstream. @@ -214585,7 +214487,7 @@ index 0dc972dfe8ad..2a4fb3b1b0af 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 19 Feb 2021 17:04:41 +0800 -Subject: [PATCH 576/889] r8152: check if the pointer of the function exists +Subject: [PATCH 575/941] r8152: check if the pointer of the function exists commit c79515e47935c747282c6ed2ee5b2ef039756eeb upstream. @@ -214642,7 +214544,7 @@ index 2a4fb3b1b0af..93082c7d4c31 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 19 Feb 2021 17:04:42 +0800 -Subject: [PATCH 577/889] r8152: replace netif_err with dev_err +Subject: [PATCH 576/941] r8152: replace netif_err with dev_err commit 156c3207611262266f0eea589ac3f00c5657320e upstream. @@ -214684,7 +214586,7 @@ index 93082c7d4c31..df40fe6e01e2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 19 Feb 2021 17:04:43 +0800 -Subject: [PATCH 578/889] r8152: spilt rtl_set_eee_plus and r8153b_green_en +Subject: [PATCH 577/941] r8152: spilt rtl_set_eee_plus and r8153b_green_en commit 40fa7568ac230446d888b7ad402cff9e20fe3ad5 upstream. @@ -214779,7 +214681,7 @@ index df40fe6e01e2..2fb707985596 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 16 Apr 2021 16:04:32 +0800 -Subject: [PATCH 579/889] r8152: set inter fram gap time depending on speed +Subject: [PATCH 578/941] r8152: set inter fram gap time depending on speed commit 5133bcc7481528e36fff0a3b056601efb704fb32 upstream. @@ -214860,7 +214762,7 @@ index 2fb707985596..cb6357adbfcb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 16 Apr 2021 16:04:33 +0800 -Subject: [PATCH 580/889] r8152: adjust rtl8152_check_firmware function +Subject: [PATCH 579/941] r8152: adjust rtl8152_check_firmware function commit a8a7be178e81a3d4b6972cbeb0ccd091ca2f9f89 upstream. @@ -215018,7 +214920,7 @@ index cb6357adbfcb..6ebe6588100c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 16 Apr 2021 16:04:34 +0800 -Subject: [PATCH 581/889] r8152: add help function to change mtu +Subject: [PATCH 580/941] r8152: add help function to change mtu commit 67ce1a806f164e59a074fea8809725d3411eaa20 upstream. @@ -215181,7 +215083,7 @@ index 6ebe6588100c..c55afbce0f04 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 16 Apr 2021 16:04:35 +0800 -Subject: [PATCH 582/889] r8152: support new chips +Subject: [PATCH 581/941] r8152: support new chips commit 195aae321c829dd1945900d75561e6aa79cce208 upstream. @@ -218570,7 +218472,7 @@ index c55afbce0f04..48acc96caa40 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 16 Apr 2021 16:04:36 +0800 -Subject: [PATCH 583/889] r8152: support PHY firmware for RTL8156 series +Subject: [PATCH 582/941] r8152: support PHY firmware for RTL8156 series commit 4a51b0e8a0143b0e83d51d9c58c6416c3818a9f2 upstream. @@ -219267,7 +219169,7 @@ index 48acc96caa40..86ce16bc8791 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Fri, 16 Apr 2021 16:04:37 +0800 -Subject: [PATCH 584/889] r8152: search the configuration of vendor mode +Subject: [PATCH 583/941] r8152: search the configuration of vendor mode commit c2198943e33b100ed21dfb636c8fa6baef841e9d upstream. @@ -219352,7 +219254,7 @@ index 86ce16bc8791..45e251e907d9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 20 Apr 2021 13:34:18 +0100 -Subject: [PATCH 585/889] rpivid: Only clk_request_done once +Subject: [PATCH 584/941] rpivid: Only clk_request_done once Fixes: 25486f49bfe2e3ae13b90478d1eebd91413136ad Signed-off-by: Dom Cobley @@ -219384,7 +219286,7 @@ index def891a86e55..37c8f62649d6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: wangzx <593074943@qq.com> Date: Tue, 20 Apr 2021 22:33:26 +0800 -Subject: [PATCH 586/889] dwc_otg: fix an undeclared variable Replace an +Subject: [PATCH 585/941] dwc_otg: fix an undeclared variable Replace an undeclared variable used by DWC_DEBUGPL with the real endpoint address. DWC_DEBUGPL does nothing with DEBUG undefined so it did not go wrong before. Signed-off-by: Zixuan Wang @@ -219414,7 +219316,7 @@ index 50c8705185ad..2ee27450c6f6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 3 Dec 2020 14:25:36 +0100 -Subject: [PATCH 587/889] drm/vc4: drv: Remove the DSI pointer in vc4_drv +Subject: [PATCH 586/941] drm/vc4: drv: Remove the DSI pointer in vc4_drv Commit 51f4fcd9c4ea867c3b4fe58111f342ad0e80642a upstream. @@ -219488,7 +219390,7 @@ index 2646a6dbf584..8c413d21f752 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 3 Dec 2020 14:25:38 +0100 -Subject: [PATCH 588/889] drm/vc4: dsi: Use snprintf for the PHY clocks instead +Subject: [PATCH 587/941] drm/vc4: dsi: Use snprintf for the PHY clocks instead of an array Commit dc0bf36401e891c853e0a25baeb4e0b4e6f3626d upstream. @@ -219560,7 +219462,7 @@ index 8c413d21f752..2727ad61989f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 3 Dec 2020 14:25:39 +0100 -Subject: [PATCH 589/889] drm/vc4: dsi: Introduce a variant structure +Subject: [PATCH 588/941] drm/vc4: dsi: Introduce a variant structure Commit d1d195ce26a14ec0a87816c09ae514e1c40e97f7 upstream. @@ -219757,7 +219659,7 @@ index 2727ad61989f..ea4cd8284454 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 3 Dec 2020 14:25:40 +0100 -Subject: [PATCH 590/889] drm/vc4: dsi: Add support for DSI0 +Subject: [PATCH 589/941] drm/vc4: dsi: Add support for DSI0 Commit 4b265fe11fad4234b12d92dd8091f9aa0c878eea upstream. @@ -219807,7 +219709,7 @@ index ea4cd8284454..c2ed98013f9d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 3 Dec 2020 14:25:42 +0100 -Subject: [PATCH 591/889] drm/vc4: dsi: Add configuration for BCM2711 DSI1 +Subject: [PATCH 590/941] drm/vc4: dsi: Add configuration for BCM2711 DSI1 Commit d0666be8ef9e8e65d4b7fabc1606ec51f61384c0 upstream. @@ -219866,7 +219768,7 @@ index c2ed98013f9d..6dfcbd9e234e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Feb 2021 18:37:04 +0000 -Subject: [PATCH 592/889] drm/vc4: Correct pixel order for DSI0 +Subject: [PATCH 591/941] drm/vc4: Correct pixel order for DSI0 For slightly unknown reasons, dsi0 takes a different pixel format to dsi1, and that has to be set in the pixel valve. @@ -219899,7 +219801,7 @@ index e02c8aabc8c7..1d1ae0d9e48f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 8 Feb 2021 11:22:01 +0000 -Subject: [PATCH 593/889] drm/vc4: Register dsi0 as the correct vc4 encoder +Subject: [PATCH 592/941] drm/vc4: Register dsi0 as the correct vc4 encoder type vc4_dsi was registering both dsi0 and dsi1 as VC4_ENCODER_TYPE_DSI1 @@ -219934,7 +219836,7 @@ index 6dfcbd9e234e..053930eaa48f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 10 Feb 2021 18:46:22 +0000 -Subject: [PATCH 594/889] drm/vc4: Fix dsi0 interrupt support. +Subject: [PATCH 593/941] drm/vc4: Fix dsi0 interrupt support. DSI0 seemingly had very little or no testing as a load of the register mappings were incorrect/missing, so host @@ -220128,7 +220030,7 @@ index 053930eaa48f..fb0efc67d31d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Apr 2021 16:18:16 +0100 -Subject: [PATCH 595/889] drm/vc4: Add correct stop condition to +Subject: [PATCH 594/941] drm/vc4: Add correct stop condition to vc4_dsi_encoder_disable iteration vc4_dsi_encoder_disable is partially an open coded version of @@ -220164,7 +220066,7 @@ index fb0efc67d31d..9861e2d2c05d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 7 Jan 2021 16:30:55 +0000 -Subject: [PATCH 596/889] drm/atomic: Don't fixup modes that haven't been reset +Subject: [PATCH 595/941] drm/atomic: Don't fixup modes that haven't been reset Signed-off-by: Dave Stevenson --- @@ -220194,7 +220096,7 @@ index 134d3000fb18..172144627c59 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Apr 2021 17:30:35 +0100 -Subject: [PATCH 597/889] drm/panel: jdi-lt070me05000: Use +Subject: [PATCH 596/941] drm/panel: jdi-lt070me05000: Use gpiod_set_value_cansleep There is no reason why the control GPIOs for the panel can not @@ -220267,7 +220169,7 @@ index 733010b5e4f5..7fb4d98e166d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Apr 2021 18:09:56 +0100 -Subject: [PATCH 598/889] defconfigs: Add PANEL_JDI_LT070ME05000 DSI panel +Subject: [PATCH 597/941] defconfigs: Add PANEL_JDI_LT070ME05000 DSI panel Used by the 2013 Nexus 7" tablet, and working via an adapter board on Compute Modules. @@ -220348,7 +220250,7 @@ index 584e82f7de99..ff857505902b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Apr 2021 16:46:34 +0100 -Subject: [PATCH 599/889] dtoverlays: Add overlays for JDI LT070ME05000 +Subject: [PATCH 598/941] dtoverlays: Add overlays for JDI LT070ME05000 1200x1920 DSI panel Credit to forum member gizmomouse on @@ -220578,7 +220480,7 @@ index 000000000000..5dcd0f2243e2 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 21 Apr 2021 12:14:44 +0200 -Subject: [PATCH 600/889] clk: requests: Ignore if the pointer is null +Subject: [PATCH 599/941] clk: requests: Ignore if the pointer is null Signed-off-by: Maxime Ripard --- @@ -220606,7 +220508,7 @@ index 031627757b11..af0f638d1769 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 25 Feb 2021 14:42:03 +0100 -Subject: [PATCH 601/889] drm/vc4: hvs: Make the HVS bind first +Subject: [PATCH 600/941] drm/vc4: hvs: Make the HVS bind first We'll need to have the HVS binding before the HDMI controllers so that we can check whether the firmware allows to run in 4kp60. Reorder a bit @@ -220653,7 +220555,7 @@ index 617c113b033f..3683780b9de8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 8 Oct 2020 16:06:08 +0200 -Subject: [PATCH 602/889] drm/vc4: hdmi: Properly compute the BVB clock rate +Subject: [PATCH 601/941] drm/vc4: hdmi: Properly compute the BVB clock rate The BVB clock rate computation doesn't take into account a mode clock of 594MHz that we're going to need to support 4k60. @@ -220714,7 +220616,7 @@ index 44913ca1a5e0..a83ee8427905 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 25 Feb 2021 15:35:02 +0100 -Subject: [PATCH 603/889] drm/vc4: hdmi: Check and warn if we can't reach 4kp60 +Subject: [PATCH 602/941] drm/vc4: hdmi: Check and warn if we can't reach 4kp60 frequencies In order to reach the frequencies needed to output at 594MHz, the @@ -220828,7 +220730,7 @@ index 11a4b737d0ab..23e8cfc22c4d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 8 Oct 2020 16:06:58 +0200 -Subject: [PATCH 604/889] drm/vc4: hdmi: Enable the scrambler +Subject: [PATCH 603/941] drm/vc4: hdmi: Enable the scrambler The HDMI controller on the BCM2711 includes a scrambler in order to reach the HDMI 2.0 modes that require it. Let's add the support for it. @@ -220978,7 +220880,7 @@ index 20a1438a72cb..a81fdf90f66b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 8 Oct 2020 16:08:06 +0200 -Subject: [PATCH 605/889] drm/vc4: hdmi: Raise the maximum clock rate +Subject: [PATCH 604/941] drm/vc4: hdmi: Raise the maximum clock rate Now that we have the infrastructure in place, we can raise the maximum pixel rate we can reach for HDMI0 on the BCM2711. @@ -221014,7 +220916,7 @@ index c561b537e5b6..24d3ad18ea6e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 21 Apr 2021 15:15:42 +0100 -Subject: [PATCH 606/889] vc4/drm: hdmi: Handle case when bvb clock is null +Subject: [PATCH 605/941] vc4/drm: hdmi: Handle case when bvb clock is null Pi2/3 have no bvb clock but want the other clocks to remain enabled here @@ -221064,7 +220966,7 @@ index 24d3ad18ea6e..f55e522f0236 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 19 Apr 2021 10:33:24 +0100 -Subject: [PATCH 607/889] overlays: spi-rtc: Add ds3232 and ds3234 +Subject: [PATCH 606/941] overlays: spi-rtc: Add ds3232 and ds3234 Extend the spi-rtc overlay to support the ds3232 and ds3234 RTCs, as well as adding parameters to select difference SPI controllers and @@ -221197,7 +221099,7 @@ index 9664afc9845c..51b7fec281c0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: kFYatek <4499762+kFYatek@users.noreply.github.com> Date: Sat, 27 Mar 2021 21:43:33 +0100 -Subject: [PATCH 608/889] drm/vc4: Fix VEC address for BCM2711 in the +Subject: [PATCH 607/941] drm/vc4: Fix VEC address for BCM2711 in the devicetrees The VEC has a different address (0x7ec13000) on the BCM2711 (used in @@ -221216,7 +221118,7 @@ Signed-off-by: Mateusz Kwiatkowski 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index ffd5fed3c4ed..23fb41c91c6b 100644 +index 9b7b10b7a452..36bc592b3d02 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -300,6 +300,14 @@ @@ -221279,7 +221181,7 @@ index 6d305b8b5ebe..06d04cde52b9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: kFYatek <4499762+kFYatek@users.noreply.github.com> Date: Sat, 27 Mar 2021 21:43:40 +0100 -Subject: [PATCH 609/889] drm/vc4: Separate VEC compatible variants +Subject: [PATCH 608/941] drm/vc4: Separate VEC compatible variants The VEC's DAC on BCM2711 is slightly different compared to the one on BCM283x and needs different configuration. In particular, bit 3 @@ -221313,7 +221215,7 @@ index d900cc57b4ec..4d8a6b615e5b 100644 reg: maxItems: 1 diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 23fb41c91c6b..2604ccfb6a6b 100644 +index 36bc592b3d02..2073a32a884b 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -301,7 +301,7 @@ @@ -221395,7 +221297,7 @@ index bd5b8eb58b18..a467ceba75e4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jeff Geerling Date: Thu, 1 Apr 2021 10:34:27 -0500 -Subject: [PATCH 610/889] configs: Enable ATA and AHCI for SATA drive support. +Subject: [PATCH 609/941] configs: Enable ATA and AHCI for SATA drive support. --- arch/arm/configs/bcm2711_defconfig | 3 +++ @@ -221437,7 +221339,7 @@ index 93159a7a2d9b..b90bcc5b6ef8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 22 Apr 2021 10:45:37 +0200 -Subject: [PATCH 611/889] clk: requests: Dereference the request pointer after +Subject: [PATCH 610/941] clk: requests: Dereference the request pointer after the check The current code will first dereference the req pointer and then test if @@ -221473,7 +221375,7 @@ index af0f638d1769..1b9a76c7dafa 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Mar 2021 18:28:40 +0000 -Subject: [PATCH 612/889] staging/bcm2835-codec: Fix support for levels 4.1 and +Subject: [PATCH 611/941] staging/bcm2835-codec: Fix support for levels 4.1 and 4.2 The driver said it supported H264 levels 4.1 and 4.2, but @@ -221515,7 +221417,7 @@ index 5729a8a7d94e..4622057e71cb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 4 Feb 2021 19:08:23 +0000 -Subject: [PATCH 613/889] staging/bcm2835-codec: Set the colourspace +Subject: [PATCH 612/941] staging/bcm2835-codec: Set the colourspace appropriately for RGB formats Video decode supports YUV and RGB formats. YUV needs to report SMPTE170M @@ -221605,7 +221507,7 @@ index 4622057e71cb..08429a42c847 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 9 Dec 2020 18:53:56 +0000 -Subject: [PATCH 614/889] staging/bcm2835-codec: Pass corrupt frame flag. +Subject: [PATCH 613/941] staging/bcm2835-codec: Pass corrupt frame flag. MMAL has the flag MMAL_BUFFER_HEADER_FLAG_CORRUPTED but that wasn't being passed through, so add it. @@ -221653,7 +221555,7 @@ index 08429a42c847..3ed9f47a37fe 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 25 Mar 2021 18:34:50 +0000 -Subject: [PATCH 615/889] staging/bcm2835-camera: Add support for H264 levels +Subject: [PATCH 614/941] 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 @@ -221717,7 +221619,7 @@ index f73daa38fa66..f3480a5c5170 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 15 Apr 2021 11:07:55 +0100 -Subject: [PATCH 616/889] staging/bcm2835-codec: Do not update crop from S_FMT +Subject: [PATCH 615/941] staging/bcm2835-codec: Do not update crop from S_FMT after res change During decode, setting the CAPTURE queue format was setting the crop @@ -221759,7 +221661,7 @@ index 3ed9f47a37fe..a97666a1a4be 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 23 Apr 2021 16:16:49 +0100 -Subject: [PATCH 617/889] staging/bcm2835-isp: Fix compiler warning +Subject: [PATCH 616/941] 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 @@ -221790,7 +221692,7 @@ index 5cca8bdd1d65..08dce8bba9bb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sun, 25 Apr 2021 21:07:03 +0100 -Subject: [PATCH 618/889] overlays: Allow multiple gpio-shutdown instances +Subject: [PATCH 617/941] overlays: Allow multiple gpio-shutdown instances There is no reason not to support multiple gpio-shutdown signals, so add the necessary __override__ magic. @@ -221838,7 +221740,7 @@ index 0a27595143ec..da148064aedd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Apr 2021 09:58:14 +0100 -Subject: [PATCH 619/889] overlays: README - improve the gpio-poweroff guide +Subject: [PATCH 618/941] overlays: README - improve the gpio-poweroff guide Signed-off-by: Phil Elwell --- @@ -221874,7 +221776,7 @@ index 17521568cee5..b9be3bece19b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Apr 2021 10:08:21 +0100 -Subject: [PATCH 620/889] SQUASH: overlays: Fix typo in README +Subject: [PATCH 619/941] SQUASH: overlays: Fix typo in README Signed-off-by: Phil Elwell --- @@ -221901,7 +221803,7 @@ index b9be3bece19b..79878f4f30e6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Apr 2021 08:59:01 +0100 -Subject: [PATCH 621/889] gpio-poweroff: Remember the old poweroff handler +Subject: [PATCH 620/941] 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 @@ -221960,7 +221862,7 @@ index e5dca66360a7..81e7acb8acb5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 28 Apr 2021 16:14:21 +0100 -Subject: [PATCH 622/889] drm/vc4: Allow DBLCLK modes even if horz timing is +Subject: [PATCH 621/941] drm/vc4: Allow DBLCLK modes even if horz timing is odd. The 2711 pixel valve can't produce odd horizontal timings, and @@ -222008,7 +221910,7 @@ index f55e522f0236..417d3e9954c2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Christoph Date: Wed, 28 Apr 2021 20:30:44 +0200 -Subject: [PATCH 623/889] overlays: Add ugreen-dabboard overlay +Subject: [PATCH 622/941] overlays: Add ugreen-dabboard overlay This is a simple overlay based on the simple-audio-card and the dmic codec. It has the speciality that it is configured to use the codec @@ -222120,7 +222022,7 @@ index 000000000000..fc8d9b118068 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 23 Apr 2021 15:02:58 +0100 -Subject: [PATCH 624/889] ARM: dts: bcm2711-rpi-400: Limit MDIO clock speed +Subject: [PATCH 623/941] ARM: dts: bcm2711-rpi-400: Limit MDIO clock speed Signed-off-by: Phil Elwell --- @@ -222149,7 +222051,7 @@ index 1bb8854e69d6..4ffd5e04ccf1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 30 Apr 2021 08:34:36 +0100 -Subject: [PATCH 625/889] spi: bcm2835: Increase the CS limit to 24 +Subject: [PATCH 624/941] spi: bcm2835: Increase the CS limit to 24 Increase the maximum number of CS lines to 24, and ensure this limit is not exceeded. @@ -222193,7 +222095,7 @@ index 4f40d2b9d468..0f6a2f7c8b53 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 4 May 2021 13:57:21 +0100 -Subject: [PATCH 626/889] configs: Regenerate defconfigs +Subject: [PATCH 625/941] configs: Regenerate defconfigs GENERIC_PHY=m is now implied by other settings on bcm2711. @@ -222234,7 +222136,7 @@ index b90bcc5b6ef8..5fb890f90233 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Tue, 4 May 2021 15:14:16 +0200 -Subject: [PATCH 627/889] configs: add CONFIG_QCA7000_UART=m (#4322) +Subject: [PATCH 626/941] configs: add CONFIG_QCA7000_UART=m (#4322) This allows to use the UART interface instead of SPI of QCA7000 Ethernet over powerline chips. @@ -222315,7 +222217,7 @@ index ff857505902b..c38726720f27 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 5 May 2021 15:35:34 +0200 -Subject: [PATCH 628/889] clk: Always clamp the rounded rate +Subject: [PATCH 627/941] clk: Always clamp the rounded rate The current core while setting the min and max rate properly in the clk_request structure will not make sure that the requested rate is @@ -222349,7 +222251,7 @@ index 1b9a76c7dafa..f4695bac4cec 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 6 May 2021 17:01:46 +0200 -Subject: [PATCH 629/889] drm/vc4: crtc: Pass the drm_atomic_state to config_pv +Subject: [PATCH 628/941] drm/vc4: crtc: Pass the drm_atomic_state to config_pv The vc4_crtc_config_pv will need to access the drm_atomic_state structure and its only parent function, vc4_crtc_atomic_enable already @@ -222401,7 +222303,7 @@ index 1d1ae0d9e48f..513c75288131 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 6 May 2021 17:07:07 +0200 -Subject: [PATCH 630/889] drm/vc4: crtc: Fix vc4_get_crtc_encoder logic +Subject: [PATCH 629/941] drm/vc4: crtc: Fix vc4_get_crtc_encoder logic The vc4_get_crtc_encoder function currently only works when the connector->state->crtc pointer is set, which is only true when the @@ -222490,7 +222392,7 @@ index 513c75288131..a813b7de60ef 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 6 May 2021 17:15:57 +0200 -Subject: [PATCH 631/889] drm/vc4: crtc: Lookup the encoder from the register +Subject: [PATCH 630/941] drm/vc4: crtc: Lookup the encoder from the register at boot At boot, we can't rely on the vc4_get_crtc_encoder since we don't have a @@ -222600,7 +222502,7 @@ index a813b7de60ef..a0b5503928df 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 29 Apr 2021 21:58:27 +0200 -Subject: [PATCH 632/889] drm/vc4: hdmi: Simplify the connector state retrieval +Subject: [PATCH 631/941] drm/vc4: hdmi: Simplify the connector state retrieval When we have the entire DRM state, retrieving the connector state only requires the drm_connector pointer. Fortunately for us, we have @@ -222658,7 +222560,7 @@ index 417d3e9954c2..e4bf7f34ddab 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 29 Apr 2021 11:08:52 +0200 -Subject: [PATCH 633/889] drm/vc4: hdmi: Rely on interrupts to handle hotplug +Subject: [PATCH 632/941] drm/vc4: hdmi: Rely on interrupts to handle hotplug DRM currently polls for the HDMI connector status every 10s, which can be an issue when we connect/disconnect a display quickly or the device @@ -222742,7 +222644,7 @@ index e4bf7f34ddab..8bd32a639622 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 7 May 2021 15:28:21 +0200 -Subject: [PATCH 634/889] drm/vc4: hdmi: Add a workqueue to set scrambling +Subject: [PATCH 633/941] drm/vc4: hdmi: Add a workqueue to set scrambling It looks like some displays (like the LG 27UL850-W) don't enable the scrambling when the HDMI driver enables it. However, if we set later the @@ -222841,7 +222743,7 @@ index 23e8cfc22c4d..67c372d743cb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 7 May 2021 17:22:53 +0100 -Subject: [PATCH 635/889] vc4/drm: hdmi: Fix missing declaration +Subject: [PATCH 634/941] vc4/drm: hdmi: Fix missing declaration Fixes: 671a8068ee5feae1d92e6d48027fa8de062e2af2 Signed-off-by: Dom Cobley @@ -222868,7 +222770,7 @@ index b636cbcdd241..93a22bb4f6ea 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: AMuszkat Date: Sun, 28 Mar 2021 21:46:09 +0200 -Subject: [PATCH 636/889] overlays: merus-amp: remove spi override +Subject: [PATCH 635/941] overlays: merus-amp: remove spi override Signed-off-by: AMuszkat --- @@ -222901,7 +222803,7 @@ index bbffd7d26324..4501fbdc253d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 10 May 2021 22:04:44 +0100 -Subject: [PATCH 637/889] configs: Add NF_LOG_ARP=m and NF_LOG_NETDEV=m +Subject: [PATCH 636/941] configs: Add NF_LOG_ARP=m and NF_LOG_NETDEV=m See: https://github.com/raspberrypi/linux/issues/3615 @@ -223021,7 +222923,7 @@ index c38726720f27..e10614d666dd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 11 May 2021 12:52:26 +0100 -Subject: [PATCH 638/889] media: i2c: ov5647: Correct pixel array offset +Subject: [PATCH 637/941] 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). @@ -223052,7 +222954,7 @@ index 40d0d45a2481..90486b528908 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 11 May 2021 12:57:22 +0100 -Subject: [PATCH 639/889] media: i2c: ov5647: Correct minimum VBLANK value +Subject: [PATCH 638/941] 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 @@ -223084,7 +222986,7 @@ index 90486b528908..0437ae2d8dbe 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 12 May 2021 07:39:21 +0100 -Subject: [PATCH 640/889] media: i2c: ov5647: Fix v4l2-compliance failure +Subject: [PATCH 639/941] media: i2c: ov5647: Fix v4l2-compliance failure subscribing to events Fixes the following v4l2-compliance failure: @@ -223124,7 +223026,7 @@ index 0437ae2d8dbe..98a5329d68fb 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 12 May 2021 16:44:11 +0100 -Subject: [PATCH 641/889] dtoverlays: Add pinctrl-names to i2c0 overlay. +Subject: [PATCH 640/941] dtoverlays: Add pinctrl-names to i2c0 overlay. Using dtoverlay=i2c0 failed to set up the pinctrl nodes as pinctrl-name = "default"; was missing from the i2c0if node. @@ -223155,7 +223057,7 @@ index 7c6771f84d8e..058f1cb76c69 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 12 May 2021 16:47:05 +0100 -Subject: [PATCH 642/889] dtoverlays: Update /__symbols__/i2c0 from i2c0 +Subject: [PATCH 641/941] dtoverlays: Update /__symbols__/i2c0 from i2c0 overlay Update the symbol as well as the alias so that other overlays will @@ -223192,7 +223094,7 @@ index 058f1cb76c69..46bf1bf2dc5c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 21 May 2020 11:49:37 +0100 -Subject: [PATCH 643/889] media: rpivid: Remove the need to have +Subject: [PATCH 642/941] media: rpivid: Remove the need to have num_entry_points set VAAPI H265 has num entry points but never sets it. Allow a VAAPI @@ -224175,7 +224077,7 @@ index e6b07920aa8c..434a366ecfc2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 11 Mar 2021 12:51:00 +0000 -Subject: [PATCH 644/889] media: rpivid: Convert to MPLANE +Subject: [PATCH 643/941] media: rpivid: Convert to MPLANE Use multi-planar interface rather than single plane interface. This allows dmabufs holding compressed data to be resized. @@ -224518,7 +224420,7 @@ index 9c4f3fb2f9f6..5c0fd9c8a6d7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 11 Mar 2021 18:43:15 +0000 -Subject: [PATCH 645/889] media: rpivid: Add an enable count to irq claim Qs +Subject: [PATCH 644/941] media: rpivid: Add an enable count to irq claim Qs Add an enable count to the irq Q structures to allow the irq logic to block further callbacks if resources associated with the irq are not @@ -224762,7 +224664,7 @@ index cf4cc8be8a55..ec73a2332b73 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ezequiel Garcia Date: Sun, 21 Mar 2021 16:38:54 -0300 -Subject: [PATCH 646/889] RFC: media: Add media_request_{pin,unpin} API +Subject: [PATCH 645/941] 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. @@ -224864,7 +224766,7 @@ index 3cd25a2717ce..0de5c2c94188 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 11 Mar 2021 19:08:00 +0000 -Subject: [PATCH 647/889] media: rpivid: Add a Pass0 to accumulate slices and +Subject: [PATCH 646/941] media: rpivid: Add a Pass0 to accumulate slices and rework job finish Due to overheads in assembling controls and requests it is worth having @@ -225930,7 +225832,7 @@ index ada6107ab675..396263bb352e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Mon, 29 Mar 2021 17:42:16 +0100 -Subject: [PATCH 648/889] media: rpivid: Map cmd buffer directly +Subject: [PATCH 647/941] media: rpivid: Map cmd buffer directly It is unnecessary to have a separate dmabuf to hold the cmd buffer. Map it directly from the kmalloc. @@ -226100,7 +226002,7 @@ index 396263bb352e..2bb86d564b33 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 1 Apr 2021 16:20:58 +0100 -Subject: [PATCH 649/889] media: rpivid: Improve values returned when setting +Subject: [PATCH 648/941] media: rpivid: Improve values returned when setting output format Guess a better value for the compressed bitstream buffer size @@ -226326,7 +226228,7 @@ index 5c0fd9c8a6d7..a3b228556497 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Sat, 3 Apr 2021 16:27:03 +0100 -Subject: [PATCH 650/889] media: rpivid: Improve stream_on/off conformance & +Subject: [PATCH 649/941] media: rpivid: Improve stream_on/off conformance & clock setup Fix stream on & off such that failures leave the driver in the correct @@ -226598,7 +226500,7 @@ index 3d882a6853a5..705015890e71 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 8 Apr 2021 18:34:09 +0100 -Subject: [PATCH 651/889] media: rpivid: Improve SPS/PPS error +Subject: [PATCH 650/941] media: rpivid: Improve SPS/PPS error handling/validation Move size and width checking from bitstream processing to control @@ -226864,7 +226766,7 @@ index ee5a48f26912..bb280b215a2e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: menschel Date: Fri, 14 May 2021 14:49:29 +0200 -Subject: [PATCH 652/889] Add CAN_J1939 as module to default build configs +Subject: [PATCH 651/941] Add CAN_J1939 as module to default build configs (#4346) There is a CAN protocol named J1939 which is supported by Linux Kernel @@ -226950,7 +226852,7 @@ index e10614d666dd..f8e5eac69f34 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mehmet Ahsen <2084476+mehmetahsen@users.noreply.github.com> Date: Fri, 21 May 2021 00:14:29 +0200 -Subject: [PATCH 653/889] overlays: add sensirion sgp30 to i2c-sensor overlay +Subject: [PATCH 652/941] overlays: add sensirion sgp30 to i2c-sensor overlay --- arch/arm/boot/dts/overlays/README | 3 +++ @@ -227014,7 +226916,7 @@ index ce97837b0db5..73c691c6a32f From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 21 May 2021 10:05:15 +0100 -Subject: [PATCH 654/889] configs: Add CONFIG_SENSIRION_SGP30=m +Subject: [PATCH 653/941] configs: Add CONFIG_SENSIRION_SGP30=m See: https://github.com/raspberrypi/linux/pull/4355 @@ -227094,7 +226996,7 @@ index f8e5eac69f34..cb052fed296b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 21 May 2021 11:29:52 +0100 -Subject: [PATCH 655/889] overlays: Remove deleted merus-amp parameter +Subject: [PATCH 654/941] overlays: Remove deleted merus-amp parameter Signed-off-by: Phil Elwell --- @@ -227123,7 +227025,7 @@ index 2a7944054d4f..2c7f4791324f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sat, 22 May 2021 08:55:29 +0100 -Subject: [PATCH 656/889] configs: Add GPIO_PCA953X_IRQ=y +Subject: [PATCH 655/941] configs: Add GPIO_PCA953X_IRQ=y Enable interrupt support for PCA953X GPIO expander. @@ -227205,7 +227107,7 @@ index cb052fed296b..869cb55cbf75 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Tue, 11 May 2021 11:51:35 +0200 -Subject: [PATCH 657/889] overlays: add bh1750 and ccs811 to i2c-sensor (#4334) +Subject: [PATCH 656/941] overlays: add bh1750 and ccs811 to i2c-sensor (#4334) See: https://github.com/raspberrypi/linux/pull/4334 --- @@ -227309,7 +227211,7 @@ index 73c691c6a32f..b05b0fa91942 100755 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Tue, 11 May 2021 11:51:59 +0200 -Subject: [PATCH 658/889] configs: add bh1750 and ccs811 to configs (#4334) +Subject: [PATCH 657/941] configs: add bh1750 and ccs811 to configs (#4334) See: https://github.com/raspberrypi/linux/pull/4334 --- @@ -227425,7 +227327,7 @@ index 869cb55cbf75..3200cc4c7225 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 2 Dec 2019 14:48:05 +0000 -Subject: [PATCH 659/889] Add Raspberry Pi PoE+ HAT support +Subject: [PATCH 658/941] Add Raspberry Pi PoE+ HAT support Signed-off-by: Serge Schneider --- @@ -227834,7 +227736,7 @@ index e3daf5ee4a9c..86b36c9327e9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 2 Dec 2019 14:48:05 +0000 -Subject: [PATCH 660/889] configs: Enable Raspberry Pi PoE+ HAT support +Subject: [PATCH 659/941] configs: Enable Raspberry Pi PoE+ HAT support Signed-off-by: Serge Schneider --- @@ -227912,7 +227814,7 @@ index 3200cc4c7225..10243e0e0658 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 2 Dec 2019 14:48:05 +0000 -Subject: [PATCH 661/889] overlays: Add rpi-poe-plus overlay +Subject: [PATCH 660/941] overlays: Add rpi-poe-plus overlay Signed-off-by: Serge Schneider --- @@ -227998,7 +227900,7 @@ index 000000000000..e0138847093b From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 21 May 2021 11:15:04 +0100 -Subject: [PATCH 662/889] drm/vc4: FKMS: Change of Broadcast RGB mode needs a +Subject: [PATCH 661/941] drm/vc4: FKMS: Change of Broadcast RGB mode needs a mode change The Broadcast RGB (aka HDMI limited/full range) property is only @@ -228066,7 +227968,7 @@ index 44b1addeb22e..e643bbe96941 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Alex Kurichenko Date: Tue, 1 Jun 2021 01:53:47 +0300 -Subject: [PATCH 663/889] overlays: Add ssd1331-spi support for OLED screen +Subject: [PATCH 662/941] overlays: Add ssd1331-spi support for OLED screen Signed-off-by: Alex Kurichenko --- @@ -228206,7 +228108,7 @@ index 000000000000..9fd5ebf2feda From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Thu, 10 Jun 2021 13:14:05 +0200 -Subject: [PATCH 664/889] Fixes an onboard clock detection problem of the PRO +Subject: [PATCH 663/941] Fixes an onboard clock detection problem of the PRO versions Increasing the sleep time after clock selection to 3-4ms @@ -228252,7 +228154,7 @@ index 8b04d30bcbee..79eccdb4dc8c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: jc-kynesim Date: Fri, 11 Jun 2021 15:14:31 +0100 -Subject: [PATCH 665/889] bcm2835: Allow compressed frames to set sizeimage +Subject: [PATCH 664/941] bcm2835: Allow compressed frames to set sizeimage (#4386) Allow the user to set sizeimage in TRY_FMT and S_FMT if the format @@ -228305,7 +228207,7 @@ index a97666a1a4be..c3ba5c25a2ab 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Fri, 11 Jun 2021 12:47:07 +0100 -Subject: [PATCH 666/889] media: i2c: imx477: Fix for long exposure limit +Subject: [PATCH 665/941] media: i2c: imx477: Fix for long exposure limit calculations Do not scale IMX477_EXPOSURE_OFFSET with the long exposure factor during @@ -228337,7 +228239,7 @@ index 34bfd22cadc6..b06add219cb4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 14 Jun 2021 15:07:38 +0100 -Subject: [PATCH 667/889] overlays: ghost-amp: Change early-disable sequence +Subject: [PATCH 666/941] overlays: ghost-amp: Change early-disable sequence In the event that the ENABLE signal from the codec goes low before RELAY2 has been enabled, wait until the full 1000ms has elapsed then @@ -228386,7 +228288,7 @@ index dbedb4b76c74..7509e00679c8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 26 May 2021 16:07:01 +0200 -Subject: [PATCH 668/889] drm/vc4: Make vc4_crtc_get_encoder public +Subject: [PATCH 667/941] drm/vc4: Make vc4_crtc_get_encoder public We'll need that function in vc4_kms to compute the core clock rate requirements. @@ -228439,7 +228341,7 @@ index ca435d24b7dc..96cc262cb174 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sia Jee Heng Date: Thu, 4 Feb 2021 09:42:55 +0800 -Subject: [PATCH 669/889] ASoC: codec: hdmi-codec: Support IEC958 encoded PCM +Subject: [PATCH 668/941] ASoC: codec: hdmi-codec: Support IEC958 encoded PCM format Existing hdmi-codec driver only support standard pcm format. @@ -228500,7 +228402,7 @@ index 403d4c6a49a8..e071add934b7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 28 Apr 2021 11:56:26 +0200 -Subject: [PATCH 670/889] ASoC: hdmi-codec: Rework to support more controls +Subject: [PATCH 669/941] ASoC: hdmi-codec: Rework to support more controls We're going to add more controls to support the IEC958 output, so let's rework the control registration a bit to support more of them. @@ -228582,7 +228484,7 @@ index e071add934b7..f0cd210704e2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 28 Apr 2021 15:29:13 +0200 -Subject: [PATCH 671/889] snd: iec958: split status creation and fill +Subject: [PATCH 670/941] snd: iec958: split status creation and fill In some situations, like a codec probe, we need to provide an IEC status default but don't have access to the sampling rate and width yet since @@ -228799,7 +228701,7 @@ index f9a211cc1f2c..a60908efe159 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 28 Apr 2021 15:29:51 +0200 -Subject: [PATCH 672/889] ASoC: hdmi-codec: Add iec958 controls +Subject: [PATCH 671/941] ASoC: hdmi-codec: Add iec958 controls Signed-off-by: Maxime Ripard --- @@ -228918,7 +228820,7 @@ index f0cd210704e2..1320a9af9d35 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 30 Apr 2021 14:22:06 +0200 -Subject: [PATCH 673/889] ASoC: hdmi-codec: Add a prepare hook +Subject: [PATCH 672/941] ASoC: hdmi-codec: Add a prepare hook The IEC958 status bit is usually set by the userspace after hw_params has been called, so in order to use whatever is set by the userspace, we @@ -229127,7 +229029,7 @@ index 1320a9af9d35..b9e96d7ed00b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 26 Apr 2021 14:42:26 +0200 -Subject: [PATCH 674/889] drm/vc4: Register HDMI codec +Subject: [PATCH 673/941] drm/vc4: Register HDMI codec The hdmi-codec brings a lot of advanced features, including the HDMI channel mapping. Let's use it in our driver instead of our own codec. @@ -230037,7 +229939,7 @@ index 67c372d743cb..b91b0257dde2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 27 Apr 2021 16:26:39 +0200 -Subject: [PATCH 675/889] drm/vc4: hdmi: Remove redundant variables +Subject: [PATCH 674/941] drm/vc4: hdmi: Remove redundant variables Signed-off-by: Maxime Ripard --- @@ -230159,7 +230061,7 @@ index b91b0257dde2..295962d83741 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Wed, 28 Apr 2021 16:10:02 +0200 -Subject: [PATCH 676/889] ARM: dts: bcm2711: Tune DMA parameters for HDMI audio +Subject: [PATCH 675/941] ARM: dts: bcm2711: Tune DMA parameters for HDMI audio Enable NO_WAIT_RESP, DMA_WIDE_SOURCE, DMA_WIDE_DEST, and bump the DMA panic and AXI priorities to avoid any DMA transfer error with HBR audio @@ -230172,7 +230074,7 @@ Signed-off-by: Maxime Ripard 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 2604ccfb6a6b..c6b496f364c3 100644 +index 2073a32a884b..e6caa9cac156 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -359,7 +359,7 @@ @@ -230200,7 +230102,7 @@ index 2604ccfb6a6b..c6b496f364c3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 16 Jun 2021 17:44:04 +0100 -Subject: [PATCH 677/889] configs: Enable Anbox support on arm64 builds +Subject: [PATCH 676/941] configs: Enable Anbox support on arm64 builds In order to allow containerised Android apps to run, add the following config settings on 64-bit builds: @@ -230272,7 +230174,7 @@ index 10243e0e0658..8a2c42e5d73b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: davidschillerJKU Date: Thu, 17 Jun 2021 09:55:45 +0200 -Subject: [PATCH 678/889] configs: add CONFIG_IR_TOY=m +Subject: [PATCH 677/941] configs: add CONFIG_IR_TOY=m This enables support for the Infrared Toy / Irdroid series of infrared transceivers @@ -230351,7 +230253,7 @@ index 8a2c42e5d73b..456b3000e6d6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 27 Nov 2017 17:14:54 +0000 -Subject: [PATCH 679/889] cgroup: Disable cgroup "memory" by default +Subject: [PATCH 678/941] 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: @@ -230366,10 +230268,10 @@ Signed-off-by: Phil Elwell 1 file changed, 38 insertions(+) diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c -index c8b811e039cc..b4ada2e9f499 100644 +index 60d38e2f69dd..526473fe5277 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -5665,6 +5665,9 @@ int __init cgroup_init_early(void) +@@ -5667,6 +5667,9 @@ int __init cgroup_init_early(void) return 0; } @@ -230379,7 +230281,7 @@ index c8b811e039cc..b4ada2e9f499 100644 /** * cgroup_init - cgroup initialization * -@@ -5703,6 +5706,12 @@ int __init cgroup_init(void) +@@ -5705,6 +5708,12 @@ int __init cgroup_init(void) mutex_unlock(&cgroup_mutex); @@ -230392,7 +230294,7 @@ index c8b811e039cc..b4ada2e9f499 100644 for_each_subsys(ss, ssid) { if (ss->early_init) { struct cgroup_subsys_state *css = -@@ -6240,6 +6249,10 @@ static int __init cgroup_disable(char *str) +@@ -6242,6 +6251,10 @@ static int __init cgroup_disable(char *str) strcmp(token, ss->legacy_name)) continue; @@ -230403,7 +230305,7 @@ index c8b811e039cc..b4ada2e9f499 100644 static_branch_disable(cgroup_subsys_enabled_key[i]); pr_info("Disabling %s control group subsystem\n", ss->name); -@@ -6249,6 +6262,31 @@ static int __init cgroup_disable(char *str) +@@ -6251,6 +6264,31 @@ static int __init cgroup_disable(char *str) } __setup("cgroup_disable=", cgroup_disable); @@ -230442,7 +230344,7 @@ index c8b811e039cc..b4ada2e9f499 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 17 Jun 2021 12:05:25 +0100 -Subject: [PATCH 680/889] media: i2c: imx290: Support 60fps in 2 lane operation +Subject: [PATCH 679/941] media: i2c: imx290: Support 60fps in 2 lane operation Commit "97589ad61c73 media: i2c: imx290: Add support for 2 data lanes" added support for running in two lane mode (instead of 4), but @@ -230757,7 +230659,7 @@ index 255f66985306..d2e7360712f5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 17 Jun 2021 13:00:39 +0100 -Subject: [PATCH 681/889] media: i2c: imx290: Fix the pixel rate at 148.5Mpix/s +Subject: [PATCH 680/941] media: i2c: imx290: Fix the pixel rate at 148.5Mpix/s Whilst the datasheet lists the link frequency changing between 1080p and 720p modes, reality is that with the default blanking @@ -230812,7 +230714,7 @@ index d2e7360712f5..f13a0dd66351 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 17 Jun 2021 17:27:46 +0100 -Subject: [PATCH 682/889] media: i2c: imx290: Fix clock setup register +Subject: [PATCH 681/941] media: i2c: imx290: Fix clock setup register assignments When the clock setups were added for the alternate external clocks, @@ -230867,7 +230769,7 @@ index f13a0dd66351..24a7dee571cd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 14 Jun 2021 15:27:24 +0200 -Subject: [PATCH 683/889] drm/vc4: crtc: Add encoder to vc4_crtc_config_pv +Subject: [PATCH 682/941] drm/vc4: crtc: Add encoder to vc4_crtc_config_pv prototype vc4_crtc_config_pv() retrieves the encoder again, even though its only @@ -230916,7 +230818,7 @@ index cea2cb87973c..5171c8ef9720 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Jun 2021 16:07:22 +0200 -Subject: [PATCH 684/889] drm/vc4: crtc: Rework the encoder retrieval code +Subject: [PATCH 683/941] drm/vc4: crtc: Rework the encoder retrieval code (again) It turns out the encoder retrieval code, in addition to being @@ -231019,7 +230921,7 @@ index 96cc262cb174..c38fa9718e1c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Jun 2021 16:13:02 +0200 -Subject: [PATCH 685/889] drm/vc4: crtc: Add some logging +Subject: [PATCH 684/941] drm/vc4: crtc: Add some logging The encoder retrieval code has been a source of bugs and glitches in the past and the crtc <-> encoder association been wrong in a number of @@ -231063,7 +230965,7 @@ index 44249f8a6877..651b1d67591c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 21 Jun 2021 17:19:22 +0200 -Subject: [PATCH 686/889] drm/vc4: Leverage the load tracker on the BCM2711 +Subject: [PATCH 685/941] drm/vc4: Leverage the load tracker on the BCM2711 The load tracker was initially designed to report and warn about a load too high for the HVS. To do so, it computes for each plane the impact @@ -231196,7 +231098,7 @@ index 26ea1f9dd7b3..333335f3c561 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: kFYatek <4499762+kFYatek@users.noreply.github.com> Date: Wed, 23 Jun 2021 01:11:26 +0200 -Subject: [PATCH 687/889] drm/vc4: Fix timings for interlaced modes +Subject: [PATCH 686/941] drm/vc4: Fix timings for interlaced modes Increase the number of post-sync blanking lines on odd fields instead of decreasing it on even fields. This makes the total number of lines @@ -231287,7 +231189,7 @@ index 7035c27e84e3..9b62e6225fd0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 24 Jun 2021 12:00:49 +0100 -Subject: [PATCH 688/889] drm/vc4: Don't create hvs_load_tracker on fkms +Subject: [PATCH 687/941] drm/vc4: Don't create hvs_load_tracker on fkms fkms doesn't use vc4->hvs so protect against that @@ -231316,7 +231218,7 @@ index d7104d8826f2..a95d88fea8d2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 24 Jun 2021 14:43:49 +0100 -Subject: [PATCH 689/889] media: rpivid: Fix H265 aux ent reuse of the same +Subject: [PATCH 688/941] media: rpivid: Fix H265 aux ent reuse of the same slot It is legitimate, though unusual, for an aux ent associated with a slot @@ -231473,7 +231375,7 @@ index bb280b215a2e..a5a0e31bd5ba 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Quinten Date: Fri, 18 Jun 2021 13:02:29 +0200 -Subject: [PATCH 690/889] Support RPi DPI interface in mode6 for 18-bit color +Subject: [PATCH 689/941] 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. @@ -231701,7 +231603,7 @@ index 3c2848e91c1b..c4abd49af073 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Quinten Date: Mon, 21 Jun 2021 16:10:32 +0200 -Subject: [PATCH 691/889] overlays: Add dpi18cpadhi, vc4-kms-dpi-at056tn53v1 +Subject: [PATCH 690/941] overlays: Add dpi18cpadhi, vc4-kms-dpi-at056tn53v1 Signed-off-by: Joerg Quinten --- @@ -231880,7 +231782,7 @@ index 000000000000..f7181c9828bf From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Thu, 24 Jun 2021 17:58:05 +0100 -Subject: [PATCH 692/889] drm: vc4: Fix pixel-wrap issue with DVP teardown +Subject: [PATCH 691/941] drm: vc4: Fix pixel-wrap issue with DVP teardown Adjust the DVP enable/disable sequence to avoid a pixel getting stuck in an internal, non resettable FIFO within PixelValve when changing @@ -231948,7 +231850,7 @@ index 9b62e6225fd0..2d6291a0ca5d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 28 Jun 2021 10:49:04 +0100 -Subject: [PATCH 693/889] media: i2c: ov9281: Remove override of subdev name +Subject: [PATCH 692/941] media: i2c: ov9281: Remove override of subdev name From the original Rockchip driver, the subdev was renamed from the default to being "mov9281 " whereas the @@ -231982,7 +231884,7 @@ index 16777b6f8e14..6bfc79cd5897 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 28 Jun 2021 16:07:16 +0200 -Subject: [PATCH 694/889] drm/vc4: hdmi: Use a fixed rate for the HSM clock on +Subject: [PATCH 693/941] drm/vc4: hdmi: Use a fixed rate for the HSM clock on BCM2835 Before the introduction of the BCM2711 support, the HSM clock rate was @@ -232130,7 +232032,7 @@ index 295962d83741..49fc91962fe4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 25 Jun 2021 16:22:39 +0200 -Subject: [PATCH 695/889] drm/vc4: hdmi: Enable the scrambler on reconnection +Subject: [PATCH 694/941] drm/vc4: hdmi: Enable the scrambler on reconnection If we have a state already and disconnect/reconnect the display, the SCDC messages won't be sent again since we didn't go through a disable / @@ -232190,7 +232092,7 @@ index ca0016f032e7..e26622099ad5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 6 May 2021 16:40:19 +0200 -Subject: [PATCH 696/889] drm/vc4: hdmi: Make sure the controller is powered in +Subject: [PATCH 695/941] drm/vc4: hdmi: Make sure the controller is powered in detect If the HPD GPIO is not available and drm_probe_ddc fails, we end up @@ -232256,7 +232158,7 @@ index e26622099ad5..c406b57d1ed1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 29 Jun 2021 09:20:09 +0100 -Subject: [PATCH 697/889] configs: Add CONFIG_MACVTAP=m (arm64 only) +Subject: [PATCH 696/941] configs: Add CONFIG_MACVTAP=m (arm64 only) From the requesting issue: @@ -232303,7 +232205,7 @@ index 456b3000e6d6..da84139ca6ca 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Naushir Patuck Date: Tue, 29 Jun 2021 12:50:58 +0100 -Subject: [PATCH 698/889] staging: vc04_services: isp: Set the YUV420/YVU420 +Subject: [PATCH 697/941] 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 @@ -232348,7 +232250,7 @@ index 7541fb316cb9..f6d6c88d13ba 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 29 Jun 2021 14:38:23 +0100 -Subject: [PATCH 699/889] Documentation: devicetree: Add documentation for +Subject: [PATCH 698/941] Documentation: devicetree: Add documentation for imx378 sensor The imx378 sensor is compatible with the imx477 and shares common @@ -232499,7 +232401,7 @@ index 937b6a1f99ec..1e0aa06f159d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 29 Jun 2021 14:41:15 +0100 -Subject: [PATCH 700/889] overlays: Add overlay for imx378 sensor +Subject: [PATCH 699/941] overlays: Add overlay for imx378 sensor This is based off a common overlay which is now also used by the imx477 sensor. @@ -232803,7 +232705,7 @@ index 000000000000..4e444709cc16 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 29 Jun 2021 14:43:01 +0100 -Subject: [PATCH 701/889] media: i2c: imx477: Extend driver to support imx378 +Subject: [PATCH 700/941] media: i2c: imx477: Extend driver to support imx378 sensor The imx378 sensor is almost identical to the imx477 and can be @@ -233001,7 +232903,7 @@ index b06add219cb4..521953e71686 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 30 Jun 2021 17:03:00 +0100 -Subject: [PATCH 702/889] overlays: Make i2c-rtc and i2c-rtc-gpio share RTCs +Subject: [PATCH 701/941] overlays: Make i2c-rtc and i2c-rtc-gpio share RTCs Lift the set of RTCs out of i2c-rtc and i2c-rtc-gpio to update i2c-rtc-gpio and to reduce duplication. @@ -233932,7 +233834,7 @@ index b9842e11b5e0..1eae9e1a5c96 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Jun 2021 11:47:38 +0200 -Subject: [PATCH 703/889] dt-bindings: clk: raspberrypi: Remove unused property +Subject: [PATCH 702/941] dt-bindings: clk: raspberrypi: Remove unused property The raspberrypi,firmware property has been documented as required in the binding but was never actually used in the final version of the binding. @@ -233978,7 +233880,7 @@ index d37bc311321d..2047e25700c6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Jun 2021 11:48:35 +0200 -Subject: [PATCH 704/889] dt-bindings: display: vc4: Add phandle to the +Subject: [PATCH 703/941] dt-bindings: display: vc4: Add phandle to the firmware The vc4 driver will need to tell the firmware that it takes over the @@ -234015,7 +233917,7 @@ index 49a5e041aa49..eac739a812f5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Jun 2021 11:53:46 +0200 -Subject: [PATCH 705/889] firmware: raspberrypi: Add +Subject: [PATCH 704/941] firmware: raspberrypi: Add RPI_FIRMWARE_NOTIFY_DISPLAY_DONE The RPI_FIRMWARE_NOTIFY_DISPLAY_DONE firmware call allows to tell the @@ -234046,7 +233948,7 @@ index 86b36c9327e9..0235624456a1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 25 Jun 2021 17:01:33 +0200 -Subject: [PATCH 706/889] drm/vc4: Remove conflicting framebuffers before +Subject: [PATCH 705/941] drm/vc4: Remove conflicting framebuffers before callind bind_all The bind hooks will modify their controller registers, so simplefb is @@ -234087,7 +233989,7 @@ index 3683780b9de8..9b9d088a3131 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Jun 2021 11:54:58 +0200 -Subject: [PATCH 707/889] drm/vc4: Notify the firmware when DRM is in charge +Subject: [PATCH 706/941] drm/vc4: Notify the firmware when DRM is in charge Once the call to drm_fb_helper_remove_conflicting_framebuffers() has been made, simplefb has been unregistered and the KMS driver is entirely @@ -234147,7 +234049,7 @@ index 9b9d088a3131..0d343e08fb18 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Jun 2021 11:56:56 +0200 -Subject: [PATCH 708/889] ARM: dts: rpi: Add the firmware node to vc4 +Subject: [PATCH 707/941] ARM: dts: rpi: Add the firmware node to vc4 Add the firmware phandle to the vc4 node so that we can send it the message that we're done with the firmware display. @@ -234195,7 +234097,7 @@ index 1b16cb9ccb88..edc55bba5ff4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 29 Jun 2021 11:36:38 +0200 -Subject: [PATCH 709/889] drm/vc4: hdmi: Put the device on error in +Subject: [PATCH 708/941] drm/vc4: hdmi: Put the device on error in pre_crtc_configure In the vc4_hdmi_encoder_pre_crtc_configure() function error path we @@ -234266,7 +234168,7 @@ index c406b57d1ed1..8fc86d044023 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 29 Jun 2021 09:53:52 +0200 -Subject: [PATCH 710/889] drm/vc4: hdmi: Split the CEC disable / enable +Subject: [PATCH 709/941] drm/vc4: hdmi: Split the CEC disable / enable functions in two In order to ease further additions to the CEC enable and disable, let's @@ -234381,7 +234283,7 @@ index 8fc86d044023..fbb525d52ef6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 29 Jun 2021 11:41:57 +0200 -Subject: [PATCH 711/889] drm/vc4: hdmi: Make sure the device is powered with +Subject: [PATCH 710/941] drm/vc4: hdmi: Make sure the device is powered with CEC Similarly to what we encountered with the detect hook with DRM, nothing @@ -234432,7 +234334,7 @@ index fbb525d52ef6..19b3dbce2ae9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 2 Jul 2021 17:44:56 +0200 -Subject: [PATCH 712/889] drm/vc4: hdmi: Add missing clk_disable_unprepare on +Subject: [PATCH 711/941] drm/vc4: hdmi: Add missing clk_disable_unprepare on error path In vc4_hdmi_encoder_pre_crtc_configure, if clk_request_start for the HSM @@ -234466,7 +234368,7 @@ index 19b3dbce2ae9..ebe88b5ee52f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 5 Jul 2021 10:32:30 +0200 -Subject: [PATCH 713/889] drm/vc4: hdmi: Warn if we access the controller while +Subject: [PATCH 712/941] drm/vc4: hdmi: Warn if we access the controller while disabled We've had many silent hangs where the kernel would look like it just @@ -234519,7 +234421,7 @@ index a81fdf90f66b..06b0739e2ba3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 5 Jul 2021 10:48:07 +0200 -Subject: [PATCH 714/889] drm/vc4: hdmi: Move initial register read after +Subject: [PATCH 713/941] drm/vc4: hdmi: Move initial register read after pm_runtime_get Commit ecdd08fd9bba ("drm/vc4: hdmi: Make sure the device is powered @@ -234562,7 +234464,7 @@ index ebe88b5ee52f..981c995c36a7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Mon, 5 Jul 2021 11:43:12 +0100 -Subject: [PATCH 715/889] vc4/drv: Only notify firmware of display done with +Subject: [PATCH 714/941] vc4/drv: Only notify firmware of display done with kms fkms driver still wants firmware display to be active @@ -234611,7 +234513,7 @@ index 0d343e08fb18..919b2d1e6bd5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 5 Jul 2021 19:38:21 +0100 -Subject: [PATCH 716/889] dwc_otg: Update NetBSD usb.h header licence +Subject: [PATCH 715/941] dwc_otg: Update NetBSD usb.h header licence NetBSD have changed their licensing requirements such that the 2-clause licence is preferred. Update usb.h in the downstream dwc_otg code @@ -234650,7 +234552,7 @@ index f78593575736..b1cedb1876b7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 5 Jul 2021 15:47:43 +0200 -Subject: [PATCH 717/889] drm/vc4: hdmi: Drop devm interrupt handler for CEC +Subject: [PATCH 716/941] drm/vc4: hdmi: Drop devm interrupt handler for CEC interrupts The CEC interrupt handlers are registered through the @@ -234762,7 +234664,7 @@ index 981c995c36a7..e06dd2622a0d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 5 Jul 2021 17:31:48 +0200 -Subject: [PATCH 718/889] drm/vc4: hdmi: Drop devm interrupt handler for +Subject: [PATCH 717/941] drm/vc4: hdmi: Drop devm interrupt handler for hotplug interrupts The hotplugs interrupt handlers are registered through the @@ -234879,7 +234781,7 @@ index e06dd2622a0d..7fa9c092415d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 5 Jul 2021 16:15:56 +0200 -Subject: [PATCH 719/889] drm/vc4: hdmi: Only call into DRM framework if +Subject: [PATCH 718/941] drm/vc4: hdmi: Only call into DRM framework if registered Our hotplug handler will currently call the drm_kms_helper_hotplug_event @@ -234920,7 +234822,7 @@ index 7fa9c092415d..d036e21647ef 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 8 Jul 2021 13:48:11 +0100 -Subject: [PATCH 720/889] bcm2711_thermal: Don't clamp temperature at zero +Subject: [PATCH 719/941] bcm2711_thermal: Don't clamp temperature at zero The temperature sensor is valid below zero and the linux framework is happy with it. @@ -234950,7 +234852,7 @@ index 67c2a737bc9d..73cf85fc24b7 100644 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 721/889] media: bcm2835-unicam: Forward input status from +Subject: [PATCH 720/941] media: bcm2835-unicam: Forward input status from subdevice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -235009,7 +234911,7 @@ index 0d737e0c7f52..59163f93b207 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "chipdip.lab" <43340836+chipdipru@users.noreply.github.com> Date: Fri, 9 Jul 2021 16:00:22 +0300 -Subject: [PATCH 722/889] overlays: Add overlay for Chipdip I2S master DAC +Subject: [PATCH 721/941] overlays: Add overlay for Chipdip I2S master DAC Signed-off-by: Evgenij Sapunov --- @@ -235114,7 +235016,7 @@ index 000000000000..a35ac36f8513 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 4 Dec 2020 16:11:32 +0100 -Subject: [PATCH 723/889] drm: Introduce an atomic_commit_setup function +Subject: [PATCH 722/941] drm: Introduce an atomic_commit_setup function Private objects storing a state shared across all CRTCs need to be carefully handled to avoid a use-after-free issue. @@ -235217,7 +235119,7 @@ index f2de050085be..f8225bcfee2e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 4 Dec 2020 16:11:33 +0100 -Subject: [PATCH 724/889] drm: Document use-after-free gotcha with private +Subject: [PATCH 723/941] drm: Document use-after-free gotcha with private objects The private objects have a gotcha that could result in a use-after-free, @@ -235267,7 +235169,7 @@ index d07c851d255b..5d34c1df03f3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 3 Dec 2020 08:46:24 +0100 -Subject: [PATCH 725/889] drm/vc4: hdmi: Don't poll for the infoframes status +Subject: [PATCH 724/941] drm/vc4: hdmi: Don't poll for the infoframes status on setup The infoframes are sent at a regular interval as a data island packet, @@ -235336,7 +235238,7 @@ index d036e21647ef..87c7817c9003 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 4 Dec 2020 16:11:34 +0100 -Subject: [PATCH 726/889] drm/vc4: Simplify a bit the global atomic_check +Subject: [PATCH 725/941] drm/vc4: Simplify a bit the global atomic_check When we can't allocate a new channel, we can simply return instead of having to handle both cases, and that simplifies a bit the code. @@ -235386,7 +235288,7 @@ index e7dcb64b05ef..d842889f79e7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 15 Dec 2020 16:42:35 +0100 -Subject: [PATCH 727/889] drm/vc4: hvs: Align the HVS atomic hooks to the new +Subject: [PATCH 726/941] drm/vc4: hvs: Align the HVS atomic hooks to the new API Since the CRTC setup in vc4 is split between the PixelValves/TXP and the @@ -235485,7 +235387,7 @@ index 22430640786f..79ecaaa1ec42 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 2 Nov 2020 14:38:34 +0100 -Subject: [PATCH 728/889] drm: Use the state pointer directly in atomic_check +Subject: [PATCH 727/941] drm: Use the state pointer directly in atomic_check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -235637,7 +235539,7 @@ index 7d962874b8fe..d85909af1800 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Wed, 17 Jan 2018 23:15:18 +0200 -Subject: [PATCH 729/889] drm: vc4: Remove unnecessary drm_plane_cleanup() +Subject: [PATCH 728/941] drm: vc4: Remove unnecessary drm_plane_cleanup() wrapper Use the drm_plane_cleanup() function directly as the drm_plane_funcs @@ -235682,7 +235584,7 @@ index 333335f3c561..b4ba3b3b9129 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 18 Mar 2021 17:13:27 +0100 -Subject: [PATCH 730/889] drm/vc4: plane: Remove redundant assignment +Subject: [PATCH 729/941] drm/vc4: plane: Remove redundant assignment The vc4_plane_atomic_async_update function assigns twice in a row the src_h field in the drm_plane_state structure to the same value. Remove @@ -235714,7 +235616,7 @@ index b4ba3b3b9129..faa1ce6d6584 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Fri, 11 Dec 2020 13:42:36 +0200 -Subject: [PATCH 731/889] drm: automatic legacy gamma support +Subject: [PATCH 730/941] drm: automatic legacy gamma support To support legacy gamma ioctls the drivers need to set drm_crtc_funcs.gamma_set either to a custom implementation or to @@ -236214,7 +236116,7 @@ index 85df04c8e62f..dc7e3aef7f13 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 18 Nov 2020 10:47:58 +0100 -Subject: [PATCH 732/889] drm: Pass the full state to connectors atomic +Subject: [PATCH 731/941] drm: Pass the full state to connectors atomic functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -236603,7 +236505,7 @@ index f8225bcfee2e..cbe613858a93 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Deepak R Varma Date: Fri, 6 Nov 2020 01:51:35 +0530 -Subject: [PATCH 733/889] drm/vc4: replace idr_init() by idr_init_base() +Subject: [PATCH 732/941] drm/vc4: replace idr_init() by idr_init_base() idr_init() uses base 0 which is an invalid identifier for this driver. The idr_alloc for this driver uses VC4_PERFMONID_MIN as start value for @@ -236641,7 +236543,7 @@ index f4aa75efd16b..18abc06335c1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Mon, 16 Nov 2020 17:41:07 +0000 -Subject: [PATCH 734/889] drm/vc4/vc4_hdmi_regs: Mark some data sets as +Subject: [PATCH 733/941] drm/vc4/vc4_hdmi_regs: Mark some data sets as __maybe_unused MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -236706,7 +236608,7 @@ index 06b0739e2ba3..99dde6e06a37 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Bernard Zhao Date: Tue, 2 Feb 2021 04:23:38 -0800 -Subject: [PATCH 735/889] drm/vc4: remove unneeded variable: "ret" +Subject: [PATCH 734/941] drm/vc4: remove unneeded variable: "ret" remove unneeded variable: "ret". @@ -236747,7 +236649,7 @@ index b641252939d8..445d3bab89e0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jesse Taube Date: Thu, 8 Jul 2021 16:32:16 -0400 -Subject: [PATCH 736/889] overlays: Add overlay for cap1106 capacitive touch +Subject: [PATCH 735/941] overlays: Add overlay for cap1106 capacitive touch sensor Signed-off-by: Jesse Taube @@ -236852,7 +236754,7 @@ index 000000000000..0a585e725f84 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sat, 10 Jul 2021 09:51:52 +0100 -Subject: [PATCH 737/889] configs: Add KEYBOARD_CAP11XX=m +Subject: [PATCH 736/941] configs: Add KEYBOARD_CAP11XX=m See: https://github.com/raspberrypi/linux/pull/4442 @@ -236932,7 +236834,7 @@ index da84139ca6ca..0cd854301692 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 12 Jul 2021 12:27:59 +0100 -Subject: [PATCH 738/889] drm/vc4: Fix margin calculations for the right/bottom +Subject: [PATCH 737/941] drm/vc4: Fix margin calculations for the right/bottom edges The calculations clipped the right/bottom edge of the clipped @@ -236976,7 +236878,7 @@ index faa1ce6d6584..7947cf47b6e1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 12 Jul 2021 13:06:07 +0100 -Subject: [PATCH 739/889] ydrm/vc4: fkms: Fix margin calculations for the +Subject: [PATCH 738/941] ydrm/vc4: fkms: Fix margin calculations for the right/bottom edges The calculations clipped the right/bottom edge of the clipped @@ -237020,7 +236922,7 @@ index e643bbe96941..d6d50b5f64dd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 12 Jul 2021 15:15:44 +0100 -Subject: [PATCH 740/889] ARM: dts: bcm2711: fold in the correct interrupt +Subject: [PATCH 739/941] ARM: dts: bcm2711: fold in the correct interrupt The new vec node in bcm2711.dtsi should have the correct interrupt number to start with, rather than include the bcm283x version and @@ -237032,7 +236934,7 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index c6b496f364c3..2933cf91c27d 100644 +index e6caa9cac156..05ef7089868f 100644 --- a/arch/arm/boot/dts/bcm2711.dtsi +++ b/arch/arm/boot/dts/bcm2711.dtsi @@ -304,7 +304,7 @@ @@ -237059,7 +236961,7 @@ index c6b496f364c3..2933cf91c27d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "Sunip K. Mukherjee" Date: Sun, 4 Jul 2021 16:03:07 -0400 -Subject: [PATCH 741/889] overlays: Add overlay for Si446x Transceiver SPI +Subject: [PATCH 740/941] overlays: Add overlay for Si446x Transceiver SPI See: https://github.com/raspberrypi/linux/pull/4430 @@ -237170,7 +237072,7 @@ index 000000000000..90495f0941fb From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:07:30 +0200 -Subject: [PATCH 742/889] drm/vc4: Fix timings for VEC modes +Subject: [PATCH 741/941] 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 @@ -237326,7 +237228,7 @@ index a467ceba75e4..7008684f6936 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:07:49 +0200 -Subject: [PATCH 743/889] drm/vc4: Refactor VEC TV mode setting +Subject: [PATCH 742/941] drm/vc4: Refactor VEC TV mode setting Change the mode_set function pointer logic to declarative config0, config1 and custom_freq fields, to make TV mode setting logic more @@ -237499,7 +237401,7 @@ index 7008684f6936..aa3f11c383d7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:07:53 +0200 -Subject: [PATCH 744/889] drm/vc4: Fix definition of PAL-M mode +Subject: [PATCH 743/941] 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. @@ -237582,7 +237484,7 @@ index aa3f11c383d7..db489a1a65e3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:07:58 +0200 -Subject: [PATCH 745/889] drm/vc4: Add support for more analog TV standards +Subject: [PATCH 744/941] 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): @@ -237736,7 +237638,7 @@ index db489a1a65e3..e316a3943566 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:08:01 +0200 -Subject: [PATCH 746/889] drm/vc4: Allow setting the TV norm via module +Subject: [PATCH 745/941] drm/vc4: Allow setting the TV norm via module parameter Similar to the ch7006 and nouveau drivers, introduce a "tv_mode" module @@ -237886,7 +237788,7 @@ index e316a3943566..b3eb3aaf0e89 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Thu, 15 Jul 2021 01:08:05 +0200 -Subject: [PATCH 747/889] drm/vc4: Refactor mode checking logic +Subject: [PATCH 746/941] 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 @@ -237977,7 +237879,7 @@ index b3eb3aaf0e89..596b59ff6c9a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Thu, 15 Jul 2021 20:08:13 +0100 -Subject: [PATCH 748/889] drm/vc4: Fix typo when getting firmware node +Subject: [PATCH 747/941] drm/vc4: Fix typo when getting firmware node Signed-off-by: Dom Cobley --- @@ -238004,7 +237906,7 @@ index 919b2d1e6bd5..dec3620bc7c5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 16 Jul 2021 15:23:50 +0100 -Subject: [PATCH 749/889] configs: Add SND_SOC_WM8960=m +Subject: [PATCH 748/941] configs: Add SND_SOC_WM8960=m Enable the WM8960 driver module, as used by the wm8960-soundcard overlay. @@ -238087,7 +237989,7 @@ index 0cd854301692..f2ed34ca43b0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 19 Jul 2021 10:47:02 +0100 -Subject: [PATCH 750/889] ARM: dts: bcm2711: Tidy the HDMI I2C aliases +Subject: [PATCH 749/941] ARM: dts: bcm2711: Tidy the HDMI I2C aliases The bcm2711 vc3-kms-v3d overlay enables the I2C instances used for EDID data. Give these distinct I2C interface numbers (20 & 21) to @@ -238105,10 +238007,10 @@ Signed-off-by: Phil Elwell 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index bc2f231f3568..016d4d466150 100644 +index a2ef72331135..55e74f9c36c3 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -349,11 +349,12 @@ +@@ -350,11 +350,12 @@ mmc0 = &emmc2; mmc1 = &mmcnr; mmc2 = &sdhost; @@ -238122,7 +238024,7 @@ index bc2f231f3568..016d4d466150 100644 spi3 = &spi3; spi4 = &spi4; spi5 = &spi5; -@@ -559,13 +560,6 @@ +@@ -560,13 +561,6 @@ pinctrl-0 = <&i2s_pins>; }; @@ -238207,7 +238109,7 @@ index a39e5c216e63..9f9a25bb52c3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Tue, 20 Jul 2021 15:10:03 +0100 -Subject: [PATCH 751/889] media: i2c: imx477: Fix framerates for 1332x990 mode +Subject: [PATCH 750/941] media: i2c: imx477: Fix framerates for 1332x990 mode The imx477 driver's line length for this mode had not been updated to the value supplied to us by the sensor manufacturer. With this @@ -238238,7 +238140,7 @@ index 521953e71686..fcde88d90a8f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 13 Mar 2021 12:25:43 +0100 -Subject: [PATCH 752/889] drm/uapi: Add USB connector type +Subject: [PATCH 751/941] drm/uapi: Add USB connector type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -238295,7 +238197,7 @@ index 863eda048265..8bc13daec0a3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 13 Mar 2021 12:25:45 +0100 -Subject: [PATCH 753/889] drm: Add GUD USB Display driver +Subject: [PATCH 752/941] drm: Add GUD USB Display driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241002,7 +240904,7 @@ index 000000000000..0b46b54fe56e From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: kernel test robot Date: Mon, 22 Mar 2021 18:44:33 +0100 -Subject: [PATCH 754/889] drm/gud: fix sizeof use +Subject: [PATCH 753/941] drm/gud: fix sizeof use MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241046,7 +240948,7 @@ index ec495dcd6122..9ae5a0020449 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: kernel test robot Date: Mon, 22 Mar 2021 18:44:34 +0100 -Subject: [PATCH 755/889] drm/gud: Remove unneeded semicolon +Subject: [PATCH 754/941] drm/gud: Remove unneeded semicolon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241129,7 +241031,7 @@ index 15aa8877407e..4ea7b4dd2c4e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Bernard Zhao Date: Fri, 2 Apr 2021 01:55:21 -0700 -Subject: [PATCH 756/889] drm/gud: cleanup coding style a bit +Subject: [PATCH 755/941] drm/gud: cleanup coding style a bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241176,7 +241078,7 @@ index de2f2d2dbc60..b65105585578 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Thu, 1 Jul 2021 19:07:47 +0200 -Subject: [PATCH 757/889] drm/gud: Free buffers on device removal +Subject: [PATCH 756/941] drm/gud: Free buffers on device removal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241242,7 +241144,7 @@ index 610cb05a306a..868099878721 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Thu, 1 Jul 2021 19:07:48 +0200 -Subject: [PATCH 758/889] drm/gud: Use scatter-gather USB bulk transfer +Subject: [PATCH 757/941] drm/gud: Use scatter-gather USB bulk transfer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241456,7 +241358,7 @@ index 4ea7b4dd2c4e..da4ebd1fe591 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 3 Jul 2021 16:13:20 +0200 -Subject: [PATCH 759/889] drm/gud: Add Raspberry Pi Pico ID +Subject: [PATCH 758/941] drm/gud: Add Raspberry Pi Pico ID MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241493,7 +241395,7 @@ index 8666b4212a16..3afad229bb78 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 3 Jul 2021 16:13:21 +0200 -Subject: [PATCH 760/889] drm/gud: Add async_flush module parameter +Subject: [PATCH 759/941] drm/gud: Add async_flush module parameter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241554,7 +241456,7 @@ index da4ebd1fe591..d04e777ccb37 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Thu, 8 Jul 2021 23:20:59 +0200 -Subject: [PATCH 761/889] configs: Add CONFIG_DRM_GUD=m +Subject: [PATCH 760/941] configs: Add CONFIG_DRM_GUD=m MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -241637,7 +241539,7 @@ index f2ed34ca43b0..13aa02396b7b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 2 Jul 2021 12:03:28 +0200 -Subject: [PATCH 762/889] drm/vc4: hdmi: Make sure the controller is powered up +Subject: [PATCH 761/941] drm/vc4: hdmi: Make sure the controller is powered up during bind In the bind hook, we actually need the device to have the HSM clock @@ -241708,7 +241610,7 @@ index 87c7817c9003..81ea1fbbdaab 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 22 Jul 2021 14:34:42 +0100 -Subject: [PATCH 763/889] brcmfmac: Try product-specific clm_blob names first +Subject: [PATCH 762/941] brcmfmac: Try product-specific clm_blob names first Signed-off-by: Phil Elwell --- @@ -241879,7 +241781,7 @@ index 9fb68c2dc7e3..9bf2dbd30ded 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Jul 2021 11:05:18 +0100 -Subject: [PATCH 764/889] overlays: Set CMA to 512MB on Pi 4 for vc4 +Subject: [PATCH 763/941] overlays: Set CMA to 512MB on Pi 4 for vc4 Pi 4s have at least 1GB, and there are advantages to having more CMA available (HEVC works out of the box, support for more complex video @@ -242047,7 +241949,7 @@ index 6a11260a4f1a..0480fa7a8129 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Jul 2021 13:24:09 +0100 -Subject: [PATCH 765/889] ARM: dts: Correct CM4 PHY MDIO address +Subject: [PATCH 764/941] ARM: dts: Correct CM4 PHY MDIO address The firmware patches the PHY MDIO address in the DTB to cope with variations between board revisions, but the default for the CM4 PHY @@ -242082,7 +241984,7 @@ index 9f9a25bb52c3..d9271012a572 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 26 May 2021 16:13:02 +0200 -Subject: [PATCH 766/889] drm/vc4: Increase the core clock based on HVS load +Subject: [PATCH 765/941] drm/vc4: Increase the core clock based on HVS load Depending on a given HVS output (HVS to PixelValves) and input (planes attached to a channel) load, the HVS needs for the core clock to be @@ -242341,7 +242243,7 @@ index d842889f79e7..10990d7cc285 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Mon, 28 Jun 2021 11:15:13 +0200 -Subject: [PATCH 767/889] drm/vc4: Increase the core clock to a minimum of +Subject: [PATCH 766/941] drm/vc4: Increase the core clock to a minimum of 500MHz The core clock needs to be raised temporarily during a modeset to @@ -242388,7 +242290,7 @@ index 10990d7cc285..fb2465964d46 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "chipdip.lab" <43340836+chipdipru@users.noreply.github.com> Date: Mon, 26 Jul 2021 14:43:11 +0300 -Subject: [PATCH 768/889] overlays: Update and rename chipdip-i2s-master-dac +Subject: [PATCH 767/941] overlays: Update and rename chipdip-i2s-master-dac Simple card fragment removed, GPIO fragment added. @@ -242550,7 +242452,7 @@ index a35ac36f8513..000000000000 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "chipdip.lab" <43340836+chipdipru@users.noreply.github.com> Date: Mon, 26 Jul 2021 14:45:59 +0300 -Subject: [PATCH 769/889] ASoC: bcm: Add chipdip-dac driver +Subject: [PATCH 768/941] ASoC: bcm: Add chipdip-dac driver Driver chipdip-dac.c added into sound/soc/bcm/, files sound/soc/bcm/Kconfig and sound/soc/bcm/Makefile updated. @@ -242886,7 +242788,7 @@ index 000000000000..6cb53692b3c5 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "chipdip.lab" <43340836+chipdipru@users.noreply.github.com> Date: Mon, 26 Jul 2021 16:34:41 +0300 -Subject: [PATCH 770/889] configs: Add SND_BCM2708_SOC_CHIPDIP_DAC +Subject: [PATCH 769/941] configs: Add SND_BCM2708_SOC_CHIPDIP_DAC Enable the driver for the ChipDip DAC soundcard. @@ -242966,7 +242868,7 @@ index 13aa02396b7b..178848f3c993 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 28 Jul 2021 09:49:21 +0100 -Subject: [PATCH 771/889] char: vc_mem: Delete dead code +Subject: [PATCH 770/941] char: vc_mem: Delete dead code There are no error exists once device_create has succeeded, and therefore no need to call device_destroy from vc_mem_init. @@ -242996,7 +242898,7 @@ index b1b5a95baf02..195b61a4387c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 28 Jul 2021 11:18:24 +0100 -Subject: [PATCH 772/889] configs: Add RANDOM_TRUST_BOOTLOADER=y +Subject: [PATCH 771/941] configs: Add RANDOM_TRUST_BOOTLOADER=y See: https://github.com/raspberrypi/firmware/issues/1595 @@ -243076,7 +242978,7 @@ index 178848f3c993..58a5e0535b6f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: WoodenNautilus <86767647+WoodenNautilus@users.noreply.github.com> Date: Tue, 3 Aug 2021 11:13:06 +0200 -Subject: [PATCH 773/889] overlays: Add Ablic S35390A to i2c-rtc and -gpio +Subject: [PATCH 772/941] overlays: Add Ablic S35390A to i2c-rtc and -gpio See: https://github.com/raspberrypi/linux/pull/4492 @@ -243157,7 +243059,7 @@ index fd80027792d2..f51981aafda8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 2 Aug 2021 14:30:15 +0100 -Subject: [PATCH 774/889] dtoverlays: Add orientation (and rotation) parameter +Subject: [PATCH 773/941] dtoverlays: Add orientation (and rotation) parameter to sensor overlays Add the orientation parameter to all the camera sensor overlays to @@ -243385,7 +243287,7 @@ index b7a9c8c539da..277236c03358 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 3 Aug 2021 11:25:59 +0100 -Subject: [PATCH 775/889] media: i2c: imx290: Add fwnode properties controls +Subject: [PATCH 774/941] media: i2c: imx290: Add fwnode properties controls Add call to v4l2_ctrl_new_fwnode_properties to read and create the fwnode based controls. @@ -243439,7 +243341,7 @@ index 24a7dee571cd..a26106c41cc6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 3 Aug 2021 11:30:58 +0100 -Subject: [PATCH 776/889] media: i2c: ov9281: Add fwnode properties controls +Subject: [PATCH 775/941] media: i2c: ov9281: Add fwnode properties controls Add call to v4l2_ctrl_new_fwnode_properties to read and create the fwnode based controls. @@ -243501,7 +243403,7 @@ index 6bfc79cd5897..a6ffcdd47b21 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 3 Aug 2021 11:33:33 +0100 -Subject: [PATCH 777/889] media: i2c: ov7251: Add fwnode properties controls +Subject: [PATCH 776/941] media: i2c: ov7251: Add fwnode properties controls Add call to v4l2_ctrl_new_fwnode_properties to read and create the fwnode based controls. @@ -243555,7 +243457,7 @@ index 0c10203f822b..2c554626319d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 3 Aug 2021 11:32:30 +0100 -Subject: [PATCH 778/889] overlays: Reduce Pi 4 vc4 CMA size to 320MB +Subject: [PATCH 777/941] overlays: Reduce Pi 4 vc4 CMA size to 320MB Reduce the default CMA allocation requested by the vc4-kms-v3d-pi4 and vc4-fkms-v3d-pi4 overlays to 320MB. @@ -243605,7 +243507,7 @@ index 0480fa7a8129..4285e12a4e53 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Wed, 4 Aug 2021 10:10:11 +0200 -Subject: [PATCH 779/889] Revert "overlays: Update display GPIO declarations" +Subject: [PATCH 778/941] Revert "overlays: Update display GPIO declarations" for Goodix This reverts commit b7d685c0b1bd1b98af0e9c1f5d43769982bdbfb2 for Goodix @@ -243635,7 +243537,7 @@ index a11d65f81c5e..8571527de49a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: pjx3 Date: Sun, 8 Aug 2021 20:09:46 +0100 -Subject: [PATCH 780/889] overlays: Add midi-uart{2345}-overlay.dts +Subject: [PATCH 779/941] overlays: Add midi-uart{2345}-overlay.dts Added overlays for enabling MIDI baudrates on additional UARTs @@ -243889,7 +243791,7 @@ index 000000000000..a1d37f7103ff From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 11 Aug 2021 15:33:57 +0100 -Subject: [PATCH 781/889] usb: xhci: workaround for bogus SET_DEQ_PENDING +Subject: [PATCH 780/941] usb: xhci: workaround for bogus SET_DEQ_PENDING endpoint state See https://github.com/raspberrypi/linux/issues/3981 @@ -243913,10 +243815,10 @@ 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 7649cb9e277f..8bbe602c0a07 100644 +index 6303834ea2ce..f1ae93e5804e 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -4256,9 +4256,9 @@ void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, +@@ -4262,9 +4262,9 @@ void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, } ep = &xhci->devs[slot_id]->eps[ep_index]; if ((ep->ep_state & SET_DEQ_PENDING)) { @@ -243936,7 +243838,7 @@ index 7649cb9e277f..8bbe602c0a07 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 16 Aug 2021 11:11:35 +0100 -Subject: [PATCH 782/889] overlays: Add TI BQ32000 RTC support +Subject: [PATCH 781/941] overlays: Add TI BQ32000 RTC support See: https://github.com/raspberrypi/linux/issues/4531 @@ -244044,58 +243946,9 @@ index f51981aafda8..7f749fc2d802 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jonathan Bell -Date: Mon, 16 Aug 2021 14:43:06 +0100 -Subject: [PATCH 783/889] xhci: guard accesses to ep_state in - xhci_endpoint_reset() - -See https://github.com/raspberrypi/linux/issues/3981 - -Two read-modify-write cycles on ep->ep_state are not guarded by -xhci->lock. Fix these. - -Signed-off-by: Jonathan Bell ---- - drivers/usb/host/xhci.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index 425a066ed977..c424435fa960 100644 ---- a/drivers/usb/host/xhci.c -+++ b/drivers/usb/host/xhci.c -@@ -3270,10 +3270,13 @@ static void xhci_endpoint_reset(struct usb_hcd *hcd, - return; - - /* Bail out if toggle is already being cleared by a endpoint reset */ -+ spin_lock_irqsave(&xhci->lock, flags); - if (ep->ep_state & EP_HARD_CLEAR_TOGGLE) { - ep->ep_state &= ~EP_HARD_CLEAR_TOGGLE; -+ spin_unlock_irqrestore(&xhci->lock, flags); - return; - } -+ spin_unlock_irqrestore(&xhci->lock, flags); - /* Only interrupt and bulk ep's use data toggle, USB2 spec 5.5.4-> */ - if (usb_endpoint_xfer_control(&host_ep->desc) || - usb_endpoint_xfer_isoc(&host_ep->desc)) -@@ -3359,8 +3362,10 @@ static void xhci_endpoint_reset(struct usb_hcd *hcd, - xhci_free_command(xhci, cfg_cmd); - cleanup: - xhci_free_command(xhci, stop_cmd); -+ spin_lock_irqsave(&xhci->lock, flags); - if (ep->ep_state & EP_SOFT_CLEAR_TOGGLE) - ep->ep_state &= ~EP_SOFT_CLEAR_TOGGLE; -+ spin_unlock_irqrestore(&xhci->lock, flags); - } - - static int xhci_check_streams_endpoint(struct xhci_hcd *xhci, --- -2.18.4 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 27 Jul 2021 22:22:52 +0100 -Subject: [PATCH 784/889] ARM: dts: Adapt to upstream changes +Subject: [PATCH 782/941] ARM: dts: Adapt to upstream changes Signed-off-by: Phil Elwell --- @@ -244308,10 +244161,10 @@ index 6743c984a316..c386a855cdc3 100644 linux,default-trigger = "mmc0"; gpios = <&virtgpio 0 0>; diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index 016d4d466150..e0d1128c9439 100644 +index 55e74f9c36c3..2fdeba0b95d7 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -579,13 +579,13 @@ +@@ -580,13 +580,13 @@ }; &leds { @@ -244433,7 +244286,7 @@ index d9271012a572..1dcbb2173f5d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 18 Aug 2021 17:26:49 +0100 -Subject: [PATCH 785/889] overlays: rpi-poe-plus: Improve the cooling levels +Subject: [PATCH 783/941] overlays: rpi-poe-plus: Improve the cooling levels The PoE HAT cooling levels are not well suited for the PoE+ HAT - the fan fails to come on until the temperature reaches the third trip point @@ -244468,7 +244321,7 @@ index e0138847093b..5b12d02c3707 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 19 Aug 2021 14:28:56 +0100 -Subject: [PATCH 786/889] Makefiles: dt: Always set '-@' on ARCH_BCM2835 +Subject: [PATCH 784/941] Makefiles: dt: Always set '-@' on ARCH_BCM2835 On the BCM2835 architecture, always add the '-@' option to enable the generation of symbols, rather than relying on DTC_FLAGS being empty @@ -244511,7 +244364,7 @@ index 2bca736a7197..69809bf2f45d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Thu, 19 Aug 2021 10:32:35 +0200 -Subject: [PATCH 787/889] overlays: qca7000: Fix URL & README +Subject: [PATCH 785/941] overlays: qca7000: Fix URL & README I2SE has been acquired by in-tech, so fix the URL & README accordingly. @@ -244553,7 +244406,7 @@ index 9a451202a2eb..f695f36024fa 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 19 Aug 2021 14:37:04 +0200 -Subject: [PATCH 788/889] drm/probe-helper: Create a HPD IRQ event helper for a +Subject: [PATCH 786/941] drm/probe-helper: Create a HPD IRQ event helper for a single connector The drm_helper_hpd_irq_event() function is iterating over all the @@ -244739,7 +244592,7 @@ index 8d3ed2834d34..04c57564c397 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 19 Aug 2021 13:50:12 +0200 -Subject: [PATCH 789/889] drm/vc4: hdmi: Actually check for the connector +Subject: [PATCH 787/941] drm/vc4: hdmi: Actually check for the connector status in hotplug The drm_helper_hpd_irq_event() documentation states that this function @@ -244805,7 +244658,7 @@ index 81ea1fbbdaab..01055f5ee175 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 11 May 2021 17:05:11 +0200 -Subject: [PATCH 790/889] drm/vc4: hdmi: Remove the DDC probing for status +Subject: [PATCH 788/941] drm/vc4: hdmi: Remove the DDC probing for status detection Commit 9d44abbbb8d5 ("drm/vc4: Fall back to using an EDID probe in the @@ -244856,7 +244709,7 @@ index 01055f5ee175..75f6f293e32a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 25 Aug 2021 13:09:01 +0200 -Subject: [PATCH 791/889] drm/vc4: Set a default HSM rate +Subject: [PATCH 789/941] drm/vc4: Set a default HSM rate When the firmware doesn't setup the HSM rate (such as when booting without an HDMI cable plugged in), its rate is 0 and thus any register @@ -244930,7 +244783,7 @@ index 75f6f293e32a..cc1a05df6195 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Thu, 19 Aug 2021 15:34:34 +0200 -Subject: [PATCH 792/889] overlays: Add overlay for QCA7000 via UART0 +Subject: [PATCH 790/941] overlays: Add overlay for QCA7000 via UART0 This adds an overlay to connect the QCA7000 in UART mode via UART0. The qcauart driver uses the serial device bus instead of deprecated @@ -245043,7 +244896,7 @@ index 000000000000..5dee70853289 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 3 Sep 2021 16:54:06 +0100 -Subject: [PATCH 793/889] configs: Enable the Toneport UX1 Line 6 audio i/f +Subject: [PATCH 791/941] configs: Enable the Toneport UX1 Line 6 audio i/f See: https://github.com/raspberrypi/linux/issues/4562 @@ -245123,7 +244976,7 @@ index 58a5e0535b6f..0cecfa4b3986 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 8 Sep 2021 13:32:31 +0200 -Subject: [PATCH 794/889] drm/probe: Fix drm_connector_helper_hpd_irq_event +Subject: [PATCH 792/941] drm/probe: Fix drm_connector_helper_hpd_irq_event deadlock drm_connector_helper_hpd_irq_event() calls @@ -245197,7 +245050,7 @@ index 0a4c7581b510..f8eb1061a55f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 8 Sep 2021 14:10:32 +0100 -Subject: [PATCH 795/889] overlays: README: Refer to WLAN where possible +Subject: [PATCH 793/941] overlays: README: Refer to WLAN where possible Signed-off-by: Phil Elwell --- @@ -245251,7 +245104,7 @@ index ec769b2d6040..890e926636b7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 8 Sep 2021 14:15:17 +0100 -Subject: [PATCH 796/889] media: i2c: imx477: Allow control of on-sensor DPC +Subject: [PATCH 794/941] media: i2c: imx477: Allow control of on-sensor DPC A module parameter "dpc_enable" is added to allow the control of the sensor's on-board DPC (Defective Pixel Correction) function. @@ -245297,7 +245150,7 @@ index fcde88d90a8f..05cb530d331e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 10 Sep 2021 21:10:03 +0100 -Subject: [PATCH 797/889] gpio-fsm: Clamp the delay time to zero +Subject: [PATCH 795/941] gpio-fsm: Clamp the delay time to zero The sysfs delay_ms value is calculated live, and it is possible for the time left to appear to be negative briefly if the timer handling @@ -245329,7 +245182,7 @@ index 306f5123546c..3a348f1c6514 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 13 Sep 2021 17:30:18 +0100 -Subject: [PATCH 798/889] drm/vc4: Reset HDMI MISC_CONTROL register. +Subject: [PATCH 796/941] drm/vc4: Reset HDMI MISC_CONTROL register. The HDMI block can repeat pixels for double clocked modes, and the firmware is now configuring the block to do this as @@ -245406,7 +245259,7 @@ index 99dde6e06a37..23930a8fa376 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 6 Jul 2021 18:53:28 +0100 -Subject: [PATCH 799/889] drm/vc4: Release workaround buffer and DMA in error +Subject: [PATCH 797/941] drm/vc4: Release workaround buffer and DMA in error paths and unbind On Pi0-3 the driver allocates a buffer and requests a DMA channel @@ -245555,7 +245408,7 @@ index 9861e2d2c05d..82b82ba7cc9e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 18 Jun 2021 21:52:28 +0100 -Subject: [PATCH 800/889] drm/vc4: Correct DSI divider calculations +Subject: [PATCH 798/941] drm/vc4: Correct DSI divider calculations The divider calculations tried to find the divider just faster than the clock requested. However if @@ -245596,7 +245449,7 @@ index 82b82ba7cc9e..1c6939c9c232 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 3 Sep 2021 17:47:37 +0100 -Subject: [PATCH 801/889] drm/panel/raspberrypi-touchscreen: Avoid NULL deref +Subject: [PATCH 799/941] drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised If a call to rpi_touchscreen_i2c_write from rpi_touchscreen_probe @@ -245631,7 +245484,7 @@ index 804bdcc978dd..a6436f533806 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 3 Sep 2021 17:52:59 +0100 -Subject: [PATCH 802/889] drm/panel/raspberrypi-touchscreen: Initialise the +Subject: [PATCH 800/941] drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare The panel has a prepare call which is before video starts, and an @@ -245687,7 +245540,7 @@ index a6436f533806..e2597361407c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Sep 2021 14:21:38 +0100 -Subject: [PATCH 803/889] drm/panel/raspberrypi-touchscreen: Handle I2C errors. +Subject: [PATCH 801/941] drm/panel/raspberrypi-touchscreen: Handle I2C errors. rpi_touchscreen_i2c_read returns any errors from i2c_transfer, or the 8 bit received value. @@ -245727,7 +245580,7 @@ index e2597361407c..3f0c11fa60a5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Mar 2021 17:06:36 +0000 -Subject: [PATCH 804/889] drm/panel-simple: Add a timing for the Raspberry Pi +Subject: [PATCH 802/941] drm/panel-simple: Add a timing for the Raspberry Pi 7" panel The Raspberry Pi 7" 800x480 panel uses a Toshiba TC358762 DSI @@ -245792,7 +245645,7 @@ index b7be0561006d..8becb0e31814 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Sep 2021 14:46:17 +0100 -Subject: [PATCH 805/889] Input: edt-ft54x6: Clean up timer and workqueue on +Subject: [PATCH 803/941] Input: edt-ft54x6: Clean up timer and workqueue on remove If no interrupt is defined then a timer and workqueue are used @@ -245829,7 +245682,7 @@ index 7e8acc0c19be..d4060bc89ce9 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 11 Feb 2021 18:46:06 +0000 -Subject: [PATCH 806/889] regulator: rpi-panel: Register with a unique +Subject: [PATCH 804/941] regulator: rpi-panel: Register with a unique backlight name There's no reason why 2 Raspberry Pi DSI displays can't be @@ -245864,7 +245717,7 @@ index ee46bfbf5eee..370b9ae363dd 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Sep 2021 14:56:03 +0100 -Subject: [PATCH 807/889] regulator: rpi-panel: Handle I2C errors/timing to the +Subject: [PATCH 805/941] regulator: rpi-panel: Handle I2C errors/timing to the Atmel The Atmel is doing some things in the I2C ISR, during which @@ -246001,7 +245854,7 @@ index 370b9ae363dd..00fb69efcfa2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Sep 2021 15:02:05 +0100 -Subject: [PATCH 808/889] regulator: rpi-panel: Serialise operations. +Subject: [PATCH 806/941] regulator: rpi-panel: Serialise operations. The driver was using the regmap lock to serialise the individual accesses, but we really need to protect the @@ -246261,7 +246114,7 @@ index 00fb69efcfa2..a4af7adad2b5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 8 Sep 2021 15:41:18 +0100 -Subject: [PATCH 809/889] regulator: rpi-panel: Ensure the backlight is off +Subject: [PATCH 807/941] regulator: rpi-panel: Ensure the backlight is off during probe. The initial state of the Atmel is not defined, so ensure the @@ -246291,7 +246144,7 @@ index a4af7adad2b5..b3629a1e0e50 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 9 Sep 2021 18:24:57 +0100 -Subject: [PATCH 810/889] regulator: rpi-panel: Convert to drive lines directly +Subject: [PATCH 808/941] regulator: rpi-panel: Convert to drive lines directly The Atmel was doing a load of automatic sequencing of control lines, however it was combining the touch controller's @@ -246496,7 +246349,7 @@ index b3629a1e0e50..995915ca4a9b 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 10 Sep 2021 13:50:28 +0100 -Subject: [PATCH 811/889] regulator: rpi-panel: Add GPIO control for panel and +Subject: [PATCH 809/941] regulator: rpi-panel: Add GPIO control for panel and touch resets We need independent control of the resets for the panel&bridge, @@ -246704,7 +246557,7 @@ index 995915ca4a9b..998233f14085 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Mar 2021 17:36:12 +0000 -Subject: [PATCH 812/889] defconfig: Add DRM_TOSHIBA_TC358762 and +Subject: [PATCH 810/941] defconfig: Add DRM_TOSHIBA_TC358762 and REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY Add the two newer drivers for the Pi 7" touchscreen to the defconfigs @@ -246826,7 +246679,7 @@ index 0cecfa4b3986..59fabad5ba02 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 26 Mar 2021 17:14:44 +0000 -Subject: [PATCH 813/889] dtoverlays: Update 7inch DSI display overlay to use +Subject: [PATCH 811/941] dtoverlays: Update 7inch DSI display overlay to use newer drivers The older panel-raspberrypi-touchscreen driver had issues in @@ -247122,7 +246975,7 @@ index 086f4ffd633a..ecd3bef3d65a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 14 Sep 2021 15:21:23 +0200 -Subject: [PATCH 814/889] drm/vc4: hdmi: Remove redundant HSM clk +Subject: [PATCH 812/941] drm/vc4: hdmi: Remove redundant HSM clk enable/disable in detect Our detect function calls pm_runtime_resume_and_get() and @@ -247165,7 +247018,7 @@ index 463407154e6b..8995c1830776 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 14 Sep 2021 15:23:47 +0200 -Subject: [PATCH 815/889] drm/vc4: hdmi: Remove unnecessary pm_runtime_put +Subject: [PATCH 813/941] drm/vc4: hdmi: Remove unnecessary pm_runtime_put Unlike pm_runtime_get_sync(), pm_runtime_resume_and_get() doesn't take a reference on failure, so we don't need to call pm_runtime_put() on @@ -247195,7 +247048,7 @@ index 8995c1830776..6f25cff3f74c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Tue, 14 Sep 2021 15:25:33 +0200 -Subject: [PATCH 816/889] drm/vc4: hdmi: Simplify exit path of +Subject: [PATCH 814/941] drm/vc4: hdmi: Simplify exit path of vc4_hdmi_encoder_pre_crtc_configure The exit path of vc4_hdmi_encoder_pre_crtc_configure() is fairly hard to @@ -247291,7 +247144,7 @@ index 6f25cff3f74c..2a068ba7c83f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 13 May 2021 11:56:21 +0100 -Subject: [PATCH 817/889] staging/bcm2835-codec: Change the default codec res +Subject: [PATCH 815/941] staging/bcm2835-codec: Change the default codec res to 32x32 In order to effectively guarantee that a V4L2_EVENT_SOURCE_CHANGE @@ -247337,7 +247190,7 @@ index c3ba5c25a2ab..4c01bc42fa31 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Sun, 10 Jan 2021 19:05:17 +0000 -Subject: [PATCH 818/889] staging/vchiq-mmal: Add buffer flags for interlaced +Subject: [PATCH 816/941] staging/vchiq-mmal: Add buffer flags for interlaced video Add the buffer flags that the firmware uses to identify fields @@ -247385,7 +247238,7 @@ index ab63835ce01c..883b77ffae25 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 5 Aug 2021 16:38:34 +0100 -Subject: [PATCH 819/889] staging/vchiq-mmal: Add parameters for interlaced +Subject: [PATCH 817/941] staging/vchiq-mmal: Add parameters for interlaced video support Adds enum mmal_interlace_type and struct @@ -247452,7 +247305,7 @@ index 79438d23912f..844a02bf9a22 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 18 Dec 2020 19:56:31 +0000 -Subject: [PATCH 820/889] staging/bcm2835-codec: Add support for decoding +Subject: [PATCH 818/941] staging/bcm2835-codec: Add support for decoding interlaced streams The video decoder can support decoding interlaced streams, so add @@ -247631,7 +247484,7 @@ index 4c01bc42fa31..3f15c20bb952 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 5 Aug 2021 15:11:23 +0100 -Subject: [PATCH 821/889] staging/bcm2835-codec: Correct ENUM_FRAMESIZES +Subject: [PATCH 819/941] staging/bcm2835-codec: Correct ENUM_FRAMESIZES stepsize to 2 Being YUV420 formats, the step size is always 2 to avoid part @@ -247666,7 +247519,7 @@ index 3f15c20bb952..96de610e8354 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 5 Aug 2021 16:46:42 +0100 -Subject: [PATCH 822/889] staging/bcm2835-codec: Return buffers to QUEUED not +Subject: [PATCH 820/941] staging/bcm2835-codec: Return buffers to QUEUED not ERROR state Should start_streaming fail, or buffers be queued during @@ -247707,7 +247560,7 @@ index 96de610e8354..d2b64a369ae8 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Aug 2021 13:43:48 +0100 -Subject: [PATCH 823/889] staging/bcm2835_codec: Log MMAL flags in hex +Subject: [PATCH 821/941] staging/bcm2835_codec: Log MMAL flags in hex The flags is a bitmask, so it's far easier to interpret as hex data instead of decimal. @@ -247737,7 +247590,7 @@ index d2b64a369ae8..202830aee5b6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Sat, 11 Sep 2021 17:21:07 +0100 -Subject: [PATCH 824/889] staging: bcm2835-codec: Allow custom specified +Subject: [PATCH 822/941] staging: bcm2835-codec: Allow custom specified strides/bytesperline. If the client provides a bytesperline value in try_fmt/s_fmt then @@ -247782,7 +247635,7 @@ index 202830aee5b6..8e6a3ab629fc 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 6 Aug 2021 15:44:21 +0100 -Subject: [PATCH 825/889] staging/vchiq-mmal: Add the deinterlace image effects +Subject: [PATCH 823/941] staging/vchiq-mmal: Add the deinterlace image effects enums As we're wanting to wrap the image_fx component for deinterlacing, @@ -247814,7 +247667,7 @@ index 844a02bf9a22..622508dc6e27 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 6 Aug 2021 15:37:16 +0100 -Subject: [PATCH 826/889] staging/bcm2835_codec: Add support for image_fx to +Subject: [PATCH 824/941] staging/bcm2835_codec: Add support for image_fx to deinterlace Adds another /dev/video node wrapping image_fx doing deinterlace. @@ -248087,7 +247940,7 @@ index 8e6a3ab629fc..38b59aa21069 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Tue, 14 Sep 2021 16:44:18 +0100 -Subject: [PATCH 827/889] staging/bcm2835-v4l2_codec: Fix for encode selection +Subject: [PATCH 825/941] staging/bcm2835-v4l2_codec: Fix for encode selection API Matches correct behaviour from DECODE and DEINTERLACE @@ -248117,7 +247970,7 @@ index 38b59aa21069..8df0eb2b532a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jeff Geerling Date: Thu, 16 Sep 2021 13:07:23 -0500 -Subject: [PATCH 828/889] drm/amdgpu: Add missing conversion of +Subject: [PATCH 826/941] drm/amdgpu: Add missing conversion of is_hdr_metadata_different for amdgpu --- @@ -248144,7 +247997,7 @@ index 12ef26670f61..b93961704bf3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 17 Sep 2021 15:18:51 +0100 -Subject: [PATCH 829/889] configs: Add CAN_PEAK_USB=m +Subject: [PATCH 827/941] configs: Add CAN_PEAK_USB=m Add the driver for the PEAK Systems USB CAN interface. @@ -248226,7 +248079,7 @@ index 59fabad5ba02..241c6c3efca6 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 20 Sep 2021 11:18:41 +0100 -Subject: [PATCH 830/889] Revert "ARM: proc-v7: Force misalignment of early +Subject: [PATCH 828/941] Revert "ARM: proc-v7: Force misalignment of early stmia" This reverts commit fe4cc0ed5923d3b91d4cb25f8f6cbbf5a6f8c06f. @@ -248277,7 +248130,7 @@ index 3e77e8982df3..28c9d32fa99a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 20 Sep 2021 11:59:23 +0100 -Subject: [PATCH 831/889] ARM: proc-v7: Retry uncached stmia if necessary +Subject: [PATCH 829/941] ARM: proc-v7: Retry uncached stmia if necessary A failure of some CPU cores to come online has been traced to the failure of a stm instruction while the cache is disabled. The symptom @@ -248343,7 +248196,7 @@ index 28c9d32fa99a..950ceb970470 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Wed, 1 Sep 2021 16:34:50 +0100 -Subject: [PATCH 832/889] media: rpivid: Avoid returning EINVAL to a G_FMT +Subject: [PATCH 830/941] media: rpivid: Avoid returning EINVAL to a G_FMT ioctl V4L2 spec says that G/S/TRY_FMT IOCTLs should never return errors for @@ -248632,7 +248485,7 @@ index a3b228556497..e22cc0e32aa3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 22 Sep 2021 15:38:13 +0100 -Subject: [PATCH 833/889] net: phy: lan87xx: Allow more time for link detect +Subject: [PATCH 831/941] net: phy: lan87xx: Allow more time for link detect With EDPWRDOWN set in idle, it must be cleared before checking for ENERGYON going high, indicating that a link is being established. @@ -248676,7 +248529,7 @@ index caf7291ffaf8..9983eeded624 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Wed, 22 Sep 2021 18:57:19 +0100 -Subject: [PATCH 834/889] media: rpivid: Remove unused ctx state variable and +Subject: [PATCH 832/941] media: rpivid: Remove unused ctx state variable and defines Remove unused ctx state tracking variable and associated defines. @@ -248719,7 +248572,7 @@ index 3d4ff825b21a..31d320b596b4 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Wed, 22 Sep 2021 19:05:30 +0100 -Subject: [PATCH 835/889] media: rpivid: Ensure IRQs have completed before +Subject: [PATCH 833/941] media: rpivid: Ensure IRQs have completed before uniniting context Before uniniting the decode context sync with the IRQ queues to ensure @@ -248825,7 +248678,7 @@ index a5a0e31bd5ba..17b3a565c315 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 9 Oct 2020 10:40:27 +0100 -Subject: [PATCH 836/889] staging: bcm2835-codec: Allow decode res changed +Subject: [PATCH 834/941] staging: bcm2835-codec: Allow decode res changed before STREAMON(CAPTURE) The V4L2 stateful video decoder API requires that you can STREAMON @@ -249069,7 +248922,7 @@ index 8df0eb2b532a..f8fe8effa06d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Sep 2021 17:44:19 +0100 -Subject: [PATCH 837/889] staging/bcm2835-codec: Do not send buffers to the VPU +Subject: [PATCH 835/941] staging/bcm2835-codec: Do not send buffers to the VPU unless streaming With video decode we now enable both input and output ports on @@ -249168,7 +249021,7 @@ index f8fe8effa06d..4156018dbf7a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Sep 2021 17:49:41 +0100 -Subject: [PATCH 838/889] staging/mmal-vchiq: Rationalise included headers +Subject: [PATCH 836/941] staging/mmal-vchiq: Rationalise included headers The list of includes was slightly over generic, and wasn't in alphabetical order. Clean it up. @@ -249210,7 +249063,7 @@ index 014fbace54cd..a322b97e3f65 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 16 Sep 2021 16:32:53 +0100 -Subject: [PATCH 839/889] staging: bcm2835-codec: Format changed should trigger +Subject: [PATCH 837/941] staging: bcm2835-codec: Format changed should trigger drain When a format changed event occurs, the spec says that it @@ -249259,7 +249112,7 @@ index 4156018dbf7a..73afe99268ff 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 16 Sep 2021 16:39:07 +0100 -Subject: [PATCH 840/889] staging: bcm2835-codec: Signal the firmware to stop +Subject: [PATCH 838/941] staging: bcm2835-codec: Signal the firmware to stop on all changes The firmware defaults to not stopping video decode if only the @@ -249315,7 +249168,7 @@ index 622508dc6e27..21087496a481 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 15 Sep 2021 17:54:11 +0100 -Subject: [PATCH 841/889] staging/mmal-vchiq: Add module parameter to enable +Subject: [PATCH 839/941] staging/mmal-vchiq: Add module parameter to enable logging. Adds a module parameter "debug" to enable various logging levels. @@ -249642,7 +249495,7 @@ index a322b97e3f65..12a670bcc535 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 16 Sep 2021 16:46:58 +0100 -Subject: [PATCH 842/889] staging: bcm2835-codec: Queue flushed buffers instead +Subject: [PATCH 840/941] staging: bcm2835-codec: Queue flushed buffers instead of completing When a buffer is returned on a port that is disabled, return it @@ -249676,7 +249529,7 @@ index 6c6e0ba34a0b..03c9ccb35ee1 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 21 Sep 2021 17:17:57 +0100 -Subject: [PATCH 843/889] staging: mmal-vchiq: Reset buffers_with_vpu on +Subject: [PATCH 841/941] staging: mmal-vchiq: Reset buffers_with_vpu on port_enable Should we go through the timeout failure case with port_disable @@ -249713,7 +249566,7 @@ index 12a670bcc535..a6cdc7dc9c30 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 22 Sep 2021 16:42:49 +0100 -Subject: [PATCH 844/889] staging: bcm2835_codec: Correct flushing code for +Subject: [PATCH 842/941] staging: bcm2835_codec: Correct flushing code for refcounting Completions don't reference count, so setting the completion @@ -249811,7 +249664,7 @@ index 03c9ccb35ee1..1b8611549f4f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 20 Sep 2021 15:00:51 +0100 -Subject: [PATCH 845/889] staging: bcm2835-codec: Ensure all ctrls are set on +Subject: [PATCH 843/941] staging: bcm2835-codec: Ensure all ctrls are set on streamon Currently the code was only setting some controls from @@ -249928,7 +249781,7 @@ index 1b8611549f4f..f5eaff3e4612 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 20 Sep 2021 14:37:17 +0100 -Subject: [PATCH 846/889] staging: bcm2835-codec: Add support for H&V Flips to +Subject: [PATCH 844/941] staging: bcm2835-codec: Add support for H&V Flips to ISP The ISP can do H & V flips whilst resizing or converting @@ -250019,7 +249872,7 @@ index f5eaff3e4612..6078d6e2ace0 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Sun, 19 Sep 2021 13:30:43 +0200 -Subject: [PATCH 847/889] overlays: add support for the MLX90640 thermal camera +Subject: [PATCH 845/941] overlays: add support for the MLX90640 thermal camera This allows using the video-i2c camera driver with MLX90640 thermal infrared sensors, connected to Raspberry Pi. CONFIG_VIDEO_V4L2_I2C @@ -250097,7 +249950,7 @@ index 000000000000..a2655ed82585 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: GabyPCgeeK Date: Mon, 27 Sep 2021 04:43:21 -0400 -Subject: [PATCH 848/889] overlays: Add generic mcp2515 overlay +Subject: [PATCH 846/941] overlays: Add generic mcp2515 overlay Can configure mcp2515 on spi0/1/2 without the need for multiple overlays. --- @@ -250314,7 +250167,7 @@ index 000000000000..cda1fb0b1199 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 21 Sep 2021 15:32:50 +0100 -Subject: [PATCH 849/889] regulator: rpi-panel: Remove get_brightness hook +Subject: [PATCH 847/941] regulator: rpi-panel: Remove get_brightness hook The driver was implementing a get_brightness function that tried to read back the PWM setting of the display to report @@ -250374,7 +250227,7 @@ index 998233f14085..8090b9a485b5 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: madimario Date: Tue, 28 Sep 2021 04:20:06 -0400 -Subject: [PATCH 850/889] bcm2835_smi_dev: Fix handling of word-odd lengths +Subject: [PATCH 848/941] bcm2835_smi_dev: Fix handling of word-odd lengths The read and write functions did not use the correct pointer offset when dealing with an odd number of bytes after a DMA transfer. Also, @@ -250471,7 +250324,7 @@ index 9db8f1e3db0f..34976fa4ed59 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 17 Sep 2021 19:08:27 +0100 -Subject: [PATCH 851/889] Revert "raspberrypi-firmware: Export the general +Subject: [PATCH 849/941] Revert "raspberrypi-firmware: Export the general transaction function." This reverts commit 121592a1f507d2b5900db5f7c6510b532563dc09. @@ -250507,7 +250360,7 @@ index 45511deddf6c..849e63bb426d 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dom Cobley Date: Fri, 17 Sep 2021 19:10:29 +0100 -Subject: [PATCH 852/889] Revert "firmware: Updated mailbox header" +Subject: [PATCH 850/941] Revert "firmware: Updated mailbox header" This reverts commit 02038a75fb5ae9e0b8dac3de3f30f37ea613201e. --- @@ -250541,7 +250394,7 @@ index 0235624456a1..b2c462446cf7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 8 Sep 2021 21:12:26 +0200 -Subject: [PATCH 853/889] drm/vc4: Fix out of order frames during asynchronous +Subject: [PATCH 851/941] drm/vc4: Fix out of order frames during asynchronous page flips When doing an asynchronous page flip (PAGE_FLIP ioctl with the @@ -250644,7 +250497,7 @@ index 6ac60e187015..59e10c37b740 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Juerg Haefliger Date: Tue, 28 Sep 2021 16:56:19 +0200 -Subject: [PATCH 854/889] drm/vc4: hdmi: Fix bvb clock enable error checking +Subject: [PATCH 852/941] drm/vc4: hdmi: Fix bvb clock enable error checking Check for errors only if we actually tried to enable the bvb clock. @@ -250682,7 +250535,7 @@ index 2a068ba7c83f..f1adaa9dc5f3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Juerg Haefliger Date: Wed, 29 Sep 2021 11:39:46 +0200 -Subject: [PATCH 855/889] Revert "mmc: sdhci-iproc: Fix vmmc regulators on +Subject: [PATCH 853/941] Revert "mmc: sdhci-iproc: Fix vmmc regulators on iProc" This reverts commit aed19399a01733dbad9be8bf026a4f7dd823b04f. @@ -250733,7 +250586,7 @@ index 7658898cf39b..b9eb2ec61a83 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Juerg Haefliger Date: Wed, 29 Sep 2021 11:42:23 +0200 -Subject: [PATCH 856/889] mmc: sdhci-iproc: Fix vmmc regulators (pre-bcm2711) +Subject: [PATCH 854/941] mmc: sdhci-iproc: Fix vmmc regulators (pre-bcm2711) The Linux support for controlling card power via regulators appears to be contentious. I would argue that the default behaviour is contrary to @@ -250767,7 +250620,7 @@ index b9eb2ec61a83..404870e6b759 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Fri, 27 Aug 2021 14:36:55 +0800 -Subject: [PATCH 857/889] media: dt-bindings: media: i2c: Add IMX519 CMOS +Subject: [PATCH 855/941] media: dt-bindings: media: i2c: Add IMX519 CMOS sensor binding Add YAML device tree binding for IMX519 CMOS image sensor, and the relevant MAINTAINERS entries. @@ -250923,7 +250776,7 @@ index 5917adffd4b2..f891ab0af53f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Fri, 27 Aug 2021 13:48:52 +0800 -Subject: [PATCH 858/889] media: i2c: Add driver for IMX519 sensor Adds a +Subject: [PATCH 856/941] media: i2c: Add driver for IMX519 sensor Adds a driver for the 16MPix IMX519 CSI2 sensor. Whilst the sensor supports 2 or 4 CSI2 data lanes, this driver currently only supports 2 lanes. @@ -253013,7 +252866,7 @@ index 000000000000..d541f231a4f3 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Arducam Date: Wed, 15 Sep 2021 09:02:08 +0800 -Subject: [PATCH 859/889] media: i2c: imx519: Advertise embedded data node on +Subject: [PATCH 857/941] media: i2c: imx519: Advertise embedded data node on media pad 1 This commit updates the imx519 driver to adverise support for embedded data streams. @@ -253266,7 +253119,7 @@ index d541f231a4f3..4e98704a6834 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Thu, 26 Aug 2021 11:15:26 +0800 -Subject: [PATCH 860/889] configs: Add CONFIG_VIDEO_IMX519=m Include the driver +Subject: [PATCH 858/941] configs: Add CONFIG_VIDEO_IMX519=m Include the driver module for the IMX519. Signed-off-by: Lee Jackson @@ -253345,7 +253198,7 @@ index 241c6c3efca6..26fe691cb9a2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lee Jackson Date: Fri, 27 Aug 2021 14:45:43 +0800 -Subject: [PATCH 861/889] overlays: Add imx519-overlay.dts Added overlays for +Subject: [PATCH 859/941] overlays: Add imx519-overlay.dts Added overlays for enabling IMX519 and add the relevant information to the README. Signed-off-by: Lee Jackson @@ -253518,7 +253371,7 @@ index 000000000000..693c267af1f0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 4 Oct 2021 14:15:38 +0100 -Subject: [PATCH 862/889] dtoverlays: Add overlay for ST7735R (160x128) TinyDRM +Subject: [PATCH 860/941] dtoverlays: Add overlay for ST7735R (160x128) TinyDRM driver Adds an overlay to configure the TinyDRM driver for ST7735R @@ -253669,7 +253522,7 @@ index 000000000000..bf186811ec5d From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jonathan Bell Date: Wed, 6 Oct 2021 15:27:53 +0100 -Subject: [PATCH 863/889] dwc_otg: pay attention to qh->interval when +Subject: [PATCH 861/941] dwc_otg: pay attention to qh->interval when rescheduling periodic queues A regression introduced in https://github.com/raspberrypi/linux/pull/3887 @@ -253704,7 +253557,7 @@ index 4503af692aef..f51fad1e6b70 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Wed, 6 Oct 2021 17:19:58 +0200 -Subject: [PATCH 864/889] Hifiberry DAC+ADCPro DT overlay: add optional +Subject: [PATCH 862/941] Hifiberry DAC+ADCPro DT overlay: add optional headphone amp This is a copy of the approach from our DAC+ driver. @@ -253739,7 +253592,7 @@ index cafa2ccd7ff7..561cd84bbb79 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher Date: Wed, 6 Oct 2021 17:21:07 +0200 -Subject: [PATCH 865/889] Hifiberry DAC+ADCPro: adding optional headphone amp +Subject: [PATCH 863/941] Hifiberry DAC+ADCPro: adding optional headphone amp control This is a copy of the code and approach from our DAC+ driver. @@ -253890,7 +253743,7 @@ index 79eccdb4dc8c..517a70fba7d7 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sten Spans Date: Tue, 12 Oct 2021 20:10:00 +0200 -Subject: [PATCH 866/889] Add module for 8111h chip used in various CM4 boards +Subject: [PATCH 864/941] Add module for 8111h chip used in various CM4 boards --- arch/arm/configs/bcm2711_defconfig | 1 + @@ -253928,7 +253781,7 @@ index 2465c624456c..aae05dfcaaf3 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 8 Jul 2021 09:37:10 +0100 -Subject: [PATCH 867/889] clk: bcm2835: Pass DT node to rpi_firmware_get +Subject: [PATCH 865/941] 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. @@ -253958,7 +253811,7 @@ index 20155bb28e3c..39fabced602a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 14 Oct 2021 11:09:18 +0100 -Subject: [PATCH 868/889] drivers/gpio: Add a driver that wraps the PWM API as +Subject: [PATCH 866/941] 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 @@ -254161,7 +254014,7 @@ index 000000000000..89f5d6b353ab From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 15 Oct 2021 08:46:19 +0100 -Subject: [PATCH 869/889] mmc: sdhost: Pass DT pointer to rpi_firmware_get +Subject: [PATCH 867/941] mmc: sdhost: Pass DT pointer to rpi_firmware_get Using the rpi_firmware API as intended allows proper reference counting of the firmware device and means we can remove a downstream patch to @@ -254241,7 +254094,7 @@ index 7caba5e12f79..2c4124082785 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 15 Oct 2021 09:19:01 +0100 -Subject: [PATCH 870/889] ARM: dts: Give sdhost a firmware reference +Subject: [PATCH 868/941] ARM: dts: Give sdhost a firmware reference Using the rpi_firmware API as intended allows proper reference counting of the firmware device and means we can remove a downstream patch to @@ -254271,7 +254124,7 @@ index 8a0e2f200997..badcf341ecd2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 15 Oct 2021 11:45:36 +0100 -Subject: [PATCH 871/889] rtc: pcf85063: Always clear EXT_TEST from set_time +Subject: [PATCH 869/941] rtc: pcf85063: Always clear EXT_TEST from set_time Power-on reset after the insertion of a battery does not always complete successfully, leading to corrupted register content. The EXT_TEST bit @@ -254313,7 +254166,7 @@ index 62684ca3a665..fc293d4d8901 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 Oct 2021 17:33:05 +0100 -Subject: [PATCH 872/889] char: vcio: Rewrite as a firmware node child +Subject: [PATCH 870/941] char: vcio: Rewrite as a firmware node child The old vcio driver is a simple character device that manually locates the firmware driver. Initialising it before the firmware driver causes @@ -254556,7 +254409,7 @@ index a39155a94fb7..ac314617229c 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 12 Oct 2021 09:59:54 +0100 -Subject: [PATCH 873/889] ARM: dts: Make vcio a child of the firmware node +Subject: [PATCH 871/941] ARM: dts: Make vcio a child of the firmware node In order to resolve a potential startup order bug, the vcio driver has been rewritten as a platform driver that depends on a DT node for @@ -254592,7 +254445,7 @@ index 68a7e1c09db1..dc302248ae2a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 18 Oct 2021 11:12:42 +0100 -Subject: [PATCH 874/889] ARM: dts: bcm2835_audio missing firmware reference +Subject: [PATCH 872/941] ARM: dts: bcm2835_audio missing firmware reference The firmware driver has been changed to count its clients. An earlier commit removed the downstream patch permitting the hacky technique of @@ -254627,7 +254480,7 @@ index dc302248ae2a..efca67213816 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 18 Oct 2021 11:13:35 +0100 -Subject: [PATCH 875/889] ARM: dts: Delete vestigial vcsm node +Subject: [PATCH 873/941] ARM: dts: Delete vestigial vcsm node Signed-off-by: Phil Elwell --- @@ -254658,7 +254511,7 @@ index efca67213816..57e7d5f60d3e 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 18 Oct 2021 16:39:11 +0100 -Subject: [PATCH 876/889] config: Enable FSFS_FS_SECURITY +Subject: [PATCH 874/941] config: Enable FSFS_FS_SECURITY Add a negligible amount of core kernel code for capability-based access control on F2FS. @@ -254741,7 +254594,7 @@ index 26fe691cb9a2..00352da73009 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 19 Oct 2021 11:23:43 +0100 -Subject: [PATCH 877/889] gpio: bcm-virt: Fix the get() method +Subject: [PATCH 875/941] gpio: bcm-virt: Fix the get() method The get() method does not understand the on-the-wire encoding of the remote GPIO states, thinking they are simple on/off bits when they are @@ -254776,7 +254629,7 @@ index 49e28ad9760e..55c40190e88a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Erik Tagirov Date: Wed, 20 Oct 2021 09:51:26 +0200 -Subject: [PATCH 878/889] configs: Add CONFIG_FB_SIMPLE to bcmrpi3_defconfig +Subject: [PATCH 876/941] configs: Add CONFIG_FB_SIMPLE to bcmrpi3_defconfig See: https://github.com/raspberrypi/linux/pull/4640 @@ -254804,7 +254657,7 @@ index 00352da73009..a137f1c0721a 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:41:55 +0100 -Subject: [PATCH 879/889] media: i2c: imx219: Sensor should report RAW color +Subject: [PATCH 877/941] media: i2c: imx219: Sensor should report RAW color space Tested on Raspberry Pi running libcamera. @@ -254843,7 +254696,7 @@ index 79faa8cce94e..6aed851865ec 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:44:01 +0100 -Subject: [PATCH 880/889] media: i2c: imx290: Sensor should report RAW color +Subject: [PATCH 878/941] media: i2c: imx290: Sensor should report RAW color space Tested on Raspberry Pi running libcamera. @@ -254873,7 +254726,7 @@ index a26106c41cc6..def912308daa 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:44:43 +0100 -Subject: [PATCH 881/889] media: i2c: imx477: Sensor should report RAW color +Subject: [PATCH 879/941] media: i2c: imx477: Sensor should report RAW color space Tested on Raspberry Pi running libcamera. @@ -254903,7 +254756,7 @@ index 05cb530d331e..cd3296f8ab41 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:45:07 +0100 -Subject: [PATCH 882/889] media: i2c: imx519: Sensor should report RAW color +Subject: [PATCH 880/941] media: i2c: imx519: Sensor should report RAW color space Tested on Raspberry Pi running libcamera. @@ -254933,7 +254786,7 @@ index 4e98704a6834..675b4a94e065 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:47:00 +0100 -Subject: [PATCH 883/889] media: i2c: ov5647: Sensor should report RAW color +Subject: [PATCH 881/941] media: i2c: ov5647: Sensor should report RAW color space Tested on Raspberry Pi running libcamera. @@ -254999,7 +254852,7 @@ index 98a5329d68fb..03c92e419806 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:47:20 +0100 -Subject: [PATCH 884/889] media: i2c: ov9281: Sensor should report RAW color +Subject: [PATCH 882/941] media: i2c: ov9281: Sensor should report RAW color space Tested on Raspberry Pi running libcamera. @@ -255047,7 +254900,7 @@ index a6ffcdd47b21..f7ec4470d356 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Thu, 21 Oct 2021 14:49:15 +0100 -Subject: [PATCH 885/889] vc04_services: isp: Report input node as wanting full +Subject: [PATCH 883/941] vc04_services: isp: Report input node as wanting full range RAW color space RAW color spaces are more usually reported as having full range @@ -255082,7 +254935,7 @@ index 08dce8bba9bb..df57c2f74a03 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 23 Sep 2020 15:16:18 +0100 -Subject: [PATCH 886/889] media/bcm2835-unicam: Parse pad numbers correctly +Subject: [PATCH 884/941] 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 @@ -255319,7 +255172,7 @@ index 59163f93b207..bbcaa1bd419f 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 15 Oct 2021 17:57:27 +0100 -Subject: [PATCH 887/889] media/bcm2835-unicam: Add support for configuration +Subject: [PATCH 885/941] media/bcm2835-unicam: Add support for configuration via MC API Adds Media Controller API support for more complex pipelines. @@ -258038,7 +257891,7 @@ index bbcaa1bd419f..d4a005657ca2 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Tue, 5 Jul 2016 11:41:15 +0200 -Subject: [PATCH 888/889] media: v4l: subdev: Improve link format validation +Subject: [PATCH 886/941] media: v4l: subdev: Improve link format validation debug messages Commit db8e94e7cf27d8bc101ef5b8ee5c1af77cd5b1c9 upstream @@ -258127,7 +257980,7 @@ index fbf0dcb313c8..bf3aa9252458 100644 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 22 Oct 2021 13:11:38 +0100 -Subject: [PATCH 889/889] media: bcm2835-codec: Limit video callbacks +Subject: [PATCH 887/941] media: bcm2835-codec: Limit video callbacks Limit the number of allowed video callbacks. This helps with limiting the size of the coded input FIFO which in turn helps to control latency. @@ -258165,3 +258018,7496 @@ index 6078d6e2ace0..e8452c82d088 100644 -- 2.18.4 + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Mon, 25 Oct 2021 11:48:18 +0100 +Subject: [PATCH 888/941] ARM: dts: vc4-kms-v3d: Always disable firmware HDMI + +Both the firmware audio driver and the vc4-kms-v3d driver are capable +of providing HDMI audio, but only one should be active at any time. +The vc4-kms-v3d overlays disable the firmware audio driver, but they +also have a noaudio parameter that as well as disabling the ARM-side +HDMI audio also re-enables the firmware HDMI audio. This is not +guaranteed to work and has been seen to break the display completely. + +Modify the noaudio parameters so that the firmware HDMI audio support +remains disabled. + +See: https://github.com/raspberrypi/linux/issues/4651 + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 4 ++-- + arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts +index 5a4efdeed663..62e1d77a8182 100644 +--- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts ++++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts +@@ -116,8 +116,8 @@ + }; + + __overrides__ { +- audio = <0>,"!13", <0>,"=14"; +- noaudio = <0>,"=13", <0>,"!14"; ++ audio = <0>,"!13"; ++ noaudio = <0>,"=13"; + nocomposite = <0>, "!11"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts +index 4285e12a4e53..76229cad7803 100644 +--- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts ++++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts +@@ -180,7 +180,7 @@ + __overrides__ { + audio = <0>,"!17"; + audio1 = <0>,"!18"; +- noaudio = <0>,"=17", <0>,"=18", <0>,"!19"; ++ noaudio = <0>,"=17", <0>,"=18"; + composite = <0>, "!1", + <0>, "!2", + <0>, "!3", +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: soyer +Date: Sat, 23 Oct 2021 12:23:50 +0200 +Subject: [PATCH 889/941] staging/bcm2835-camera: Add support for H264_MIN_QP, + H264_MAX_QP + +Signed-off-by: Gergo Koteles +--- + .../bcm2835-camera/bcm2835-camera.h | 2 +- + .../vc04_services/bcm2835-camera/controls.c | 22 +++++++++++++++++++ + 2 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h +index 75524adff0f5..a78973ae94de 100644 +--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h ++++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h +@@ -13,7 +13,7 @@ + * core driver device + */ + +-#define V4L2_CTRL_COUNT 29 /* number of v4l controls */ ++#define V4L2_CTRL_COUNT 31 /* number of v4l controls */ + + enum { + COMP_CAMERA = 0, +diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c +index f3480a5c5170..de59f435696d 100644 +--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c ++++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c +@@ -1270,6 +1270,28 @@ static const struct bm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = { + .mmal_id = MMAL_PARAMETER_INTRAPERIOD, + .setter = ctrl_set_video_encode_param_output, + }, ++ { ++ .id = V4L2_CID_MPEG_VIDEO_H264_MIN_QP, ++ .type = MMAL_CONTROL_TYPE_STD, ++ .min = 0, ++ .max = 51, ++ .def = 0, ++ .step = 1, ++ .imenu = NULL, ++ .mmal_id = MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT, ++ .setter = ctrl_set_video_encode_param_output, ++ }, ++ { ++ .id = V4L2_CID_MPEG_VIDEO_H264_MAX_QP, ++ .type = MMAL_CONTROL_TYPE_STD, ++ .min = 0, ++ .max = 51, ++ .def = 0, ++ .step = 1, ++ .imenu = NULL, ++ .mmal_id = MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT, ++ .setter = ctrl_set_video_encode_param_output, ++ }, + }; + + int bm2835_mmal_set_all_camera_controls(struct bm2835_mmal_dev *dev) +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Gergo Koteles +Date: Sun, 24 Oct 2021 23:18:09 +0200 +Subject: [PATCH 890/941] staging/bcm2835-camera: Add support for + MPEG_VIDEO_FORCE_KEY_FRAME + +Signed-off-by: Gergo Koteles +--- + .../vc04_services/bcm2835-camera/bcm2835-camera.h | 2 +- + .../staging/vc04_services/bcm2835-camera/controls.c | 11 +++++++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h +index a78973ae94de..fdbcc35ece5b 100644 +--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h ++++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h +@@ -13,7 +13,7 @@ + * core driver device + */ + +-#define V4L2_CTRL_COUNT 31 /* number of v4l controls */ ++#define V4L2_CTRL_COUNT 32 /* number of v4l controls */ + + enum { + COMP_CAMERA = 0, +diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c +index de59f435696d..b1b02fbc473d 100644 +--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c ++++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c +@@ -1292,6 +1292,17 @@ static const struct bm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = { + .mmal_id = MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT, + .setter = ctrl_set_video_encode_param_output, + }, ++ { ++ .id = V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME, ++ .type = MMAL_CONTROL_TYPE_STD, ++ .min = 0, ++ .max = 0, ++ .def = 0, ++ .step = 0, ++ .imenu = NULL, ++ .mmal_id = MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME, ++ .setter = ctrl_set_video_encode_param_output, ++ }, + }; + + int bm2835_mmal_set_all_camera_controls(struct bm2835_mmal_dev *dev) +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Tue, 19 Oct 2021 14:13:53 +0100 +Subject: [PATCH 891/941] clk-raspberrypi: Support VEC clock + +Signed-off-by: Dom Cobley +--- + drivers/clk/bcm/clk-raspberrypi.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c +index 94ce38a2d5aa..0e3be5ec61ca 100644 +--- a/drivers/clk/bcm/clk-raspberrypi.c ++++ b/drivers/clk/bcm/clk-raspberrypi.c +@@ -33,6 +33,7 @@ enum rpi_firmware_clk_id { + RPI_FIRMWARE_EMMC2_CLK_ID, + RPI_FIRMWARE_M2MC_CLK_ID, + RPI_FIRMWARE_PIXEL_BVB_CLK_ID, ++ RPI_FIRMWARE_VEC_CLK_ID, + RPI_FIRMWARE_NUM_CLK_ID, + }; + +@@ -51,6 +52,7 @@ static char *rpi_firmware_clk_names[] = { + [RPI_FIRMWARE_EMMC2_CLK_ID] = "emmc2", + [RPI_FIRMWARE_M2MC_CLK_ID] = "m2mc", + [RPI_FIRMWARE_PIXEL_BVB_CLK_ID] = "pixel-bvb", ++ [RPI_FIRMWARE_VEC_CLK_ID] = "vec", + }; + + #define RPI_FIRMWARE_STATE_ENABLE_BIT BIT(0) +@@ -273,6 +275,7 @@ static int raspberrypi_discover_clocks(struct raspberrypi_clk *rpi, + case RPI_FIRMWARE_V3D_CLK_ID: + case RPI_FIRMWARE_HEVC_CLK_ID: + case RPI_FIRMWARE_PIXEL_BVB_CLK_ID: ++ case RPI_FIRMWARE_VEC_CLK_ID: + hw = raspberrypi_clk_register(rpi, clks->parent, + clks->id); + if (IS_ERR(hw)) +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Tue, 19 Oct 2021 14:15:45 +0100 +Subject: [PATCH 892/941] dt: Move VEC clock to clk-raspberrypi + +clk-2835 is deprecated and gets an innacurate clock for VEC (107MHz). +Switch to clk-raspberrypi which uses the right PLL to get an accurate 108MHz. + +Signed-off-by: Dom Cobley +--- + arch/arm/boot/dts/bcm2711.dtsi | 2 +- + arch/arm/boot/dts/bcm2835-common.dtsi | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi +index 05ef7089868f..b1ea654eac64 100644 +--- a/arch/arm/boot/dts/bcm2711.dtsi ++++ b/arch/arm/boot/dts/bcm2711.dtsi +@@ -303,7 +303,7 @@ + vec: vec@7ec13000 { + compatible = "brcm,bcm2711-vec"; + reg = <0x7ec13000 0x1000>; +- clocks = <&clocks BCM2835_CLOCK_VEC>; ++ clocks = <&firmware_clocks 15>; + interrupts = ; + status = "disabled"; + }; +diff --git a/arch/arm/boot/dts/bcm2835-common.dtsi b/arch/arm/boot/dts/bcm2835-common.dtsi +index 06d8c3882cb7..15f3975f1ca1 100644 +--- a/arch/arm/boot/dts/bcm2835-common.dtsi ++++ b/arch/arm/boot/dts/bcm2835-common.dtsi +@@ -109,7 +109,7 @@ + vec: vec@7e806000 { + compatible = "brcm,bcm2835-vec"; + reg = <0x7e806000 0x1000>; +- clocks = <&clocks BCM2835_CLOCK_VEC>; ++ clocks = <&firmware_clocks 15>; + interrupts = <2 27>; + status = "disabled"; + }; +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Tue, 19 Oct 2021 14:14:55 +0100 +Subject: [PATCH 893/941] clk-bcm2835: Remove VEC clock support + +Signed-off-by: Dom Cobley +--- + drivers/clk/bcm/clk-bcm2835.c | 15 --------------- + 1 file changed, 15 deletions(-) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index 39fabced602a..7fc2d55add2e 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -2214,21 +2214,6 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { + .frac_bits = 12, + .tcnt_mux = 28), + +- /* TV encoder clock. Only operating frequency is 108Mhz. */ +- [BCM2835_CLOCK_VEC] = REGISTER_PER_CLK( +- SOC_ALL, +- .name = "vec", +- .ctl_reg = CM_VECCTL, +- .div_reg = CM_VECDIV, +- .int_bits = 4, +- .frac_bits = 0, +- /* +- * Allow rate change propagation only on PLLH_AUX which is +- * assigned index 7 in the parent array. +- */ +- .set_rate_parent = BIT(7), +- .tcnt_mux = 29), +- + /* dsi clocks */ + [BCM2835_CLOCK_DSI0E] = REGISTER_PER_CLK( + SOC_ALL, +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 27 Apr 2021 14:24:21 +0200 +Subject: [PATCH 894/941] 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 +to make a LUT unwieldy. + +Implement a simple conversion from a 256 entry LUT that userspace +is likely to expect to 16 evenly spread points in the PWL. This +could be improved with curve fitting at a later date. + +Co-developed-by: Juerg Haefliger +Signed-off-by: Juerg Haefliger +Signed-off-by: Dave Stevenson +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_crtc.c | 35 +++++++++++--- + drivers/gpu/drm/vc4/vc4_drv.h | 28 +++++++++-- + drivers/gpu/drm/vc4/vc4_hvs.c | 87 ++++++++++++++++++++++++++++++++-- + drivers/gpu/drm/vc4/vc4_regs.h | 22 +++++++++ + 4 files changed, 159 insertions(+), 13 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c +index 59e10c37b740..0f9d57a7762a 100644 +--- a/drivers/gpu/drm/vc4/vc4_crtc.c ++++ b/drivers/gpu/drm/vc4/vc4_crtc.c +@@ -1189,19 +1189,42 @@ int vc4_crtc_init(struct drm_device *drm, struct vc4_crtc *vc4_crtc, + + if (!vc4->hvs->hvs5) { + drm_mode_crtc_set_gamma_size(crtc, ARRAY_SIZE(vc4_crtc->lut_r)); ++ } else { ++ /* This is a lie for hvs5 which uses a 16 point PWL, but it ++ * allows for something smarter than just 16 linearly spaced ++ * segments. Conversion is done in vc5_hvs_update_gamma_lut. ++ */ ++ drm_mode_crtc_set_gamma_size(crtc, 256); ++ } + +- drm_crtc_enable_color_mgmt(crtc, 0, false, crtc->gamma_size); ++ drm_crtc_enable_color_mgmt(crtc, 0, false, crtc->gamma_size); + ++ if (!vc4->hvs->hvs5) { + /* We support CTM, but only for one CRTC at a time. It's therefore + * implemented as private driver state in vc4_kms, not here. + */ + drm_crtc_enable_color_mgmt(crtc, 0, true, crtc->gamma_size); +- } + +- for (i = 0; i < crtc->gamma_size; i++) { +- vc4_crtc->lut_r[i] = i; +- vc4_crtc->lut_g[i] = i; +- vc4_crtc->lut_b[i] = i; ++ /* Initialize the VC4 gamma LUTs */ ++ for (i = 0; i < crtc->gamma_size; i++) { ++ vc4_crtc->lut_r[i] = i; ++ vc4_crtc->lut_g[i] = i; ++ vc4_crtc->lut_b[i] = i; ++ } ++ } else { ++ /* Initialize the VC5 gamma PWL entries. Assume 12-bit pipeline, ++ * evenly spread over full range. ++ */ ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++) { ++ vc4_crtc->pwl_r[i] = ++ VC5_HVS_SET_GAMMA_ENTRY(i << 8, i << 12, 1 << 8); ++ vc4_crtc->pwl_g[i] = ++ VC5_HVS_SET_GAMMA_ENTRY(i << 8, i << 12, 1 << 8); ++ vc4_crtc->pwl_b[i] = ++ VC5_HVS_SET_GAMMA_ENTRY(i << 8, i << 12, 1 << 8); ++ vc4_crtc->pwl_a[i] = ++ VC5_HVS_SET_GAMMA_ENTRY(i << 8, i << 12, 1 << 8); ++ } + } + + return 0; +diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h +index 7c749e08cb0c..0a07755b7b5e 100644 +--- a/drivers/gpu/drm/vc4/vc4_drv.h ++++ b/drivers/gpu/drm/vc4/vc4_drv.h +@@ -19,6 +19,7 @@ + #include + + #include "uapi/drm/vc4_drm.h" ++#include "vc4_regs.h" + + struct drm_device; + struct drm_gem_object; +@@ -482,6 +483,17 @@ struct vc4_pv_data { + + }; + ++struct vc5_gamma_entry { ++ u32 x_c_terms; ++ u32 grad_term; ++}; ++ ++#define VC5_HVS_SET_GAMMA_ENTRY(x, c, g) (struct vc5_gamma_entry){ \ ++ .x_c_terms = VC4_SET_FIELD((x), SCALER5_DSPGAMMA_OFF_X) | \ ++ VC4_SET_FIELD((c), SCALER5_DSPGAMMA_OFF_C), \ ++ .grad_term = (g) \ ++} ++ + struct vc4_crtc { + struct drm_crtc base; + struct platform_device *pdev; +@@ -491,9 +503,19 @@ struct vc4_crtc { + /* Timestamp at start of vblank irq - unaffected by lock delays. */ + ktime_t t_vblank; + +- u8 lut_r[256]; +- u8 lut_g[256]; +- u8 lut_b[256]; ++ union { ++ struct { /* VC4 gamma LUT */ ++ u8 lut_r[256]; ++ u8 lut_g[256]; ++ u8 lut_b[256]; ++ }; ++ struct { /* VC5 gamma PWL entries */ ++ struct vc5_gamma_entry pwl_r[SCALER5_DSPGAMMA_NUM_POINTS]; ++ struct vc5_gamma_entry pwl_g[SCALER5_DSPGAMMA_NUM_POINTS]; ++ struct vc5_gamma_entry pwl_b[SCALER5_DSPGAMMA_NUM_POINTS]; ++ struct vc5_gamma_entry pwl_a[SCALER5_DSPGAMMA_NUM_POINTS]; ++ }; ++ }; + + struct drm_pending_vblank_event *event; + +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index 6049923422d0..c4851e1436c2 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -236,6 +236,80 @@ static void vc4_hvs_update_gamma_lut(struct drm_crtc *crtc) + vc4_hvs_lut_load(crtc); + } + ++static void vc5_hvs_write_gamma_entry(struct vc4_dev *vc4, ++ u32 offset, ++ struct vc5_gamma_entry *gamma) ++{ ++ HVS_WRITE(offset, gamma->x_c_terms); ++ HVS_WRITE(offset + 4, gamma->grad_term); ++} ++ ++static void vc5_hvs_lut_load(struct drm_crtc *crtc) ++{ ++ struct drm_device *dev = crtc->dev; ++ struct vc4_dev *vc4 = to_vc4_dev(dev); ++ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); ++ struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); ++ u32 i; ++ u32 offset = SCALER5_DSPGAMMA_START + ++ vc4_state->assigned_channel * SCALER5_DSPGAMMA_CHAN_OFFSET; ++ ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) ++ vc5_hvs_write_gamma_entry(vc4, offset, &vc4_crtc->pwl_r[i]); ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) ++ vc5_hvs_write_gamma_entry(vc4, offset, &vc4_crtc->pwl_g[i]); ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) ++ vc5_hvs_write_gamma_entry(vc4, offset, &vc4_crtc->pwl_b[i]); ++ ++ if (vc4_state->assigned_channel == 2) { ++ /* Alpha only valid on channel 2 */ ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) ++ vc5_hvs_write_gamma_entry(vc4, offset, &vc4_crtc->pwl_a[i]); ++ } ++} ++ ++static void vc5_hvs_update_gamma_lut(struct drm_crtc *crtc) ++{ ++ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); ++ struct drm_color_lut *lut = crtc->state->gamma_lut->data; ++ unsigned int step, i; ++ u32 start, end; ++ ++#define VC5_HVS_UPDATE_GAMMA_ENTRY_FROM_LUT(pwl, chan) \ ++ start = drm_color_lut_extract(lut[i * step].chan, 12); \ ++ end = drm_color_lut_extract(lut[(i + 1) * step - 1].chan, 12); \ ++ \ ++ /* Negative gradients not permitted by the hardware, so \ ++ * flatten such points out. \ ++ */ \ ++ if (end < start) \ ++ end = start; \ ++ \ ++ /* Assume 12bit pipeline. \ ++ * X evenly spread over full range (12 bit). \ ++ * C as U12.4 format. \ ++ * Gradient as U4.8 format. \ ++ */ \ ++ vc4_crtc->pwl[i] = \ ++ VC5_HVS_SET_GAMMA_ENTRY(i << 8, start << 4, \ ++ ((end - start) << 4) / (step - 1)) ++ ++ /* HVS5 has a 16 point piecewise linear function for each colour ++ * channel (including alpha on channel 2) on each display channel. ++ * ++ * Currently take a crude subsample of the gamma LUT, but this could ++ * be improved to implement curve fitting. ++ */ ++ step = crtc->gamma_size / SCALER5_DSPGAMMA_NUM_POINTS; ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++) { ++ VC5_HVS_UPDATE_GAMMA_ENTRY_FROM_LUT(pwl_r, red); ++ VC5_HVS_UPDATE_GAMMA_ENTRY_FROM_LUT(pwl_g, green); ++ VC5_HVS_UPDATE_GAMMA_ENTRY_FROM_LUT(pwl_b, blue); ++ } ++ ++ vc5_hvs_lut_load(crtc); ++} ++ + int vc4_hvs_get_fifo_from_output(struct drm_device *dev, unsigned int output) + { + struct vc4_dev *vc4 = to_vc4_dev(dev); +@@ -329,14 +403,16 @@ static int vc4_hvs_init_channel(struct vc4_dev *vc4, struct drm_crtc *crtc, + dispbkgndx &= ~SCALER_DISPBKGND_INTERLACE; + + HVS_WRITE(SCALER_DISPBKGNDX(chan), dispbkgndx | +- SCALER_DISPBKGND_AUTOHS | +- ((!vc4->hvs->hvs5) ? SCALER_DISPBKGND_GAMMA : 0) | ++ SCALER_DISPBKGND_AUTOHS | SCALER_DISPBKGND_GAMMA | + (interlace ? SCALER_DISPBKGND_INTERLACE : 0)); + + /* Reload the LUT, since the SRAMs would have been disabled if + * all CRTCs had SCALER_DISPBKGND_GAMMA unset at once. + */ +- vc4_hvs_lut_load(crtc); ++ if (!vc4->hvs->hvs5) ++ vc4_hvs_lut_load(crtc); ++ else ++ vc5_hvs_lut_load(crtc); + + return 0; + } +@@ -520,7 +596,10 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc, + u32 dispbkgndx = HVS_READ(SCALER_DISPBKGNDX(vc4_state->assigned_channel)); + + if (crtc->state->gamma_lut) { +- vc4_hvs_update_gamma_lut(crtc); ++ if (!vc4->hvs->hvs5) ++ vc4_hvs_update_gamma_lut(crtc); ++ else ++ vc5_hvs_update_gamma_lut(crtc); + dispbkgndx |= SCALER_DISPBKGND_GAMMA; + } else { + /* Unsetting DISPBKGND_GAMMA skips the gamma lut step +diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h +index 7538b84a6dca..5989b2ff28c7 100644 +--- a/drivers/gpu/drm/vc4/vc4_regs.h ++++ b/drivers/gpu/drm/vc4/vc4_regs.h +@@ -491,6 +491,28 @@ + #define SCALER_DLIST_START 0x00002000 + #define SCALER_DLIST_SIZE 0x00004000 + ++/* Gamma PWL for each channel. 16 points for each of 4 colour channels (alpha ++ * only on channel 2). 8 bytes per entry, offsets first, then gradient: ++ * Y = GRAD * X + C ++ * ++ * Values for X and C are left justified, and vary depending on the width of ++ * the HVS channel: ++ * 8-bit pipeline: X uses [31:24], C is U8.8 format, and GRAD is U4.8. ++ * 12-bit pipeline: X uses [31:20], C is U12.4 format, and GRAD is U4.8. ++ * ++ * The 3 HVS channels start at 0x400 offsets (ie chan 1 starts at 0x2400, and ++ * chan 2 at 0x2800). ++ */ ++#define SCALER5_DSPGAMMA_NUM_POINTS 16 ++#define SCALER5_DSPGAMMA_START 0x00002000 ++#define SCALER5_DSPGAMMA_CHAN_OFFSET 0x400 ++# define SCALER5_DSPGAMMA_OFF_X_MASK VC4_MASK(31, 20) ++# define SCALER5_DSPGAMMA_OFF_X_SHIFT 20 ++# define SCALER5_DSPGAMMA_OFF_C_MASK VC4_MASK(15, 0) ++# define SCALER5_DSPGAMMA_OFF_C_SHIFT 0 ++# define SCALER5_DSPGAMMA_GRAD_MASK VC4_MASK(11, 0) ++# define SCALER5_DSPGAMMA_GRAD_SHIFT 0 ++ + #define SCALER5_DLIST_START 0x00004000 + + # define VC4_HDMI_SW_RESET_FORMAT_DETECT BIT(1) +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Wed, 28 Apr 2021 12:32:10 +0200 +Subject: [PATCH 895/941] 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 +16 point PWL entries as used by the BCM2711. + +Co-developed-by: Juerg Haefliger +Signed-off-by: Juerg Haefliger +Signed-off-by: Dave Stevenson +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hvs.c | 81 +++++++++++++++++++++++++++++++++++ + 1 file changed, 81 insertions(+) + +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index c4851e1436c2..941c7e3b6ed4 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -134,6 +134,84 @@ static int vc4_hvs_debugfs_dlist(struct seq_file *m, void *data) + return 0; + } + ++static int vc5_hvs_debugfs_gamma(struct seq_file *m, void *data) ++{ ++ struct drm_info_node *node = m->private; ++ struct drm_device *dev = node->minor->dev; ++ struct vc4_dev *vc4 = to_vc4_dev(dev); ++ struct drm_printer p = drm_seq_file_printer(m); ++ unsigned int i, chan; ++ u32 dispstat, dispbkgndx; ++ ++ for (chan = 0; chan < SCALER_CHANNELS_COUNT; chan++) { ++ u32 x_c, grad; ++ u32 offset = SCALER5_DSPGAMMA_START + ++ chan * SCALER5_DSPGAMMA_CHAN_OFFSET; ++ ++ dispstat = VC4_GET_FIELD(HVS_READ(SCALER_DISPSTATX(chan)), ++ SCALER_DISPSTATX_MODE); ++ if (dispstat == SCALER_DISPSTATX_MODE_DISABLED || ++ dispstat == SCALER_DISPSTATX_MODE_EOF) { ++ drm_printf(&p, "HVS channel %u: Channel disabled\n", chan); ++ continue; ++ } ++ ++ dispbkgndx = HVS_READ(SCALER_DISPBKGNDX(chan)); ++ if (!(dispbkgndx & SCALER_DISPBKGND_GAMMA)) { ++ drm_printf(&p, "HVS channel %u: Gamma disabled\n", chan); ++ continue; ++ } ++ ++ drm_printf(&p, "HVS channel %u:\n", chan); ++ drm_printf(&p, " red:\n"); ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) { ++ x_c = HVS_READ(offset); ++ grad = HVS_READ(offset + 4); ++ drm_printf(&p, " %08x %08x - x %u, c %u, grad %u\n", ++ x_c, grad, ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_X), ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_C), ++ grad); ++ } ++ drm_printf(&p, " green:\n"); ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) { ++ x_c = HVS_READ(offset); ++ grad = HVS_READ(offset + 4); ++ drm_printf(&p, " %08x %08x - x %u, c %u, grad %u\n", ++ x_c, grad, ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_X), ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_C), ++ grad); ++ } ++ drm_printf(&p, " blue:\n"); ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) { ++ x_c = HVS_READ(offset); ++ grad = HVS_READ(offset + 4); ++ drm_printf(&p, " %08x %08x - x %u, c %u, grad %u\n", ++ x_c, grad, ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_X), ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_C), ++ grad); ++ } ++ ++ /* Alpha only valid on channel 2 */ ++ if (chan != 2) ++ continue; ++ ++ drm_printf(&p, " alpha:\n"); ++ for (i = 0; i < SCALER5_DSPGAMMA_NUM_POINTS; i++, offset += 8) { ++ x_c = HVS_READ(offset); ++ grad = HVS_READ(offset + 4); ++ drm_printf(&p, " %08x %08x - x %u, c %u, grad %u\n", ++ x_c, grad, ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_X), ++ VC4_GET_FIELD(x_c, SCALER5_DSPGAMMA_OFF_C), ++ grad); ++ } ++ } ++ return 0; ++} ++ + /* The filter kernel is composed of dwords each containing 3 9-bit + * signed integers packed next to each other. + */ +@@ -795,6 +873,9 @@ static int vc4_hvs_bind(struct device *dev, struct device *master, void *data) + NULL); + vc4_debugfs_add_file(drm, "hvs_dlists", vc4_hvs_debugfs_dlist, + NULL); ++ if (hvs->hvs5) ++ vc4_debugfs_add_file(drm, "hvs_gamma", vc5_hvs_debugfs_gamma, ++ NULL); + + return 0; + } +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Mon, 14 Jun 2021 15:28:30 +0200 +Subject: [PATCH 896/941] 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. + +Since the pixelvalve cannot have its assigned channel halted without +stalling unless it's disabled as well, in our case that means forcing a +full disable / enable cycle on the pipeline. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_crtc.c | 17 +++++++++++++++++ + drivers/gpu/drm/vc4/vc4_drv.h | 3 +++ + drivers/gpu/drm/vc4/vc4_hvs.c | 32 +++++++++++++++++++++++++++++++- + 3 files changed, 51 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c +index 0f9d57a7762a..e349a5a55c67 100644 +--- a/drivers/gpu/drm/vc4/vc4_crtc.c ++++ b/drivers/gpu/drm/vc4/vc4_crtc.c +@@ -292,6 +292,23 @@ struct drm_encoder *vc4_get_crtc_encoder(struct drm_crtc *crtc, + return NULL; + } + ++#define drm_for_each_connector_mask(connector, dev, connector_mask) \ ++ list_for_each_entry((connector), &(dev)->mode_config.connector_list, head) \ ++ for_each_if ((connector_mask) & drm_connector_mask(connector)) ++ ++struct drm_connector *vc4_get_crtc_connector(struct drm_crtc *crtc, ++ struct drm_crtc_state *state) ++{ ++ struct drm_connector *connector; ++ ++ WARN_ON(hweight32(state->connector_mask) > 1); ++ ++ drm_for_each_connector_mask(connector, crtc->dev, state->connector_mask) ++ return connector; ++ ++ return NULL; ++} ++ + static void vc4_crtc_pixelvalve_reset(struct drm_crtc *crtc) + { + struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); +diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h +index 0a07755b7b5e..6a260b1e60ad 100644 +--- a/drivers/gpu/drm/vc4/vc4_drv.h ++++ b/drivers/gpu/drm/vc4/vc4_drv.h +@@ -542,6 +542,9 @@ vc4_crtc_to_vc4_pv_data(const struct vc4_crtc *crtc) + return container_of(data, struct vc4_pv_data, base); + } + ++struct drm_connector *vc4_get_crtc_connector(struct drm_crtc *crtc, ++ struct drm_crtc_state *state); ++ + struct drm_encoder *vc4_get_crtc_encoder(struct drm_crtc *crtc, + struct drm_crtc_state *state); + +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index 941c7e3b6ed4..1eeb0cd73a2b 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -519,6 +519,36 @@ void vc4_hvs_stop_channel(struct drm_device *dev, unsigned int chan) + SCALER_DISPSTATX_EMPTY); + } + ++static int vc4_hvs_gamma_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 drm_connector_state *conn_state; ++ struct drm_connector *connector; ++ struct drm_device *dev = crtc->dev; ++ struct vc4_dev *vc4 = to_vc4_dev(dev); ++ ++ if (!vc4->hvs->hvs5) ++ return 0; ++ ++ if (!crtc_state->color_mgmt_changed) ++ return 0; ++ ++ connector = vc4_get_crtc_connector(crtc, crtc_state); ++ if (!connector) ++ return -EINVAL; ++ ++ if (!(connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)) ++ return 0; ++ ++ conn_state = drm_atomic_get_connector_state(state, connector); ++ if (!conn_state) ++ return -EINVAL; ++ ++ crtc_state->mode_changed = true; ++ return 0; ++} ++ + 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); +@@ -549,7 +579,7 @@ int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state) + if (ret) + return ret; + +- return 0; ++ return vc4_hvs_gamma_check(crtc, state); + } + + static void vc4_hvs_update_dlist(struct drm_crtc *crtc) +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 9 Sep 2021 10:37:15 +0100 +Subject: [PATCH 897/941] ARM: dts: Add Pi Zero 2 support + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/bcm2710-rpi-zero-2.dts | 177 ++++++++++++++++++ + arch/arm64/boot/dts/broadcom/Makefile | 1 + + .../boot/dts/broadcom/bcm2710-rpi-zero-2.dts | 1 + + 4 files changed, 180 insertions(+) + create mode 100644 arch/arm/boot/dts/bcm2710-rpi-zero-2.dts + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2.dts + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 12cd8bf582e1..66956d0f2c18 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -7,6 +7,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \ + bcm2708-rpi-cm.dtb \ + bcm2708-rpi-zero.dtb \ + bcm2708-rpi-zero-w.dtb \ ++ bcm2710-rpi-zero-2.dtb \ + bcm2709-rpi-2-b.dtb \ + bcm2710-rpi-2-b.dtb \ + bcm2710-rpi-3-b.dtb \ +diff --git a/arch/arm/boot/dts/bcm2710-rpi-zero-2.dts b/arch/arm/boot/dts/bcm2710-rpi-zero-2.dts +new file mode 100644 +index 000000000000..42185a450666 +--- /dev/null ++++ b/arch/arm/boot/dts/bcm2710-rpi-zero-2.dts +@@ -0,0 +1,177 @@ ++/dts-v1/; ++ ++#include "bcm2710.dtsi" ++#include "bcm2709-rpi.dtsi" ++#include "bcm283x-rpi-csi1-2lane.dtsi" ++#include "bcm283x-rpi-i2c0mux_0_44.dtsi" ++#include "bcm2708-rpi-bt.dtsi" ++#include "bcm283x-rpi-cam1-regulator.dtsi" ++ ++/ { ++ compatible = "raspberrypi,model-zero-2", "brcm,bcm2837"; ++ model = "Raspberry Pi Zero 2"; ++ ++ chosen { ++ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1"; ++ }; ++ ++ aliases { ++ serial0 = &uart1; ++ serial1 = &uart0; ++ mmc1 = &mmcnr; ++ }; ++}; ++ ++&gpio { ++ spi0_pins: spi0_pins { ++ brcm,pins = <9 10 11>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ spi0_cs_pins: spi0_cs_pins { ++ brcm,pins = <8 7>; ++ brcm,function = <1>; /* output */ ++ }; ++ ++ i2c0_pins: i2c0 { ++ brcm,pins = <0 1>; ++ brcm,function = <4>; ++ }; ++ ++ i2c1_pins: i2c1 { ++ brcm,pins = <2 3>; ++ brcm,function = <4>; ++ }; ++ ++ i2s_pins: i2s { ++ brcm,pins = <18 19 20 21>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ sdio_pins: sdio_pins { ++ brcm,pins = <34 35 36 37 38 39>; ++ brcm,function = <7>; // alt3 = SD1 ++ brcm,pull = <0 2 2 2 2 2>; ++ }; ++ ++ bt_pins: bt_pins { ++ brcm,pins = <43>; ++ brcm,function = <4>; /* alt0:GPCLK2 */ ++ brcm,pull = <0>; ++ }; ++ ++ uart0_pins: uart0_pins { ++ brcm,pins = <30 31 32 33>; ++ brcm,function = <7>; /* alt3=UART0 */ ++ brcm,pull = <2 0 0 2>; /* up none none up */ ++ }; ++ ++ uart1_pins: uart1_pins { ++ brcm,pins; ++ brcm,function; ++ brcm,pull; ++ }; ++ ++ audio_pins: audio_pins { ++ brcm,pins = <>; ++ brcm,function = <>; ++ }; ++}; ++ ++&mmcnr { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdio_pins>; ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pins &bt_pins>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "okay"; ++}; ++ ++&spi0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; ++ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; ++ ++ spidev0: spidev@0{ ++ compatible = "spidev"; ++ reg = <0>; /* CE0 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <125000000>; ++ }; ++ ++ spidev1: spidev@1{ ++ compatible = "spidev"; ++ reg = <1>; /* CE1 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <125000000>; ++ }; ++}; ++ ++&i2c0if { ++ clock-frequency = <100000>; ++}; ++ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c1_pins>; ++ clock-frequency = <100000>; ++}; ++ ++&i2c2 { ++ clock-frequency = <100000>; ++}; ++ ++&i2s { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s_pins>; ++}; ++ ++&leds { ++ act_led: led-act { ++ label = "led0"; ++ linux,default-trigger = "actpwr"; ++ gpios = <&gpio 29 GPIO_ACTIVE_LOW>; ++ }; ++}; ++ ++&hdmi { ++ hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; ++}; ++ ++&audio { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&audio_pins>; ++ brcm,disable-headphones = <1>; ++}; ++ ++&bt { ++ shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; ++}; ++ ++&minibt { ++ shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; ++}; ++ ++&cam1_reg { ++ gpio = <&gpio 40 GPIO_ACTIVE_HIGH>; ++}; ++ ++/ { ++ __overrides__ { ++ act_led_gpio = <&act_led>,"gpios:4"; ++ act_led_activelow = <&act_led>,"gpios:8"; ++ act_led_trigger = <&act_led>,"linux,default-trigger"; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile +index 69809bf2f45d..e7c2c4fd59a8 100644 +--- a/arch/arm64/boot/dts/broadcom/Makefile ++++ b/arch/arm64/boot/dts/broadcom/Makefile +@@ -3,6 +3,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-a-plus.dtb \ + bcm2837-rpi-3-b.dtb \ + bcm2837-rpi-3-b-plus.dtb \ + bcm2837-rpi-cm3-io3.dtb ++dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-zero-2.dtb + dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-2-b.dtb + dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b.dtb + dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b-plus.dtb +diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2.dts +new file mode 100644 +index 000000000000..f76f553599ef +--- /dev/null ++++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2.dts +@@ -0,0 +1 @@ ++#include "../../../../arm/boot/dts/bcm2710-rpi-zero-2.dts" +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 28 Oct 2021 12:16:00 +0100 +Subject: [PATCH 898/941] Revert "ARM: proc-v7: Retry uncached stmia if + necessary" + +This reverts commit 3e1698ed5013c1054e3dbf8a9fcd3a8549a95ece. +--- + arch/arm/mm/proc-v7.S | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S +index 950ceb970470..28c9d32fa99a 100644 +--- a/arch/arm/mm/proc-v7.S ++++ b/arch/arm/mm/proc-v7.S +@@ -288,11 +288,7 @@ __v7_ca17mp_setup: + 1: adr r0, __v7_setup_stack_ptr + ldr r12, [r0] + add r12, r12, r0 @ the local stack +-1: + stmia r12, {r1-r6, lr} @ v7_invalidate_l1 touches r0-r6 +- ldr r0, [r12, #(6 * 4)] @ read back the return address +- teq r0, lr @ confirm it is correct +- bne 1b @ retrying if not + bl v7_invalidate_l1 + ldmia r12, {r1-r6, lr} + #ifdef CONFIG_SMP +@@ -478,11 +474,7 @@ __v7_setup: + adr r0, __v7_setup_stack_ptr + ldr r12, [r0] + add r12, r12, r0 @ the local stack +-1: + stmia r12, {r1-r6, lr} @ v7_invalidate_l1 touches r0-r6 +- ldr r0, [r12, #(6 * 4)] @ read back the return address +- teq r0, lr @ confirm it is correct +- bne 1b @ retrying if not + bl v7_invalidate_l1 + ldmia r12, {r1-r6, lr} + +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:24:37 +0300 +Subject: [PATCH 899/941] ARM: module: add support for place relative + relocations + +commit 22f2d23098f7d34fc5142531cffb241d14611684 upstream. + +When using the new adr_l/ldr_l/str_l macros to refer to external symbols +from modules, the linker may emit place relative ELF relocations that +need to be fixed up by the module loader. So add support for these. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/include/asm/elf.h | 5 +++++ + arch/arm/kernel/module.c | 20 ++++++++++++++++++-- + 2 files changed, 23 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h +index b078d992414b..0ac62a54b73c 100644 +--- a/arch/arm/include/asm/elf.h ++++ b/arch/arm/include/asm/elf.h +@@ -51,6 +51,7 @@ typedef struct user_fp elf_fpregset_t; + #define R_ARM_NONE 0 + #define R_ARM_PC24 1 + #define R_ARM_ABS32 2 ++#define R_ARM_REL32 3 + #define R_ARM_CALL 28 + #define R_ARM_JUMP24 29 + #define R_ARM_TARGET1 38 +@@ -58,11 +59,15 @@ typedef struct user_fp elf_fpregset_t; + #define R_ARM_PREL31 42 + #define R_ARM_MOVW_ABS_NC 43 + #define R_ARM_MOVT_ABS 44 ++#define R_ARM_MOVW_PREL_NC 45 ++#define R_ARM_MOVT_PREL 46 + + #define R_ARM_THM_CALL 10 + #define R_ARM_THM_JUMP24 30 + #define R_ARM_THM_MOVW_ABS_NC 47 + #define R_ARM_THM_MOVT_ABS 48 ++#define R_ARM_THM_MOVW_PREL_NC 49 ++#define R_ARM_THM_MOVT_PREL 50 + + /* + * These are used to set parameters in the core dumps. +diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c +index e15444b25ca0..beac45e89ba6 100644 +--- a/arch/arm/kernel/module.c ++++ b/arch/arm/kernel/module.c +@@ -185,14 +185,24 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, + *(u32 *)loc |= offset & 0x7fffffff; + break; + ++ case R_ARM_REL32: ++ *(u32 *)loc += sym->st_value - loc; ++ break; ++ + case R_ARM_MOVW_ABS_NC: + case R_ARM_MOVT_ABS: ++ case R_ARM_MOVW_PREL_NC: ++ case R_ARM_MOVT_PREL: + offset = tmp = __mem_to_opcode_arm(*(u32 *)loc); + offset = ((offset & 0xf0000) >> 4) | (offset & 0xfff); + offset = (offset ^ 0x8000) - 0x8000; + + offset += sym->st_value; +- if (ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_ABS) ++ if (ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_PREL || ++ ELF32_R_TYPE(rel->r_info) == R_ARM_MOVW_PREL_NC) ++ offset -= loc; ++ if (ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_ABS || ++ ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_PREL) + offset >>= 16; + + tmp &= 0xfff0f000; +@@ -283,6 +293,8 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, + + case R_ARM_THM_MOVW_ABS_NC: + case R_ARM_THM_MOVT_ABS: ++ case R_ARM_THM_MOVW_PREL_NC: ++ case R_ARM_THM_MOVT_PREL: + upper = __mem_to_opcode_thumb16(*(u16 *)loc); + lower = __mem_to_opcode_thumb16(*(u16 *)(loc + 2)); + +@@ -302,7 +314,11 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, + offset = (offset ^ 0x8000) - 0x8000; + offset += sym->st_value; + +- if (ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_ABS) ++ if (ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_PREL || ++ ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVW_PREL_NC) ++ offset -= loc; ++ if (ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_ABS || ++ ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_PREL) + offset >>= 16; + + upper = (u16)((upper & 0xfbf0) | +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Sun, 20 Sep 2020 17:51:55 +0200 +Subject: [PATCH 900/941] ARM: p2v: move patching code to separate assembler + source file + +commit eae78e1a97201a81a851342ad9659b60f61a3951 upstream. + +Move the phys2virt patching code into a separate .S file before doing +some work on it. + +Suggested-by: Nicolas Pitre +Reviewed-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/Makefile | 1 + + arch/arm/kernel/head.S | 138 -------------------------------- + arch/arm/kernel/phys2virt.S | 151 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 152 insertions(+), 138 deletions(-) + create mode 100644 arch/arm/kernel/phys2virt.S + +diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile +index 89e5d864e923..9e465efcc8b6 100644 +--- a/arch/arm/kernel/Makefile ++++ b/arch/arm/kernel/Makefile +@@ -92,6 +92,7 @@ obj-$(CONFIG_PARAVIRT) += paravirt.o + head-y := head$(MMUEXT).o + obj-$(CONFIG_DEBUG_LL) += debug.o + obj-$(CONFIG_EARLY_PRINTK) += early_printk.o ++obj-$(CONFIG_ARM_PATCH_PHYS_VIRT) += phys2virt.o + + # This is executed very early using a temporary stack when no memory allocator + # nor global data is available. Everything has to be allocated on the stack. +diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S +index 4af5c7679624..dbc409a66555 100644 +--- a/arch/arm/kernel/head.S ++++ b/arch/arm/kernel/head.S +@@ -585,142 +585,4 @@ ENTRY(fixup_smp) + ldmfd sp!, {r4 - r6, pc} + ENDPROC(fixup_smp) + +-#ifdef __ARMEB__ +-#define LOW_OFFSET 0x4 +-#define HIGH_OFFSET 0x0 +-#else +-#define LOW_OFFSET 0x0 +-#define HIGH_OFFSET 0x4 +-#endif +- +-#ifdef CONFIG_ARM_PATCH_PHYS_VIRT +- +-/* __fixup_pv_table - patch the stub instructions with the delta between +- * PHYS_OFFSET and PAGE_OFFSET, which is assumed to be 16MiB aligned and +- * can be expressed by an immediate shifter operand. The stub instruction +- * has a form of '(add|sub) rd, rn, #imm'. +- */ +- __HEAD +-__fixup_pv_table: +- adr r0, 1f +- ldmia r0, {r3-r7} +- mvn ip, #0 +- subs r3, r0, r3 @ PHYS_OFFSET - PAGE_OFFSET +- add r4, r4, r3 @ adjust table start address +- add r5, r5, r3 @ adjust table end address +- add r6, r6, r3 @ adjust __pv_phys_pfn_offset address +- add r7, r7, r3 @ adjust __pv_offset address +- mov r0, r8, lsr #PAGE_SHIFT @ convert to PFN +- str r0, [r6] @ save computed PHYS_OFFSET to __pv_phys_pfn_offset +- strcc ip, [r7, #HIGH_OFFSET] @ save to __pv_offset high bits +- mov r6, r3, lsr #24 @ constant for add/sub instructions +- teq r3, r6, lsl #24 @ must be 16MiB aligned +-THUMB( it ne @ cross section branch ) +- bne __error +- str r3, [r7, #LOW_OFFSET] @ save to __pv_offset low bits +- b __fixup_a_pv_table +-ENDPROC(__fixup_pv_table) +- +- .align +-1: .long . +- .long __pv_table_begin +- .long __pv_table_end +-2: .long __pv_phys_pfn_offset +- .long __pv_offset +- +- .text +-__fixup_a_pv_table: +- adr r0, 3f +- ldr r6, [r0] +- add r6, r6, r3 +- ldr r0, [r6, #HIGH_OFFSET] @ pv_offset high word +- ldr r6, [r6, #LOW_OFFSET] @ pv_offset low word +- mov r6, r6, lsr #24 +- cmn r0, #1 +-#ifdef CONFIG_THUMB2_KERNEL +- moveq r0, #0x200000 @ set bit 21, mov to mvn instruction +- lsls r6, #24 +- beq 2f +- clz r7, r6 +- lsr r6, #24 +- lsl r6, r7 +- bic r6, #0x0080 +- lsrs r7, #1 +- orrcs r6, #0x0080 +- orr r6, r6, r7, lsl #12 +- orr r6, #0x4000 +- b 2f +-1: add r7, r3 +- ldrh ip, [r7, #2] +-ARM_BE8(rev16 ip, ip) +- tst ip, #0x4000 +- and ip, #0x8f00 +- orrne ip, r6 @ mask in offset bits 31-24 +- orreq ip, r0 @ mask in offset bits 7-0 +-ARM_BE8(rev16 ip, ip) +- strh ip, [r7, #2] +- bne 2f +- ldrh ip, [r7] +-ARM_BE8(rev16 ip, ip) +- bic ip, #0x20 +- orr ip, ip, r0, lsr #16 +-ARM_BE8(rev16 ip, ip) +- strh ip, [r7] +-2: cmp r4, r5 +- ldrcc r7, [r4], #4 @ use branch for delay slot +- bcc 1b +- bx lr +-#else +- moveq r0, #0x400000 @ set bit 22, mov to mvn instruction +- b 2f +-1: ldr ip, [r7, r3] +-#ifdef CONFIG_CPU_ENDIAN_BE8 +- @ in BE8, we load data in BE, but instructions still in LE +- bic ip, ip, #0xff000000 +- tst ip, #0x000f0000 @ check the rotation field +- orrne ip, ip, r6, lsl #24 @ mask in offset bits 31-24 +- biceq ip, ip, #0x00004000 @ clear bit 22 +- orreq ip, ip, r0, ror #8 @ mask in offset bits 7-0 +-#else +- bic ip, ip, #0x000000ff +- tst ip, #0xf00 @ check the rotation field +- orrne ip, ip, r6 @ mask in offset bits 31-24 +- biceq ip, ip, #0x400000 @ clear bit 22 +- orreq ip, ip, r0 @ mask in offset bits 7-0 +-#endif +- str ip, [r7, r3] +-2: cmp r4, r5 +- ldrcc r7, [r4], #4 @ use branch for delay slot +- bcc 1b +- ret lr +-#endif +-ENDPROC(__fixup_a_pv_table) +- +- .align +-3: .long __pv_offset +- +-ENTRY(fixup_pv_table) +- stmfd sp!, {r4 - r7, lr} +- mov r3, #0 @ no offset +- mov r4, r0 @ r0 = table start +- add r5, r0, r1 @ r1 = table size +- bl __fixup_a_pv_table +- ldmfd sp!, {r4 - r7, pc} +-ENDPROC(fixup_pv_table) +- +- .data +- .align 2 +- .globl __pv_phys_pfn_offset +- .type __pv_phys_pfn_offset, %object +-__pv_phys_pfn_offset: +- .word 0 +- .size __pv_phys_pfn_offset, . -__pv_phys_pfn_offset +- +- .globl __pv_offset +- .type __pv_offset, %object +-__pv_offset: +- .quad 0 +- .size __pv_offset, . -__pv_offset +-#endif +- + #include "head-common.S" +diff --git a/arch/arm/kernel/phys2virt.S b/arch/arm/kernel/phys2virt.S +new file mode 100644 +index 000000000000..7c17fbfeeedd +--- /dev/null ++++ b/arch/arm/kernel/phys2virt.S +@@ -0,0 +1,151 @@ ++/* SPDX-License-Identifier: GPL-2.0-only */ ++/* ++ * Copyright (C) 1994-2002 Russell King ++ * Copyright (c) 2003 ARM Limited ++ * All Rights Reserved ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#ifdef __ARMEB__ ++#define LOW_OFFSET 0x4 ++#define HIGH_OFFSET 0x0 ++#else ++#define LOW_OFFSET 0x0 ++#define HIGH_OFFSET 0x4 ++#endif ++ ++/* ++ * __fixup_pv_table - patch the stub instructions with the delta between ++ * PHYS_OFFSET and PAGE_OFFSET, which is assumed to be ++ * 16MiB aligned. ++ * ++ * Called from head.S, which expects the following registers to be preserved: ++ * r1 = machine no, r2 = atags or dtb, ++ * r8 = phys_offset, r9 = cpuid, r10 = procinfo ++ */ ++ __HEAD ++ENTRY(__fixup_pv_table) ++ adr r0, 1f ++ ldmia r0, {r3-r7} ++ mvn ip, #0 ++ subs r3, r0, r3 @ PHYS_OFFSET - PAGE_OFFSET ++ add r4, r4, r3 @ adjust table start address ++ add r5, r5, r3 @ adjust table end address ++ add r6, r6, r3 @ adjust __pv_phys_pfn_offset address ++ add r7, r7, r3 @ adjust __pv_offset address ++ mov r0, r8, lsr #PAGE_SHIFT @ convert to PFN ++ str r0, [r6] @ save computed PHYS_OFFSET to __pv_phys_pfn_offset ++ strcc ip, [r7, #HIGH_OFFSET] @ save to __pv_offset high bits ++ mov r6, r3, lsr #24 @ constant for add/sub instructions ++ teq r3, r6, lsl #24 @ must be 16MiB aligned ++ bne 0f ++ str r3, [r7, #LOW_OFFSET] @ save to __pv_offset low bits ++ b __fixup_a_pv_table ++0: mov r0, r0 @ deadloop on error ++ b 0b ++ENDPROC(__fixup_pv_table) ++ ++ .align ++1: .long . ++ .long __pv_table_begin ++ .long __pv_table_end ++2: .long __pv_phys_pfn_offset ++ .long __pv_offset ++ ++ .text ++__fixup_a_pv_table: ++ adr r0, 3f ++ ldr r6, [r0] ++ add r6, r6, r3 ++ ldr r0, [r6, #HIGH_OFFSET] @ pv_offset high word ++ ldr r6, [r6, #LOW_OFFSET] @ pv_offset low word ++ mov r6, r6, lsr #24 ++ cmn r0, #1 ++#ifdef CONFIG_THUMB2_KERNEL ++ moveq r0, #0x200000 @ set bit 21, mov to mvn instruction ++ lsls r6, #24 ++ beq 2f ++ clz r7, r6 ++ lsr r6, #24 ++ lsl r6, r7 ++ bic r6, #0x0080 ++ lsrs r7, #1 ++ orrcs r6, #0x0080 ++ orr r6, r6, r7, lsl #12 ++ orr r6, #0x4000 ++ b 2f ++1: add r7, r3 ++ ldrh ip, [r7, #2] ++ARM_BE8(rev16 ip, ip) ++ tst ip, #0x4000 ++ and ip, #0x8f00 ++ orrne ip, r6 @ mask in offset bits 31-24 ++ orreq ip, r0 @ mask in offset bits 7-0 ++ARM_BE8(rev16 ip, ip) ++ strh ip, [r7, #2] ++ bne 2f ++ ldrh ip, [r7] ++ARM_BE8(rev16 ip, ip) ++ bic ip, #0x20 ++ orr ip, ip, r0, lsr #16 ++ARM_BE8(rev16 ip, ip) ++ strh ip, [r7] ++2: cmp r4, r5 ++ ldrcc r7, [r4], #4 @ use branch for delay slot ++ bcc 1b ++ bx lr ++#else ++ moveq r0, #0x400000 @ set bit 22, mov to mvn instruction ++ b 2f ++1: ldr ip, [r7, r3] ++#ifdef CONFIG_CPU_ENDIAN_BE8 ++ @ in BE8, we load data in BE, but instructions still in LE ++ bic ip, ip, #0xff000000 ++ tst ip, #0x000f0000 @ check the rotation field ++ orrne ip, ip, r6, lsl #24 @ mask in offset bits 31-24 ++ biceq ip, ip, #0x00004000 @ clear bit 22 ++ orreq ip, ip, r0, ror #8 @ mask in offset bits 7-0 ++#else ++ bic ip, ip, #0x000000ff ++ tst ip, #0xf00 @ check the rotation field ++ orrne ip, ip, r6 @ mask in offset bits 31-24 ++ biceq ip, ip, #0x400000 @ clear bit 22 ++ orreq ip, ip, r0 @ mask in offset bits 7-0 ++#endif ++ str ip, [r7, r3] ++2: cmp r4, r5 ++ ldrcc r7, [r4], #4 @ use branch for delay slot ++ bcc 1b ++ ret lr ++#endif ++ENDPROC(__fixup_a_pv_table) ++ ++ .align ++3: .long __pv_offset ++ ++ENTRY(fixup_pv_table) ++ stmfd sp!, {r4 - r7, lr} ++ mov r3, #0 @ no offset ++ mov r4, r0 @ r0 = table start ++ add r5, r0, r1 @ r1 = table size ++ bl __fixup_a_pv_table ++ ldmfd sp!, {r4 - r7, pc} ++ENDPROC(fixup_pv_table) ++ ++ .data ++ .align 2 ++ .globl __pv_phys_pfn_offset ++ .type __pv_phys_pfn_offset, %object ++__pv_phys_pfn_offset: ++ .word 0 ++ .size __pv_phys_pfn_offset, . -__pv_phys_pfn_offset ++ ++ .globl __pv_offset ++ .type __pv_offset, %object ++__pv_offset: ++ .quad 0 ++ .size __pv_offset, . -__pv_offset +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Thu, 17 Sep 2020 21:29:36 +0300 +Subject: [PATCH 901/941] ARM: p2v: factor out shared loop processing + +commit 4b16421c3e955f440eb45546db6ce33d47f29c78 upstream. + +The ARM and Thumb2 versions of the p2v patching loop have some overlap +at the end of the loop, so factor that out. As numeric labels are not +required to be unique, and may therefore be ambiguous, use named local +labels for the start and end of the loop instead. + +Acked-by: Nicolas Pitre +Reviewed-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/phys2virt.S | 24 +++++++++++------------- + 1 file changed, 11 insertions(+), 13 deletions(-) + +diff --git a/arch/arm/kernel/phys2virt.S b/arch/arm/kernel/phys2virt.S +index 7c17fbfeeedd..8fb1f7bcc720 100644 +--- a/arch/arm/kernel/phys2virt.S ++++ b/arch/arm/kernel/phys2virt.S +@@ -68,7 +68,7 @@ __fixup_a_pv_table: + #ifdef CONFIG_THUMB2_KERNEL + moveq r0, #0x200000 @ set bit 21, mov to mvn instruction + lsls r6, #24 +- beq 2f ++ beq .Lnext + clz r7, r6 + lsr r6, #24 + lsl r6, r7 +@@ -77,8 +77,8 @@ __fixup_a_pv_table: + orrcs r6, #0x0080 + orr r6, r6, r7, lsl #12 + orr r6, #0x4000 +- b 2f +-1: add r7, r3 ++ b .Lnext ++.Lloop: add r7, r3 + ldrh ip, [r7, #2] + ARM_BE8(rev16 ip, ip) + tst ip, #0x4000 +@@ -87,21 +87,17 @@ ARM_BE8(rev16 ip, ip) + orreq ip, r0 @ mask in offset bits 7-0 + ARM_BE8(rev16 ip, ip) + strh ip, [r7, #2] +- bne 2f ++ bne .Lnext + ldrh ip, [r7] + ARM_BE8(rev16 ip, ip) + bic ip, #0x20 + orr ip, ip, r0, lsr #16 + ARM_BE8(rev16 ip, ip) + strh ip, [r7] +-2: cmp r4, r5 +- ldrcc r7, [r4], #4 @ use branch for delay slot +- bcc 1b +- bx lr + #else + moveq r0, #0x400000 @ set bit 22, mov to mvn instruction +- b 2f +-1: ldr ip, [r7, r3] ++ b .Lnext ++.Lloop: ldr ip, [r7, r3] + #ifdef CONFIG_CPU_ENDIAN_BE8 + @ in BE8, we load data in BE, but instructions still in LE + bic ip, ip, #0xff000000 +@@ -117,11 +113,13 @@ ARM_BE8(rev16 ip, ip) + orreq ip, ip, r0 @ mask in offset bits 7-0 + #endif + str ip, [r7, r3] +-2: cmp r4, r5 ++#endif ++ ++.Lnext: ++ cmp r4, r5 + ldrcc r7, [r4], #4 @ use branch for delay slot +- bcc 1b ++ bcc .Lloop + ret lr +-#endif + ENDPROC(__fixup_a_pv_table) + + .align +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Thu, 17 Sep 2020 21:36:46 +0300 +Subject: [PATCH 902/941] ARM: p2v: factor out BE8 handling + +commit 7a94849e81b5c10e71f0a555300313c2789d9b0d upstream. + +The big and little endian versions of the ARM p2v patching routine only +differ in the values of the constants, so factor those out into macros +so that we only have one version of the logic sequence to maintain. + +Acked-by: Nicolas Pitre +Reviewed-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/phys2virt.S | 30 ++++++++++++++++-------------- + 1 file changed, 16 insertions(+), 14 deletions(-) + +diff --git a/arch/arm/kernel/phys2virt.S b/arch/arm/kernel/phys2virt.S +index 8fb1f7bcc720..5031e5a2e78b 100644 +--- a/arch/arm/kernel/phys2virt.S ++++ b/arch/arm/kernel/phys2virt.S +@@ -95,23 +95,25 @@ ARM_BE8(rev16 ip, ip) + ARM_BE8(rev16 ip, ip) + strh ip, [r7] + #else +- moveq r0, #0x400000 @ set bit 22, mov to mvn instruction +- b .Lnext +-.Lloop: ldr ip, [r7, r3] + #ifdef CONFIG_CPU_ENDIAN_BE8 +- @ in BE8, we load data in BE, but instructions still in LE +- bic ip, ip, #0xff000000 +- tst ip, #0x000f0000 @ check the rotation field +- orrne ip, ip, r6, lsl #24 @ mask in offset bits 31-24 +- biceq ip, ip, #0x00004000 @ clear bit 22 +- orreq ip, ip, r0, ror #8 @ mask in offset bits 7-0 ++@ in BE8, we load data in BE, but instructions still in LE ++#define PV_BIT22 0x00004000 ++#define PV_IMM8_MASK 0xff000000 ++#define PV_ROT_MASK 0x000f0000 + #else +- bic ip, ip, #0x000000ff +- tst ip, #0xf00 @ check the rotation field +- orrne ip, ip, r6 @ mask in offset bits 31-24 +- biceq ip, ip, #0x400000 @ clear bit 22 +- orreq ip, ip, r0 @ mask in offset bits 7-0 ++#define PV_BIT22 0x00400000 ++#define PV_IMM8_MASK 0x000000ff ++#define PV_ROT_MASK 0xf00 + #endif ++ ++ moveq r0, #0x400000 @ set bit 22, mov to mvn instruction ++ b .Lnext ++.Lloop: ldr ip, [r7, r3] ++ bic ip, ip, #PV_IMM8_MASK ++ tst ip, #PV_ROT_MASK @ check the rotation field ++ orrne ip, ip, r6 ARM_BE8(, lsl #24) @ mask in offset bits 31-24 ++ biceq ip, ip, #PV_BIT22 @ clear bit 22 ++ orreq ip, ip, r0 ARM_BE8(, ror #8) @ mask in offset bits 7-0 (or bit 22) + str ip, [r7, r3] + #endif + +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Fri, 18 Sep 2020 10:00:24 +0300 +Subject: [PATCH 903/941] ARM: p2v: drop redundant 'type' argument from + __pv_stub + +commit 0869f3b9da38889faef2ccafcf675c713d4a3aa8 upstream. + +We always pass the same value for 'type' so pull it into the __pv_stub +macro itself. + +Acked-by: Nicolas Pitre +Reviewed-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/include/asm/memory.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h +index f717d7122d9d..20bd5d66dcc0 100644 +--- a/arch/arm/include/asm/memory.h ++++ b/arch/arm/include/asm/memory.h +@@ -188,14 +188,14 @@ extern const void *__pv_table_begin, *__pv_table_end; + #define PHYS_OFFSET ((phys_addr_t)__pv_phys_pfn_offset << PAGE_SHIFT) + #define PHYS_PFN_OFFSET (__pv_phys_pfn_offset) + +-#define __pv_stub(from,to,instr,type) \ ++#define __pv_stub(from,to,instr) \ + __asm__("@ __pv_stub\n" \ + "1: " instr " %0, %1, %2\n" \ + " .pushsection .pv_table,\"a\"\n" \ + " .long 1b\n" \ + " .popsection\n" \ + : "=r" (to) \ +- : "r" (from), "I" (type)) ++ : "r" (from), "I" (__PV_BITS_31_24)) + + #define __pv_stub_mov_hi(t) \ + __asm__ volatile("@ __pv_stub_mov\n" \ +@@ -222,7 +222,7 @@ static inline phys_addr_t __virt_to_phys_nodebug(unsigned long x) + phys_addr_t t; + + if (sizeof(phys_addr_t) == 4) { +- __pv_stub(x, t, "add", __PV_BITS_31_24); ++ __pv_stub(x, t, "add"); + } else { + __pv_stub_mov_hi(t); + __pv_add_carry_stub(x, t); +@@ -240,7 +240,7 @@ static inline unsigned long __phys_to_virt(phys_addr_t x) + * assembler expression receives 32 bit argument + * in place where 'r' 32 bit operand is expected. + */ +- __pv_stub((unsigned long) x, t, "sub", __PV_BITS_31_24); ++ __pv_stub((unsigned long) x, t, "sub"); + return t; + } + +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Sun, 20 Sep 2020 18:23:35 +0200 +Subject: [PATCH 904/941] ARM: p2v: use relative references in patch site + arrays + +commit 2730e8eaa4f2baccc03296e0c5ee109c0673fe5f upstream. + +Free up a register in the p2v patching code by switching to relative +references, which don't require keeping the phys-to-virt displacement +live in a register. + +Acked-by: Nicolas Pitre +Reviewed-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/include/asm/memory.h | 6 +++--- + arch/arm/kernel/phys2virt.S | 18 +++++++----------- + 2 files changed, 10 insertions(+), 14 deletions(-) + +diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h +index 20bd5d66dcc0..761b5aaba742 100644 +--- a/arch/arm/include/asm/memory.h ++++ b/arch/arm/include/asm/memory.h +@@ -192,7 +192,7 @@ extern const void *__pv_table_begin, *__pv_table_end; + __asm__("@ __pv_stub\n" \ + "1: " instr " %0, %1, %2\n" \ + " .pushsection .pv_table,\"a\"\n" \ +- " .long 1b\n" \ ++ " .long 1b - .\n" \ + " .popsection\n" \ + : "=r" (to) \ + : "r" (from), "I" (__PV_BITS_31_24)) +@@ -201,7 +201,7 @@ extern const void *__pv_table_begin, *__pv_table_end; + __asm__ volatile("@ __pv_stub_mov\n" \ + "1: mov %R0, %1\n" \ + " .pushsection .pv_table,\"a\"\n" \ +- " .long 1b\n" \ ++ " .long 1b - .\n" \ + " .popsection\n" \ + : "=r" (t) \ + : "I" (__PV_BITS_7_0)) +@@ -211,7 +211,7 @@ extern const void *__pv_table_begin, *__pv_table_end; + "1: adds %Q0, %1, %2\n" \ + " adc %R0, %R0, #0\n" \ + " .pushsection .pv_table,\"a\"\n" \ +- " .long 1b\n" \ ++ " .long 1b - .\n" \ + " .popsection\n" \ + : "+r" (y) \ + : "r" (x), "I" (__PV_BITS_31_24) \ +diff --git a/arch/arm/kernel/phys2virt.S b/arch/arm/kernel/phys2virt.S +index 5031e5a2e78b..8e4be15e1559 100644 +--- a/arch/arm/kernel/phys2virt.S ++++ b/arch/arm/kernel/phys2virt.S +@@ -58,9 +58,7 @@ ENDPROC(__fixup_pv_table) + + .text + __fixup_a_pv_table: +- adr r0, 3f +- ldr r6, [r0] +- add r6, r6, r3 ++ adr_l r6, __pv_offset + ldr r0, [r6, #HIGH_OFFSET] @ pv_offset high word + ldr r6, [r6, #LOW_OFFSET] @ pv_offset low word + mov r6, r6, lsr #24 +@@ -78,7 +76,8 @@ __fixup_a_pv_table: + orr r6, r6, r7, lsl #12 + orr r6, #0x4000 + b .Lnext +-.Lloop: add r7, r3 ++.Lloop: add r7, r4 ++ adds r4, #4 + ldrh ip, [r7, #2] + ARM_BE8(rev16 ip, ip) + tst ip, #0x4000 +@@ -108,28 +107,25 @@ ARM_BE8(rev16 ip, ip) + + moveq r0, #0x400000 @ set bit 22, mov to mvn instruction + b .Lnext +-.Lloop: ldr ip, [r7, r3] ++.Lloop: ldr ip, [r7, r4] + bic ip, ip, #PV_IMM8_MASK + tst ip, #PV_ROT_MASK @ check the rotation field + orrne ip, ip, r6 ARM_BE8(, lsl #24) @ mask in offset bits 31-24 + biceq ip, ip, #PV_BIT22 @ clear bit 22 + orreq ip, ip, r0 ARM_BE8(, ror #8) @ mask in offset bits 7-0 (or bit 22) +- str ip, [r7, r3] ++ str ip, [r7, r4] ++ add r4, r4, #4 + #endif + + .Lnext: + cmp r4, r5 +- ldrcc r7, [r4], #4 @ use branch for delay slot ++ ldrcc r7, [r4] @ use branch for delay slot + bcc .Lloop + ret lr + ENDPROC(__fixup_a_pv_table) + +- .align +-3: .long __pv_offset +- + ENTRY(fixup_pv_table) + stmfd sp!, {r4 - r7, lr} +- mov r3, #0 @ no offset + mov r4, r0 @ r0 = table start + add r5, r0, r1 @ r1 = table size + bl __fixup_a_pv_table +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Sun, 20 Sep 2020 19:19:32 +0200 +Subject: [PATCH 905/941] ARM: p2v: simplify __fixup_pv_table() + +commit 0e3db6c9d7f6fd0ee263325027e8d3fdac5a4c9e upstream. + +Declutter the code in __fixup_pv_table() by using the new adr_l/str_l +macros to take PC relative references to external symbols, and by +using the value of PHYS_OFFSET passed in r8 to calculate the p2v +offset. + +Acked-by: Nicolas Pitre +Reviewed-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/phys2virt.S | 34 ++++++++++++++-------------------- + 1 file changed, 14 insertions(+), 20 deletions(-) + +diff --git a/arch/arm/kernel/phys2virt.S b/arch/arm/kernel/phys2virt.S +index 8e4be15e1559..be8fb0d89877 100644 +--- a/arch/arm/kernel/phys2virt.S ++++ b/arch/arm/kernel/phys2virt.S +@@ -29,33 +29,27 @@ + */ + __HEAD + ENTRY(__fixup_pv_table) +- adr r0, 1f +- ldmia r0, {r3-r7} +- mvn ip, #0 +- subs r3, r0, r3 @ PHYS_OFFSET - PAGE_OFFSET +- add r4, r4, r3 @ adjust table start address +- add r5, r5, r3 @ adjust table end address +- add r6, r6, r3 @ adjust __pv_phys_pfn_offset address +- add r7, r7, r3 @ adjust __pv_offset address + mov r0, r8, lsr #PAGE_SHIFT @ convert to PFN +- str r0, [r6] @ save computed PHYS_OFFSET to __pv_phys_pfn_offset +- strcc ip, [r7, #HIGH_OFFSET] @ save to __pv_offset high bits +- mov r6, r3, lsr #24 @ constant for add/sub instructions +- teq r3, r6, lsl #24 @ must be 16MiB aligned ++ str_l r0, __pv_phys_pfn_offset, r3 ++ ++ adr_l r0, __pv_offset ++ subs r3, r8, #PAGE_OFFSET @ PHYS_OFFSET - PAGE_OFFSET ++ mvn ip, #0 ++ strcc ip, [r0, #HIGH_OFFSET] @ save to __pv_offset high bits ++ str r3, [r0, #LOW_OFFSET] @ save to __pv_offset low bits ++ ++ mov r0, r3, lsr #24 @ constant for add/sub instructions ++ teq r3, r0, lsl #24 @ must be 16MiB aligned + bne 0f +- str r3, [r7, #LOW_OFFSET] @ save to __pv_offset low bits ++ ++ adr_l r4, __pv_table_begin ++ adr_l r5, __pv_table_end + b __fixup_a_pv_table ++ + 0: mov r0, r0 @ deadloop on error + b 0b + ENDPROC(__fixup_pv_table) + +- .align +-1: .long . +- .long __pv_table_begin +- .long __pv_table_end +-2: .long __pv_phys_pfn_offset +- .long __pv_offset +- + .text + __fixup_a_pv_table: + adr_l r6, __pv_offset +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Sun, 20 Sep 2020 23:02:25 +0200 +Subject: [PATCH 906/941] ARM: p2v: switch to MOVW for Thumb2 and ARM/LPAE + +commit e8e00f5afb087912fb3edb225ee373aa6499bb79 upstream. + +In preparation for reducing the phys-to-virt minimum relative alignment +from 16 MiB to 2 MiB, switch to patchable sequences involving MOVW +instructions that can more easily be manipulated to carry a 12-bit +immediate. Note that the non-LPAE ARM sequence is not updated: MOVW +may not be supported on non-LPAE platforms, and the sequence itself +can be updated more easily to apply the 12 bits of displacement. + +For Thumb2, which has many more versions of opcodes, switch to a sequence +that can be patched by the same patching code for both versions. Note +that the Thumb2 opcodes for MOVW and MVN are unambiguous, and have no +rotation bits in their immediate fields, so there is no need to use +placeholder constants in the asm blocks. + +While at it, drop the 'volatile' qualifiers from the asm blocks: the +code does not have any side effects that are invisible to the compiler, +so it is free to omit these sequences if the outputs are not used. + +Suggested-by: Russell King +Acked-by: Nicolas Pitre +Reviewed-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/include/asm/memory.h | 44 +++++++--- + arch/arm/kernel/phys2virt.S | 147 +++++++++++++++++++++++++++------- + 2 files changed, 148 insertions(+), 43 deletions(-) + +diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h +index 761b5aaba742..e5bd54e473ca 100644 +--- a/arch/arm/include/asm/memory.h ++++ b/arch/arm/include/asm/memory.h +@@ -188,6 +188,7 @@ extern const void *__pv_table_begin, *__pv_table_end; + #define PHYS_OFFSET ((phys_addr_t)__pv_phys_pfn_offset << PAGE_SHIFT) + #define PHYS_PFN_OFFSET (__pv_phys_pfn_offset) + ++#ifndef CONFIG_THUMB2_KERNEL + #define __pv_stub(from,to,instr) \ + __asm__("@ __pv_stub\n" \ + "1: " instr " %0, %1, %2\n" \ +@@ -197,25 +198,45 @@ extern const void *__pv_table_begin, *__pv_table_end; + : "=r" (to) \ + : "r" (from), "I" (__PV_BITS_31_24)) + +-#define __pv_stub_mov_hi(t) \ +- __asm__ volatile("@ __pv_stub_mov\n" \ +- "1: mov %R0, %1\n" \ ++#define __pv_add_carry_stub(x, y) \ ++ __asm__("@ __pv_add_carry_stub\n" \ ++ "0: movw %R0, #0\n" \ ++ " adds %Q0, %1, %R0, lsl #24\n" \ ++ "1: mov %R0, %2\n" \ ++ " adc %R0, %R0, #0\n" \ + " .pushsection .pv_table,\"a\"\n" \ +- " .long 1b - .\n" \ ++ " .long 0b - ., 1b - .\n" \ + " .popsection\n" \ +- : "=r" (t) \ +- : "I" (__PV_BITS_7_0)) ++ : "=&r" (y) \ ++ : "r" (x), "I" (__PV_BITS_7_0) \ ++ : "cc") ++ ++#else ++#define __pv_stub(from,to,instr) \ ++ __asm__("@ __pv_stub\n" \ ++ "0: movw %0, #0\n" \ ++ " lsl %0, #24\n" \ ++ " " instr " %0, %1, %0\n" \ ++ " .pushsection .pv_table,\"a\"\n" \ ++ " .long 0b - .\n" \ ++ " .popsection\n" \ ++ : "=&r" (to) \ ++ : "r" (from)) + + #define __pv_add_carry_stub(x, y) \ +- __asm__ volatile("@ __pv_add_carry_stub\n" \ +- "1: adds %Q0, %1, %2\n" \ ++ __asm__("@ __pv_add_carry_stub\n" \ ++ "0: movw %R0, #0\n" \ ++ " lsls %R0, #24\n" \ ++ " adds %Q0, %1, %R0\n" \ ++ "1: mvn %R0, #0\n" \ + " adc %R0, %R0, #0\n" \ + " .pushsection .pv_table,\"a\"\n" \ +- " .long 1b - .\n" \ ++ " .long 0b - ., 1b - .\n" \ + " .popsection\n" \ +- : "+r" (y) \ +- : "r" (x), "I" (__PV_BITS_31_24) \ ++ : "=&r" (y) \ ++ : "r" (x) \ + : "cc") ++#endif + + static inline phys_addr_t __virt_to_phys_nodebug(unsigned long x) + { +@@ -224,7 +245,6 @@ static inline phys_addr_t __virt_to_phys_nodebug(unsigned long x) + if (sizeof(phys_addr_t) == 4) { + __pv_stub(x, t, "add"); + } else { +- __pv_stub_mov_hi(t); + __pv_add_carry_stub(x, t); + } + return t; +diff --git a/arch/arm/kernel/phys2virt.S b/arch/arm/kernel/phys2virt.S +index be8fb0d89877..a4e364689663 100644 +--- a/arch/arm/kernel/phys2virt.S ++++ b/arch/arm/kernel/phys2virt.S +@@ -1,7 +1,7 @@ + /* SPDX-License-Identifier: GPL-2.0-only */ + /* + * Copyright (C) 1994-2002 Russell King +- * Copyright (c) 2003 ARM Limited ++ * Copyright (c) 2003, 2020 ARM Limited + * All Rights Reserved + */ + +@@ -58,55 +58,140 @@ __fixup_a_pv_table: + mov r6, r6, lsr #24 + cmn r0, #1 + #ifdef CONFIG_THUMB2_KERNEL ++ @ ++ @ The Thumb-2 versions of the patchable sequences are ++ @ ++ @ phys-to-virt: movw , #offset<31:24> ++ @ lsl , #24 ++ @ sub , , ++ @ ++ @ virt-to-phys (non-LPAE): movw , #offset<31:24> ++ @ lsl , #24 ++ @ add , , ++ @ ++ @ virt-to-phys (LPAE): movw , #offset<31:24> ++ @ lsl , #24 ++ @ adds , , ++ @ mov , #offset<39:32> ++ @ adc , , #0 ++ @ ++ @ In the non-LPAE case, all patchable instructions are MOVW ++ @ instructions, where we need to patch in the offset into the ++ @ second halfword of the opcode (the 16-bit immediate is encoded ++ @ as imm4:i:imm3:imm8) ++ @ ++ @ 15 11 10 9 4 3 0 15 14 12 11 8 7 0 ++ @ +-----------+---+-------------+------++---+------+----+------+ ++ @ MOVW | 1 1 1 1 0 | i | 1 0 0 1 0 0 | imm4 || 0 | imm3 | Rd | imm8 | ++ @ +-----------+---+-------------+------++---+------+----+------+ ++ @ ++ @ In the LPAE case, we also need to patch in the high word of the ++ @ offset into the immediate field of the MOV instruction, or patch it ++ @ to a MVN instruction if the offset is negative. In this case, we ++ @ need to inspect the first halfword of the opcode, to check whether ++ @ it is MOVW or MOV/MVN, and to perform the MOV to MVN patching if ++ @ needed. The encoding of the immediate is rather complex for values ++ @ of i:imm3 != 0b0000, but fortunately, we never need more than 8 lower ++ @ order bits, which can be patched into imm8 directly (and i:imm3 ++ @ cleared) ++ @ ++ @ 15 11 10 9 5 0 15 14 12 11 8 7 0 ++ @ +-----------+---+---------------------++---+------+----+------+ ++ @ MOV | 1 1 1 1 0 | i | 0 0 0 1 0 0 1 1 1 1 || 0 | imm3 | Rd | imm8 | ++ @ MVN | 1 1 1 1 0 | i | 0 0 0 1 1 0 1 1 1 1 || 0 | imm3 | Rd | imm8 | ++ @ +-----------+---+---------------------++---+------+----+------+ ++ @ + moveq r0, #0x200000 @ set bit 21, mov to mvn instruction +- lsls r6, #24 +- beq .Lnext +- clz r7, r6 +- lsr r6, #24 +- lsl r6, r7 +- bic r6, #0x0080 +- lsrs r7, #1 +- orrcs r6, #0x0080 +- orr r6, r6, r7, lsl #12 +- orr r6, #0x4000 + b .Lnext + .Lloop: add r7, r4 +- adds r4, #4 +- ldrh ip, [r7, #2] +-ARM_BE8(rev16 ip, ip) +- tst ip, #0x4000 +- and ip, #0x8f00 +- orrne ip, r6 @ mask in offset bits 31-24 +- orreq ip, r0 @ mask in offset bits 7-0 +-ARM_BE8(rev16 ip, ip) +- strh ip, [r7, #2] +- bne .Lnext ++ adds r4, #4 @ clears Z flag ++#ifdef CONFIG_ARM_LPAE + ldrh ip, [r7] + ARM_BE8(rev16 ip, ip) +- bic ip, #0x20 +- orr ip, ip, r0, lsr #16 ++ tst ip, #0x200 @ MOVW has bit 9 set, MVN has it clear ++ bne 0f @ skip to MOVW handling (Z flag is clear) ++ bic ip, #0x20 @ clear bit 5 (MVN -> MOV) ++ orr ip, ip, r0, lsr #16 @ MOV -> MVN if offset < 0 + ARM_BE8(rev16 ip, ip) + strh ip, [r7] ++ @ Z flag is set ++0: ++#endif ++ ldrh ip, [r7, #2] ++ARM_BE8(rev16 ip, ip) ++ and ip, #0xf00 @ clear everything except Rd field ++ orreq ip, r0 @ Z flag set -> MOV/MVN -> patch in high bits ++ orrne ip, r6 @ Z flag clear -> MOVW -> patch in low bits ++ARM_BE8(rev16 ip, ip) ++ strh ip, [r7, #2] + #else + #ifdef CONFIG_CPU_ENDIAN_BE8 + @ in BE8, we load data in BE, but instructions still in LE +-#define PV_BIT22 0x00004000 ++#define PV_BIT24 0x00000001 + #define PV_IMM8_MASK 0xff000000 +-#define PV_ROT_MASK 0x000f0000 + #else +-#define PV_BIT22 0x00400000 ++#define PV_BIT24 0x01000000 + #define PV_IMM8_MASK 0x000000ff +-#define PV_ROT_MASK 0xf00 + #endif + ++ @ ++ @ The ARM versions of the patchable sequences are ++ @ ++ @ phys-to-virt: sub , , #offset<31:24>, lsl #24 ++ @ ++ @ virt-to-phys (non-LPAE): add , , #offset<31:24>, lsl #24 ++ @ ++ @ virt-to-phys (LPAE): movw , #offset<31:24> ++ @ adds , , , lsl #24 ++ @ mov , #offset<39:32> ++ @ adc , , #0 ++ @ ++ @ In the non-LPAE case, all patchable instructions are ADD or SUB ++ @ instructions, where we need to patch in the offset into the ++ @ immediate field of the opcode, which is emitted with the correct ++ @ rotation value. (The effective value of the immediate is imm12<7:0> ++ @ rotated right by [2 * imm12<11:8>] bits) ++ @ ++ @ 31 28 27 23 22 20 19 16 15 12 11 0 ++ @ +------+-----------------+------+------+-------+ ++ @ ADD | cond | 0 0 1 0 1 0 0 0 | Rn | Rd | imm12 | ++ @ SUB | cond | 0 0 1 0 0 1 0 0 | Rn | Rd | imm12 | ++ @ MOV | cond | 0 0 1 1 1 0 1 0 | Rn | Rd | imm12 | ++ @ MVN | cond | 0 0 1 1 1 1 1 0 | Rn | Rd | imm12 | ++ @ +------+-----------------+------+------+-------+ ++ @ ++ @ In the LPAE case, we use a MOVW instruction to carry the low offset ++ @ word, and patch in the high word of the offset into the immediate ++ @ field of the subsequent MOV instruction, or patch it to a MVN ++ @ instruction if the offset is negative. We can distinguish MOVW ++ @ instructions based on bits 23:22 of the opcode, and ADD/SUB can be ++ @ distinguished from MOV/MVN (all using the encodings above) using ++ @ bit 24. ++ @ ++ @ 31 28 27 23 22 20 19 16 15 12 11 0 ++ @ +------+-----------------+------+------+-------+ ++ @ MOVW | cond | 0 0 1 1 0 0 0 0 | imm4 | Rd | imm12 | ++ @ +------+-----------------+------+------+-------+ ++ @ + moveq r0, #0x400000 @ set bit 22, mov to mvn instruction + b .Lnext + .Lloop: ldr ip, [r7, r4] ++#ifdef CONFIG_ARM_LPAE ++ tst ip, #PV_BIT24 @ ADD/SUB have bit 24 clear ++ beq 1f ++ARM_BE8(rev ip, ip) ++ tst ip, #0xc00000 @ MOVW has bits 23:22 clear ++ bic ip, ip, #0x400000 @ clear bit 22 ++ bfc ip, #0, #12 @ clear imm12 field of MOV[W] instruction ++ orreq ip, ip, r6 @ MOVW -> mask in offset bits 31-24 ++ orrne ip, ip, r0 @ MOV -> mask in offset bits 7-0 (or bit 22) ++ARM_BE8(rev ip, ip) ++ b 2f ++1: ++#endif + bic ip, ip, #PV_IMM8_MASK +- tst ip, #PV_ROT_MASK @ check the rotation field +- orrne ip, ip, r6 ARM_BE8(, lsl #24) @ mask in offset bits 31-24 +- biceq ip, ip, #PV_BIT22 @ clear bit 22 +- orreq ip, ip, r0 ARM_BE8(, ror #8) @ mask in offset bits 7-0 (or bit 22) ++ orr ip, ip, r6 ARM_BE8(, lsl #24) @ mask in offset bits 31-24 ++2: + str ip, [r7, r4] + add r4, r4, #4 + #endif +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Fri, 18 Sep 2020 11:55:42 +0300 +Subject: [PATCH 907/941] ARM: p2v: reduce p2v alignment requirement to 2 MiB + +commit 9443076e4330a14ae2c6114307668b98a8293b77 upstream. + +The ARM kernel's linear map starts at PAGE_OFFSET, which maps to a +physical address (PHYS_OFFSET) that is platform specific, and is +discovered at boot. Since we don't want to slow down translations +between physical and virtual addresses by keeping the offset in a +variable in memory, we implement this by patching the code performing +the translation, and putting the offset between PAGE_OFFSET and the +start of physical RAM directly into the instruction opcodes. + +As we only patch up to 8 bits of offset, yielding 4 GiB >> 8 == 16 MiB +of granularity, we have to round up PHYS_OFFSET to the next multiple if +the start of physical RAM is not a multiple of 16 MiB. This wastes some +physical RAM, since the memory that was skipped will now live below +PAGE_OFFSET, making it inaccessible to the kernel. + +We can improve this by changing the patchable sequences and the patching +logic to carry more bits of offset: 11 bits gives us 4 GiB >> 11 == 2 MiB +of granularity, and so we will never waste more than that amount by +rounding up the physical start of DRAM to the next multiple of 2 MiB. +(Note that 2 MiB granularity guarantees that the linear mapping can be +created efficiently, whereas less than 2 MiB may result in the linear +mapping needing another level of page tables) + +This helps Zhen Lei's scenario, where the start of DRAM is known to be +occupied. It also helps EFI boot, which relies on the firmware's page +allocator to allocate space for the decompressed kernel as low as +possible. And if the KASLR patches ever land for 32-bit, it will give +us 3 more bits of randomization of the placement of the kernel inside +the linear region. + +For the ARM code path, it simply comes down to using two add/sub +instructions instead of one for the carryless version, and patching +each of them with the correct immediate depending on the rotation +field. For the LPAE calculation, which has to deal with a carry, it +patches the MOVW instruction with up to 12 bits of offset (but we only +need 11 bits anyway) + +For the Thumb2 code path, patching more than 11 bits of displacement +would be somewhat cumbersome, but the 11 bits we need fit nicely into +the second word of the u16[2] opcode, so we simply update the immediate +assignment and the left shift to create an addend of the right magnitude. + +Suggested-by: Zhen Lei +Acked-by: Nicolas Pitre +Acked-by: Linus Walleij +Signed-off-by: Ard Biesheuvel +--- + arch/arm/Kconfig | 2 +- + arch/arm/include/asm/memory.h | 13 +++++++----- + arch/arm/kernel/phys2virt.S | 40 +++++++++++++++++++++++------------ + 3 files changed, 35 insertions(+), 20 deletions(-) + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index a0eac00e2c81..c34934326c1c 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -245,7 +245,7 @@ config ARM_PATCH_PHYS_VIRT + kernel in system memory. + + This can only be used with non-XIP MMU kernels where the base +- of physical memory is at a 16MB boundary. ++ of physical memory is at a 2 MiB boundary. + + Only disable this option if you know that you do not require + this feature (eg, building a kernel for a single machine) and +diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h +index e5bd54e473ca..520d683931a2 100644 +--- a/arch/arm/include/asm/memory.h ++++ b/arch/arm/include/asm/memory.h +@@ -178,6 +178,7 @@ extern unsigned long vectors_base; + * so that all we need to do is modify the 8-bit constant field. + */ + #define __PV_BITS_31_24 0x81000000 ++#define __PV_BITS_23_16 0x810000 + #define __PV_BITS_7_0 0x81 + + extern unsigned long __pv_phys_pfn_offset; +@@ -192,16 +193,18 @@ extern const void *__pv_table_begin, *__pv_table_end; + #define __pv_stub(from,to,instr) \ + __asm__("@ __pv_stub\n" \ + "1: " instr " %0, %1, %2\n" \ ++ "2: " instr " %0, %0, %3\n" \ + " .pushsection .pv_table,\"a\"\n" \ +- " .long 1b - .\n" \ ++ " .long 1b - ., 2b - .\n" \ + " .popsection\n" \ + : "=r" (to) \ +- : "r" (from), "I" (__PV_BITS_31_24)) ++ : "r" (from), "I" (__PV_BITS_31_24), \ ++ "I"(__PV_BITS_23_16)) + + #define __pv_add_carry_stub(x, y) \ + __asm__("@ __pv_add_carry_stub\n" \ + "0: movw %R0, #0\n" \ +- " adds %Q0, %1, %R0, lsl #24\n" \ ++ " adds %Q0, %1, %R0, lsl #20\n" \ + "1: mov %R0, %2\n" \ + " adc %R0, %R0, #0\n" \ + " .pushsection .pv_table,\"a\"\n" \ +@@ -215,7 +218,7 @@ extern const void *__pv_table_begin, *__pv_table_end; + #define __pv_stub(from,to,instr) \ + __asm__("@ __pv_stub\n" \ + "0: movw %0, #0\n" \ +- " lsl %0, #24\n" \ ++ " lsl %0, #21\n" \ + " " instr " %0, %1, %0\n" \ + " .pushsection .pv_table,\"a\"\n" \ + " .long 0b - .\n" \ +@@ -226,7 +229,7 @@ extern const void *__pv_table_begin, *__pv_table_end; + #define __pv_add_carry_stub(x, y) \ + __asm__("@ __pv_add_carry_stub\n" \ + "0: movw %R0, #0\n" \ +- " lsls %R0, #24\n" \ ++ " lsls %R0, #21\n" \ + " adds %Q0, %1, %R0\n" \ + "1: mvn %R0, #0\n" \ + " adc %R0, %R0, #0\n" \ +diff --git a/arch/arm/kernel/phys2virt.S b/arch/arm/kernel/phys2virt.S +index a4e364689663..fb53db78fe78 100644 +--- a/arch/arm/kernel/phys2virt.S ++++ b/arch/arm/kernel/phys2virt.S +@@ -21,7 +21,7 @@ + /* + * __fixup_pv_table - patch the stub instructions with the delta between + * PHYS_OFFSET and PAGE_OFFSET, which is assumed to be +- * 16MiB aligned. ++ * 2 MiB aligned. + * + * Called from head.S, which expects the following registers to be preserved: + * r1 = machine no, r2 = atags or dtb, +@@ -38,8 +38,8 @@ ENTRY(__fixup_pv_table) + strcc ip, [r0, #HIGH_OFFSET] @ save to __pv_offset high bits + str r3, [r0, #LOW_OFFSET] @ save to __pv_offset low bits + +- mov r0, r3, lsr #24 @ constant for add/sub instructions +- teq r3, r0, lsl #24 @ must be 16MiB aligned ++ mov r0, r3, lsr #21 @ constant for add/sub instructions ++ teq r3, r0, lsl #21 @ must be 2 MiB aligned + bne 0f + + adr_l r4, __pv_table_begin +@@ -55,22 +55,21 @@ __fixup_a_pv_table: + adr_l r6, __pv_offset + ldr r0, [r6, #HIGH_OFFSET] @ pv_offset high word + ldr r6, [r6, #LOW_OFFSET] @ pv_offset low word +- mov r6, r6, lsr #24 + cmn r0, #1 + #ifdef CONFIG_THUMB2_KERNEL + @ + @ The Thumb-2 versions of the patchable sequences are + @ +- @ phys-to-virt: movw , #offset<31:24> +- @ lsl , #24 ++ @ phys-to-virt: movw , #offset<31:21> ++ @ lsl , #21 + @ sub , , + @ +- @ virt-to-phys (non-LPAE): movw , #offset<31:24> +- @ lsl , #24 ++ @ virt-to-phys (non-LPAE): movw , #offset<31:21> ++ @ lsl , #21 + @ add , , + @ +- @ virt-to-phys (LPAE): movw , #offset<31:24> +- @ lsl , #24 ++ @ virt-to-phys (LPAE): movw , #offset<31:21> ++ @ lsl , #21 + @ adds , , + @ mov , #offset<39:32> + @ adc , , #0 +@@ -102,6 +101,9 @@ __fixup_a_pv_table: + @ +-----------+---+---------------------++---+------+----+------+ + @ + moveq r0, #0x200000 @ set bit 21, mov to mvn instruction ++ lsrs r3, r6, #29 @ isolate top 3 bits of displacement ++ ubfx r6, r6, #21, #8 @ put bits 28:21 into the MOVW imm8 field ++ bfi r6, r3, #12, #3 @ put bits 31:29 into the MOVW imm3 field + b .Lnext + .Lloop: add r7, r4 + adds r4, #4 @ clears Z flag +@@ -129,20 +131,24 @@ ARM_BE8(rev16 ip, ip) + @ in BE8, we load data in BE, but instructions still in LE + #define PV_BIT24 0x00000001 + #define PV_IMM8_MASK 0xff000000 ++#define PV_IMMR_MSB 0x00080000 + #else + #define PV_BIT24 0x01000000 + #define PV_IMM8_MASK 0x000000ff ++#define PV_IMMR_MSB 0x00000800 + #endif + + @ + @ The ARM versions of the patchable sequences are + @ + @ phys-to-virt: sub , , #offset<31:24>, lsl #24 ++ @ sub , , #offset<23:16>, lsl #16 + @ + @ virt-to-phys (non-LPAE): add , , #offset<31:24>, lsl #24 ++ @ add , , #offset<23:16>, lsl #16 + @ +- @ virt-to-phys (LPAE): movw , #offset<31:24> +- @ adds , , , lsl #24 ++ @ virt-to-phys (LPAE): movw , #offset<31:20> ++ @ adds , , , lsl #20 + @ mov , #offset<39:32> + @ adc , , #0 + @ +@@ -174,6 +180,9 @@ ARM_BE8(rev16 ip, ip) + @ +------+-----------------+------+------+-------+ + @ + moveq r0, #0x400000 @ set bit 22, mov to mvn instruction ++ mov r3, r6, lsr #16 @ put offset bits 31-16 into r3 ++ mov r6, r6, lsr #24 @ put offset bits 31-24 into r6 ++ and r3, r3, #0xf0 @ only keep offset bits 23-20 in r3 + b .Lnext + .Lloop: ldr ip, [r7, r4] + #ifdef CONFIG_ARM_LPAE +@@ -183,14 +192,17 @@ ARM_BE8(rev ip, ip) + tst ip, #0xc00000 @ MOVW has bits 23:22 clear + bic ip, ip, #0x400000 @ clear bit 22 + bfc ip, #0, #12 @ clear imm12 field of MOV[W] instruction +- orreq ip, ip, r6 @ MOVW -> mask in offset bits 31-24 ++ orreq ip, ip, r6, lsl #4 @ MOVW -> mask in offset bits 31-24 ++ orreq ip, ip, r3, lsr #4 @ MOVW -> mask in offset bits 23-20 + orrne ip, ip, r0 @ MOV -> mask in offset bits 7-0 (or bit 22) + ARM_BE8(rev ip, ip) + b 2f + 1: + #endif ++ tst ip, #PV_IMMR_MSB @ rotation value >= 16 ? + bic ip, ip, #PV_IMM8_MASK +- orr ip, ip, r6 ARM_BE8(, lsl #24) @ mask in offset bits 31-24 ++ orreq ip, ip, r6 ARM_BE8(, lsl #24) @ mask in offset bits 31-24 ++ orrne ip, ip, r3 ARM_BE8(, lsl #24) @ mask in offset bits 23-20 + 2: + str ip, [r7, r4] + add r4, r4, #4 +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:25:06 +0300 +Subject: [PATCH 908/941] ARM: head-common.S: use PC-relative insn sequence for + __proc_info + +commit 62c4a2e202b18e1d7176875b7e7af240f340596b upstream. + +Replace the open coded PC relative offset calculations with a pair of +adr_l invocations. This removes some open coded arithmetic involving +virtual addresses, avoids literal pools on v7+, and slightly reduces +the footprint of the code. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/head-common.S | 22 ++++++---------------- + 1 file changed, 6 insertions(+), 16 deletions(-) + +diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S +index 4a3982812a40..9a5ab6c19568 100644 +--- a/arch/arm/kernel/head-common.S ++++ b/arch/arm/kernel/head-common.S +@@ -170,11 +170,12 @@ ENDPROC(lookup_processor_type) + * r9 = cpuid (preserved) + */ + __lookup_processor_type: +- adr r3, __lookup_processor_type_data +- ldmia r3, {r4 - r6} +- sub r3, r3, r4 @ get offset between virt&phys +- add r5, r5, r3 @ convert virt addresses to +- add r6, r6, r3 @ physical address space ++ /* ++ * Look in for information about the __proc_info ++ * structure. ++ */ ++ adr_l r5, __proc_info_begin ++ adr_l r6, __proc_info_end + 1: ldmia r5, {r3, r4} @ value, mask + and r4, r4, r9 @ mask wanted bits + teq r3, r4 +@@ -186,17 +187,6 @@ __lookup_processor_type: + 2: ret lr + ENDPROC(__lookup_processor_type) + +-/* +- * Look in for information about the __proc_info structure. +- */ +- .align 2 +- .type __lookup_processor_type_data, %object +-__lookup_processor_type_data: +- .long . +- .long __proc_info_begin +- .long __proc_info_end +- .size __lookup_processor_type_data, . - __lookup_processor_type_data +- + __error_lpae: + #ifdef CONFIG_DEBUG_LL + adr r0, str_lpae +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:25:16 +0300 +Subject: [PATCH 909/941] ARM: head-common.S: use PC-relative insn sequence for + idmap creation + +commit 172c34c9ff0144c3e1d96a9b54d6fecfe5d17c3c upstream. + +Replace the open coded PC relative offset calculations involving +__turn_mmu_on and __turn_mmu_on_end with a pair of adr_l invocations. +This removes some open coded arithmetic involving virtual addresses, +avoids literal pools on v7+, and slightly reduces the footprint of the +code. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/head.S | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S +index dbc409a66555..205881bb0919 100644 +--- a/arch/arm/kernel/head.S ++++ b/arch/arm/kernel/head.S +@@ -224,11 +224,8 @@ __create_page_tables: + * Create identity mapping to cater for __enable_mmu. + * This identity mapping will be removed by paging_init(). + */ +- adr r0, __turn_mmu_on_loc +- ldmia r0, {r3, r5, r6} +- sub r0, r0, r3 @ virt->phys offset +- add r5, r5, r0 @ phys __turn_mmu_on +- add r6, r6, r0 @ phys __turn_mmu_on_end ++ adr_l r5, __turn_mmu_on @ _pa(__turn_mmu_on) ++ adr_l r6, __turn_mmu_on_end @ _pa(__turn_mmu_on_end) + mov r5, r5, lsr #SECTION_SHIFT + mov r6, r6, lsr #SECTION_SHIFT + +@@ -350,11 +347,6 @@ __create_page_tables: + ret lr + ENDPROC(__create_page_tables) + .ltorg +- .align +-__turn_mmu_on_loc: +- .long . +- .long __turn_mmu_on +- .long __turn_mmu_on_end + + #if defined(CONFIG_SMP) + .text +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:25:23 +0300 +Subject: [PATCH 910/941] ARM: head.S: use PC-relative insn sequence for + secondary_data + +commit 91580f0dbf24c6d616091526a900213bc7aa48fe upstream. + +Replace the open coded PC relative offset calculations with adr_l +and ldr_l invocations. This removes some open coded arithmetic +involving virtual addresses, avoids literal pools on v7+, and slightly +reduces the footprint of the code. + +Note that it also removes a stale comment about the contents of r6. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/head.S | 19 ++++--------------- + 1 file changed, 4 insertions(+), 15 deletions(-) + +diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S +index 205881bb0919..fcd998ba9c9a 100644 +--- a/arch/arm/kernel/head.S ++++ b/arch/arm/kernel/head.S +@@ -382,10 +382,8 @@ ENTRY(secondary_startup) + /* + * Use the page tables supplied from __cpu_up. + */ +- adr r4, __secondary_data +- ldmia r4, {r5, r7, r12} @ address to jump to after +- sub lr, r4, r5 @ mmu has been enabled +- add r3, r7, lr ++ adr_l r3, secondary_data ++ mov_l r12, __secondary_switched + ldrd r4, r5, [r3, #0] @ get secondary_data.pgdir + ARM_BE8(eor r4, r4, r5) @ Swap r5 and r4 in BE: + ARM_BE8(eor r5, r4, r5) @ it can be done in 3 steps +@@ -400,22 +398,13 @@ ARM_BE8(eor r4, r4, r5) @ without using a temp reg. + ENDPROC(secondary_startup) + ENDPROC(secondary_startup_arm) + +- /* +- * r6 = &secondary_data +- */ + ENTRY(__secondary_switched) +- ldr sp, [r7, #12] @ get secondary_data.stack ++ ldr_l r7, secondary_data + 12 @ get secondary_data.stack ++ mov sp, r7 + mov fp, #0 + b secondary_start_kernel + ENDPROC(__secondary_switched) + +- .align +- +- .type __secondary_data, %object +-__secondary_data: +- .long . +- .long secondary_data +- .long __secondary_switched + #endif /* defined(CONFIG_SMP) */ + + +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:48:20 +0300 +Subject: [PATCH 911/941] ARM: kernel: use relative references for UP/SMP + alternatives + +commit 450abd38fe6c6313ce9bdd9dce81c1dd604f6fb0 upstream. + +Currently, the .alt.smp.init section contains the virtual addresses +of the patch sites. Since patching may occur both before and after +switching into virtual mode, this requires some manual handling of +the address when applying the UP alternative. + +Let's simplify this by using relative offsets in the table entries: +this allows us to simply add each entry's address to its contents, +regardless of whether we are running in virtual mode or not. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/include/asm/assembler.h | 4 ++-- + arch/arm/include/asm/processor.h | 2 +- + arch/arm/kernel/head.S | 10 +++++----- + 3 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h +index 72627c5fb3b2..6ed30421f697 100644 +--- a/arch/arm/include/asm/assembler.h ++++ b/arch/arm/include/asm/assembler.h +@@ -259,7 +259,7 @@ + */ + #define ALT_UP(instr...) \ + .pushsection ".alt.smp.init", "a" ;\ +- .long 9998b ;\ ++ .long 9998b - . ;\ + 9997: instr ;\ + .if . - 9997b == 2 ;\ + nop ;\ +@@ -270,7 +270,7 @@ + .popsection + #define ALT_UP_B(label) \ + .pushsection ".alt.smp.init", "a" ;\ +- .long 9998b ;\ ++ .long 9998b - . ;\ + W(b) . + (label - 9998b) ;\ + .popsection + #else +diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h +index b9241051e5cb..9e6b97286307 100644 +--- a/arch/arm/include/asm/processor.h ++++ b/arch/arm/include/asm/processor.h +@@ -96,7 +96,7 @@ unsigned long get_wchan(struct task_struct *p); + #define __ALT_SMP_ASM(smp, up) \ + "9998: " smp "\n" \ + " .pushsection \".alt.smp.init\", \"a\"\n" \ +- " .long 9998b\n" \ ++ " .long 9998b - .\n" \ + " " up "\n" \ + " .popsection\n" + #else +diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S +index fcd998ba9c9a..e87e0878b8f2 100644 +--- a/arch/arm/kernel/head.S ++++ b/arch/arm/kernel/head.S +@@ -545,14 +545,15 @@ smp_on_up: + __do_fixup_smp_on_up: + cmp r4, r5 + reths lr +- ldmia r4!, {r0, r6} +- ARM( str r6, [r0, r3] ) +- THUMB( add r0, r0, r3 ) ++ ldmia r4, {r0, r6} ++ ARM( str r6, [r0, r4] ) ++ THUMB( add r0, r0, r4 ) ++ add r4, r4, #8 + #ifdef __ARMEB__ + THUMB( mov r6, r6, ror #16 ) @ Convert word order for big-endian. + #endif + THUMB( strh r6, [r0], #2 ) @ For Thumb-2, store as two halfwords +- THUMB( mov r6, r6, lsr #16 ) @ to be robust against misaligned r3. ++ THUMB( mov r6, r6, lsr #16 ) @ to be robust against misaligned r0. + THUMB( strh r6, [r0] ) + b __do_fixup_smp_on_up + ENDPROC(__do_fixup_smp_on_up) +@@ -561,7 +562,6 @@ ENTRY(fixup_smp) + stmfd sp!, {r4 - r6, lr} + mov r4, r0 + add r5, r0, r1 +- mov r3, #0 + bl __do_fixup_smp_on_up + ldmfd sp!, {r4 - r6, pc} + ENDPROC(fixup_smp) +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:25:29 +0300 +Subject: [PATCH 912/941] ARM: head: use PC-relative insn sequence for + __smp_alt + +commit 59d2f2827dfdccf8911d5e51465136b52ba623c4 upstream. + +Now that calling __do_fixup_smp_on_up() can be done without passing +the physical-to-virtual offset in r3, we can replace the open coded +PC relative offset calculations with a pair of adr_l invocations. This +removes some open coded arithmetic involving virtual addresses, avoids +literal pools on v7+, and slightly reduces the footprint of the code. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/head.S | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S +index e87e0878b8f2..7adab03a31bc 100644 +--- a/arch/arm/kernel/head.S ++++ b/arch/arm/kernel/head.S +@@ -519,19 +519,11 @@ ARM_BE8(rev r0, r0) @ byteswap if big endian + retne lr + + __fixup_smp_on_up: +- adr r0, 1f +- ldmia r0, {r3 - r5} +- sub r3, r0, r3 +- add r4, r4, r3 +- add r5, r5, r3 ++ adr_l r4, __smpalt_begin ++ adr_l r5, __smpalt_end + b __do_fixup_smp_on_up + ENDPROC(__fixup_smp) + +- .align +-1: .word . +- .word __smpalt_begin +- .word __smpalt_end +- + .pushsection .data + .align 2 + .globl smp_on_up +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:25:34 +0300 +Subject: [PATCH 913/941] ARM: sleep.S: use PC-relative insn sequence for + sleep_save_sp/mpidr_hash + +commit d74d2b225018baa0e04e080ee9e80b21667ba3a2 upstream. + +Replace the open coded PC relative offset calculations with adr_l and +ldr_l invocations. This removes some open coded PC relative arithmetic, +avoids literal pools on v7+, and slightly reduces the footprint of the +code. Note that ALT_SMP() expects a single instruction so move the macro +invocation after it. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/sleep.S | 19 +++++-------------- + 1 file changed, 5 insertions(+), 14 deletions(-) + +diff --git a/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S +index 5dc8b80bb693..43077e11dafd 100644 +--- a/arch/arm/kernel/sleep.S ++++ b/arch/arm/kernel/sleep.S +@@ -72,8 +72,9 @@ ENTRY(__cpu_suspend) + ldr r3, =sleep_save_sp + stmfd sp!, {r0, r1} @ save suspend func arg and pointer + ldr r3, [r3, #SLEEP_SAVE_SP_VIRT] +- ALT_SMP(ldr r0, =mpidr_hash) ++ ALT_SMP(W(nop)) @ don't use adr_l inside ALT_SMP() + ALT_UP_B(1f) ++ adr_l r0, mpidr_hash + /* This ldmia relies on the memory layout of the mpidr_hash struct */ + ldmia r0, {r1, r6-r8} @ r1 = mpidr mask (r6,r7,r8) = l[0,1,2] shifts + compute_mpidr_hash r0, r6, r7, r8, r2, r1 +@@ -147,9 +148,8 @@ no_hyp: + mov r1, #0 + ALT_SMP(mrc p15, 0, r0, c0, c0, 5) + ALT_UP_B(1f) +- adr r2, mpidr_hash_ptr +- ldr r3, [r2] +- add r2, r2, r3 @ r2 = struct mpidr_hash phys address ++ adr_l r2, mpidr_hash @ r2 = struct mpidr_hash phys address ++ + /* + * This ldmia relies on the memory layout of the mpidr_hash + * struct mpidr_hash. +@@ -157,10 +157,7 @@ no_hyp: + ldmia r2, { r3-r6 } @ r3 = mpidr mask (r4,r5,r6) = l[0,1,2] shifts + compute_mpidr_hash r1, r4, r5, r6, r0, r3 + 1: +- adr r0, _sleep_save_sp +- ldr r2, [r0] +- add r0, r0, r2 +- ldr r0, [r0, #SLEEP_SAVE_SP_PHYS] ++ ldr_l r0, sleep_save_sp + SLEEP_SAVE_SP_PHYS + ldr r0, [r0, r1, lsl #2] + + @ load phys pgd, stack, resume fn +@@ -177,12 +174,6 @@ ENDPROC(cpu_resume_arm) + ENDPROC(cpu_resume_no_hyp) + #endif + +- .align 2 +-_sleep_save_sp: +- .long sleep_save_sp - . +-mpidr_hash_ptr: +- .long mpidr_hash - . @ mpidr_hash struct offset +- + .data + .align 2 + .type sleep_save_sp, #object +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:25:46 +0300 +Subject: [PATCH 914/941] ARM: head.S: use PC relative insn sequence to + calculate PHYS_OFFSET + +commit 3bcf906b194cebb6817cbb2f07b69e12aa5d7f51 upstream. + +Replace the open coded arithmetic with a simple adr_l/sub pair. This +removes some open coded arithmetic involving virtual addresses, avoids +literal pools on v7+, and slightly reduces the footprint of the code. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/kernel/head.S | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S +index 7adab03a31bc..7f62c5eccdf3 100644 +--- a/arch/arm/kernel/head.S ++++ b/arch/arm/kernel/head.S +@@ -103,10 +103,8 @@ ENTRY(stext) + #endif + + #ifndef CONFIG_XIP_KERNEL +- adr r3, 2f +- ldmia r3, {r4, r8} +- sub r4, r3, r4 @ (PHYS_OFFSET - PAGE_OFFSET) +- add r8, r8, r4 @ PHYS_OFFSET ++ adr_l r8, _text @ __pa(_text) ++ sub r8, r8, #TEXT_OFFSET @ PHYS_OFFSET + #else + ldr r8, =PLAT_PHYS_OFFSET @ always constant in this case + #endif +@@ -158,10 +156,6 @@ ENTRY(stext) + 1: b __enable_mmu + ENDPROC(stext) + .ltorg +-#ifndef CONFIG_XIP_KERNEL +-2: .long . +- .long PAGE_OFFSET +-#endif + + /* + * Setup the initial page tables. We only setup the barest +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 14 Sep 2020 11:25:52 +0300 +Subject: [PATCH 915/941] ARM: kvm: replace open coded VA->PA calculations with + adr_l call + +commit aaac3733171fca948c4fb66b78257620e3885339 upstream. + +Replace the open coded calculations of the actual physical address +of the KVM stub vector table with a single adr_l invocation. + +Reviewed-by: Nicolas Pitre +Signed-off-by: Ard Biesheuvel +--- + arch/arm/boot/compressed/head.S | 15 ++------------- + arch/arm/kernel/hyp-stub.S | 27 ++++++++++++--------------- + 2 files changed, 14 insertions(+), 28 deletions(-) + +diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S +index 247ce9055990..538c2b08b7e5 100644 +--- a/arch/arm/boot/compressed/head.S ++++ b/arch/arm/boot/compressed/head.S +@@ -468,15 +468,10 @@ dtb_check_done: + + /* + * Compute the address of the hyp vectors after relocation. +- * This requires some arithmetic since we cannot directly +- * reference __hyp_stub_vectors in a PC-relative way. + * Call __hyp_set_vectors with the new address so that we + * can HVC again after the copy. + */ +-0: adr r0, 0b +- movw r1, #:lower16:__hyp_stub_vectors - 0b +- movt r1, #:upper16:__hyp_stub_vectors - 0b +- add r0, r0, r1 ++ adr_l r0, __hyp_stub_vectors + sub r0, r0, r5 + add r0, r0, r10 + bl __hyp_set_vectors +@@ -627,17 +622,11 @@ not_relocated: mov r0, #0 + cmp r0, #HYP_MODE @ if not booted in HYP mode... + bne __enter_kernel @ boot kernel directly + +- adr r12, .L__hyp_reentry_vectors_offset +- ldr r0, [r12] +- add r0, r0, r12 +- ++ adr_l r0, __hyp_reentry_vectors + bl __hyp_set_vectors + __HVC(0) @ otherwise bounce to hyp mode + + b . @ should never be reached +- +- .align 2 +-.L__hyp_reentry_vectors_offset: .long __hyp_reentry_vectors - . + #else + b __enter_kernel + #endif +diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S +index 26d8e03b1dd3..103d0bdb2b7e 100644 +--- a/arch/arm/kernel/hyp-stub.S ++++ b/arch/arm/kernel/hyp-stub.S +@@ -24,41 +24,38 @@ ENTRY(__boot_cpu_mode) + .text + + /* +- * Save the primary CPU boot mode. Requires 3 scratch registers. ++ * Save the primary CPU boot mode. Requires 2 scratch registers. + */ +- .macro store_primary_cpu_mode reg1, reg2, reg3 ++ .macro store_primary_cpu_mode reg1, reg2 + mrs \reg1, cpsr + and \reg1, \reg1, #MODE_MASK +- adr \reg2, .L__boot_cpu_mode_offset +- ldr \reg3, [\reg2] +- str \reg1, [\reg2, \reg3] ++ str_l \reg1, __boot_cpu_mode, \reg2 + .endm + + /* + * Compare the current mode with the one saved on the primary CPU. + * If they don't match, record that fact. The Z bit indicates + * if there's a match or not. +- * Requires 3 additionnal scratch registers. ++ * Requires 2 additional scratch registers. + */ +- .macro compare_cpu_mode_with_primary mode, reg1, reg2, reg3 +- adr \reg2, .L__boot_cpu_mode_offset +- ldr \reg3, [\reg2] +- ldr \reg1, [\reg2, \reg3] ++ .macro compare_cpu_mode_with_primary mode, reg1, reg2 ++ adr_l \reg2, __boot_cpu_mode ++ ldr \reg1, [\reg2] + cmp \mode, \reg1 @ matches primary CPU boot mode? + orrne \reg1, \reg1, #BOOT_CPU_MODE_MISMATCH +- strne \reg1, [\reg2, \reg3] @ record what happened and give up ++ strne \reg1, [\reg2] @ record what happened and give up + .endm + + #else /* ZIMAGE */ + +- .macro store_primary_cpu_mode reg1:req, reg2:req, reg3:req ++ .macro store_primary_cpu_mode reg1:req, reg2:req + .endm + + /* + * The zImage loader only runs on one CPU, so we don't bother with mult-CPU + * consistency checking: + */ +- .macro compare_cpu_mode_with_primary mode, reg1, reg2, reg3 ++ .macro compare_cpu_mode_with_primary mode, reg1, reg2 + cmp \mode, \mode + .endm + +@@ -73,7 +70,7 @@ ENTRY(__boot_cpu_mode) + */ + @ Call this from the primary CPU + ENTRY(__hyp_stub_install) +- store_primary_cpu_mode r4, r5, r6 ++ store_primary_cpu_mode r4, r5 + ENDPROC(__hyp_stub_install) + + @ fall through... +@@ -87,7 +84,7 @@ ENTRY(__hyp_stub_install_secondary) + * If the secondary has booted with a different mode, give up + * immediately. + */ +- compare_cpu_mode_with_primary r4, r5, r6, r7 ++ compare_cpu_mode_with_primary r4, r5, r6 + retne lr + + /* +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: neocortex-vision +Date: Thu, 28 Oct 2021 17:37:36 +0100 +Subject: [PATCH 916/941] media: i2c: imx477: Add vsync trigger_mode parameter + +trigger_mode == 0 (default) => no effect / no registers written +trigger_mode == 1 => source +trigger_mode == 2 => sink + +This can be set e.g. in /boot/cmdline.txt as imx477.trigger_mode=N + +Signed-off-by: Jonas Jacob +--- + drivers/media/i2c/imx477.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/drivers/media/i2c/imx477.c b/drivers/media/i2c/imx477.c +index cd3296f8ab41..b2d4fb54cb1e 100644 +--- a/drivers/media/i2c/imx477.c ++++ b/drivers/media/i2c/imx477.c +@@ -25,6 +25,10 @@ static int dpc_enable = 1; + module_param(dpc_enable, int, 0644); + MODULE_PARM_DESC(dpc_enable, "Enable on-sensor DPC"); + ++static int trigger_mode; ++module_param(trigger_mode, int, 0644); ++MODULE_PARM_DESC(trigger_mode, "Set vsync trigger mode: 1=source, 2=sink"); ++ + #define IMX477_REG_VALUE_08BIT 1 + #define IMX477_REG_VALUE_16BIT 2 + +@@ -98,6 +102,12 @@ MODULE_PARM_DESC(dpc_enable, "Enable on-sensor DPC"); + #define IMX477_TEST_PATTERN_B_DEFAULT 0 + #define IMX477_TEST_PATTERN_GB_DEFAULT 0 + ++/* Trigger mode */ ++#define IMX477_REG_MC_MODE 0x3f0b ++#define IMX477_REG_MS_SEL 0x3041 ++#define IMX477_REG_XVS_IO_CTRL 0x3040 ++#define IMX477_REG_EXTOUT_EN 0x4b81 ++ + /* Embedded metadata stream structure */ + #define IMX477_EMBEDDED_LINE_WIDTH 16384 + #define IMX477_NUM_EMBEDDED_LINES 1 +@@ -1719,6 +1729,21 @@ static int imx477_start_streaming(struct imx477 *imx477) + imx477_write_reg(imx477, 0x0b05, IMX477_REG_VALUE_08BIT, !!dpc_enable); + imx477_write_reg(imx477, 0x0b06, IMX477_REG_VALUE_08BIT, !!dpc_enable); + ++ /* Set vsync trigger mode */ ++ if (trigger_mode != 0) { ++ /* trigger_mode == 1 for source, 2 for sink */ ++ const u32 val = (trigger_mode == 1) ? 1 : 0; ++ ++ imx477_write_reg(imx477, IMX477_REG_MC_MODE, ++ IMX477_REG_VALUE_08BIT, 1); ++ imx477_write_reg(imx477, IMX477_REG_MS_SEL, ++ IMX477_REG_VALUE_08BIT, val); ++ imx477_write_reg(imx477, IMX477_REG_XVS_IO_CTRL, ++ IMX477_REG_VALUE_08BIT, val); ++ imx477_write_reg(imx477, IMX477_REG_EXTOUT_EN, ++ IMX477_REG_VALUE_08BIT, val); ++ } ++ + /* Apply customized values from user */ + ret = __v4l2_ctrl_handler_setup(imx477->sd.ctrl_handler); + if (ret) +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mateusz Kwiatkowski +Date: Thu, 15 Jul 2021 01:08:08 +0200 +Subject: [PATCH 917/941] drm/vc4: Relax VEC modeline requirements and add + progressive mode support + +Make vc4_vec_encoder_atomic_check() accept arbitrary modelines, as long +as they result in somewhat sane output from the VEC. The bounds have +been determined empirically. Additionally, add support for the +progressive 262-line and 312-line modes. + +Signed-off-by: Mateusz Kwiatkowski +--- + drivers/gpu/drm/vc4/vc4_crtc.c | 1 + + drivers/gpu/drm/vc4/vc4_vec.c | 97 ++++++++++++++++++++++++++++------ + 2 files changed, 83 insertions(+), 15 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c +index e349a5a55c67..8a7b09c6ce80 100644 +--- a/drivers/gpu/drm/vc4/vc4_crtc.c ++++ b/drivers/gpu/drm/vc4/vc4_crtc.c +@@ -408,6 +408,7 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc, struct drm_encoder *encode + CRTC_WRITE(PV_V_CONTROL, + PV_VCONTROL_CONTINUOUS | + (is_dsi ? PV_VCONTROL_DSI : 0)); ++ CRTC_WRITE(PV_VSYNCD_EVEN, 0); + } + + CRTC_WRITE(PV_VERTA, +diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c +index 596b59ff6c9a..c4250dd0d368 100644 +--- a/drivers/gpu/drm/vc4/vc4_vec.c ++++ b/drivers/gpu/drm/vc4/vc4_vec.c +@@ -429,18 +429,11 @@ static int vc4_vec_connector_atomic_check(struct drm_connector *conn, + struct drm_connector_state *new_state = + drm_atomic_get_new_connector_state(state, conn); + +- const struct vc4_vec_tv_mode *vec_mode = +- &vc4_vec_tv_modes[new_state->tv.mode]; +- +- if (new_state->crtc) { ++ if (new_state->crtc && old_state->tv.mode != new_state->tv.mode) { + struct drm_crtc_state *crtc_state = + drm_atomic_get_new_crtc_state(state, new_state->crtc); + +- if (!drm_mode_equal(vec_mode->mode, &crtc_state->mode)) +- return -EINVAL; +- +- if (old_state->tv.mode != new_state->tv.mode) +- crtc_state->mode_changed = true; ++ crtc_state->mode_changed = true; + } + + return 0; +@@ -565,7 +558,10 @@ static void vc4_vec_encoder_enable(struct drm_encoder *encoder) + VEC_WRITE(VEC_CLMP0_START, 0xac); + VEC_WRITE(VEC_CLMP0_END, 0xec); + VEC_WRITE(VEC_CONFIG2, +- VEC_CONFIG2_UV_DIG_DIS | VEC_CONFIG2_RGB_DIG_DIS); ++ VEC_CONFIG2_UV_DIG_DIS | ++ VEC_CONFIG2_RGB_DIG_DIS | ++ ((encoder->crtc->state->adjusted_mode.flags & ++ DRM_MODE_FLAG_INTERLACE) ? 0 : VEC_CONFIG2_PROG_SCAN)); + VEC_WRITE(VEC_CONFIG3, VEC_CONFIG3_HORIZ_LEN_STD); + VEC_WRITE(VEC_DAC_CONFIG, vec->variant->dac_config); + +@@ -588,17 +584,88 @@ static void vc4_vec_encoder_enable(struct drm_encoder *encoder) + } + + +-static bool vc4_vec_encoder_mode_fixup(struct drm_encoder *encoder, +- const struct drm_display_mode *mode, +- struct drm_display_mode *adjusted_mode) ++static int vc4_vec_encoder_atomic_check(struct drm_encoder *encoder, ++ struct drm_crtc_state *crtc_state, ++ struct drm_connector_state *conn_state) + { +- return true; ++ const struct drm_display_mode *reference_mode = ++ vc4_vec_tv_modes[conn_state->tv.mode].mode; ++ ++ if (crtc_state->adjusted_mode.crtc_clock != reference_mode->clock || ++ crtc_state->adjusted_mode.crtc_htotal != reference_mode->htotal || ++ crtc_state->adjusted_mode.crtc_hdisplay % 4 != 0 || ++ crtc_state->adjusted_mode.crtc_hsync_end - ++ crtc_state->adjusted_mode.crtc_hsync_start < 1) ++ return -EINVAL; ++ ++ switch (reference_mode->vtotal) { ++ case 525: ++ if (crtc_state->adjusted_mode.crtc_vdisplay < 1 || ++ crtc_state->adjusted_mode.crtc_vdisplay > 253 || ++ crtc_state->adjusted_mode.crtc_vsync_start - ++ crtc_state->adjusted_mode.crtc_vdisplay < 1 || ++ crtc_state->adjusted_mode.crtc_vsync_end - ++ crtc_state->adjusted_mode.crtc_vsync_start != 3 || ++ crtc_state->adjusted_mode.crtc_vtotal - ++ crtc_state->adjusted_mode.crtc_vsync_end < 4 || ++ crtc_state->adjusted_mode.crtc_vtotal > 262) ++ return -EINVAL; ++ ++ if ((crtc_state->adjusted_mode.flags & ++ DRM_MODE_FLAG_INTERLACE) && ++ (crtc_state->adjusted_mode.vdisplay % 2 != 0 || ++ crtc_state->adjusted_mode.vsync_start % 2 != 1 || ++ crtc_state->adjusted_mode.vsync_end % 2 != 1 || ++ crtc_state->adjusted_mode.vtotal % 2 != 1)) ++ return -EINVAL; ++ ++ /* progressive mode is hard-wired to 262 total lines */ ++ if (!(crtc_state->adjusted_mode.flags & ++ DRM_MODE_FLAG_INTERLACE) && ++ crtc_state->adjusted_mode.crtc_vtotal != 262) ++ return -EINVAL; ++ ++ break; ++ ++ case 625: ++ if (crtc_state->adjusted_mode.crtc_vdisplay < 1 || ++ crtc_state->adjusted_mode.crtc_vdisplay > 305 || ++ crtc_state->adjusted_mode.crtc_vsync_start - ++ crtc_state->adjusted_mode.crtc_vdisplay < 1 || ++ crtc_state->adjusted_mode.crtc_vsync_end - ++ crtc_state->adjusted_mode.crtc_vsync_start != 3 || ++ crtc_state->adjusted_mode.crtc_vtotal - ++ crtc_state->adjusted_mode.crtc_vsync_end < 2 || ++ crtc_state->adjusted_mode.crtc_vtotal > 312) ++ return -EINVAL; ++ ++ if ((crtc_state->adjusted_mode.flags & ++ DRM_MODE_FLAG_INTERLACE) && ++ (crtc_state->adjusted_mode.vdisplay % 2 != 0 || ++ crtc_state->adjusted_mode.vsync_start % 2 != 0 || ++ crtc_state->adjusted_mode.vsync_end % 2 != 0 || ++ crtc_state->adjusted_mode.vtotal % 2 != 1)) ++ return -EINVAL; ++ ++ /* progressive mode is hard-wired to 312 total lines */ ++ if (!(crtc_state->adjusted_mode.flags & ++ DRM_MODE_FLAG_INTERLACE) && ++ crtc_state->adjusted_mode.crtc_vtotal != 312) ++ return -EINVAL; ++ ++ break; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ return 0; + } + + static const struct drm_encoder_helper_funcs vc4_vec_encoder_helper_funcs = { + .disable = vc4_vec_encoder_disable, + .enable = vc4_vec_encoder_enable, +- .mode_fixup = vc4_vec_encoder_mode_fixup, ++ .atomic_check = vc4_vec_encoder_atomic_check, + }; + + static const struct vc4_vec_variant bcm2835_vec_variant = { +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mateusz Kwiatkowski +Date: Thu, 15 Jul 2021 01:08:11 +0200 +Subject: [PATCH 918/941] drm/vc4: Make VEC progressive modes readily + accessible + +Add predefined modelines for the 240p (NTSC) and 288p (PAL) progressive +modes, and report them through vc4_vec_connector_get_modes(). + +Signed-off-by: Mateusz Kwiatkowski +--- + drivers/gpu/drm/vc4/vc4_vec.c | 73 ++++++++++++++++++++++++++--------- + 1 file changed, 55 insertions(+), 18 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c +index c4250dd0d368..255e5c6c48e0 100644 +--- a/drivers/gpu/drm/vc4/vc4_vec.c ++++ b/drivers/gpu/drm/vc4/vc4_vec.c +@@ -251,7 +251,8 @@ enum vc4_vec_tv_mode_id { + }; + + struct vc4_vec_tv_mode { +- const struct drm_display_mode *mode; ++ const struct drm_display_mode *interlaced_mode; ++ const struct drm_display_mode *progressive_mode; + u32 config0; + u32 config1; + u32 custom_freq; +@@ -285,61 +286,81 @@ static const struct debugfs_reg32 vec_regs[] = { + }; + + static const struct drm_display_mode drm_mode_480i = { +- DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 13500, ++ DRM_MODE("720x480i", DRM_MODE_TYPE_DRIVER, 13500, + 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, + 480, 480 + 7, 480 + 7 + 6, 525, 0, + DRM_MODE_FLAG_INTERLACE) + }; + ++static const struct drm_display_mode drm_mode_240p = { ++ DRM_MODE("720x240", DRM_MODE_TYPE_DRIVER, 13500, ++ 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, ++ 240, 240 + 3, 240 + 3 + 3, 262, 0, 0) ++}; ++ + static const struct drm_display_mode drm_mode_576i = { +- DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 13500, ++ DRM_MODE("720x576i", DRM_MODE_TYPE_DRIVER, 13500, + 720, 720 + 20, 720 + 20 + 64, 720 + 20 + 64 + 60, 0, + 576, 576 + 4, 576 + 4 + 6, 625, 0, + DRM_MODE_FLAG_INTERLACE) + }; + ++static const struct drm_display_mode drm_mode_288p = { ++ DRM_MODE("720x288", DRM_MODE_TYPE_DRIVER, 13500, ++ 720, 720 + 20, 720 + 20 + 64, 720 + 20 + 64 + 60, 0, ++ 288, 288 + 2, 288 + 2 + 3, 312, 0, 0) ++}; ++ + static const struct vc4_vec_tv_mode vc4_vec_tv_modes[] = { + [VC4_VEC_TV_MODE_NTSC] = { +- .mode = &drm_mode_480i, ++ .interlaced_mode = &drm_mode_480i, ++ .progressive_mode = &drm_mode_240p, + .config0 = VEC_CONFIG0_NTSC_STD | VEC_CONFIG0_PDEN, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, + }, + [VC4_VEC_TV_MODE_NTSC_J] = { +- .mode = &drm_mode_480i, ++ .interlaced_mode = &drm_mode_480i, ++ .progressive_mode = &drm_mode_240p, + .config0 = VEC_CONFIG0_NTSC_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, + }, + [VC4_VEC_TV_MODE_NTSC_443] = { + /* NTSC with PAL chroma frequency */ +- .mode = &drm_mode_480i, ++ .interlaced_mode = &drm_mode_480i, ++ .progressive_mode = &drm_mode_240p, + .config0 = VEC_CONFIG0_NTSC_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS | VEC_CONFIG1_CUSTOM_FREQ, + .custom_freq = 0x2a098acb, + }, + [VC4_VEC_TV_MODE_PAL] = { +- .mode = &drm_mode_576i, ++ .interlaced_mode = &drm_mode_576i, ++ .progressive_mode = &drm_mode_288p, + .config0 = VEC_CONFIG0_PAL_BDGHI_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, + }, + [VC4_VEC_TV_MODE_PAL_M] = { +- .mode = &drm_mode_480i, ++ .interlaced_mode = &drm_mode_480i, ++ .progressive_mode = &drm_mode_240p, + .config0 = VEC_CONFIG0_PAL_M_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, + }, + [VC4_VEC_TV_MODE_PAL_N] = { +- .mode = &drm_mode_576i, ++ .interlaced_mode = &drm_mode_576i, ++ .progressive_mode = &drm_mode_288p, + .config0 = VEC_CONFIG0_PAL_N_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, + }, + [VC4_VEC_TV_MODE_PAL60] = { + /* PAL-M with chroma frequency of regular PAL */ +- .mode = &drm_mode_480i, ++ .interlaced_mode = &drm_mode_480i, ++ .progressive_mode = &drm_mode_240p, + .config0 = VEC_CONFIG0_PAL_M_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS | VEC_CONFIG1_CUSTOM_FREQ, + .custom_freq = 0x2a098acb, + }, + [VC4_VEC_TV_MODE_SECAM] = { +- .mode = &drm_mode_576i, ++ .interlaced_mode = &drm_mode_576i, ++ .progressive_mode = &drm_mode_288p, + .config0 = VEC_CONFIG0_SECAM_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, + .custom_freq = 0x29c71c72, +@@ -399,16 +420,32 @@ static void vc4_vec_connector_destroy(struct drm_connector *connector) + static int vc4_vec_connector_get_modes(struct drm_connector *connector) + { + struct drm_connector_state *state = connector->state; +- struct drm_display_mode *mode; +- +- mode = drm_mode_duplicate(connector->dev, +- vc4_vec_tv_modes[state->tv.mode].mode); +- if (!mode) { ++ struct drm_display_mode *interlaced_mode, *progressive_mode; ++ ++ interlaced_mode = ++ drm_mode_duplicate(connector->dev, ++ vc4_vec_tv_modes[state->tv.mode].interlaced_mode); ++ progressive_mode = ++ drm_mode_duplicate(connector->dev, ++ vc4_vec_tv_modes[state->tv.mode].progressive_mode); ++ if (!interlaced_mode || !progressive_mode) { + DRM_ERROR("Failed to create a new display mode\n"); ++ drm_mode_destroy(connector->dev, interlaced_mode); ++ drm_mode_destroy(connector->dev, progressive_mode); + return -ENOMEM; + } + +- drm_mode_probed_add(connector, mode); ++ if (connector->cmdline_mode.specified && ++ connector->cmdline_mode.refresh_specified && ++ !connector->cmdline_mode.interlace) ++ /* progressive mode set at boot, let's make it preferred */ ++ progressive_mode->type |= DRM_MODE_TYPE_PREFERRED; ++ else ++ /* otherwise, interlaced mode is preferred */ ++ interlaced_mode->type |= DRM_MODE_TYPE_PREFERRED; ++ ++ drm_mode_probed_add(connector, interlaced_mode); ++ drm_mode_probed_add(connector, progressive_mode); + + return 1; + } +@@ -589,7 +626,7 @@ static int vc4_vec_encoder_atomic_check(struct drm_encoder *encoder, + struct drm_connector_state *conn_state) + { + const struct drm_display_mode *reference_mode = +- vc4_vec_tv_modes[conn_state->tv.mode].mode; ++ vc4_vec_tv_modes[conn_state->tv.mode].interlaced_mode; + + if (crtc_state->adjusted_mode.crtc_clock != reference_mode->clock || + crtc_state->adjusted_mode.crtc_htotal != reference_mode->htotal || +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Sun, 31 Oct 2021 11:47:59 +0000 +Subject: [PATCH 919/941] bcm2835-v4l2-codec: Remove advertised support of VP8 + +The support for this format by firmware is very limited +and won't be faster than the arm. + +Signed-off-by: Dom Cobley +--- + .../staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 5 ----- + 1 file changed, 5 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 e8452c82d088..351d693873ed 100644 +--- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c ++++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +@@ -597,11 +597,6 @@ static const struct bcm2835_codec_fmt supported_formats[] = { + .depth = 0, + .flags = V4L2_FMT_FLAG_COMPRESSED, + .mmal_fmt = MMAL_ENCODING_MP2V, +- }, { +- .fourcc = V4L2_PIX_FMT_VP8, +- .depth = 0, +- .flags = V4L2_FMT_FLAG_COMPRESSED, +- .mmal_fmt = MMAL_ENCODING_VP8, + }, { + .fourcc = V4L2_PIX_FMT_VC1_ANNEX_G, + .depth = 0, +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Mon, 1 Nov 2021 15:44:31 +0000 +Subject: [PATCH 920/941] ARM: dts: Rename Zero 2 W DT files + +Retain the old names for backwards compatibility for a while, while the +necessary firmware change rolls out. + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts | 177 ++++++++++++++++++++ + arch/arm/boot/dts/bcm2710-rpi-zero-2.dts | 178 +-------------------- + 3 files changed, 179 insertions(+), 177 deletions(-) + create mode 100644 arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 66956d0f2c18..c961dfbbad69 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \ + bcm2708-rpi-zero.dtb \ + bcm2708-rpi-zero-w.dtb \ + bcm2710-rpi-zero-2.dtb \ ++ bcm2710-rpi-zero-2-w.dtb \ + bcm2709-rpi-2-b.dtb \ + bcm2710-rpi-2-b.dtb \ + bcm2710-rpi-3-b.dtb \ +diff --git a/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts b/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts +new file mode 100644 +index 000000000000..6d0f0c9aae0f +--- /dev/null ++++ b/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts +@@ -0,0 +1,177 @@ ++/dts-v1/; ++ ++#include "bcm2710.dtsi" ++#include "bcm2709-rpi.dtsi" ++#include "bcm283x-rpi-csi1-2lane.dtsi" ++#include "bcm283x-rpi-i2c0mux_0_44.dtsi" ++#include "bcm2708-rpi-bt.dtsi" ++#include "bcm283x-rpi-cam1-regulator.dtsi" ++ ++/ { ++ compatible = "raspberrypi,model-zero-2-w", "brcm,bcm2837"; ++ model = "Raspberry Pi Zero 2 W"; ++ ++ chosen { ++ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1"; ++ }; ++ ++ aliases { ++ serial0 = &uart1; ++ serial1 = &uart0; ++ mmc1 = &mmcnr; ++ }; ++}; ++ ++&gpio { ++ spi0_pins: spi0_pins { ++ brcm,pins = <9 10 11>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ spi0_cs_pins: spi0_cs_pins { ++ brcm,pins = <8 7>; ++ brcm,function = <1>; /* output */ ++ }; ++ ++ i2c0_pins: i2c0 { ++ brcm,pins = <0 1>; ++ brcm,function = <4>; ++ }; ++ ++ i2c1_pins: i2c1 { ++ brcm,pins = <2 3>; ++ brcm,function = <4>; ++ }; ++ ++ i2s_pins: i2s { ++ brcm,pins = <18 19 20 21>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ sdio_pins: sdio_pins { ++ brcm,pins = <34 35 36 37 38 39>; ++ brcm,function = <7>; // alt3 = SD1 ++ brcm,pull = <0 2 2 2 2 2>; ++ }; ++ ++ bt_pins: bt_pins { ++ brcm,pins = <43>; ++ brcm,function = <4>; /* alt0:GPCLK2 */ ++ brcm,pull = <0>; ++ }; ++ ++ uart0_pins: uart0_pins { ++ brcm,pins = <30 31 32 33>; ++ brcm,function = <7>; /* alt3=UART0 */ ++ brcm,pull = <2 0 0 2>; /* up none none up */ ++ }; ++ ++ uart1_pins: uart1_pins { ++ brcm,pins; ++ brcm,function; ++ brcm,pull; ++ }; ++ ++ audio_pins: audio_pins { ++ brcm,pins = <>; ++ brcm,function = <>; ++ }; ++}; ++ ++&mmcnr { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdio_pins>; ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pins &bt_pins>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "okay"; ++}; ++ ++&spi0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; ++ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; ++ ++ spidev0: spidev@0{ ++ compatible = "spidev"; ++ reg = <0>; /* CE0 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <125000000>; ++ }; ++ ++ spidev1: spidev@1{ ++ compatible = "spidev"; ++ reg = <1>; /* CE1 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <125000000>; ++ }; ++}; ++ ++&i2c0if { ++ clock-frequency = <100000>; ++}; ++ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c1_pins>; ++ clock-frequency = <100000>; ++}; ++ ++&i2c2 { ++ clock-frequency = <100000>; ++}; ++ ++&i2s { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s_pins>; ++}; ++ ++&leds { ++ act_led: led-act { ++ label = "led0"; ++ linux,default-trigger = "actpwr"; ++ gpios = <&gpio 29 GPIO_ACTIVE_LOW>; ++ }; ++}; ++ ++&hdmi { ++ hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; ++}; ++ ++&audio { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&audio_pins>; ++ brcm,disable-headphones = <1>; ++}; ++ ++&bt { ++ shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; ++}; ++ ++&minibt { ++ shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; ++}; ++ ++&cam1_reg { ++ gpio = <&gpio 40 GPIO_ACTIVE_HIGH>; ++}; ++ ++/ { ++ __overrides__ { ++ act_led_gpio = <&act_led>,"gpios:4"; ++ act_led_activelow = <&act_led>,"gpios:8"; ++ act_led_trigger = <&act_led>,"linux,default-trigger"; ++ }; ++}; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-zero-2.dts b/arch/arm/boot/dts/bcm2710-rpi-zero-2.dts +index 42185a450666..daa12bd30d6b 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-zero-2.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-zero-2.dts +@@ -1,177 +1 @@ +-/dts-v1/; +- +-#include "bcm2710.dtsi" +-#include "bcm2709-rpi.dtsi" +-#include "bcm283x-rpi-csi1-2lane.dtsi" +-#include "bcm283x-rpi-i2c0mux_0_44.dtsi" +-#include "bcm2708-rpi-bt.dtsi" +-#include "bcm283x-rpi-cam1-regulator.dtsi" +- +-/ { +- compatible = "raspberrypi,model-zero-2", "brcm,bcm2837"; +- model = "Raspberry Pi Zero 2"; +- +- chosen { +- bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1"; +- }; +- +- aliases { +- serial0 = &uart1; +- serial1 = &uart0; +- mmc1 = &mmcnr; +- }; +-}; +- +-&gpio { +- spi0_pins: spi0_pins { +- brcm,pins = <9 10 11>; +- brcm,function = <4>; /* alt0 */ +- }; +- +- spi0_cs_pins: spi0_cs_pins { +- brcm,pins = <8 7>; +- brcm,function = <1>; /* output */ +- }; +- +- i2c0_pins: i2c0 { +- brcm,pins = <0 1>; +- brcm,function = <4>; +- }; +- +- i2c1_pins: i2c1 { +- brcm,pins = <2 3>; +- brcm,function = <4>; +- }; +- +- i2s_pins: i2s { +- brcm,pins = <18 19 20 21>; +- brcm,function = <4>; /* alt0 */ +- }; +- +- sdio_pins: sdio_pins { +- brcm,pins = <34 35 36 37 38 39>; +- brcm,function = <7>; // alt3 = SD1 +- brcm,pull = <0 2 2 2 2 2>; +- }; +- +- bt_pins: bt_pins { +- brcm,pins = <43>; +- brcm,function = <4>; /* alt0:GPCLK2 */ +- brcm,pull = <0>; +- }; +- +- uart0_pins: uart0_pins { +- brcm,pins = <30 31 32 33>; +- brcm,function = <7>; /* alt3=UART0 */ +- brcm,pull = <2 0 0 2>; /* up none none up */ +- }; +- +- uart1_pins: uart1_pins { +- brcm,pins; +- brcm,function; +- brcm,pull; +- }; +- +- audio_pins: audio_pins { +- brcm,pins = <>; +- brcm,function = <>; +- }; +-}; +- +-&mmcnr { +- pinctrl-names = "default"; +- pinctrl-0 = <&sdio_pins>; +- bus-width = <4>; +- status = "okay"; +-}; +- +-&uart0 { +- pinctrl-names = "default"; +- pinctrl-0 = <&uart0_pins &bt_pins>; +- status = "okay"; +-}; +- +-&uart1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&uart1_pins>; +- status = "okay"; +-}; +- +-&spi0 { +- pinctrl-names = "default"; +- pinctrl-0 = <&spi0_pins &spi0_cs_pins>; +- cs-gpios = <&gpio 8 1>, <&gpio 7 1>; +- +- spidev0: spidev@0{ +- compatible = "spidev"; +- reg = <0>; /* CE0 */ +- #address-cells = <1>; +- #size-cells = <0>; +- spi-max-frequency = <125000000>; +- }; +- +- spidev1: spidev@1{ +- compatible = "spidev"; +- reg = <1>; /* CE1 */ +- #address-cells = <1>; +- #size-cells = <0>; +- spi-max-frequency = <125000000>; +- }; +-}; +- +-&i2c0if { +- clock-frequency = <100000>; +-}; +- +-&i2c1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&i2c1_pins>; +- clock-frequency = <100000>; +-}; +- +-&i2c2 { +- clock-frequency = <100000>; +-}; +- +-&i2s { +- pinctrl-names = "default"; +- pinctrl-0 = <&i2s_pins>; +-}; +- +-&leds { +- act_led: led-act { +- label = "led0"; +- linux,default-trigger = "actpwr"; +- gpios = <&gpio 29 GPIO_ACTIVE_LOW>; +- }; +-}; +- +-&hdmi { +- hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; +-}; +- +-&audio { +- pinctrl-names = "default"; +- pinctrl-0 = <&audio_pins>; +- brcm,disable-headphones = <1>; +-}; +- +-&bt { +- shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; +-}; +- +-&minibt { +- shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; +-}; +- +-&cam1_reg { +- gpio = <&gpio 40 GPIO_ACTIVE_HIGH>; +-}; +- +-/ { +- __overrides__ { +- act_led_gpio = <&act_led>,"gpios:4"; +- act_led_activelow = <&act_led>,"gpios:8"; +- act_led_trigger = <&act_led>,"linux,default-trigger"; +- }; +-}; ++#include "bcm2710-rpi-zero-2-w.dts" +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 2 Nov 2021 11:13:42 +0000 +Subject: [PATCH 921/941] 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 +and makes it harder to spot real errors, so don't do it. + +See: https://github.com/raspberrypi/linux/issues/4663 + +Signed-off-by: Phil Elwell +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h +index 4146faeed344..d7d0f84f3693 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h +@@ -63,7 +63,12 @@ void __brcmf_err(struct brcmf_bus *bus, const char *func, const char *fmt, ...); + #if defined(DEBUG) || defined(CONFIG_BRCM_TRACING) + + /* For debug/tracing purposes treat info messages as errors */ +-#define brcmf_info brcmf_err ++// #define brcmf_info brcmf_err ++ ++#define brcmf_info(fmt, ...) \ ++ do { \ ++ pr_info("%s: " fmt, __func__, ##__VA_ARGS__); \ ++ } while (0) + + __printf(3, 4) + void __brcmf_dbg(u32 level, const char *func, const char *fmt, ...); +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 26 Oct 2021 16:38:44 +0100 +Subject: [PATCH 922/941] ARM: dt: Add DT nodes for the WLAN interfaces + +Mirror upstream changes into the downstream dts files. + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/bcm2708-rpi-zero-w.dts | 7 +++++++ + arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 7 +++++++ + arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 7 +++++++ + arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts | 7 +++++++ + 4 files changed, 28 insertions(+) + +diff --git a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts +index 75a5b41514f9..63faf4986987 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts +@@ -83,6 +83,13 @@ + pinctrl-0 = <&sdio_pins>; + bus-width = <4>; + status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; + }; + + &uart0 { +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 7e12c05cc28b..a1b169e554ba 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts +@@ -84,6 +84,13 @@ + pinctrl-0 = <&sdio_pins>; + bus-width = <4>; + status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; + }; + + &firmware { +diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts +index d40722ddc286..5cfb9ad76ca9 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts +@@ -84,6 +84,13 @@ + pinctrl-0 = <&sdio_pins>; + bus-width = <4>; + status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; + }; + + &soc { +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 6d0f0c9aae0f..2bd223a405a7 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts +@@ -83,6 +83,13 @@ + pinctrl-0 = <&sdio_pins>; + bus-width = <4>; + status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; + }; + + &uart0 { +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 26 Oct 2021 11:24:54 +0100 +Subject: [PATCH 923/941] Revert "brcmfmac: BCM43436 needs dedicated firmware" + +This reverts commit c52581ffa49b9c0e5de3349436c283fe20128073. + +Replace the hardcoded alternate firmware names with mappings provided +from Device Tree. + +Signed-off-by: Phil Elwell +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index 3ab944c39677..f6c51680988d 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -618,7 +618,6 @@ BRCMF_FW_DEF(4339, "brcmfmac4339-sdio"); + BRCMF_FW_DEF(43430A0, "brcmfmac43430a0-sdio"); + /* Note the names are not postfixed with a1 for backward compatibility */ + BRCMF_FW_DEF(43430A1, "brcmfmac43430-sdio"); +-BRCMF_FW_DEF(43436, "brcmfmac43436-sdio"); + BRCMF_FW_DEF(43455, "brcmfmac43455-sdio"); + BRCMF_FW_DEF(43456, "brcmfmac43456-sdio"); + BRCMF_FW_DEF(4354, "brcmfmac4354-sdio"); +@@ -641,8 +640,7 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { + BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362), + BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339), + BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000001, 43430A0), +- BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFA, 43430A1), +- BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000004, 43436), ++ BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFE, 43430A1), + BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0x00000200, 43456), + BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFDC0, 43455), + BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354), +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 28 Oct 2021 15:03:16 +0100 +Subject: [PATCH 924/941] 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 +and allows downstream firmwares to coexist with upstream. + +Signed-off-by: Phil Elwell +--- + .../wireless/broadcom/brcm80211/brcmfmac/of.c | 36 ++++++++++++++ + .../wireless/broadcom/brcm80211/brcmfmac/of.h | 7 +++ + .../broadcom/brcm80211/brcmfmac/sdio.c | 47 +++++++++++++++++-- + 3 files changed, 87 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +index a7554265f95f..db4ac19f0800 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +@@ -10,6 +10,7 @@ + #include "debug.h" + #include "core.h" + #include "common.h" ++#include "firmware.h" + #include "of.h" + + void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, +@@ -65,3 +66,38 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + sdio->oob_irq_nr = irq; + sdio->oob_irq_flags = irqf; + } ++ ++struct brcmf_firmware_mapping * ++brcmf_of_fwnames(struct device *dev, u32 *fwname_count) ++{ ++ struct device_node *np = dev->of_node; ++ struct brcmf_firmware_mapping *fwnames; ++ struct device_node *map_np, *fw_np; ++ int of_count; ++ int count = 0; ++ ++ map_np = of_get_child_by_name(np, "firmwares"); ++ of_count = of_get_child_count(map_np); ++ if (!of_count) ++ return NULL; ++ ++ fwnames = devm_kcalloc(dev, of_count, ++ sizeof(struct brcmf_firmware_mapping), ++ GFP_KERNEL); ++ ++ for_each_child_of_node(map_np, fw_np) ++ { ++ struct brcmf_firmware_mapping *cur = &fwnames[count]; ++ ++ if (of_property_read_u32(fw_np, "chipid", &cur->chipid) || ++ of_property_read_u32(fw_np, "revmask", &cur->revmask)) ++ continue; ++ cur->fw_base = of_get_property(fw_np, "fw_base", NULL); ++ if (cur->fw_base) ++ count++; ++ } ++ ++ *fwname_count = count; ++ ++ return count ? fwnames : NULL; ++} +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h +index 10bf52253337..5b39a39812d0 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h +@@ -5,9 +5,16 @@ + #ifdef CONFIG_OF + void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + struct brcmf_mp_device *settings); ++struct brcmf_firmware_mapping * ++brcmf_of_fwnames(struct device *dev, u32 *map_count); + #else + static void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + struct brcmf_mp_device *settings) + { + } ++static struct brcmf_firmware_mapping * ++brcmf_of_fwnames(struct device *dev, u32 *map_count) ++{ ++ return NULL; ++} + #endif /* CONFIG_OF */ +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index f6c51680988d..e22699bf3ec3 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -35,6 +35,7 @@ + #include "core.h" + #include "common.h" + #include "bcdc.h" ++#include "of.h" + + #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500) + #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500) +@@ -626,7 +627,7 @@ BRCMF_FW_DEF(4359, "brcmfmac4359-sdio"); + BRCMF_FW_DEF(4373, "brcmfmac4373-sdio"); + BRCMF_FW_DEF(43012, "brcmfmac43012-sdio"); + +-static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { ++static const struct brcmf_firmware_mapping sdio_fwnames[] = { + BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143), + BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x0000001F, 43241B0), + BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4), +@@ -650,6 +651,9 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { + BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012) + }; + ++static const struct brcmf_firmware_mapping *brcmf_sdio_fwnames = sdio_fwnames; ++static u32 brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); ++ + #define TXCTL_CREDITS 2 + + static void pkt_align(struct sk_buff *p, int len, int align) +@@ -4135,7 +4139,7 @@ int brcmf_sdio_get_fwname(struct device *dev, const char *ext, u8 *fw_name, + } + fwreq = brcmf_fw_alloc_request(bus_if->chip, bus_if->chiprev, + brcmf_sdio_fwnames, +- ARRAY_SIZE(brcmf_sdio_fwnames), ++ brcmf_sdio_fwnames_count, + fwnames, ARRAY_SIZE(fwnames)); + if (!fwreq) + return -ENOMEM; +@@ -4191,6 +4195,9 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = { + #define BRCMF_SDIO_FW_CODE 0 + #define BRCMF_SDIO_FW_NVRAM 1 + ++static struct brcmf_fw_request * ++brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus); ++ + static void brcmf_sdio_firmware_callback(struct device *dev, int err, + struct brcmf_fw_request *fwreq) + { +@@ -4206,6 +4213,22 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, + + brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err); + ++ if (err && brcmf_sdio_fwnames != sdio_fwnames) { ++ /* Try again with the standard firmware names */ ++ brcmf_sdio_fwnames = sdio_fwnames; ++ brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); ++ kfree(fwreq); ++ fwreq = brcmf_sdio_prepare_fw_request(bus); ++ if (!fwreq) { ++ err = -ENOMEM; ++ goto fail; ++ } ++ err = brcmf_fw_get_firmwares(dev, fwreq, ++ brcmf_sdio_firmware_callback); ++ if (!err) ++ return; ++ } ++ + if (err) + goto fail; + +@@ -4413,7 +4436,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) + + fwreq = brcmf_fw_alloc_request(bus->ci->chip, bus->ci->chiprev, + brcmf_sdio_fwnames, +- ARRAY_SIZE(brcmf_sdio_fwnames), ++ brcmf_sdio_fwnames_count, + fwnames, ARRAY_SIZE(fwnames)); + if (!fwreq) + return NULL; +@@ -4431,6 +4454,9 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) + struct brcmf_sdio *bus; + struct workqueue_struct *wq; + struct brcmf_fw_request *fwreq; ++ struct brcmf_firmware_mapping *of_fwnames, *fwnames; ++ const int fwname_size = sizeof(struct brcmf_firmware_mapping); ++ u32 of_fw_count; + + brcmf_dbg(TRACE, "Enter\n"); + +@@ -4513,6 +4539,21 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) + + brcmf_dbg(INFO, "completed!!\n"); + ++ of_fwnames = brcmf_of_fwnames(sdiodev->dev, &of_fw_count); ++ if (of_fwnames) ++ fwnames = devm_kcalloc(sdiodev->dev, ++ of_fw_count + brcmf_sdio_fwnames_count, ++ fwname_size, GFP_KERNEL); ++ ++ if (fwnames) { ++ /* The array is scanned in order, so overrides come first */ ++ memcpy(fwnames, of_fwnames, of_fw_count * fwname_size); ++ memcpy(fwnames + of_fw_count, sdio_fwnames, ++ brcmf_sdio_fwnames_count * fwname_size); ++ brcmf_sdio_fwnames = fwnames; ++ brcmf_sdio_fwnames_count += of_fw_count; ++ } ++ + fwreq = brcmf_sdio_prepare_fw_request(bus); + if (!fwreq) { + ret = -ENOMEM; +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 28 Oct 2021 15:09:25 +0100 +Subject: [PATCH 925/941] ARM: dts: Provide WLAN firmware names for Zero 2 W + +BCM43430/2 may be BCM43430B0 or BCM43436P, and BCM43430/1 can be either +BCM43430A1 or BCM43436S, the former being upstream names and the +latter downstream names for differently-sourced sister parts. + +Make the choice of firmwares board-specific (without making the actual +firmwares board-specific) by placing the alternative firmware names for +each part in the DT node. + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +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 2bd223a405a7..1cd3d01a166d 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-zero-2-w.dts +@@ -89,6 +89,19 @@ + brcmf: wifi@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; ++ ++ firmwares { ++ fw_43436p { ++ chipid = <43430>; ++ revmask = <4>; ++ fw_base = "brcm/brcmfmac43436-sdio"; ++ }; ++ fw_43436s { ++ chipid = <43430>; ++ revmask = <2>; ++ fw_base = "brcm/brcmfmac43436s-sdio"; ++ }; ++ }; + }; + }; + +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 2 Nov 2021 12:08:49 +0000 +Subject: [PATCH 926/941] Revert "brcmfmac: Read alternative firmware names + from DT" + +This reverts commit cb02a9793d53ccfcc3368be3a278637955d81f75. +--- + .../wireless/broadcom/brcm80211/brcmfmac/of.c | 36 -------------- + .../wireless/broadcom/brcm80211/brcmfmac/of.h | 7 --- + .../broadcom/brcm80211/brcmfmac/sdio.c | 47 ++----------------- + 3 files changed, 3 insertions(+), 87 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +index db4ac19f0800..a7554265f95f 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +@@ -10,7 +10,6 @@ + #include "debug.h" + #include "core.h" + #include "common.h" +-#include "firmware.h" + #include "of.h" + + void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, +@@ -66,38 +65,3 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + sdio->oob_irq_nr = irq; + sdio->oob_irq_flags = irqf; + } +- +-struct brcmf_firmware_mapping * +-brcmf_of_fwnames(struct device *dev, u32 *fwname_count) +-{ +- struct device_node *np = dev->of_node; +- struct brcmf_firmware_mapping *fwnames; +- struct device_node *map_np, *fw_np; +- int of_count; +- int count = 0; +- +- map_np = of_get_child_by_name(np, "firmwares"); +- of_count = of_get_child_count(map_np); +- if (!of_count) +- return NULL; +- +- fwnames = devm_kcalloc(dev, of_count, +- sizeof(struct brcmf_firmware_mapping), +- GFP_KERNEL); +- +- for_each_child_of_node(map_np, fw_np) +- { +- struct brcmf_firmware_mapping *cur = &fwnames[count]; +- +- if (of_property_read_u32(fw_np, "chipid", &cur->chipid) || +- of_property_read_u32(fw_np, "revmask", &cur->revmask)) +- continue; +- cur->fw_base = of_get_property(fw_np, "fw_base", NULL); +- if (cur->fw_base) +- count++; +- } +- +- *fwname_count = count; +- +- return count ? fwnames : NULL; +-} +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h +index 5b39a39812d0..10bf52253337 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h +@@ -5,16 +5,9 @@ + #ifdef CONFIG_OF + void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + struct brcmf_mp_device *settings); +-struct brcmf_firmware_mapping * +-brcmf_of_fwnames(struct device *dev, u32 *map_count); + #else + static void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + struct brcmf_mp_device *settings) + { + } +-static struct brcmf_firmware_mapping * +-brcmf_of_fwnames(struct device *dev, u32 *map_count) +-{ +- return NULL; +-} + #endif /* CONFIG_OF */ +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index e22699bf3ec3..f6c51680988d 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -35,7 +35,6 @@ + #include "core.h" + #include "common.h" + #include "bcdc.h" +-#include "of.h" + + #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500) + #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500) +@@ -627,7 +626,7 @@ BRCMF_FW_DEF(4359, "brcmfmac4359-sdio"); + BRCMF_FW_DEF(4373, "brcmfmac4373-sdio"); + BRCMF_FW_DEF(43012, "brcmfmac43012-sdio"); + +-static const struct brcmf_firmware_mapping sdio_fwnames[] = { ++static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { + BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143), + BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x0000001F, 43241B0), + BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4), +@@ -651,9 +650,6 @@ static const struct brcmf_firmware_mapping sdio_fwnames[] = { + BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012) + }; + +-static const struct brcmf_firmware_mapping *brcmf_sdio_fwnames = sdio_fwnames; +-static u32 brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); +- + #define TXCTL_CREDITS 2 + + static void pkt_align(struct sk_buff *p, int len, int align) +@@ -4139,7 +4135,7 @@ int brcmf_sdio_get_fwname(struct device *dev, const char *ext, u8 *fw_name, + } + fwreq = brcmf_fw_alloc_request(bus_if->chip, bus_if->chiprev, + brcmf_sdio_fwnames, +- brcmf_sdio_fwnames_count, ++ ARRAY_SIZE(brcmf_sdio_fwnames), + fwnames, ARRAY_SIZE(fwnames)); + if (!fwreq) + return -ENOMEM; +@@ -4195,9 +4191,6 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = { + #define BRCMF_SDIO_FW_CODE 0 + #define BRCMF_SDIO_FW_NVRAM 1 + +-static struct brcmf_fw_request * +-brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus); +- + static void brcmf_sdio_firmware_callback(struct device *dev, int err, + struct brcmf_fw_request *fwreq) + { +@@ -4213,22 +4206,6 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, + + brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err); + +- if (err && brcmf_sdio_fwnames != sdio_fwnames) { +- /* Try again with the standard firmware names */ +- brcmf_sdio_fwnames = sdio_fwnames; +- brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); +- kfree(fwreq); +- fwreq = brcmf_sdio_prepare_fw_request(bus); +- if (!fwreq) { +- err = -ENOMEM; +- goto fail; +- } +- err = brcmf_fw_get_firmwares(dev, fwreq, +- brcmf_sdio_firmware_callback); +- if (!err) +- return; +- } +- + if (err) + goto fail; + +@@ -4436,7 +4413,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) + + fwreq = brcmf_fw_alloc_request(bus->ci->chip, bus->ci->chiprev, + brcmf_sdio_fwnames, +- brcmf_sdio_fwnames_count, ++ ARRAY_SIZE(brcmf_sdio_fwnames), + fwnames, ARRAY_SIZE(fwnames)); + if (!fwreq) + return NULL; +@@ -4454,9 +4431,6 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) + struct brcmf_sdio *bus; + struct workqueue_struct *wq; + struct brcmf_fw_request *fwreq; +- struct brcmf_firmware_mapping *of_fwnames, *fwnames; +- const int fwname_size = sizeof(struct brcmf_firmware_mapping); +- u32 of_fw_count; + + brcmf_dbg(TRACE, "Enter\n"); + +@@ -4539,21 +4513,6 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) + + brcmf_dbg(INFO, "completed!!\n"); + +- of_fwnames = brcmf_of_fwnames(sdiodev->dev, &of_fw_count); +- if (of_fwnames) +- fwnames = devm_kcalloc(sdiodev->dev, +- of_fw_count + brcmf_sdio_fwnames_count, +- fwname_size, GFP_KERNEL); +- +- if (fwnames) { +- /* The array is scanned in order, so overrides come first */ +- memcpy(fwnames, of_fwnames, of_fw_count * fwname_size); +- memcpy(fwnames + of_fw_count, sdio_fwnames, +- brcmf_sdio_fwnames_count * fwname_size); +- brcmf_sdio_fwnames = fwnames; +- brcmf_sdio_fwnames_count += of_fw_count; +- } +- + fwreq = brcmf_sdio_prepare_fw_request(bus); + if (!fwreq) { + ret = -ENOMEM; +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 2 Nov 2021 12:09:14 +0000 +Subject: [PATCH 927/941] Revert "Revert "brcmfmac: BCM43436 needs dedicated + firmware"" + +This reverts commit 7ca0827aed02da8a5b3b94b37328706fba3675f9. +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index f6c51680988d..3ab944c39677 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -618,6 +618,7 @@ BRCMF_FW_DEF(4339, "brcmfmac4339-sdio"); + BRCMF_FW_DEF(43430A0, "brcmfmac43430a0-sdio"); + /* Note the names are not postfixed with a1 for backward compatibility */ + BRCMF_FW_DEF(43430A1, "brcmfmac43430-sdio"); ++BRCMF_FW_DEF(43436, "brcmfmac43436-sdio"); + BRCMF_FW_DEF(43455, "brcmfmac43455-sdio"); + BRCMF_FW_DEF(43456, "brcmfmac43456-sdio"); + BRCMF_FW_DEF(4354, "brcmfmac4354-sdio"); +@@ -640,7 +641,8 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { + BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362), + BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339), + BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000001, 43430A0), +- BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFE, 43430A1), ++ BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFA, 43430A1), ++ BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000004, 43436), + BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0x00000200, 43456), + BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFDC0, 43455), + BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354), +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Thu, 21 Oct 2021 15:06:02 +0100 +Subject: [PATCH 928/941] dtoverlays: Update all image sensor overlays for + Media Controller option + +Add an option to enable configuration via the Media Controller API +(rather than the video-node-centric /dev/videoN) as about to +be used by libcamera as it enables more complex pipelines to be +handled. + +Any source that has a libcamera tuning merged has MC enabled by +default. +Sources with no libcamera tuning merged have it disabled by +default. +In either case it can be overridden with the overlay parameter +"media-controller". + +Signed-off-by: Dave Stevenson +--- + arch/arm/boot/dts/overlays/README | 27 +++++++++++++++++-- + .../boot/dts/overlays/adv7282m-overlay.dts | 8 ++++++ + arch/arm/boot/dts/overlays/imx219-overlay.dts | 8 ++++++ + .../boot/dts/overlays/imx290_327-overlay.dtsi | 8 ++++++ + .../boot/dts/overlays/imx477_378-overlay.dtsi | 8 ++++++ + arch/arm/boot/dts/overlays/imx519-overlay.dts | 8 ++++++ + .../arm/boot/dts/overlays/irs1125-overlay.dts | 11 ++++++++ + arch/arm/boot/dts/overlays/ov5647-overlay.dts | 8 ++++++ + arch/arm/boot/dts/overlays/ov7251-overlay.dts | 8 ++++++ + arch/arm/boot/dts/overlays/ov9281-overlay.dts | 8 ++++++ + .../boot/dts/overlays/tc358743-overlay.dts | 8 ++++++ + 11 files changed, 108 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index 5064d8eb2040..1404de8444f2 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -416,6 +416,8 @@ Info: Analog Devices ADV7282M analogue video to CSI2 bridge. + variants. + Load: dtoverlay=adv7282m,= + Params: addr Overrides the I2C address (default 0x21) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default off) + + + Name: adv728x-m +@@ -426,6 +428,8 @@ Params: addr Overrides the I2C address (default 0x21) + adv7280m Select ADV7280-M. + adv7281m Select ADV7281-M. + adv7281ma Select ADV7281-MA. ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default off) + + + Name: akkordion-iqdacplus +@@ -1708,6 +1712,8 @@ Params: rotation Mounting rotation of the camera sensor (0 or + 180, default 180) + orientation Sensor orientation (0 = front, 1 = rear, + 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) + + + Name: imx290 +@@ -1728,6 +1734,8 @@ Params: 4lane Enable 4 CSI2 lanes. This requires a Compute + 2 = external, default external) + rotation Mounting rotation of the camera sensor (0 or + 180, default 0) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) + + + Name: imx378 +@@ -1739,6 +1747,8 @@ Params: rotation Mounting rotation of the camera sensor (0 or + 180, default 180) + orientation Sensor orientation (0 = front, 1 = rear, + 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) + + + Name: imx477 +@@ -1750,6 +1760,8 @@ Params: rotation Mounting rotation of the camera sensor (0 or + 180, default 180) + orientation Sensor orientation (0 = front, 1 = rear, + 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) + + + Name: imx519 +@@ -1761,6 +1773,8 @@ Params: rotation Mounting rotation of the camera sensor (0 or + 180, default 0) + orientation Sensor orientation (0 = front, 1 = rear, + 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) + + + Name: iqaudio-codec +@@ -1824,8 +1838,9 @@ Name: irs1125 + Info: Infineon irs1125 TOF camera module. + Uses Unicam 1, which is the standard camera connector on most Pi + variants. +-Load: dtoverlay=irs1125 +-Params: ++Load: dtoverlay=irs1125,= ++Params: media-controller Configure use of Media Controller API for ++ configuring the sensor (default off) + + + Name: jedec-spi-nor +@@ -2237,6 +2252,8 @@ Params: rotation Mounting rotation of the camera sensor (0 or + 180, default 0) + orientation Sensor orientation (0 = front, 1 = rear, + 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) + + + Name: ov7251 +@@ -2248,6 +2265,8 @@ Params: rotation Mounting rotation of the camera sensor (0 or + 180, default 0) + orientation Sensor orientation (0 = front, 1 = rear, + 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default off) + + + Name: ov9281 +@@ -2259,6 +2278,8 @@ Params: rotation Mounting rotation of the camera sensor (0 or + 180, default 0) + orientation Sensor orientation (0 = front, 1 = rear, + 2 = external, default external) ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default on) + + + Name: papirus +@@ -3239,6 +3260,8 @@ Params: 4lane Use 4 lanes (only applicable to Compute Modules + link-frequency Set the link frequency. Only values of 297000000 + (574Mbit/s) and 486000000 (972Mbit/s - default) + are supported by the driver. ++ media-controller Configure use of Media Controller API for ++ configuring the sensor (default off) + + + Name: tc358743-audio +diff --git a/arch/arm/boot/dts/overlays/adv7282m-overlay.dts b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts +index 5d85dfd0595c..f7e97c4a13d8 100644 +--- a/arch/arm/boot/dts/overlays/adv7282m-overlay.dts ++++ b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts +@@ -59,7 +59,15 @@ + }; + }; + ++ fragment@4 { ++ target = <&csi1>; ++ __dormant__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + addr = <&adv728x>,"reg:0"; ++ media-controller = <0>,"=4"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/imx219-overlay.dts b/arch/arm/boot/dts/overlays/imx219-overlay.dts +index 0c065bf09f54..5b5ba70aff7f 100644 +--- a/arch/arm/boot/dts/overlays/imx219-overlay.dts ++++ b/arch/arm/boot/dts/overlays/imx219-overlay.dts +@@ -108,8 +108,16 @@ + }; + }; + ++ fragment@6 { ++ target = <&csi1>; ++ __overlay__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + rotation = <&imx219>,"rotation:0"; + orientation = <&imx219>,"orientation:0"; ++ media-controller = <0>,"=6"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi +index d4a5ed6dbbcf..2696daed523c 100644 +--- a/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi ++++ b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi +@@ -134,11 +134,19 @@ + }; + }; + ++ fragment@10 { ++ target = <&csi1>; ++ __overlay__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + 4lane = <0>, "-6+7-8+9"; + clock-frequency = <&imx290_clk>,"clock-frequency:0", + <&imx290>,"clock-frequency:0"; + rotation = <&imx290>,"rotation:0"; + orientation = <&imx290>,"orientation:0"; ++ media-controller = <0>,"=10"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi b/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi +index bb9a9acdbbd7..d785e6cb5d82 100644 +--- a/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi ++++ b/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi +@@ -103,8 +103,16 @@ + }; + }; + ++ fragment@6 { ++ target = <&csi1>; ++ __overlay__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + rotation = <&imx477>,"rotation:0"; + orientation = <&imx477>,"orientation:0"; ++ media-controller = <0>,"=6"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/imx519-overlay.dts b/arch/arm/boot/dts/overlays/imx519-overlay.dts +index 693c267af1f0..b8593a980bbf 100644 +--- a/arch/arm/boot/dts/overlays/imx519-overlay.dts ++++ b/arch/arm/boot/dts/overlays/imx519-overlay.dts +@@ -108,8 +108,16 @@ + }; + }; + ++ fragment@6 { ++ target = <&csi1>; ++ __overlay__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + rotation = <&imx519>,"rotation:0"; + orientation = <&imx519>,"orientation:0"; ++ media-controller = <0>,"=6"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/irs1125-overlay.dts b/arch/arm/boot/dts/overlays/irs1125-overlay.dts +index e926e18e71fc..065569830ded 100644 +--- a/arch/arm/boot/dts/overlays/irs1125-overlay.dts ++++ b/arch/arm/boot/dts/overlays/irs1125-overlay.dts +@@ -82,4 +82,15 @@ + }; + }; + }; ++ ++ fragment@6 { ++ target = <&csi1>; ++ __dormant__ { ++ brcm,media-controller; ++ }; ++ }; ++ ++ __overrides__ { ++ media-controller = <0>,"=6"; ++ }; + }; +diff --git a/arch/arm/boot/dts/overlays/ov5647-overlay.dts b/arch/arm/boot/dts/overlays/ov5647-overlay.dts +index d7ed4703c9b0..f57b25c38794 100644 +--- a/arch/arm/boot/dts/overlays/ov5647-overlay.dts ++++ b/arch/arm/boot/dts/overlays/ov5647-overlay.dts +@@ -87,8 +87,16 @@ + }; + }; + ++ fragment@6 { ++ target = <&csi1>; ++ __overlay__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + rotation = <&ov5647>,"rotation:0"; + orientation = <&ov5647>,"orientation:0"; ++ media-controller = <0>,"=6"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/ov7251-overlay.dts b/arch/arm/boot/dts/overlays/ov7251-overlay.dts +index 09dbeda39d06..6fe652fe011b 100644 +--- a/arch/arm/boot/dts/overlays/ov7251-overlay.dts ++++ b/arch/arm/boot/dts/overlays/ov7251-overlay.dts +@@ -106,8 +106,16 @@ + }; + }; + ++ fragment@6 { ++ target = <&csi1>; ++ __dormant__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + rotation = <&ov7251>,"rotation:0"; + orientation = <&ov7251>,"orientation:0"; ++ media-controller = <0>,"=6"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/ov9281-overlay.dts b/arch/arm/boot/dts/overlays/ov9281-overlay.dts +index 277236c03358..b2b9a47c6d27 100644 +--- a/arch/arm/boot/dts/overlays/ov9281-overlay.dts ++++ b/arch/arm/boot/dts/overlays/ov9281-overlay.dts +@@ -106,8 +106,16 @@ + }; + }; + ++ fragment@6 { ++ target = <&csi1>; ++ __overlay__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + rotation = <&ov9281>,"rotation:0"; + orientation = <&ov9281>,"orientation:0"; ++ media-controller = <0>,"=6"; + }; + }; +diff --git a/arch/arm/boot/dts/overlays/tc358743-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-overlay.dts +index a1f8af36d2e7..d679d9ba84b6 100644 +--- a/arch/arm/boot/dts/overlays/tc358743-overlay.dts ++++ b/arch/arm/boot/dts/overlays/tc358743-overlay.dts +@@ -100,8 +100,16 @@ + }; + }; + ++ fragment@9 { ++ target = <&csi1>; ++ __dormant__ { ++ brcm,media-controller; ++ }; ++ }; ++ + __overrides__ { + 4lane = <0>, "-2+3-7+8"; + link-frequency = <&tc358743>,"link-frequencies#0"; ++ media-controller = <0>,"=9"; + }; + }; +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 26 Oct 2021 11:24:54 +0100 +Subject: [PATCH 929/941] Revert "brcmfmac: BCM43436 needs dedicated firmware" + +This reverts commit c52581ffa49b9c0e5de3349436c283fe20128073. + +Replace the hardcoded alternate firmware names with mappings provided +from Device Tree. + +Signed-off-by: Phil Elwell +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index 3ab944c39677..f6c51680988d 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -618,7 +618,6 @@ BRCMF_FW_DEF(4339, "brcmfmac4339-sdio"); + BRCMF_FW_DEF(43430A0, "brcmfmac43430a0-sdio"); + /* Note the names are not postfixed with a1 for backward compatibility */ + BRCMF_FW_DEF(43430A1, "brcmfmac43430-sdio"); +-BRCMF_FW_DEF(43436, "brcmfmac43436-sdio"); + BRCMF_FW_DEF(43455, "brcmfmac43455-sdio"); + BRCMF_FW_DEF(43456, "brcmfmac43456-sdio"); + BRCMF_FW_DEF(4354, "brcmfmac4354-sdio"); +@@ -641,8 +640,7 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { + BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362), + BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339), + BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000001, 43430A0), +- BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFA, 43430A1), +- BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000004, 43436), ++ BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFE, 43430A1), + BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0x00000200, 43456), + BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFDC0, 43455), + BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354), +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 28 Oct 2021 15:03:16 +0100 +Subject: [PATCH 930/941] 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 +and allows downstream firmwares to coexist with upstream. + +Signed-off-by: Phil Elwell +--- + .../wireless/broadcom/brcm80211/brcmfmac/of.c | 36 ++++++++++++++ + .../wireless/broadcom/brcm80211/brcmfmac/of.h | 7 +++ + .../broadcom/brcm80211/brcmfmac/sdio.c | 47 +++++++++++++++++-- + 3 files changed, 87 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +index a7554265f95f..db4ac19f0800 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +@@ -10,6 +10,7 @@ + #include "debug.h" + #include "core.h" + #include "common.h" ++#include "firmware.h" + #include "of.h" + + void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, +@@ -65,3 +66,38 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + sdio->oob_irq_nr = irq; + sdio->oob_irq_flags = irqf; + } ++ ++struct brcmf_firmware_mapping * ++brcmf_of_fwnames(struct device *dev, u32 *fwname_count) ++{ ++ struct device_node *np = dev->of_node; ++ struct brcmf_firmware_mapping *fwnames; ++ struct device_node *map_np, *fw_np; ++ int of_count; ++ int count = 0; ++ ++ map_np = of_get_child_by_name(np, "firmwares"); ++ of_count = of_get_child_count(map_np); ++ if (!of_count) ++ return NULL; ++ ++ fwnames = devm_kcalloc(dev, of_count, ++ sizeof(struct brcmf_firmware_mapping), ++ GFP_KERNEL); ++ ++ for_each_child_of_node(map_np, fw_np) ++ { ++ struct brcmf_firmware_mapping *cur = &fwnames[count]; ++ ++ if (of_property_read_u32(fw_np, "chipid", &cur->chipid) || ++ of_property_read_u32(fw_np, "revmask", &cur->revmask)) ++ continue; ++ cur->fw_base = of_get_property(fw_np, "fw_base", NULL); ++ if (cur->fw_base) ++ count++; ++ } ++ ++ *fwname_count = count; ++ ++ return count ? fwnames : NULL; ++} +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h +index 10bf52253337..5b39a39812d0 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h +@@ -5,9 +5,16 @@ + #ifdef CONFIG_OF + void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + struct brcmf_mp_device *settings); ++struct brcmf_firmware_mapping * ++brcmf_of_fwnames(struct device *dev, u32 *map_count); + #else + static void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, + struct brcmf_mp_device *settings) + { + } ++static struct brcmf_firmware_mapping * ++brcmf_of_fwnames(struct device *dev, u32 *map_count) ++{ ++ return NULL; ++} + #endif /* CONFIG_OF */ +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index f6c51680988d..21dbbf969906 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -35,6 +35,7 @@ + #include "core.h" + #include "common.h" + #include "bcdc.h" ++#include "of.h" + + #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500) + #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500) +@@ -626,7 +627,7 @@ BRCMF_FW_DEF(4359, "brcmfmac4359-sdio"); + BRCMF_FW_DEF(4373, "brcmfmac4373-sdio"); + BRCMF_FW_DEF(43012, "brcmfmac43012-sdio"); + +-static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { ++static const struct brcmf_firmware_mapping sdio_fwnames[] = { + BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143), + BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x0000001F, 43241B0), + BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4), +@@ -650,6 +651,9 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { + BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012) + }; + ++static const struct brcmf_firmware_mapping *brcmf_sdio_fwnames = sdio_fwnames; ++static u32 brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); ++ + #define TXCTL_CREDITS 2 + + static void pkt_align(struct sk_buff *p, int len, int align) +@@ -4135,7 +4139,7 @@ int brcmf_sdio_get_fwname(struct device *dev, const char *ext, u8 *fw_name, + } + fwreq = brcmf_fw_alloc_request(bus_if->chip, bus_if->chiprev, + brcmf_sdio_fwnames, +- ARRAY_SIZE(brcmf_sdio_fwnames), ++ brcmf_sdio_fwnames_count, + fwnames, ARRAY_SIZE(fwnames)); + if (!fwreq) + return -ENOMEM; +@@ -4191,6 +4195,9 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = { + #define BRCMF_SDIO_FW_CODE 0 + #define BRCMF_SDIO_FW_NVRAM 1 + ++static struct brcmf_fw_request * ++brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus); ++ + static void brcmf_sdio_firmware_callback(struct device *dev, int err, + struct brcmf_fw_request *fwreq) + { +@@ -4206,6 +4213,22 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, + + brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err); + ++ if (err && brcmf_sdio_fwnames != sdio_fwnames) { ++ /* Try again with the standard firmware names */ ++ brcmf_sdio_fwnames = sdio_fwnames; ++ brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); ++ kfree(fwreq); ++ fwreq = brcmf_sdio_prepare_fw_request(bus); ++ if (!fwreq) { ++ err = -ENOMEM; ++ goto fail; ++ } ++ err = brcmf_fw_get_firmwares(dev, fwreq, ++ brcmf_sdio_firmware_callback); ++ if (!err) ++ return; ++ } ++ + if (err) + goto fail; + +@@ -4413,7 +4436,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) + + fwreq = brcmf_fw_alloc_request(bus->ci->chip, bus->ci->chiprev, + brcmf_sdio_fwnames, +- ARRAY_SIZE(brcmf_sdio_fwnames), ++ brcmf_sdio_fwnames_count, + fwnames, ARRAY_SIZE(fwnames)); + if (!fwreq) + return NULL; +@@ -4431,6 +4454,9 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) + struct brcmf_sdio *bus; + struct workqueue_struct *wq; + struct brcmf_fw_request *fwreq; ++ struct brcmf_firmware_mapping *of_fwnames, *fwnames = NULL; ++ const int fwname_size = sizeof(struct brcmf_firmware_mapping); ++ u32 of_fw_count; + + brcmf_dbg(TRACE, "Enter\n"); + +@@ -4513,6 +4539,21 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) + + brcmf_dbg(INFO, "completed!!\n"); + ++ of_fwnames = brcmf_of_fwnames(sdiodev->dev, &of_fw_count); ++ if (of_fwnames) ++ fwnames = devm_kcalloc(sdiodev->dev, ++ of_fw_count + brcmf_sdio_fwnames_count, ++ fwname_size, GFP_KERNEL); ++ ++ if (fwnames) { ++ /* The array is scanned in order, so overrides come first */ ++ memcpy(fwnames, of_fwnames, of_fw_count * fwname_size); ++ memcpy(fwnames + of_fw_count, sdio_fwnames, ++ brcmf_sdio_fwnames_count * fwname_size); ++ brcmf_sdio_fwnames = fwnames; ++ brcmf_sdio_fwnames_count += of_fw_count; ++ } ++ + fwreq = brcmf_sdio_prepare_fw_request(bus); + if (!fwreq) { + ret = -ENOMEM; +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 2 Nov 2021 16:01:36 +0000 +Subject: [PATCH 931/941] drm: Check whether the gamma lut has changed before + updating + +drm_crtc_legacy_gamma_set updates the gamma_lut blob unconditionally, +which leads to unnecessary reprogramming of hardware. + +Check whether the blob contents has actually changed before +signalling that it has been updated. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/drm_color_mgmt.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c +index 8c225fb7441d..ec4a9a00a298 100644 +--- a/drivers/gpu/drm/drm_color_mgmt.c ++++ b/drivers/gpu/drm/drm_color_mgmt.c +@@ -313,7 +313,11 @@ static int drm_crtc_legacy_gamma_set(struct drm_crtc *crtc, + /* Set GAMMA_LUT and reset DEGAMMA_LUT and CTM */ + replaced = drm_property_replace_blob(&crtc_state->degamma_lut, NULL); + replaced |= drm_property_replace_blob(&crtc_state->ctm, NULL); +- replaced |= drm_property_replace_blob(&crtc_state->gamma_lut, blob); ++ if (!crtc_state->gamma_lut || !crtc_state->gamma_lut->data || ++ memcmp(crtc_state->gamma_lut->data, blob_data, blob->length)) ++ replaced |= drm_property_replace_blob(&crtc_state->gamma_lut, blob); ++ else ++ drm_property_blob_put(blob); + crtc_state->color_mgmt_changed |= replaced; + + ret = drm_atomic_commit(state); +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 3 Nov 2021 11:53:13 +0000 +Subject: [PATCH 932/941] brcmfmac: Protect against reprobing + +It is important to reinitialise the firmware array pointers to protect +against the case that the brcmfmac driver is reprobed without first +being unloaded. + +The potential hazard was noticed while investigating +https://github.com/raspberrypi/firmware/issues/1644 . + +Signed-off-by: Phil Elwell +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index 21dbbf969906..c8609fed3c32 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -651,8 +651,8 @@ static const struct brcmf_firmware_mapping sdio_fwnames[] = { + BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012) + }; + +-static const struct brcmf_firmware_mapping *brcmf_sdio_fwnames = sdio_fwnames; +-static u32 brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); ++static const struct brcmf_firmware_mapping *brcmf_sdio_fwnames; ++static u32 brcmf_sdio_fwnames_count; + + #define TXCTL_CREDITS 2 + +@@ -4539,6 +4539,8 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) + + brcmf_dbg(INFO, "completed!!\n"); + ++ brcmf_sdio_fwnames = sdio_fwnames; ++ brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames); + of_fwnames = brcmf_of_fwnames(sdiodev->dev, &of_fw_count); + if (of_fwnames) + fwnames = devm_kcalloc(sdiodev->dev, +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Mon, 18 Oct 2021 15:19:30 +0200 +Subject: [PATCH 933/941] drm/vc4: crtc: Drop feed_txp from state + +Accessing the crtc->state pointer from outside the modesetting context +is not allowed. We thus need to copy whatever we need from the KMS state +to our structure in order to access it. + +In VC4, a number of users of that pointers have crept in over the years, +the first one being whether or not the downstream controller of the +pixelvalve is our writeback controller. + +Fortunately for us, Since commit 39fcb2808376 ("drm/vc4: txp: Turn the +TXP into a CRTC of its own") this is no longer something that can change +from one commit to the other and is hardcoded. + +Let's set this flag in struct vc4_crtc if we happen to be the TXP, and +drop the flag from our private state structure. + +Link: https://lore.kernel.org/all/YWgteNaNeaS9uWDe@phenom.ffwll.local/ +Fixes: 008095e065a8 ("drm/vc4: Add support for the transposer block") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_crtc.c | 3 +-- + drivers/gpu/drm/vc4/vc4_drv.h | 6 +++++- + drivers/gpu/drm/vc4/vc4_hvs.c | 7 +++---- + drivers/gpu/drm/vc4/vc4_kms.c | 3 ++- + drivers/gpu/drm/vc4/vc4_txp.c | 3 +-- + 5 files changed, 12 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c +index 8a7b09c6ce80..d3fe8f485a7a 100644 +--- a/drivers/gpu/drm/vc4/vc4_crtc.c ++++ b/drivers/gpu/drm/vc4/vc4_crtc.c +@@ -742,7 +742,7 @@ static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc) + spin_lock_irqsave(&dev->event_lock, flags); + if (vc4_crtc->event && + (vc4_state->mm.start == HVS_READ(SCALER_DISPLACTX(chan)) || +- vc4_state->feed_txp)) { ++ vc4_crtc->feeds_txp)) { + drm_crtc_send_vblank_event(crtc, vc4_crtc->event); + vc4_crtc->event = NULL; + drm_crtc_vblank_put(crtc); +@@ -966,7 +966,6 @@ struct drm_crtc_state *vc4_crtc_duplicate_state(struct drm_crtc *crtc) + return NULL; + + old_vc4_state = to_vc4_crtc_state(crtc->state); +- vc4_state->feed_txp = old_vc4_state->feed_txp; + vc4_state->margins = old_vc4_state->margins; + vc4_state->assigned_channel = old_vc4_state->assigned_channel; + +diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h +index 6a260b1e60ad..81d73478e6f0 100644 +--- a/drivers/gpu/drm/vc4/vc4_drv.h ++++ b/drivers/gpu/drm/vc4/vc4_drv.h +@@ -520,6 +520,11 @@ struct vc4_crtc { + struct drm_pending_vblank_event *event; + + struct debugfs_regset32 regset; ++ ++ /** ++ * @feeds_txp: True if the CRTC feeds our writeback controller. ++ */ ++ bool feeds_txp; + }; + + static inline struct vc4_crtc * +@@ -552,7 +557,6 @@ struct vc4_crtc_state { + struct drm_crtc_state base; + /* Dlist area for this CRTC configuration. */ + struct drm_mm_node mm; +- bool feed_txp; + bool txp_armed; + unsigned int assigned_channel; + +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index 1eeb0cd73a2b..81d4298c426b 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -598,7 +598,7 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc) + + spin_lock_irqsave(&dev->event_lock, flags); + +- if (!vc4_state->feed_txp || vc4_state->txp_armed) { ++ if (!vc4_crtc->feeds_txp || vc4_state->txp_armed) { + vc4_crtc->event = crtc->state->event; + crtc->state->event = NULL; + } +@@ -618,10 +618,9 @@ void vc4_hvs_atomic_enable(struct drm_crtc *crtc, + { + struct drm_device *dev = crtc->dev; + struct vc4_dev *vc4 = to_vc4_dev(dev); +- struct drm_crtc_state *new_crtc_state = drm_atomic_get_new_crtc_state(state, crtc); +- struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(new_crtc_state); + struct drm_display_mode *mode = &crtc->state->adjusted_mode; +- bool oneshot = vc4_state->feed_txp; ++ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); ++ bool oneshot = vc4_crtc->feeds_txp; + + vc4_hvs_update_dlist(crtc); + vc4_hvs_init_channel(vc4, crtc, mode, oneshot); +diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c +index fb2465964d46..422f2c211abd 100644 +--- a/drivers/gpu/drm/vc4/vc4_kms.c ++++ b/drivers/gpu/drm/vc4/vc4_kms.c +@@ -222,6 +222,7 @@ static void vc4_hvs_pv_muxing_commit(struct vc4_dev *vc4, + unsigned int i; + + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { ++ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); + struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc_state); + u32 dispctrl; + u32 dsp3_mux; +@@ -242,7 +243,7 @@ static void vc4_hvs_pv_muxing_commit(struct vc4_dev *vc4, + * TXP IP, and we need to disable the FIFO2 -> pixelvalve1 + * route. + */ +- if (vc4_state->feed_txp) ++ if (vc4_crtc->feeds_txp) + dsp3_mux = VC4_SET_FIELD(3, SCALER_DISPCTRL_DSP3_MUX); + else + dsp3_mux = VC4_SET_FIELD(2, SCALER_DISPCTRL_DSP3_MUX); +diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c +index 2fc7f4b5fa09..26eda7542f74 100644 +--- a/drivers/gpu/drm/vc4/vc4_txp.c ++++ b/drivers/gpu/drm/vc4/vc4_txp.c +@@ -391,7 +391,6 @@ static int vc4_txp_atomic_check(struct drm_crtc *crtc, + { + 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); + int ret; + + ret = vc4_hvs_atomic_check(crtc, state); +@@ -399,7 +398,6 @@ static int vc4_txp_atomic_check(struct drm_crtc *crtc, + return ret; + + crtc_state->no_vblank = true; +- vc4_state->feed_txp = true; + + return 0; + } +@@ -482,6 +480,7 @@ static int vc4_txp_bind(struct device *dev, struct device *master, void *data) + + vc4_crtc->pdev = pdev; + vc4_crtc->data = &vc4_txp_crtc_data; ++ vc4_crtc->feeds_txp = true; + + txp->pdev = pdev; + +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 10 Jun 2021 17:48:28 +0200 +Subject: [PATCH 934/941] drm/vc4: Fix non-blocking commit getting stuck + forever + +In some situation, we can end up being stuck on a non-blocking that went +through properly. + +The situation that seems to trigger it reliably is to first start a +non-blocking commit, and then right after, and before we had any vblank +interrupt), start a blocking commit. + +This will lead to the first commit workqueue to be scheduled, setup the +display, while the second commit is waiting for the first one to be +completed. + +The vblank interrupt will then be raised, vc4_crtc_handle_vblank() will +run and will compare the active dlist in the HVS channel to the one +associated with the crtc->state. + +However, at that point, the second commit is waiting using +drm_atomic_helper_wait_for_dependencies that occurs after +drm_atomic_helper_swap_state has been called, so crtc->state points to +the second commit state. vc4_crtc_handle_vblank() will compare the two +dlist addresses and since they don't match will ignore the interrupt. + +The vblank event will never be reported, and the first and second commit +will wait for the first commit completion until they timeout. + +The underlying reason is that it was never safe to do so. Indeed, +accessing the ->state pointer access synchronization is based on +ownership guarantees that can only occur within the functions and hooks +defined as part of the KMS framework, and obviously the irq handler +isn't one of them. The rework to move to generic helpers only uncovered +the underlying issue. + +However, since the code path between +drm_atomic_helper_wait_for_dependencies() and +drm_atomic_helper_wait_for_vblanks() is serialised and we can't get two +commits in that path at the same time, we can work around this issue by +setting a variable associated to struct drm_crtc to the dlist we expect, +and then using it from the vc4_crtc_handle_vblank() function. + +Since that state is shared with the modesetting path, we also need to +introduce a spinlock to protect the code shared between the interrupt +handler and the modesetting path, protecting only our new variable for +now. + +Link: https://lore.kernel.org/all/YWgteNaNeaS9uWDe@phenom.ffwll.local/ +Fixes: 56d1fe0979dc ("drm/vc4: Make pageflip completion handling more robust.") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_crtc.c | 5 ++++- + drivers/gpu/drm/vc4/vc4_drv.h | 14 ++++++++++++++ + drivers/gpu/drm/vc4/vc4_hvs.c | 7 +++++-- + 3 files changed, 23 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c +index d3fe8f485a7a..cafdfe8fb2e6 100644 +--- a/drivers/gpu/drm/vc4/vc4_crtc.c ++++ b/drivers/gpu/drm/vc4/vc4_crtc.c +@@ -740,8 +740,9 @@ static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc) + unsigned long flags; + + spin_lock_irqsave(&dev->event_lock, flags); ++ spin_lock(&vc4_crtc->irq_lock); + if (vc4_crtc->event && +- (vc4_state->mm.start == HVS_READ(SCALER_DISPLACTX(chan)) || ++ (vc4_crtc->current_dlist == HVS_READ(SCALER_DISPLACTX(chan)) || + vc4_crtc->feeds_txp)) { + drm_crtc_send_vblank_event(crtc, vc4_crtc->event); + vc4_crtc->event = NULL; +@@ -755,6 +756,7 @@ static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc) + */ + vc4_hvs_unmask_underrun(dev, chan); + } ++ spin_unlock(&vc4_crtc->irq_lock); + spin_unlock_irqrestore(&dev->event_lock, flags); + } + +@@ -1200,6 +1202,7 @@ int vc4_crtc_init(struct drm_device *drm, struct vc4_crtc *vc4_crtc, + return PTR_ERR(primary_plane); + } + ++ spin_lock_init(&vc4_crtc->irq_lock); + drm_crtc_init_with_planes(drm, crtc, primary_plane, NULL, + crtc_funcs, NULL); + drm_crtc_helper_add(crtc, crtc_helper_funcs); +diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h +index 81d73478e6f0..803eb7385cd8 100644 +--- a/drivers/gpu/drm/vc4/vc4_drv.h ++++ b/drivers/gpu/drm/vc4/vc4_drv.h +@@ -525,6 +525,20 @@ struct vc4_crtc { + * @feeds_txp: True if the CRTC feeds our writeback controller. + */ + bool feeds_txp; ++ ++ /** ++ * @irq_lock: Spinlock protecting the resources shared between ++ * the atomic code and our vblank handler. ++ */ ++ spinlock_t irq_lock; ++ ++ /** ++ * @current_dlist: Start offset of the display list currently ++ * set in the HVS for that CRTC. Protected by @irq_lock, and ++ * copied in vc4_hvs_update_dlist() for the CRTC interrupt ++ * handler to have access to that value. ++ */ ++ unsigned int current_dlist; + }; + + static inline struct vc4_crtc * +diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c +index 81d4298c426b..440f19c3f9ed 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -588,10 +588,9 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc) + struct vc4_dev *vc4 = to_vc4_dev(dev); + struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); + struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); ++ unsigned long flags; + + if (crtc->state->event) { +- unsigned long flags; +- + crtc->state->event->pipe = drm_crtc_index(crtc); + + WARN_ON(drm_crtc_vblank_get(crtc) != 0); +@@ -611,6 +610,10 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc) + HVS_WRITE(SCALER_DISPLISTX(vc4_state->assigned_channel), + vc4_state->mm.start); + } ++ ++ spin_lock_irqsave(&vc4_crtc->irq_lock, flags); ++ vc4_crtc->current_dlist = vc4_state->mm.start; ++ spin_unlock_irqrestore(&vc4_crtc->irq_lock, flags); + } + + void vc4_hvs_atomic_enable(struct drm_crtc *crtc, +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Mon, 18 Oct 2021 15:56:44 +0200 +Subject: [PATCH 935/941] drm/vc4: crtc: Copy assigned channel to the CRTC + +Accessing the crtc->state pointer from outside the modesetting context +is not allowed. We thus need to copy whatever we need from the KMS state +to our structure in order to access it. + +In VC4, a number of users of that pointers have crept in over the years, +and the previous commits removed them all but the HVS channel a CRTC has +been assigned. + +Let's move this channel in struct vc4_crtc at atomic_begin() time, drop +it from our private state structure, and remove our use of crtc->state +from our vblank handler entirely. + +Link: https://lore.kernel.org/all/YWgteNaNeaS9uWDe@phenom.ffwll.local/ +Fixes: 87ebcd42fb7b ("drm/vc4: crtc: Assign output to channel automatically") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_crtc.c | 4 ++-- + drivers/gpu/drm/vc4/vc4_drv.h | 9 +++++++++ + drivers/gpu/drm/vc4/vc4_hvs.c | 12 ++++++++++++ + drivers/gpu/drm/vc4/vc4_txp.c | 1 + + 4 files changed, 24 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c +index cafdfe8fb2e6..9a18e695f65e 100644 +--- a/drivers/gpu/drm/vc4/vc4_crtc.c ++++ b/drivers/gpu/drm/vc4/vc4_crtc.c +@@ -735,8 +735,7 @@ static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc) + struct drm_crtc *crtc = &vc4_crtc->base; + struct drm_device *dev = crtc->dev; + struct vc4_dev *vc4 = to_vc4_dev(dev); +- struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); +- u32 chan = vc4_state->assigned_channel; ++ u32 chan = vc4_crtc->current_hvs_channel; + unsigned long flags; + + spin_lock_irqsave(&dev->event_lock, flags); +@@ -1028,6 +1027,7 @@ static const struct drm_crtc_funcs vc4_crtc_funcs = { + static const struct drm_crtc_helper_funcs vc4_crtc_helper_funcs = { + .mode_valid = vc4_crtc_mode_valid, + .atomic_check = vc4_crtc_atomic_check, ++ .atomic_begin = vc4_hvs_atomic_begin, + .atomic_flush = vc4_hvs_atomic_flush, + .atomic_enable = vc4_crtc_atomic_enable, + .atomic_disable = vc4_crtc_atomic_disable, +diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h +index 803eb7385cd8..dd34de6e677b 100644 +--- a/drivers/gpu/drm/vc4/vc4_drv.h ++++ b/drivers/gpu/drm/vc4/vc4_drv.h +@@ -539,6 +539,14 @@ struct vc4_crtc { + * handler to have access to that value. + */ + unsigned int current_dlist; ++ ++ /** ++ * @current_hvs_channel: HVS channel currently assigned to the ++ * CRTC. Protected by @irq_lock, and copied in ++ * vc4_hvs_atomic_begin() for the CRTC interrupt handler to have ++ * access to that value. ++ */ ++ unsigned int current_hvs_channel; + }; + + static inline struct vc4_crtc * +@@ -971,6 +979,7 @@ extern struct platform_driver vc4_hvs_driver; + void vc4_hvs_stop_channel(struct drm_device *dev, unsigned int output); + int vc4_hvs_get_fifo_from_output(struct drm_device *dev, unsigned int output); + 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); + void vc4_hvs_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_state *state); + void vc4_hvs_atomic_flush(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 440f19c3f9ed..6372c48097d5 100644 +--- a/drivers/gpu/drm/vc4/vc4_hvs.c ++++ b/drivers/gpu/drm/vc4/vc4_hvs.c +@@ -616,6 +616,18 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc) + spin_unlock_irqrestore(&vc4_crtc->irq_lock, flags); + } + ++void vc4_hvs_atomic_begin(struct drm_crtc *crtc, ++ struct drm_atomic_state *state) ++{ ++ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); ++ struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_crtc->irq_lock, flags); ++ vc4_crtc->current_hvs_channel = vc4_state->assigned_channel; ++ spin_unlock_irqrestore(&vc4_crtc->irq_lock, flags); ++} ++ + void vc4_hvs_atomic_enable(struct drm_crtc *crtc, + struct drm_atomic_state *state) + { +diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c +index 26eda7542f74..9809ca3e2945 100644 +--- a/drivers/gpu/drm/vc4/vc4_txp.c ++++ b/drivers/gpu/drm/vc4/vc4_txp.c +@@ -435,6 +435,7 @@ static void vc4_txp_atomic_disable(struct drm_crtc *crtc, + + static const struct drm_crtc_helper_funcs vc4_txp_crtc_helper_funcs = { + .atomic_check = vc4_txp_atomic_check, ++ .atomic_begin = vc4_hvs_atomic_begin, + .atomic_flush = vc4_hvs_atomic_flush, + .atomic_enable = vc4_txp_atomic_enable, + .atomic_disable = vc4_txp_atomic_disable, +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Tue, 19 Oct 2021 12:25:17 +0200 +Subject: [PATCH 936/941] drm/vc4: hdmi: Add a spinlock to protect register + access + +The vc4 HDMI driver has multiple path shared between the CEC, ALSA and +KMS frameworks, plus two interrupt handlers (CEC and hotplug) that will +read and modify a number of registers. + +Even though not bug has been reported so far, it's definitely unsafe, so +let's just add a spinlock to protect the register access of the HDMI +controller. + +Fixes: c8b75bca92cb ("drm/vc4: Add KMS support for Raspberry Pi.") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 202 ++++++++++++++++++++++++++-- + drivers/gpu/drm/vc4/vc4_hdmi.h | 6 + + drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 37 +++++ + drivers/gpu/drm/vc4/vc4_hdmi_regs.h | 2 + + 4 files changed, 237 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index f1adaa9dc5f3..45227b3d289c 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -128,6 +128,10 @@ static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused) + + static void vc4_hdmi_reset(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_M_CTL, VC4_HD_M_SW_RST); + udelay(1); + HDMI_WRITE(HDMI_M_CTL, 0); +@@ -139,24 +143,36 @@ static void vc4_hdmi_reset(struct vc4_hdmi *vc4_hdmi) + VC4_HDMI_SW_RESET_FORMAT_DETECT); + + HDMI_WRITE(HDMI_SW_RESET_CONTROL, 0); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc5_hdmi_reset(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ + reset_control_reset(vc4_hdmi->reset); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_DVP_CTL, 0); + + HDMI_WRITE(HDMI_CLOCK_STOP, + HDMI_READ(HDMI_CLOCK_STOP) | VC4_DVP_HT_CLOCK_STOP_PIXEL); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + #ifdef CONFIG_DRM_VC4_HDMI_CEC + static void vc4_hdmi_cec_update_clk_div(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long cec_rate = clk_get_rate(vc4_hdmi->cec_clock); ++ unsigned long flags; + u16 clk_cnt; + u32 value; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + value = HDMI_READ(HDMI_CEC_CNTRL_1); + value &= ~VC4_HDMI_CEC_DIV_CLK_CNT_MASK; + +@@ -164,9 +180,11 @@ static void vc4_hdmi_cec_update_clk_div(struct vc4_hdmi *vc4_hdmi) + * Set the clock divider: the hsm_clock rate and this divider + * setting will give a 40 kHz CEC clock. + */ +- clk_cnt = clk_get_rate(vc4_hdmi->cec_clock) / CEC_CLOCK_FREQ; ++ clk_cnt = cec_rate / CEC_CLOCK_FREQ; + value |= clk_cnt << VC4_HDMI_CEC_DIV_CLK_CNT_SHIFT; + HDMI_WRITE(HDMI_CEC_CNTRL_1, value); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + #else + static void vc4_hdmi_cec_update_clk_div(struct vc4_hdmi *vc4_hdmi) {} +@@ -187,8 +205,16 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) + if (gpio_get_value_cansleep(vc4_hdmi->hpd_gpio) ^ + vc4_hdmi->hpd_active_low) + connected = true; +- } else if (HDMI_READ(HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED) { +- connected = true; ++ } else { ++ unsigned long flags; ++ u32 hotplug; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ hotplug = HDMI_READ(HDMI_HOTPLUG); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ ++ if (hotplug & VC4_HDMI_HOTPLUG_CONNECTED) ++ connected = true; + } + + if (connected) { +@@ -386,9 +412,12 @@ static int vc4_hdmi_stop_packet(struct drm_encoder *encoder, + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + u32 packet_id = type - 0x80; ++ unsigned long flags; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, + HDMI_READ(HDMI_RAM_PACKET_CONFIG) & ~BIT(packet_id)); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + if (!poll) + return 0; +@@ -410,6 +439,7 @@ static void vc4_hdmi_write_infoframe(struct drm_encoder *encoder, + void __iomem *base = __vc4_hdmi_get_field_base(vc4_hdmi, + ram_packet_start->reg); + uint8_t buffer[VC4_HDMI_PACKET_STRIDE] = {}; ++ unsigned long flags; + ssize_t len, i; + int ret; + +@@ -427,6 +457,8 @@ static void vc4_hdmi_write_infoframe(struct drm_encoder *encoder, + return; + } + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + for (i = 0; i < len; i += 7) { + writel(buffer[i + 0] << 0 | + buffer[i + 1] << 8 | +@@ -451,6 +483,9 @@ static void vc4_hdmi_write_infoframe(struct drm_encoder *encoder, + + HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, + HDMI_READ(HDMI_RAM_PACKET_CONFIG) | BIT(packet_id)); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + ret = wait_for((HDMI_READ(HDMI_RAM_PACKET_STATUS) & + BIT(packet_id)), 100); + if (ret) +@@ -570,6 +605,7 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + { + struct drm_display_mode *mode; + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ unsigned long flags; + + if (!encoder->crtc || !encoder->crtc->state) + return; +@@ -584,8 +620,10 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + drm_scdc_set_high_tmds_clock_ratio(vc4_hdmi->ddc, true); + drm_scdc_set_scrambling(vc4_hdmi->ddc, true); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_SCRAMBLER_CTL, HDMI_READ(HDMI_SCRAMBLER_CTL) | + VC5_HDMI_SCRAMBLER_CTL_ENABLE); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + queue_delayed_work(system_wq, &vc4_hdmi->scrambling_work, + msecs_to_jiffies(SCRAMBLING_POLLING_DELAY_MS)); +@@ -595,6 +633,7 @@ static void vc4_hdmi_disable_scrambling(struct drm_encoder *encoder) + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + struct drm_crtc *crtc = encoder->crtc; ++ unsigned long flags; + + /* + * At boot, encoder->crtc will be NULL. Since we don't know the +@@ -610,8 +649,10 @@ static void vc4_hdmi_disable_scrambling(struct drm_encoder *encoder) + if (delayed_work_pending(&vc4_hdmi->scrambling_work)) + cancel_delayed_work_sync(&vc4_hdmi->scrambling_work); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_SCRAMBLER_CTL, HDMI_READ(HDMI_SCRAMBLER_CTL) & + ~VC5_HDMI_SCRAMBLER_CTL_ENABLE); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + drm_scdc_set_scrambling(vc4_hdmi->ddc, false); + drm_scdc_set_high_tmds_clock_ratio(vc4_hdmi->ddc, false); +@@ -637,15 +678,23 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder, + struct drm_atomic_state *state) + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0); + + HDMI_WRITE(HDMI_VID_CTL, HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_CLRRGB); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + mdelay(1); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_VID_CTL, + HDMI_READ(HDMI_VID_CTL) & ~VC4_HD_VID_CTL_ENABLE); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + vc4_hdmi_disable_scrambling(encoder); + } + +@@ -653,10 +702,13 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder, + struct drm_atomic_state *state) + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ unsigned long flags; + int ret; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_VID_CTL, + HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_BLANKPIX); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + if (vc4_hdmi->variant->phy_disable) + vc4_hdmi->variant->phy_disable(vc4_hdmi); +@@ -678,8 +730,11 @@ static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder) + + static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable) + { ++ unsigned long flags; + u32 csc_ctl; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + csc_ctl = VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR, + VC4_HD_CSC_CTL_ORDER); + +@@ -709,14 +764,19 @@ static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable) + + /* The RGB order applies even when CSC is disabled. */ + HDMI_WRITE(HDMI_CSC_CTL, csc_ctl); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable) + { ++ unsigned long flags; + u32 csc_ctl; + + csc_ctl = 0x07; /* RGB_CONVERT_MODE = custom matrix, || USE_RGB_TO_YCBCR */ + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + if (enable) { + /* CEA VICs other than #1 requre limited range RGB + * output unless overridden by an AVI infoframe. +@@ -748,6 +808,8 @@ static void vc5_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable) + } + + HDMI_WRITE(HDMI_CSC_CTL, csc_ctl); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc4_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, +@@ -771,6 +833,9 @@ static void vc4_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + VC4_SET_FIELD(mode->crtc_vtotal - + mode->crtc_vsync_end, + VC4_HDMI_VERTB_VBP)); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + HDMI_WRITE(HDMI_HORZA, + (vsync_pos ? VC4_HDMI_HORZA_VPOS : 0) | +@@ -794,6 +859,8 @@ static void vc4_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + + HDMI_WRITE(HDMI_VERTB0, vertb_even); + HDMI_WRITE(HDMI_VERTB1, vertb); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, +@@ -817,10 +884,13 @@ static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + VC4_SET_FIELD(mode->crtc_vtotal - + mode->crtc_vsync_end, + VC4_HDMI_VERTB_VBP)); ++ unsigned long flags; + unsigned char gcp; + bool gcp_en; + u32 reg; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_VEC_INTERFACE_XBAR, 0x354021); + HDMI_WRITE(HDMI_HORZA, + (vsync_pos ? VC5_HDMI_HORZA_VPOS : 0) | +@@ -884,13 +954,18 @@ static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi, + HDMI_WRITE(HDMI_MISC_CONTROL, reg); + + HDMI_WRITE(HDMI_CLOCK_STOP, 0); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc4_hdmi_recenter_fifo(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; + u32 drift; + int ret; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + drift = HDMI_READ(HDMI_FIFO_CTL); + drift &= VC4_HDMI_FIFO_VALID_WRITE_MASK; + +@@ -898,12 +973,20 @@ static void vc4_hdmi_recenter_fifo(struct vc4_hdmi *vc4_hdmi) + drift & ~VC4_HDMI_FIFO_CTL_RECENTER); + HDMI_WRITE(HDMI_FIFO_CTL, + drift | VC4_HDMI_FIFO_CTL_RECENTER); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + usleep_range(1000, 1100); ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_FIFO_CTL, + drift & ~VC4_HDMI_FIFO_CTL_RECENTER); + HDMI_WRITE(HDMI_FIFO_CTL, + drift | VC4_HDMI_FIFO_CTL_RECENTER); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + ret = wait_for(HDMI_READ(HDMI_FIFO_CTL) & + VC4_HDMI_FIFO_CTL_RECENTER_DONE, 1); + WARN_ONCE(ret, "Timeout waiting for " +@@ -921,6 +1004,7 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, + conn_state_to_vc4_hdmi_conn_state(conn_state); + struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; + unsigned long bvb_rate, pixel_rate, hsm_rate; ++ unsigned long flags; + int ret; + + ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev); +@@ -975,11 +1059,15 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, + if (vc4_hdmi->variant->phy_init) + vc4_hdmi->variant->phy_init(vc4_hdmi, vc4_conn_state); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_SCHEDULER_CONTROL, + HDMI_READ(HDMI_SCHEDULER_CONTROL) | + VC4_HDMI_SCHEDULER_CONTROL_MANUAL_FORMAT | + VC4_HDMI_SCHEDULER_CONTROL_IGNORE_VSYNC_PREDICTS); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + if (vc4_hdmi->variant->set_timings) + vc4_hdmi->variant->set_timings(vc4_hdmi, conn_state, mode); + +@@ -1003,6 +1091,7 @@ static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder, + struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; + struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ unsigned long flags; + + if (vc4_encoder->hdmi_monitor && + drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_LIMITED) { +@@ -1017,7 +1106,9 @@ static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder, + vc4_encoder->limited_rgb_range = false; + } + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_FIFO_CTL, VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, +@@ -1028,8 +1119,11 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); + bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC; + bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC; ++ unsigned long flags; + int ret; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_VID_CTL, + VC4_HD_VID_CTL_ENABLE | + VC4_HD_VID_CTL_CLRRGB | +@@ -1046,6 +1140,8 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + HDMI_READ(HDMI_SCHEDULER_CONTROL) | + VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + ret = wait_for(HDMI_READ(HDMI_SCHEDULER_CONTROL) & + VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE, 1000); + WARN_ONCE(ret, "Timeout waiting for " +@@ -1058,6 +1154,8 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + HDMI_READ(HDMI_SCHEDULER_CONTROL) & + ~VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + ret = wait_for(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) & + VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE), 1000); + WARN_ONCE(ret, "Timeout waiting for " +@@ -1065,6 +1163,8 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + } + + if (vc4_encoder->hdmi_monitor) { ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) & + VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE)); + HDMI_WRITE(HDMI_SCHEDULER_CONTROL, +@@ -1074,6 +1174,8 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, + VC4_HDMI_RAM_PACKET_ENABLE); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + vc4_hdmi_set_infoframes(encoder); + } + +@@ -1230,6 +1332,7 @@ static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi, + unsigned int samplerate) + { + u32 hsm_clock = clk_get_rate(vc4_hdmi->audio_clock); ++ unsigned long flags; + unsigned long n, m; + + rational_best_approximation(hsm_clock, samplerate, +@@ -1239,9 +1342,11 @@ static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi, + VC4_HD_MAI_SMP_M_SHIFT) + 1, + &n, &m); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_MAI_SMP, + VC4_SET_FIELD(n, VC4_HD_MAI_SMP_N) | + VC4_SET_FIELD(m - 1, VC4_HD_MAI_SMP_M)); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerate) +@@ -1252,6 +1357,8 @@ static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerat + u32 n, cts; + u64 tmp; + ++ lockdep_assert_held(&vc4_hdmi->hw_lock); ++ + n = 128 * samplerate / 1000; + tmp = (u64)(mode->clock * 1000) * n; + do_div(tmp, 128 * samplerate); +@@ -1281,6 +1388,7 @@ static int vc4_hdmi_audio_startup(struct device *dev, void *data) + { + struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); + struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; ++ unsigned long flags; + + /* + * If the HDMI encoder hasn't probed, or the encoder is +@@ -1292,12 +1400,14 @@ static int vc4_hdmi_audio_startup(struct device *dev, void *data) + + vc4_hdmi->audio.streaming = true; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_MAI_CTL, + VC4_HD_MAI_CTL_RESET | + VC4_HD_MAI_CTL_FLUSH | + VC4_HD_MAI_CTL_DLATE | + VC4_HD_MAI_CTL_ERRORE | + VC4_HD_MAI_CTL_ERRORF); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + if (vc4_hdmi->variant->phy_rng_enable) + vc4_hdmi->variant->phy_rng_enable(vc4_hdmi); +@@ -1309,6 +1419,7 @@ static void vc4_hdmi_audio_reset(struct vc4_hdmi *vc4_hdmi) + { + struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; + struct device *dev = &vc4_hdmi->pdev->dev; ++ unsigned long flags; + int ret; + + vc4_hdmi->audio.streaming = false; +@@ -1316,20 +1427,29 @@ static void vc4_hdmi_audio_reset(struct vc4_hdmi *vc4_hdmi) + if (ret) + dev_err(dev, "Failed to stop audio infoframe: %d\n", ret); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_MAI_CTL, VC4_HD_MAI_CTL_RESET); + HDMI_WRITE(HDMI_MAI_CTL, VC4_HD_MAI_CTL_ERRORF); + HDMI_WRITE(HDMI_MAI_CTL, VC4_HD_MAI_CTL_FLUSH); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static void vc4_hdmi_audio_shutdown(struct device *dev, void *data) + { + struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + HDMI_WRITE(HDMI_MAI_CTL, + VC4_HD_MAI_CTL_DLATE | + VC4_HD_MAI_CTL_ERRORE | + VC4_HD_MAI_CTL_ERRORF); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + if (vc4_hdmi->variant->phy_rng_disable) + vc4_hdmi->variant->phy_rng_disable(vc4_hdmi); + +@@ -1384,6 +1504,7 @@ static int vc4_hdmi_audio_prepare(struct device *dev, void *data, + struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; + unsigned int sample_rate = params->sample_rate; + unsigned int channels = params->channels; ++ unsigned long flags; + u32 audio_packet_config, channel_mask; + u32 channel_map; + u32 mai_audio_format; +@@ -1392,14 +1513,15 @@ static int vc4_hdmi_audio_prepare(struct device *dev, void *data, + dev_dbg(dev, "%s: %u Hz, %d bit, %d channels\n", __func__, + sample_rate, params->sample_width, channels); + ++ vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate); ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_MAI_CTL, + VC4_SET_FIELD(channels, VC4_HD_MAI_CTL_CHNUM) | + VC4_HD_MAI_CTL_WHOLSMP | + VC4_HD_MAI_CTL_CHALIGN | + VC4_HD_MAI_CTL_ENABLE); + +- vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate); +- + mai_sample_rate = sample_rate_to_mai_fmt(sample_rate); + if (params->iec.status[0] & IEC958_AES0_NONAUDIO && + params->channels == 8) +@@ -1437,8 +1559,11 @@ static int vc4_hdmi_audio_prepare(struct device *dev, void *data, + channel_map = vc4_hdmi->variant->channel_map(vc4_hdmi, channel_mask); + HDMI_WRITE(HDMI_MAI_CHANNEL_MAP, channel_map); + HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config); ++ + vc4_hdmi_set_n_cts(vc4_hdmi, sample_rate); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + memcpy(&vc4_hdmi->audio.infoframe, ¶ms->cea, sizeof(params->cea)); + vc4_hdmi_set_audio_infoframe(encoder); + +@@ -1729,6 +1854,8 @@ static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1) + struct cec_msg *msg = &vc4_hdmi->cec_rx_msg; + unsigned int i; + ++ lockdep_assert_held(&vc4_hdmi->hw_lock); ++ + msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >> + VC4_HDMI_CEC_REC_WRD_CNT_SHIFT); + +@@ -1747,11 +1874,12 @@ static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1) + } + } + +-static irqreturn_t vc4_cec_irq_handler_tx_bare(int irq, void *priv) ++static irqreturn_t vc4_cec_irq_handler_tx_bare_locked(struct vc4_hdmi *vc4_hdmi) + { +- struct vc4_hdmi *vc4_hdmi = priv; + u32 cntrl1; + ++ lockdep_assert_held(&vc4_hdmi->hw_lock); ++ + cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1); + vc4_hdmi->cec_tx_ok = cntrl1 & VC4_HDMI_CEC_TX_STATUS_GOOD; + cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN; +@@ -1760,11 +1888,24 @@ static irqreturn_t vc4_cec_irq_handler_tx_bare(int irq, void *priv) + return IRQ_WAKE_THREAD; + } + +-static irqreturn_t vc4_cec_irq_handler_rx_bare(int irq, void *priv) ++static irqreturn_t vc4_cec_irq_handler_tx_bare(int irq, void *priv) + { + struct vc4_hdmi *vc4_hdmi = priv; ++ irqreturn_t ret; ++ ++ spin_lock(&vc4_hdmi->hw_lock); ++ ret = vc4_cec_irq_handler_tx_bare_locked(vc4_hdmi); ++ spin_unlock(&vc4_hdmi->hw_lock); ++ ++ return ret; ++} ++ ++static irqreturn_t vc4_cec_irq_handler_rx_bare_locked(struct vc4_hdmi *vc4_hdmi) ++{ + u32 cntrl1; + ++ lockdep_assert_held(&vc4_hdmi->hw_lock); ++ + vc4_hdmi->cec_rx_msg.len = 0; + cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1); + vc4_cec_read_msg(vc4_hdmi, cntrl1); +@@ -1777,6 +1918,18 @@ static irqreturn_t vc4_cec_irq_handler_rx_bare(int irq, void *priv) + return IRQ_WAKE_THREAD; + } + ++static irqreturn_t vc4_cec_irq_handler_rx_bare(int irq, void *priv) ++{ ++ struct vc4_hdmi *vc4_hdmi = priv; ++ irqreturn_t ret; ++ ++ spin_lock(&vc4_hdmi->hw_lock); ++ ret = vc4_cec_irq_handler_rx_bare_locked(vc4_hdmi); ++ spin_unlock(&vc4_hdmi->hw_lock); ++ ++ return ret; ++} ++ + static irqreturn_t vc4_cec_irq_handler(int irq, void *priv) + { + struct vc4_hdmi *vc4_hdmi = priv; +@@ -1787,14 +1940,17 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv) + if (!(stat & VC4_HDMI_CPU_CEC)) + return IRQ_NONE; + ++ spin_lock(&vc4_hdmi->hw_lock); + cntrl5 = HDMI_READ(HDMI_CEC_CNTRL_5); + vc4_hdmi->cec_irq_was_rx = cntrl5 & VC4_HDMI_CEC_RX_CEC_INT; + if (vc4_hdmi->cec_irq_was_rx) +- ret = vc4_cec_irq_handler_rx_bare(irq, priv); ++ ret = vc4_cec_irq_handler_rx_bare_locked(vc4_hdmi); + else +- ret = vc4_cec_irq_handler_tx_bare(irq, priv); ++ ret = vc4_cec_irq_handler_tx_bare_locked(vc4_hdmi); + + HDMI_WRITE(HDMI_CEC_CPU_CLEAR, VC4_HDMI_CPU_CEC); ++ spin_unlock(&vc4_hdmi->hw_lock); ++ + return ret; + } + +@@ -1803,6 +1959,7 @@ static int vc4_hdmi_cec_enable(struct cec_adapter *adap) + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); + /* clock period in microseconds */ + const u32 usecs = 1000000 / CEC_CLOCK_FREQ; ++ unsigned long flags; + u32 val; + int ret; + +@@ -1810,6 +1967,8 @@ static int vc4_hdmi_cec_enable(struct cec_adapter *adap) + if (ret) + return ret; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + val = HDMI_READ(HDMI_CEC_CNTRL_5); + val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET | + VC4_HDMI_CEC_CNT_TO_4700_US_MASK | +@@ -1840,12 +1999,17 @@ static int vc4_hdmi_cec_enable(struct cec_adapter *adap) + if (!vc4_hdmi->variant->external_irq_controller) + HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + return 0; + } + + static int vc4_hdmi_cec_disable(struct cec_adapter *adap) + { + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + if (!vc4_hdmi->variant->external_irq_controller) + HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC); +@@ -1853,6 +2017,8 @@ static int vc4_hdmi_cec_disable(struct cec_adapter *adap) + HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) | + VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET); + ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + pm_runtime_put(&vc4_hdmi->pdev->dev); + + return 0; +@@ -1869,10 +2035,14 @@ static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable) + static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr) + { + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); ++ unsigned long flags; + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_CEC_CNTRL_1, + (HDMI_READ(HDMI_CEC_CNTRL_1) & ~VC4_HDMI_CEC_ADDR_MASK) | + (log_addr & 0xf) << VC4_HDMI_CEC_ADDR_SHIFT); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + return 0; + } + +@@ -1881,6 +2051,7 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, + { + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); + struct drm_device *dev = vc4_hdmi->connector.dev; ++ unsigned long flags; + u32 val; + unsigned int i; + +@@ -1889,6 +2060,8 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, + return -ENOMEM; + } + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + for (i = 0; i < msg->len; i += 4) + HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2), + (msg->msg[i]) | +@@ -1904,6 +2077,9 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, + val |= VC4_HDMI_CEC_START_XMIT_BEGIN; + + HDMI_WRITE(HDMI_CEC_CNTRL_1, val); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ + return 0; + } + +@@ -1918,6 +2094,7 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) + struct cec_connector_info conn_info; + struct platform_device *pdev = vc4_hdmi->pdev; + struct device *dev = &pdev->dev; ++ unsigned long flags; + u32 value; + int ret; + +@@ -1937,10 +2114,12 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) + cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector); + cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + value = HDMI_READ(HDMI_CEC_CNTRL_1); + /* Set the logical address to Unregistered */ + value |= VC4_HDMI_CEC_ADDR_MASK; + HDMI_WRITE(HDMI_CEC_CNTRL_1, value); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + vc4_hdmi_cec_update_clk_div(vc4_hdmi); + +@@ -1959,7 +2138,9 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) + if (ret) + goto err_remove_cec_rx_handler; + } else { ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, 0xffffffff); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + ret = request_threaded_irq(platform_get_irq(pdev, 0), + vc4_cec_irq_handler, +@@ -2265,6 +2446,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) + vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL); + if (!vc4_hdmi) + return -ENOMEM; ++ spin_lock_init(&vc4_hdmi->hw_lock); + INIT_DELAYED_WORK(&vc4_hdmi->scrambling_work, vc4_hdmi_scrambling_wq); + + dev_set_drvdata(dev, vc4_hdmi); +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h +index 49fc91962fe4..e26fa193fd65 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -186,6 +186,7 @@ struct vc4_hdmi { + /* Common debugfs regset */ + struct debugfs_regset32 hdmi_regset; + struct debugfs_regset32 hd_regset; ++ + /* VC5 debugfs regset */ + struct debugfs_regset32 cec_regset; + struct debugfs_regset32 csc_regset; +@@ -193,6 +194,11 @@ struct vc4_hdmi { + struct debugfs_regset32 phy_regset; + struct debugfs_regset32 ram_regset; + struct debugfs_regset32 rm_regset; ++ ++ /** ++ * @hw_lock: Spinlock protecting device register access. ++ */ ++ spinlock_t hw_lock; + }; + + static inline struct vc4_hdmi * +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c +index 36535480f8e2..62148f0dc284 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c +@@ -130,31 +130,49 @@ + void vc4_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, + struct vc4_hdmi_connector_state *conn_state) + { ++ unsigned long flags; ++ + /* PHY should be in reset, like + * vc4_hdmi_encoder_disable() does. + */ + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + HDMI_WRITE(HDMI_TX_PHY_RESET_CTL, 0xf << 16); + HDMI_WRITE(HDMI_TX_PHY_RESET_CTL, 0); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + void vc4_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_TX_PHY_RESET_CTL, 0xf << 16); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + void vc4_hdmi_phy_rng_enable(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_TX_PHY_CTL_0, + HDMI_READ(HDMI_TX_PHY_CTL_0) & + ~VC4_HDMI_TX_PHY_RNG_PWRDN); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + void vc4_hdmi_phy_rng_disable(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_TX_PHY_CTL_0, + HDMI_READ(HDMI_TX_PHY_CTL_0) | + VC4_HDMI_TX_PHY_RNG_PWRDN); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + static unsigned long long +@@ -336,6 +354,8 @@ phy_get_channel_settings(enum vc4_hdmi_phy_channel chan, + + static void vc5_hdmi_reset_phy(struct vc4_hdmi *vc4_hdmi) + { ++ lockdep_assert_held(&vc4_hdmi->hw_lock); ++ + HDMI_WRITE(HDMI_TX_PHY_RESET_CTL, 0x0f); + HDMI_WRITE(HDMI_TX_PHY_POWERDOWN_CTL, BIT(10)); + } +@@ -348,10 +368,13 @@ void vc5_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, + unsigned long long pixel_freq = conn_state->pixel_rate; + unsigned long long vco_freq; + unsigned char word_sel; ++ unsigned long flags; + u8 vco_sel, vco_div; + + vco_freq = phy_get_vco_freq(pixel_freq, &vco_sel, &vco_div); + ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + vc5_hdmi_reset_phy(vc4_hdmi); + + HDMI_WRITE(HDMI_TX_PHY_POWERDOWN_CTL, +@@ -501,23 +524,37 @@ void vc5_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, + HDMI_READ(HDMI_TX_PHY_RESET_CTL) | + VC4_HDMI_TX_PHY_RESET_CTL_PLL_RESETB | + VC4_HDMI_TX_PHY_RESET_CTL_PLLDIV_RESETB); ++ ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + void vc5_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + vc5_hdmi_reset_phy(vc4_hdmi); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + void vc5_hdmi_phy_rng_enable(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_TX_PHY_POWERDOWN_CTL, + HDMI_READ(HDMI_TX_PHY_POWERDOWN_CTL) & + ~VC4_HDMI_TX_PHY_POWERDOWN_CTL_RNDGEN_PWRDN); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } + + void vc5_hdmi_phy_rng_disable(struct vc4_hdmi *vc4_hdmi) + { ++ unsigned long flags; ++ ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_TX_PHY_POWERDOWN_CTL, + HDMI_READ(HDMI_TX_PHY_POWERDOWN_CTL) | + VC4_HDMI_TX_PHY_POWERDOWN_CTL_RNDGEN_PWRDN); ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + } +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi_regs.h b/drivers/gpu/drm/vc4/vc4_hdmi_regs.h +index 23930a8fa376..24056441a4bb 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi_regs.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi_regs.h +@@ -445,6 +445,8 @@ static inline void vc4_hdmi_write(struct vc4_hdmi *hdmi, + const struct vc4_hdmi_variant *variant = hdmi->variant; + void __iomem *base; + ++ lockdep_assert_held(&hdmi->hw_lock); ++ + WARN_ON(!pm_runtime_active(&hdmi->pdev->dev)); + + if (reg >= variant->num_registers) { +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Tue, 19 Oct 2021 14:19:04 +0200 +Subject: [PATCH 937/941] drm/vc4: hdmi: Use a mutex to prevent concurrent + framework access + +The vc4 HDMI controller registers into the KMS, CEC and ALSA +frameworks. + +However, no particular care is done to prevent the concurrent execution +of different framework hooks from happening at the same time. + +In order to protect against that scenario, let's introduce a mutex that +relevant ALSA and KMS hooks will need to take to prevent concurrent +execution. + +CEC is left out at the moment though, since the .get_modes and .detect +KMS hooks, when running cec_s_phys_addr_from_edid, can end up calling +CEC's .adap_enable hook. This introduces some reentrancy that isn't easy +to deal with properly. + +The CEC hooks also don't share much state with the rest of the driver: +the registers are entirely separate, we don't share any variable, the +only thing that can conflict is the CEC clock divider setup that can be +affected by a mode set. + +However, after discussing it, it looks like CEC should be able to +recover from this if it was to happen. + +Fixes: bb7d78568814 ("drm/vc4: Add HDMI audio support") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 114 +++++++++++++++++++++++++++++++-- + drivers/gpu/drm/vc4/vc4_hdmi.h | 14 ++++ + 2 files changed, 124 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index 45227b3d289c..1228ff0121bf 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -199,6 +199,8 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) + enum drm_connector_status ret = connector_status_disconnected; + bool connected = false; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + WARN_ON(pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev)); + + if (vc4_hdmi->hpd_gpio) { +@@ -238,6 +240,7 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) + + out: + pm_runtime_put(&vc4_hdmi->pdev->dev); ++ mutex_unlock(&vc4_hdmi->mutex); + return ret; + } + +@@ -254,10 +257,14 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector) + int ret = 0; + struct edid *edid; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + edid = drm_get_edid(connector, vc4_hdmi->ddc); + cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid); +- if (!edid) +- return -ENODEV; ++ if (!edid) { ++ ret = -ENODEV; ++ goto out; ++ } + + vc4_encoder->hdmi_monitor = drm_detect_hdmi_monitor(edid); + +@@ -277,6 +284,9 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector) + } + } + ++out: ++ mutex_unlock(&vc4_hdmi->mutex); ++ + return ret; + } + +@@ -503,6 +513,8 @@ static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder) + union hdmi_infoframe frame; + int ret; + ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ + ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, + connector, mode); + if (ret < 0) { +@@ -554,6 +566,8 @@ static void vc4_hdmi_set_hdr_infoframe(struct drm_encoder *encoder) + struct drm_connector_state *conn_state = connector->state; + union hdmi_infoframe frame; + ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ + if (!vc4_hdmi->variant->supports_hdr) + return; + +@@ -570,6 +584,8 @@ static void vc4_hdmi_set_infoframes(struct drm_encoder *encoder) + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ + vc4_hdmi_set_avi_infoframe(encoder); + vc4_hdmi_set_spd_infoframe(encoder); + /* +@@ -589,6 +605,8 @@ static bool vc4_hdmi_supports_scrambling(struct drm_encoder *encoder, + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + struct drm_display_info *display = &vc4_hdmi->connector.display_info; + ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ + if (!vc4_encoder->hdmi_monitor) + return false; + +@@ -607,6 +625,8 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + unsigned long flags; + ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ + if (!encoder->crtc || !encoder->crtc->state) + return; + +@@ -680,6 +700,8 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder, + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + unsigned long flags; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0); +@@ -696,6 +718,8 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder, + spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + vc4_hdmi_disable_scrambling(encoder); ++ ++ mutex_unlock(&vc4_hdmi->mutex); + } + + static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder, +@@ -705,6 +729,8 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder, + unsigned long flags; + int ret; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_VID_CTL, + HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_BLANKPIX); +@@ -722,6 +748,8 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder, + ret = pm_runtime_put(&vc4_hdmi->pdev->dev); + if (ret < 0) + DRM_ERROR("Failed to release power domain: %d\n", ret); ++ ++ mutex_unlock(&vc4_hdmi->mutex); + } + + static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder) +@@ -1007,10 +1035,12 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, + unsigned long flags; + int ret; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev); + if (ret < 0) { + DRM_ERROR("Failed to retain power domain: %d\n", ret); +- return; ++ goto out; + } + + pixel_rate = vc4_conn_state->pixel_rate; +@@ -1071,6 +1101,8 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, + if (vc4_hdmi->variant->set_timings) + vc4_hdmi->variant->set_timings(vc4_hdmi, conn_state, mode); + ++ mutex_unlock(&vc4_hdmi->mutex); ++ + return; + + err_remove_bvb_req: +@@ -1082,6 +1114,8 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, + clk_disable_unprepare(vc4_hdmi->pixel_clock); + err_runtime_pm: + pm_runtime_put(&vc4_hdmi->pdev->dev); ++out: ++ mutex_unlock(&vc4_hdmi->mutex); + return; + } + +@@ -1093,6 +1127,8 @@ static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder, + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + unsigned long flags; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + if (vc4_encoder->hdmi_monitor && + drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_LIMITED) { + if (vc4_hdmi->variant->csc_setup) +@@ -1109,6 +1145,8 @@ static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder, + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_FIFO_CTL, VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N); + spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ ++ mutex_unlock(&vc4_hdmi->mutex); + } + + static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, +@@ -1122,6 +1160,8 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + unsigned long flags; + int ret; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + HDMI_WRITE(HDMI_VID_CTL, +@@ -1181,6 +1221,8 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + + vc4_hdmi_recenter_fifo(vc4_hdmi); + vc4_hdmi_enable_scrambling(encoder); ++ ++ mutex_unlock(&vc4_hdmi->mutex); + } + + static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder) +@@ -1357,6 +1399,7 @@ static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerat + u32 n, cts; + u64 tmp; + ++ lockdep_assert_held(&vc4_hdmi->mutex); + lockdep_assert_held(&vc4_hdmi->hw_lock); + + n = 128 * samplerate / 1000; +@@ -1390,13 +1433,17 @@ static int vc4_hdmi_audio_startup(struct device *dev, void *data) + struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; + unsigned long flags; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + /* + * If the HDMI encoder hasn't probed, or the encoder is + * currently in DVI mode, treat the codec dai as missing. + */ + if (!encoder->crtc || !(HDMI_READ(HDMI_RAM_PACKET_CONFIG) & +- VC4_HDMI_RAM_PACKET_ENABLE)) ++ VC4_HDMI_RAM_PACKET_ENABLE)) { ++ mutex_unlock(&vc4_hdmi->mutex); + return -ENODEV; ++ } + + vc4_hdmi->audio.streaming = true; + +@@ -1412,6 +1459,8 @@ static int vc4_hdmi_audio_startup(struct device *dev, void *data) + if (vc4_hdmi->variant->phy_rng_enable) + vc4_hdmi->variant->phy_rng_enable(vc4_hdmi); + ++ mutex_unlock(&vc4_hdmi->mutex); ++ + return 0; + } + +@@ -1422,6 +1471,8 @@ static void vc4_hdmi_audio_reset(struct vc4_hdmi *vc4_hdmi) + unsigned long flags; + int ret; + ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ + vc4_hdmi->audio.streaming = false; + ret = vc4_hdmi_stop_packet(encoder, HDMI_INFOFRAME_TYPE_AUDIO, false); + if (ret) +@@ -1441,6 +1492,8 @@ static void vc4_hdmi_audio_shutdown(struct device *dev, void *data) + struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); + unsigned long flags; + ++ mutex_lock(&vc4_hdmi->mutex); ++ + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + HDMI_WRITE(HDMI_MAI_CTL, +@@ -1455,6 +1508,8 @@ static void vc4_hdmi_audio_shutdown(struct device *dev, void *data) + + vc4_hdmi->audio.streaming = false; + vc4_hdmi_audio_reset(vc4_hdmi); ++ ++ mutex_unlock(&vc4_hdmi->mutex); + } + + static int sample_rate_to_mai_fmt(int samplerate) +@@ -1513,6 +1568,8 @@ static int vc4_hdmi_audio_prepare(struct device *dev, void *data, + dev_dbg(dev, "%s: %u Hz, %d bit, %d channels\n", __func__, + sample_rate, params->sample_width, channels); + ++ mutex_lock(&vc4_hdmi->mutex); ++ + vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate); + + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); +@@ -1567,6 +1624,8 @@ static int vc4_hdmi_audio_prepare(struct device *dev, void *data, + memcpy(&vc4_hdmi->audio.infoframe, ¶ms->cea, sizeof(params->cea)); + vc4_hdmi_set_audio_infoframe(encoder); + ++ mutex_unlock(&vc4_hdmi->mutex); ++ + return 0; + } + +@@ -1630,7 +1689,9 @@ static int vc4_hdmi_audio_get_eld(struct device *dev, void *data, + struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); + struct drm_connector *connector = &vc4_hdmi->connector; + ++ mutex_lock(&vc4_hdmi->mutex); + memcpy(buf, connector->eld, min(sizeof(connector->eld), len)); ++ mutex_unlock(&vc4_hdmi->mutex); + + return 0; + } +@@ -1963,6 +2024,17 @@ static int vc4_hdmi_cec_enable(struct cec_adapter *adap) + u32 val; + int ret; + ++ /* ++ * NOTE: This function should really take vc4_hdmi->mutex, but doing so ++ * results in a reentrancy since cec_s_phys_addr_from_edid() called in ++ * .detect or .get_modes might call .adap_enable, which leads to this ++ * function being called with that mutex held. ++ * ++ * Concurrency is not an issue for the moment since we don't share any ++ * state with KMS, so we can ignore the lock for now, but we need to ++ * keep it in mind if we were to change that assumption. ++ */ ++ + ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev); + if (ret) + return ret; +@@ -2009,6 +2081,17 @@ static int vc4_hdmi_cec_disable(struct cec_adapter *adap) + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); + unsigned long flags; + ++ /* ++ * NOTE: This function should really take vc4_hdmi->mutex, but doing so ++ * results in a reentrancy since cec_s_phys_addr_from_edid() called in ++ * .detect or .get_modes might call .adap_enable, which leads to this ++ * function being called with that mutex held. ++ * ++ * Concurrency is not an issue for the moment since we don't share any ++ * state with KMS, so we can ignore the lock for now, but we need to ++ * keep it in mind if we were to change that assumption. ++ */ ++ + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + + if (!vc4_hdmi->variant->external_irq_controller) +@@ -2037,6 +2120,17 @@ static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr) + struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); + unsigned long flags; + ++ /* ++ * NOTE: This function should really take vc4_hdmi->mutex, but doing so ++ * results in a reentrancy since cec_s_phys_addr_from_edid() called in ++ * .detect or .get_modes might call .adap_enable, which leads to this ++ * function being called with that mutex held. ++ * ++ * Concurrency is not an issue for the moment since we don't share any ++ * state with KMS, so we can ignore the lock for now, but we need to ++ * keep it in mind if we were to change that assumption. ++ */ ++ + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_CEC_CNTRL_1, + (HDMI_READ(HDMI_CEC_CNTRL_1) & ~VC4_HDMI_CEC_ADDR_MASK) | +@@ -2055,6 +2149,17 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, + u32 val; + unsigned int i; + ++ /* ++ * NOTE: This function should really take vc4_hdmi->mutex, but doing so ++ * results in a reentrancy since cec_s_phys_addr_from_edid() called in ++ * .detect or .get_modes might call .adap_enable, which leads to this ++ * function being called with that mutex held. ++ * ++ * Concurrency is not an issue for the moment since we don't share any ++ * state with KMS, so we can ignore the lock for now, but we need to ++ * keep it in mind if we were to change that assumption. ++ */ ++ + if (msg->len > 16) { + drm_err(dev, "Attempting to transmit too much data (%d)\n", msg->len); + return -ENOMEM; +@@ -2446,6 +2551,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) + vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL); + if (!vc4_hdmi) + return -ENOMEM; ++ mutex_init(&vc4_hdmi->mutex); + spin_lock_init(&vc4_hdmi->hw_lock); + INIT_DELAYED_WORK(&vc4_hdmi->scrambling_work, vc4_hdmi_scrambling_wq); + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h +index e26fa193fd65..242898b53312 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -199,6 +199,20 @@ struct vc4_hdmi { + * @hw_lock: Spinlock protecting device register access. + */ + spinlock_t hw_lock; ++ ++ /** ++ * @mutex: Mutex protecting the driver access across multiple ++ * frameworks (KMS, ALSA). ++ * ++ * NOTE: While supported, CEC has been left out since ++ * cec_s_phys_addr_from_edid() might call .adap_enable and lead to a ++ * reentrancy issue between .get_modes (or .detect) and .adap_enable. ++ * Since we don't share any state between the CEC hooks and KMS', it's ++ * not a big deal. The only trouble might come from updating the CEC ++ * clock divider which might be affected by a modeset, but CEC should ++ * be resilient to that. ++ */ ++ struct mutex mutex; + }; + + static inline struct vc4_hdmi * +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Tue, 19 Oct 2021 14:19:29 +0200 +Subject: [PATCH 938/941] drm/vc4: hdmi: Prevent access to crtc->state outside + of KMS + +Accessing the crtc->state pointer from outside the modesetting context +is not allowed. We thus need to copy whatever we need from the KMS state +to our structure in order to access it. + +However, in the vc4 HDMI driver we do use that pointer in the ALSA code +path, and potentially in the hotplug interrupt handler path. + +These paths both need access to the CRTC adjusted mode in order for the +proper dividers to be set for ALSA, and the scrambler state to be +reinstated properly for hotplug. + +Let's copy this mode into our private encoder structure and reference it +from there when needed. Since that part is shared between KMS and other +paths, we need to protect it using our mutex. + +Link: https://lore.kernel.org/all/YWgteNaNeaS9uWDe@phenom.ffwll.local/ +Fixes: bb7d78568814 ("drm/vc4: Add HDMI audio support") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 39 ++++++++++++++++++++++------------ + drivers/gpu/drm/vc4/vc4_hdmi.h | 6 ++++++ + 2 files changed, 32 insertions(+), 13 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index 1228ff0121bf..d7a7ad99ebe4 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -508,8 +508,7 @@ static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder) + struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); + struct drm_connector *connector = &vc4_hdmi->connector; + struct drm_connector_state *cstate = connector->state; +- struct drm_crtc *crtc = encoder->crtc; +- const struct drm_display_mode *mode = &crtc->state->adjusted_mode; ++ const struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; + union hdmi_infoframe frame; + int ret; + +@@ -621,8 +620,8 @@ static bool vc4_hdmi_supports_scrambling(struct drm_encoder *encoder, + + static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + { +- struct drm_display_mode *mode; + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; + unsigned long flags; + + lockdep_assert_held(&vc4_hdmi->mutex); +@@ -630,7 +629,6 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + if (!encoder->crtc || !encoder->crtc->state) + return; + +- mode = &encoder->crtc->state->adjusted_mode; + if (!vc4_hdmi_supports_scrambling(encoder, mode)) + return; + +@@ -652,18 +650,21 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + static void vc4_hdmi_disable_scrambling(struct drm_encoder *encoder) + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; + struct drm_crtc *crtc = encoder->crtc; + unsigned long flags; + ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ + /* + * At boot, encoder->crtc will be NULL. Since we don't know the + * state of the scrambler and in order to avoid any + * inconsistency, let's disable it all the time. + */ +- if (crtc && !vc4_hdmi_supports_scrambling(encoder, &crtc->mode)) ++ if (crtc && !vc4_hdmi_supports_scrambling(encoder, mode)) + return; + +- if (crtc && !vc4_hdmi_mode_needs_scrambling(&crtc->mode)) ++ if (crtc && !vc4_hdmi_mode_needs_scrambling(mode)) + return; + + if (delayed_work_pending(&vc4_hdmi->scrambling_work)) +@@ -1030,7 +1031,7 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, + drm_atomic_get_new_connector_state(state, connector); + struct vc4_hdmi_connector_state *vc4_conn_state = + conn_state_to_vc4_hdmi_conn_state(conn_state); +- struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; ++ struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; + unsigned long bvb_rate, pixel_rate, hsm_rate; + unsigned long flags; + int ret; +@@ -1122,9 +1123,9 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, + static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder, + struct drm_atomic_state *state) + { +- struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; +- struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; ++ struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); + unsigned long flags; + + mutex_lock(&vc4_hdmi->mutex); +@@ -1152,8 +1153,8 @@ static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder, + static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + struct drm_atomic_state *state) + { +- struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; + struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); + bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC; + bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC; +@@ -1229,6 +1230,19 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder) + { + } + ++static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder, ++ struct drm_crtc_state *crtc_state, ++ struct drm_connector_state *conn_state) ++{ ++ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ ++ mutex_lock(&vc4_hdmi->mutex); ++ memcpy(&vc4_hdmi->saved_adjusted_mode, ++ &crtc_state->adjusted_mode, ++ sizeof(vc4_hdmi->saved_adjusted_mode)); ++ mutex_unlock(&vc4_hdmi->mutex); ++} ++ + #define WIFI_2_4GHz_CH1_MIN_FREQ 2400000000ULL + #define WIFI_2_4GHz_CH1_MAX_FREQ 2422000000ULL + +@@ -1307,6 +1321,7 @@ vc4_hdmi_encoder_mode_valid(struct drm_encoder *encoder, + + static const struct drm_encoder_helper_funcs vc4_hdmi_encoder_helper_funcs = { + .atomic_check = vc4_hdmi_encoder_atomic_check, ++ .atomic_mode_set = vc4_hdmi_encoder_atomic_mode_set, + .mode_valid = vc4_hdmi_encoder_mode_valid, + .disable = vc4_hdmi_encoder_disable, + .enable = vc4_hdmi_encoder_enable, +@@ -1393,9 +1408,7 @@ static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi, + + static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerate) + { +- struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; +- struct drm_crtc *crtc = encoder->crtc; +- const struct drm_display_mode *mode = &crtc->state->adjusted_mode; ++ const struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; + u32 n, cts; + u64 tmp; + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h +index 242898b53312..285b751c5f2d 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -213,6 +213,12 @@ struct vc4_hdmi { + * be resilient to that. + */ + struct mutex mutex; ++ ++ /** ++ * @saved_adjusted_mode: Copy of @drm_crtc_state.adjusted_mode ++ * for use by ALSA hooks and interrupt handlers. Protected by @mutex. ++ */ ++ struct drm_display_mode saved_adjusted_mode; + }; + + static inline struct vc4_hdmi * +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Fri, 24 Sep 2021 14:27:38 +0200 +Subject: [PATCH 939/941] drm/vc4: hdmi: Check the device state in prepare() + +Even though we already check that the encoder->crtc pointer is there +during in startup(), which is part of the open() path in ASoC, nothing +guarantees that our encoder state won't change between the time when we +open the device and the time we prepare it. + +Move the sanity checks we do in startup() to a helper and call it from +prepare(). + +Fixes: 91e99e113929 ("drm/vc4: hdmi: Register HDMI codec") +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 35 +++++++++++++++++++++++++++------- + 1 file changed, 28 insertions(+), 7 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index d7a7ad99ebe4..3ce765c92fc5 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -1440,20 +1440,36 @@ static inline struct vc4_hdmi *dai_to_hdmi(struct snd_soc_dai *dai) + return snd_soc_card_get_drvdata(card); + } + ++static bool vc4_hdmi_audio_can_stream(struct vc4_hdmi *vc4_hdmi) ++{ ++ struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; ++ ++ lockdep_assert_held(&vc4_hdmi->mutex); ++ ++ /* ++ * The encoder doesn't have a CRTC until the first modeset. ++ */ ++ if (!encoder->crtc) ++ return false; ++ ++ /* ++ * If the encoder is currently in DVI mode, treat the codec DAI ++ * as missing. ++ */ ++ if (!(HDMI_READ(HDMI_RAM_PACKET_CONFIG) & VC4_HDMI_RAM_PACKET_ENABLE)) ++ return false; ++ ++ return true; ++} ++ + static int vc4_hdmi_audio_startup(struct device *dev, void *data) + { + struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); +- struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; + unsigned long flags; + + mutex_lock(&vc4_hdmi->mutex); + +- /* +- * If the HDMI encoder hasn't probed, or the encoder is +- * currently in DVI mode, treat the codec dai as missing. +- */ +- if (!encoder->crtc || !(HDMI_READ(HDMI_RAM_PACKET_CONFIG) & +- VC4_HDMI_RAM_PACKET_ENABLE)) { ++ if (!vc4_hdmi_audio_can_stream(vc4_hdmi)) { + mutex_unlock(&vc4_hdmi->mutex); + return -ENODEV; + } +@@ -1583,6 +1599,11 @@ static int vc4_hdmi_audio_prepare(struct device *dev, void *data, + + mutex_lock(&vc4_hdmi->mutex); + ++ if (!vc4_hdmi_audio_can_stream(vc4_hdmi)) { ++ mutex_unlock(&vc4_hdmi->mutex); ++ return -EINVAL; ++ } ++ + vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate); + + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Tue, 19 Oct 2021 17:31:58 +0200 +Subject: [PATCH 940/941] drm/vc4: hdmi: Introduce an output_enabled flag + +We currently poke at encoder->crtc in the ALSA code path to determine +whether the HDMI output is enabled or not, and thus whether we should +allow the audio output. + +However, that pointer is deprecated and shouldn't really be used by +atomic drivers anymore. Since we have the infrastructure in place now, +let's just create a flag that we toggle to report whether the controller +is currently enabled and use that instead of encoder->crtc in ALSA. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 16 ++++++++++++---- + drivers/gpu/drm/vc4/vc4_hdmi.h | 6 ++++++ + 2 files changed, 18 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index 3ce765c92fc5..d5f53a065ab2 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -755,6 +755,11 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder, + + static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder) + { ++ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ ++ mutex_lock(&vc4_hdmi->mutex); ++ vc4_hdmi->output_enabled = false; ++ mutex_unlock(&vc4_hdmi->mutex); + } + + static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi, bool enable) +@@ -1228,6 +1233,11 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, + + static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder) + { ++ struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); ++ ++ mutex_lock(&vc4_hdmi->mutex); ++ vc4_hdmi->output_enabled = true; ++ mutex_unlock(&vc4_hdmi->mutex); + } + + static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder, +@@ -1442,14 +1452,12 @@ static inline struct vc4_hdmi *dai_to_hdmi(struct snd_soc_dai *dai) + + static bool vc4_hdmi_audio_can_stream(struct vc4_hdmi *vc4_hdmi) + { +- struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base; +- + lockdep_assert_held(&vc4_hdmi->mutex); + + /* +- * The encoder doesn't have a CRTC until the first modeset. ++ * If the controller is disabled, prevent any ALSA output. + */ +- if (!encoder->crtc) ++ if (!vc4_hdmi->output_enabled) + return false; + + /* +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h +index 285b751c5f2d..33a865a9b601 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -219,6 +219,12 @@ struct vc4_hdmi { + * for use by ALSA hooks and interrupt handlers. Protected by @mutex. + */ + struct drm_display_mode saved_adjusted_mode; ++ ++ /** ++ * @output_enabled: Is the HDMI controller currently active? ++ * Protected by @mutex. ++ */ ++ bool output_enabled; + }; + + static inline struct vc4_hdmi * +-- +2.18.4 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Tue, 19 Oct 2021 19:13:46 +0200 +Subject: [PATCH 941/941] drm/vc4: hdmi: Introduce a scdc_enabled flag + +We currently rely on two functions, vc4_hdmi_supports_scrambling() and +vc4_hdmi_mode_needs_scrambling() to determine if we should enable and +disable the scrambler for any given mode. + +Since we might need to disable the controller at boot, we also always +run vc4_hdmi_disable_scrambling() and thus call those functions without +a mode yet, which in turns need to make some special casing in order for +it to work. + +Instead of duplicating the check for whether or not we need to take care +of the scrambler in both vc4_hdmi_enable_scrambling() and +vc4_hdmi_disable_scrambling(), we can do that check only when we enable +it and store whether or not it's been enabled in our private structure. + +We also need to initialize that flag at true to make sure we disable the +scrambler at boot since we can't really know its state yet. + +This allows to simplify a bit that part of the driver, and removes one +user of our copy of the CRTC adjusted mode outside of KMS (since +vc4_hdmi_disable_scrambling() might be called from the hotplug interrupt +handler). + +It also removes our last user of the legacy encoder->crtc pointer. + +Signed-off-by: Maxime Ripard +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 22 ++++++++++++---------- + drivers/gpu/drm/vc4/vc4_hdmi.h | 6 ++++++ + 2 files changed, 18 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index d5f53a065ab2..245fa882598a 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -643,6 +643,8 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + VC5_HDMI_SCRAMBLER_CTL_ENABLE); + spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + ++ vc4_hdmi->scdc_enabled = true; ++ + queue_delayed_work(system_wq, &vc4_hdmi->scrambling_work, + msecs_to_jiffies(SCRAMBLING_POLLING_DELAY_MS)); + } +@@ -650,22 +652,14 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder) + static void vc4_hdmi_disable_scrambling(struct drm_encoder *encoder) + { + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); +- struct drm_display_mode *mode = &vc4_hdmi->saved_adjusted_mode; +- struct drm_crtc *crtc = encoder->crtc; + unsigned long flags; + + lockdep_assert_held(&vc4_hdmi->mutex); + +- /* +- * At boot, encoder->crtc will be NULL. Since we don't know the +- * state of the scrambler and in order to avoid any +- * inconsistency, let's disable it all the time. +- */ +- if (crtc && !vc4_hdmi_supports_scrambling(encoder, mode)) ++ if (!vc4_hdmi->scdc_enabled) + return; + +- if (crtc && !vc4_hdmi_mode_needs_scrambling(mode)) +- return; ++ vc4_hdmi->scdc_enabled = false; + + if (delayed_work_pending(&vc4_hdmi->scrambling_work)) + cancel_delayed_work_sync(&vc4_hdmi->scrambling_work); +@@ -2608,6 +2602,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) + vc4_hdmi->pdev = pdev; + vc4_hdmi->variant = variant; + ++ /* ++ * Since we don't know the state of the controller and its ++ * display (if any), let's assume it's always enabled. ++ * vc4_hdmi_disable_scrambling() will thus run at boot, make ++ * sure it's disabled, and avoid any inconsistency. ++ */ ++ vc4_hdmi->scdc_enabled = true; ++ + ret = variant->init_resources(vc4_hdmi); + if (ret) + return ret; +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h +index 33a865a9b601..ad7d4b275ed8 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -225,6 +225,12 @@ struct vc4_hdmi { + * Protected by @mutex. + */ + bool output_enabled; ++ ++ /** ++ * @scdc_enabled: Is the HDMI controller currently running with ++ * the scrambler on? Protected by @mutex. ++ */ ++ bool scdc_enabled; + }; + + static inline struct vc4_hdmi * +-- +2.18.4 + diff --git a/SPECS/raspberrypi2.spec b/SPECS/raspberrypi2.spec index 19043f5..56a8869 100644 --- a/SPECS/raspberrypi2.spec +++ b/SPECS/raspberrypi2.spec @@ -1,4 +1,4 @@ -%global commit_firmware_long d2ab264b688a223e23029ffbba86820c8c6cb329 +%global commit_firmware_long c8c985aed7b849deefc77236d9fc550ee7bec15d %global commit_linux_long f814bfc5f4d3005eb266a1556be8b7b8770629bd ExclusiveArch: aarch64 armv7hl @@ -32,7 +32,7 @@ ExclusiveArch: aarch64 armv7hl %define extra_version 1 %define kversion 5.10 -%define kfullversion %{kversion}.74 +%define kfullversion %{kversion}.78 Name: raspberrypi2 Version: %{kfullversion} @@ -292,6 +292,9 @@ cp $(ls -1 /boot/config-kernel-*-*|sort -V|tail -1) /boot/config-kernel.inc %doc /boot/LICENCE.broadcom %changelog +* Sat Nov 6 2021 Pablo Greco - 5.10.78 +- Update to version v5.10.78 + * Sat Oct 23 2021 Pablo Greco - 5.10.74 - Update to version v5.10.74