summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBertrand Jacquin <bertrand@jacquin.bzh>2019-06-17 23:42:12 +0100
committerBertrand Jacquin <bertrand@jacquin.bzh>2019-06-17 23:42:15 +0100
commit720370197b5e123a395cb456a77fdbdfc10d4e16 (patch)
tree83f090dc6b3a611f062bd6d132077464cd477946
parentsys-kernel/longterm-sources: Bump 4.19 (diff)
downloadetc-portage-patches-720370197b5e123a395cb456a77fdbdfc10d4e16.tar.gz
sys-kernel/stable-sources: Bump 5.0
-rw-r--r--sys-kernel/boest-v5.0.15/0001-patch-4.20-ja1.diff.patch2120
-rw-r--r--sys-kernel/boest-v5.0.15/0003-pool-2.6.25-disable-tcp-debug.diff.patch25
-rw-r--r--sys-kernel/boest-v5.0.15/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch142
-rw-r--r--sys-kernel/boest-v5.0.15/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch45
-rw-r--r--sys-kernel/boest-v5.0.15/0008-fs-Enable-link-security-restrictions-by-default.patch26
-rw-r--r--sys-kernel/boest-v5.0.15/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch37
-rw-r--r--sys-kernel/boest-v5.0.15/raspberrypi/0194-media-m88ds3103-serialize-reset-messages-in-m88ds310.patch99
-rw-r--r--sys-kernel/boest-v5.0.16/0002-pool-2.6.25-tcp-timewait-20s.diff.patch27
-rw-r--r--sys-kernel/boest-v5.0.16/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch34
-rw-r--r--sys-kernel/boest-v5.0.16/0007-This-patch-adds-support-for-a-restricted-user-contro.patch75
-rw-r--r--sys-kernel/boest-v5.0.16/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch125
-rw-r--r--sys-kernel/boest-v5.0.16/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch173
-rw-r--r--sys-kernel/boest-v5.0.16/0012-WARNING-This-patch-works-with-gcc-versions-4.9-and-w.patch565
-rw-r--r--sys-kernel/boest-v5.0.21/0001-patch-4.20-ja1.diff.patch (renamed from sys-kernel/boest-v5.0.16/0001-patch-4.20-ja1.diff.patch)38
-rw-r--r--sys-kernel/boest-v5.0.21/0002-pool-2.6.25-tcp-timewait-20s.diff.patch (renamed from sys-kernel/boest-v5.0.15/0002-pool-2.6.25-tcp-timewait-20s.diff.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0003-pool-2.6.25-disable-tcp-debug.diff.patch (renamed from sys-kernel/boest-v5.0.16/0003-pool-2.6.25-disable-tcp-debug.diff.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch (renamed from sys-kernel/boest-v5.0.16/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch (renamed from sys-kernel/boest-v5.0.15/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch (renamed from sys-kernel/boest-v5.0.16/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0007-This-patch-adds-support-for-a-restricted-user-contro.patch (renamed from sys-kernel/boest-v5.0.15/0007-This-patch-adds-support-for-a-restricted-user-contro.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0008-fs-Enable-link-security-restrictions-by-default.patch (renamed from sys-kernel/boest-v5.0.16/0008-fs-Enable-link-security-restrictions-by-default.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch (renamed from sys-kernel/boest-v5.0.16/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch (renamed from sys-kernel/boest-v5.0.15/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch (renamed from sys-kernel/boest-v5.0.15/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch)2
-rw-r--r--sys-kernel/boest-v5.0.21/0012-WARNING.patch (renamed from sys-kernel/boest-v5.0.15/0012-WARNING.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0002-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0002-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0003-smsx95xx-fix-crimes-against-truesize.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0003-smsx95xx-fix-crimes-against-truesize.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0004-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0004-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0005-Allow-mac-address-to-be-set-in-smsc95xx.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0005-Allow-mac-address-to-be-set-in-smsc95xx.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0006-Protect-__release_resource-against-resources-without.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0006-Protect-__release_resource-against-resources-without.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0007-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0007-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0008-irq-bcm2836-Avoid-Invalid-trigger-warning.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0008-irq-bcm2836-Avoid-Invalid-trigger-warning.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0009-irqchip-bcm2835-Add-FIQ-support.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0009-irqchip-bcm2835-Add-FIQ-support.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0010-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0010-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0011-spi-spidev-Completely-disable-the-spidev-warning.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0011-spi-spidev-Completely-disable-the-spidev-warning.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0012-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0012-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0013-firmware-Updated-mailbox-header.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0013-firmware-Updated-mailbox-header.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0014-rtc-Add-SPI-alias-for-pcf2123-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0014-rtc-Add-SPI-alias-for-pcf2123-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0015-watchdog-bcm2835-Support-setting-reboot-partition.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0015-watchdog-bcm2835-Support-setting-reboot-partition.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0016-reboot-Use-power-off-rather-than-busy-spinning-when-.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0016-reboot-Use-power-off-rather-than-busy-spinning-when-.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0017-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0017-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0018-Register-the-clocks-early-during-the-boot-process-so.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0018-Register-the-clocks-early-during-the-boot-process-so.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0019-bcm2835-rng-Avoid-initialising-if-already-enabled.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0019-bcm2835-rng-Avoid-initialising-if-already-enabled.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0020-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0020-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0021-clk-bcm2835-Add-claim-clocks-property.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0021-clk-bcm2835-Add-claim-clocks-property.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0022-clk-bcm2835-Read-max-core-clock-from-firmware.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0022-clk-bcm2835-Read-max-core-clock-from-firmware.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0023-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0023-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0024-sound-Demote-deferral-errors-to-INFO-level.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0024-sound-Demote-deferral-errors-to-INFO-level.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0025-Update-vfpmodule.c.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0025-Update-vfpmodule.c.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0026-i2c-bcm2835-Add-debug-support.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0026-i2c-bcm2835-Add-debug-support.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0027-mm-Remove-the-PFN-busy-warning.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0027-mm-Remove-the-PFN-busy-warning.patch)8
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0028-ASoC-Add-prompt-for-ICS43432-codec.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0028-ASoC-Add-prompt-for-ICS43432-codec.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0029-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0029-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0031-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0031-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0032-amba_pl011-Round-input-clock-up.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0032-amba_pl011-Round-input-clock-up.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0033-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0033-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0034-amba_pl011-Add-cts-event-workaround-DT-property.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0034-amba_pl011-Add-cts-event-workaround-DT-property.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0035-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0035-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0036-Main-bcm2708-bcm2709-linux-port.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0036-Main-bcm2708-bcm2709-linux-port.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0037-Add-dwc_otg-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0037-Add-dwc_otg-driver.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0038-bcm2708-framebuffer-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0038-bcm2708-framebuffer-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0039-fbdev-add-FBIOCOPYAREA-ioctl.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0039-fbdev-add-FBIOCOPYAREA-ioctl.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0040-Speed-up-console-framebuffer-imageblit-function.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0040-Speed-up-console-framebuffer-imageblit-function.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0041-dmaengine-Add-support-for-BCM2708.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0041-dmaengine-Add-support-for-BCM2708.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0042-MMC-added-alternative-MMC-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0042-MMC-added-alternative-MMC-driver.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0043-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0043-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0044-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0044-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0045-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0045-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0046-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0046-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0047-Add-SMI-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0047-Add-SMI-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0048-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0048-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0049-Add-SMI-NAND-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0049-Add-SMI-NAND-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0050-Revert-Add-SMI-NAND-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0050-Revert-Add-SMI-NAND-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0051-Add-cpufreq-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0051-Add-cpufreq-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0052-Add-Chris-Boot-s-i2c-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0052-Add-Chris-Boot-s-i2c-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0053-char-broadcom-Add-vcio-module.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0053-char-broadcom-Add-vcio-module.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0054-firmware-bcm2835-Support-ARCH_BCM270x.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0054-firmware-bcm2835-Support-ARCH_BCM270x.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0055-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0055-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0056-BCM2708-Add-core-Device-Tree-support.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0056-BCM2708-Add-core-Device-Tree-support.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0057-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0057-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0058-Added-Device-IDs-for-August-DVB-T-205.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0058-Added-Device-IDs-for-August-DVB-T-205.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0059-Improve-__copy_to_user-and-__copy_from_user-performa.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0059-Improve-__copy_to_user-and-__copy_from_user-performa.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0061-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0061-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0062-ASoC-pcm512x-implement-set_tdm_slot-interface.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0062-ASoC-pcm512x-implement-set_tdm_slot-interface.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0063-ASoC-Add-support-for-Rpi-DAC.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0063-ASoC-Add-support-for-Rpi-DAC.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0064-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0064-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0065-Added-support-for-HiFiBerry-DAC.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0065-Added-support-for-HiFiBerry-DAC.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0066-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0066-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0067-Add-driver-for-rpi-proto.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0067-Add-driver-for-rpi-proto.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0068-Add-Support-for-JustBoom-Audio-boards.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0068-Add-Support-for-JustBoom-Audio-boards.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0069-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0069-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0070-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0070-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0071-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0071-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0072-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0072-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0073-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0073-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0074-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0074-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0075-Support-for-Blokas-Labs-pisound-board.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0075-Support-for-Blokas-Labs-pisound-board.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0076-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0076-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0077-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0077-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0078-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0078-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0079-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0079-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0080-Driver-support-for-Google-voiceHAT-soundcard.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0080-Driver-support-for-Google-voiceHAT-soundcard.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0081-Driver-and-overlay-for-Allo-Katana-DAC.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0081-Driver-and-overlay-for-Allo-Katana-DAC.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0082-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0082-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0083-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0083-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0084-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0084-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0085-rpi_display-add-backlight-driver-and-overlay.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0085-rpi_display-add-backlight-driver-and-overlay.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0086-bcm2835-virtgpio-Virtual-GPIO-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0086-bcm2835-virtgpio-Virtual-GPIO-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0087-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0087-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0088-OF-DT-Overlay-configfs-interface.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0088-OF-DT-Overlay-configfs-interface.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0089-brcm-adds-support-for-BCM43341-wifi.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0089-brcm-adds-support-for-BCM43341-wifi.patch)10
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0091-config-Add-default-configs.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0091-config-Add-default-configs.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0092-Add-arm64-configuration-and-device-tree-differences..patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0092-Add-arm64-configuration-and-device-tree-differences..patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0093-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0093-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0094-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0094-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0095-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0095-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0096-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0096-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0097-Revert-build-arm64-Add-rules-for-.dtbo-files-for-dts.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0097-Revert-build-arm64-Add-rules-for-.dtbo-files-for-dts.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0098-cache-export-clean-and-invalidate.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0098-cache-export-clean-and-invalidate.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0099-AXI-performance-monitor-driver-2222.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0099-AXI-performance-monitor-driver-2222.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0100-mcp2515-Use-DT-supplied-interrupt-flags.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0100-mcp2515-Use-DT-supplied-interrupt-flags.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0101-cgroup-Disable-cgroup-memory-by-default.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0101-cgroup-Disable-cgroup-memory-by-default.patch)12
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0102-ARM-bcm2835-Set-Serial-number-and-Revision.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0102-ARM-bcm2835-Set-Serial-number-and-Revision.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0103-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0103-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0104-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0104-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0105-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0105-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0106-raspberrypi-firmware-Export-the-general-transaction-.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0106-raspberrypi-firmware-Export-the-general-transaction-.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0107-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0107-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0108-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0108-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0109-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0109-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0110-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0110-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0111-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0111-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0112-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0112-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0113-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0113-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0114-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0114-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0116-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0116-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0117-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0117-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0118-vc4_firmware_kms-fix-build.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0118-vc4_firmware_kms-fix-build.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0119-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0119-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0120-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0120-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0121-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0121-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0122-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0122-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0123-lan78xx-Read-initial-EEE-status-from-DT.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0123-lan78xx-Read-initial-EEE-status-from-DT.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0124-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0124-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0125-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0125-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0126-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0126-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0127-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0127-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0128-of-configfs-Use-of_overlay_fdt_apply-API-call.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0128-of-configfs-Use-of_overlay_fdt_apply-API-call.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0129-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0129-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0130-brcmfmac-Re-enable-firmware-roaming-support.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0130-brcmfmac-Re-enable-firmware-roaming-support.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0131-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0131-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0132-Add-rpi-poe-fan-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0132-Add-rpi-poe-fan-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0133-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0133-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0134-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0134-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch)14
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0135-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0135-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0136-firmware-raspberrypi-Add-backward-compatible-get_thr.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0136-firmware-raspberrypi-Add-backward-compatible-get_thr.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0137-sc16is7xx-Don-t-spin-if-no-data-received.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0137-sc16is7xx-Don-t-spin-if-no-data-received.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0138-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0138-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0139-drivers-thermal-step_wise-add-support-for-hysteresis.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0139-drivers-thermal-step_wise-add-support-for-hysteresis.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0140-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0140-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0141-Update-issue-templates-2736.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0141-Update-issue-templates-2736.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0142-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0142-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch)10
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0143-lan78xx-disable-interrupts-for-PHY-irqs.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0143-lan78xx-disable-interrupts-for-PHY-irqs.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0144-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0144-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0145-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0145-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0146-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0146-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0147-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0147-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0148-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0148-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0149-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0149-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0150-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0150-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0151-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0151-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0152-arm64-dts-broadcom-Enable-fixups-for-overlays.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0152-arm64-dts-broadcom-Enable-fixups-for-overlays.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0153-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0153-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0154-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0154-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0155-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0155-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0156-spi-spi-bcm2835-Re-enable-HW-CS.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0156-spi-spi-bcm2835-Re-enable-HW-CS.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0157-spi-spi-bcm2835-Disable-forced-software-CS.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0157-spi-spi-bcm2835-Disable-forced-software-CS.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0158-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0158-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0159-mfd-Add-rpi_sense_core-of-compatible-string.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0159-mfd-Add-rpi_sense_core-of-compatible-string.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0160-configs-Enable-the-AD193x-codecs.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0160-configs-Enable-the-AD193x-codecs.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0161-lan78xx-EEE-support-is-now-a-PHY-property.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0161-lan78xx-EEE-support-is-now-a-PHY-property.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0162-Revert-staging-vchiq-delete-vchiq_killable.h.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0162-Revert-staging-vchiq-delete-vchiq_killable.h.patch)8
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0163-Revert-staging-vchiq_2835_arm-quit-using-custom-down.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0163-Revert-staging-vchiq_2835_arm-quit-using-custom-down.patch)8
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0164-Revert-staging-vchiq-switch-to-wait_for_completion_k.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0164-Revert-staging-vchiq-switch-to-wait_for_completion_k.patch)18
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0165-Revert-staging-vchiq-rework-remove_event-handling.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0165-Revert-staging-vchiq-rework-remove_event-handling.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0166-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0166-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0167-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0167-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0168-bcm2835-dma-Add-support-for-per-channel-flags.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0168-bcm2835-dma-Add-support-for-per-channel-flags.patch)6
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0169-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0169-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0170-rtc-rv3028-add-new-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0170-rtc-rv3028-add-new-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0171-rtc-rv3028-Add-backup-switchover-mode-support.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0171-rtc-rv3028-Add-backup-switchover-mode-support.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0172-dt-bindings-rv3028-backup-switchover-support.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0172-dt-bindings-rv3028-backup-switchover-support.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0173-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0173-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0174-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0174-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0175-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0175-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0176-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0176-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0177-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0177-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0178-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0178-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0179-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0179-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0180-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0180-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0181-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0181-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0182-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0182-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0183-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0183-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0184-ASoC-tlv320aic32x4-Remove-mclk-references.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0184-ASoC-tlv320aic32x4-Remove-mclk-references.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0185-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0185-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0186-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0186-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0187-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0187-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0188-ASoC-tlv320aic32x4-Change-author-s-name.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0188-ASoC-tlv320aic32x4-Change-author-s-name.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0189-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0189-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0190-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0190-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0191-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0191-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0192-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0192-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0193-Input-ili210x-add-DT-binding-document.patch (renamed from sys-kernel/boest-v5.0.15/raspberrypi/0193-Input-ili210x-add-DT-binding-document.patch)4
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0194-sound-Fixes-for-audioinjector-octo-under-4.19.patch116
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0195-overlays-Add-PiGlow-overlay.patch153
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0196-configs-enable-LED-driver-for-PiGlow.patch48
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0197-dts-Increase-default-coherent-pool-size.patch29
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0198-configs-Enable-netdev-LED-trigger.patch48
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0199-lan78xx-use-default-alignment-for-rx-buffers.patch25
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0200-staging-mmal-vchiq-Replace-spinlock-protecting-conte.patch69
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0201-BCM270X_DT-Also-set-coherent_pool-1M-for-BT-Pis.patch53
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0202-configs-Enable-ICS-43432-I2S-microphone-module.patch48
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0203-arm-dts-overlays-rpi-sense-add-upstream-humidity-com.patch28
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0204-Added-IQaudIO-Pi-Codec-board-support-2969.patch427
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0205-configs-Enable-PIDs-cgroup.patch28
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0206-w1-ds2408-reset-on-output_write-retry-with-readback.patch142
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0207-w1-ds2482-cosmetic-fixes-after-54865314f5a1.patch93
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0208-sound-pcm512x-codec-Adding-352.8kHz-samplerate-suppo.patch23
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0209-ASoC-decommissioning-driver-for-3Dlab-Nano-soundcard.patch538
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0210-.gitignore-Add-.dtbo-explicitly.patch24
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0211-media-ov5647-Add-set_fmt-and-get_fmt-calls.patch49
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0212-media-Documentation-DT-add-device-tree-for-PWDN-cont.patch35
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0213-media-ov5647-Add-support-for-PWDN-GPIO.patch94
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0214-media-ov5647-Add-support-for-non-continuous-clock-mo.patch81
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0215-media-tc358743-Increase-FIFO-level-to-374.patch33
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0216-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch78
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0217-media-tc358743-Add-support-for-972Mbit-s-link-freq.patch81
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0218-media-tc358743-Check-I2C-succeeded-during-probe.patch100
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0219-media-adv7180-Default-to-the-first-valid-input.patch47
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0220-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch26
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0221-media-videodev2-Add-helper-defines-for-printing-FOUR.patch30
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0222-dt-bindings-Document-BCM283x-CSI2-CCP2-receiver.patch105
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0223-media-bcm2835-unicam-Driver-for-CCP2-CSI2-camera-int.patch2448
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0224-MAINTAINERS-Add-entry-for-BCM2835-Unicam-driver.patch30
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0225-defconfig-Enable-Unicam-driver-and-various-sources-o.patch88
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0226-BCM283x-DT-Add-CSI-nodes-to-the-device-tree.patch224
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0227-BCM270X_DT-Add-CSI-defines-for-all-the-downstream-Pi.patch135
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0228-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch493
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0229-dtoverlays-Add-support-for-ADV7280-M-ADV7281-M-and-A.patch143
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0230-overlays-Remove-superfluous-address-size-cells.patch69
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0231-dtoverlays-Add-i2c-on-0-1-option-to-TC358743-ADV7282.patch150
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0232-media-bcm2835-unicam-Pass-through-the-colorspace-on-.patch32
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0233-media-tc358743-Return-an-appropriate-colorspace-from.patch100
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0234-staging-vchiq_arm-Fix-platform-device-unregistration.patch29
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0235-staging-bcm2835-camera-Do-not-bulk-receive-from-serv.patch199
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0236-staging-bcm2835-camera-Correctly-denote-key-frames-i.patch27
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0237-staging-bcm2835-camera-Return-early-on-errors.patch199
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0238-staging-bcm2835-camera-Remove-dead-email-addresses.patch265
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0239-staging-bcm2835-camera-Fix-comment-style-violations.patch622
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0240-staging-bcm2835-camera-Fix-spacing-around-operators.patch108
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0241-staging-bcm2835-camera-Reduce-length-of-enum-names.patch780
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0242-staging-bcm2835-camera-Fix-multiple-line-dereference.patch135
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0243-staging-bcm2835-camera-Fix-brace-style-issues.patch62
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0244-staging-bcm2835-camera-Fix-missing-lines-between-ite.patch39
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0245-staging-bcm2835-camera-Fix-logical-continuation-spli.patch51
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0246-staging-bcm2835-camera-Fix-open-parenthesis-alignmen.patch145
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0247-staging-bcm2835_camera-Ensure-all-buffers-are-return.patch101
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0248-staging-bcm2835-camera-Remove-check-of-the-number-of.patch41
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0249-staging-bcm2835-camera-Handle-empty-EOS-buffers-whil.patch88
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0250-staging-bcm2835-camera-Set-sequence-number-correctly.patch50
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0251-staging-bcm2835-camera-Ensure-timestamps-never-go-ba.patch40
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0252-staging-bcm2835-camera-Add-multiple-inclusion-protec.patch52
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0253-staging-bcm2835-camera-Unify-header-inclusion-define.patch32
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0254-staging-bcm2835-camera-Fix-multiple-assignments-shou.patch32
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0255-staging-bcm2835-camera-Fix-up-all-formatting-in-mmal.patch338
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0256-staging-bcm2835-camera-Use-enums-for-max-value-in-co.patch114
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0257-staging-bcm2835-camera-Correct-V4L2_CID_COLORFX_CBCR.patch36
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0258-staging-bcm2835-camera-Remove-amend-some-obsolete-co.patch51
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0259-staging-vc04_services-Split-vchiq-mmal-into-a-module.patch298
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0260-staging-mmal-vchiq-Allocate-and-free-components-as-r.patch111
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0261-staging-mmal-vchiq-Avoid-use-of-bool-in-structures.patch97
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0262-staging-mmal-vchiq-Make-timeout-a-defined-parameter.patch40
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0263-staging-mmal-vchiq-Make-a-mmal_buf-struct-for-passin.patch288
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0264-staging-mmal-vchiq-Add-support-for-event-callbacks.patch364
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0265-staging-vc04_services-Support-sending-data-to-MMAL-p.patch44
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0266-staging-vc04_services-Fixup-vchiq-mmal-include-order.patch40
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0267-staging-vc04_services-Add-new-vc-sm-cma-driver.patch1902
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0268-staging-vc04_services-Use-vc-sm-cma-to-support-zero-.patch171
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0269-media-videobuf2-Allow-exporting-of-a-struct-dmabuf.patch87
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0270-staging-vc04_services-Add-a-V4L2-M2M-codec-driver.patch2479
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0271-config-Add-bcm2835-codec-to-Pi-defconfigs.patch37
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0272-staging-bcm2835-camera-Fix-stride-on-RGB3-BGR3-forma.patch55
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0273-char-vcio-Add-compat-ioctl-handling.patch60
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0274-char-vcio-Fail-probe-if-rpi_firmware-is-not-found.patch30
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0275-staging-mmal-vchiq-Fix-client_component-for-64-bit-k.patch72
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0276-staging-bcm2835-camera-Add-sanity-checks-for-queue_s.patch46
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0277-staging-bcm2835-camera-Set-the-field-value-within-ea.patch29
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0278-char-vc_mem-Fix-up-compat-ioctls-for-64bit-kernel.patch115
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0279-char-vc_mem-Fix-all-coding-style-issues.patch432
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0280-clk-clk-bcm2835-Use-zd-when-printing-size_t.patch26
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0281-dtoverlays-Correct-DT-handling-camera-GPIOs.patch91
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0282-media-ov5647-Use-gpiod_set_value_cansleep.patch56
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0283-media-bcm2835-unicam-Power-on-subdev-on-open-release.patch123
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0284-staging-bcm2835-camera-Correct-ctrl-min-max-step-def.patch60
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0285-staging-bcm2835-codec-variable-vb2-may-be-used-unini.patch39
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0286-staging-bcm2835-codec-Fix-potentially-uninitialised-.patch27
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0287-staging-vc-sm-cma-Correct-DMA-configuration.patch46
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0288-staging-vc-sm-cma-Use-a-void-pointer-as-the-handle-w.patch119
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0289-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch203
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0290-staging-mmal_vchiq-Add-in-the-Bayer-encoding-formats.patch53
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0291-staging-mmal-vchiq-Always-return-the-param-size-from.patch40
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0292-staging-mmal-vchiq-If-the-VPU-returns-an-error-don-t.patch31
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0293-staging-bcm2835_codec-Query-supported-formats-from-t.patch729
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0294-staging-bcm2835_codec-Add-support-for-the-ISP-as-an-.patch386
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0295-staging-bcm2835_codec-Add-an-option-for-ignoring-Bay.patch181
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0296-staging-bcm2835_codec-Fix-handling-of-VB2_MEMORY_DMA.patch192
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0297-staging-mmal-vchiq-Update-mmal_parameters.h-with-rec.patch58
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0298-staging-bcm2835_codec-Include-timing-info-in-SPS-hea.patch46
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0299-staging-vc_sm_cma-Remove-erroneous-misc_deregister.patch46
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0300-staging-bcm2835-codec-NULL-component-handle-on-queue.patch61
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0301-staging-vc-sm-cma-Remove-the-debugfs-directory-on-re.patch26
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0302-staging-vc-sm-cma-Use-devm_-allocs-for-sm_state.patch71
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0303-staging-vc-sm-cma-Don-t-fail-if-debugfs-calls-fail.patch39
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0304-staging-vc-sm-cma-Ensure-mutex-and-idr-are-destroyed.patch29
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0305-staging-bcm2835_codec-Clean-up-logging-on-unloading-.patch51
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0306-media-bcm2835-unicam-Add-support-for-enum-framesizes.patch135
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0307-staging-bcm2835-codec-Refactor-default-resolution-co.patch154
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0308-staging-bcm2835-codec-Correct-port-width-calc-for-tr.patch31
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0309-staging-bcm2835-codec-Remove-height-padding-for-ISP-.patch63
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0310-staging-mmal-vchiq-Free-the-event-context-for-contro.patch30
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0311-staging-mmal-vchiq-Fix-memory-leak-in-error-path.patch78
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0312-overlays-Update-upstream-overlay.patch128
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0313-Bluetooth-Check-key-sizes-only-when-Secure-Simple-Pa.patch41
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0314-usb-dwc_otg-Clean-up-interrupt-claiming-code.patch165
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0315-overlays-Delete-the-deprecated-sdio-1bit-overlay.patch94
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0316-overlays-Remove-upstream-aux-interrupt-overlay.patch104
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0317-overlays-Standardise-on-compatible-brcm-bcm2835.patch2059
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0318-vc4-Remove-interrupt-and-DMA-trampling.patch125
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0319-BCM270X_DT-Add-non-removable-clone-of-mmc-node.patch220
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0320-BCM270X_DT-usb-Refactor-DTS-and-overlays.patch66
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0321-w1-ds2408-Fix-typo-after-49695ac46861-reset-on-outpu.patch33
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0322-BCM270X_DT-Rename-Pi-Zero-W-DT-files.patch56
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0323-BCM270X_DT-Create-bcm2708-rpi-zero.dts.patch152
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0324-overlays-Fix-mmc-related-overlays-after-refactor.patch79
-rw-r--r--sys-kernel/boest-v5.0.21/raspberrypi/0325-config-Add-NF_TABLES-support.patch170
l---------sys-kernel/stable-sources-5.0.151
l---------sys-kernel/stable-sources-5.0.161
l---------sys-kernel/stable-sources-5.0.211
353 files changed, 24263 insertions, 3949 deletions
diff --git a/sys-kernel/boest-v5.0.15/0001-patch-4.20-ja1.diff.patch b/sys-kernel/boest-v5.0.15/0001-patch-4.20-ja1.diff.patch
deleted file mode 100644
index 9c7e364e..00000000
--- a/sys-kernel/boest-v5.0.15/0001-patch-4.20-ja1.diff.patch
+++ /dev/null
@@ -1,2120 +0,0 @@
-From d3545ce94cbd47106cd636f36d9168d1b28425d8 Mon Sep 17 00:00:00 2001
-From: Julian Anastasov <ja@ssi.bg>
-Date: Sun, 20 Jan 2019 13:22:45 +0000
-Subject: [PATCH 01/12] patch-4.20-ja1.diff
-
-Jumbo patch containing the following parts:
- - routes-2.X.*.diff (static_routes, alt_routes, nf_reroute but without arp_prefsrc functionality, it is replaced by arprules and rp_filter_mask)
- - hidden-2.X.*.diff (conf/*/hidden)
- - arprules-2.X.*.diff (iparp/arprules support)
- - rp_filter_mask-2.X.*.diff (conf/*/rp_filter_mask)
- - forward_shared-2.X.*.diff (conf/*/forward_shared)
- - send-to-self-2.X.*.diff (conf/*/loop, included March 3, 2004, up to Linux 3.5)
-
-URL: http://ja.ssi.bg/patch-4.20-ja1.diff
----
- Documentation/networking/ip-sysctl.txt | 30 +
- include/linux/inetdevice.h | 3 +
- include/net/flow.h | 2 +
- include/net/ip_fib.h | 5 +-
- include/net/netfilter/nf_nat.h | 5 +
- include/net/route.h | 5 +
- include/uapi/linux/ip.h | 3 +
- include/uapi/linux/rtnetlink.h | 64 +-
- net/bridge/br_netfilter_hooks.c | 3 +
- net/ipv4/arp.c | 695 +++++++++++++++++++-
- net/ipv4/devinet.c | 14 +-
- net/ipv4/fib_frontend.c | 56 +-
- net/ipv4/fib_rules.c | 5 +
- net/ipv4/fib_semantics.c | 257 ++++++--
- net/ipv4/fib_trie.c | 3 +
- net/ipv4/netfilter/iptable_nat.c | 7 +
- net/ipv4/netfilter/nf_nat_masquerade_ipv4.c | 27 +-
- net/ipv4/route.c | 69 +-
- net/netfilter/nf_nat_core.c | 43 ++
- security/selinux/nlmsgtab.c | 5 +-
- 20 files changed, 1173 insertions(+), 128 deletions(-)
-
-diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
-index e2142fe40cda..8b77e97b7d14 100644
---- a/Documentation/networking/ip-sysctl.txt
-+++ b/Documentation/networking/ip-sysctl.txt
-@@ -1077,6 +1077,19 @@ forwarding - BOOLEAN
- Enable IP forwarding on this interface. This controls whether packets
- received _on_ this interface can be forwarded.
-
-+forward_shared - BOOLEAN
-+ Integer value determines if a source validation should allow
-+ forwarding of packets with local source address. 1 means yes,
-+ 0 means no. By default the flag is disabled and such packets
-+ are not forwarded.
-+
-+ If you enable this flag on internal network, the router will forward
-+ packets from internal hosts with shared IP addresses no matter how
-+ the rp_filter is set. This flag is activated only if it is
-+ enabled both in specific device section and in "all" section.
-+
-+ The forward_shared value could be ignored when rp_filter is set to 0.
-+
- mc_forwarding - BOOLEAN
- Do multicast routing. The kernel needs to be compiled with CONFIG_MROUTE
- and a multicast routing daemon is required.
-@@ -1192,6 +1205,15 @@ rp_filter - INTEGER
- Default value is 0. Note that some distributions enable it
- in startup scripts.
-
-+rp_filter_mask - INTEGER
-+ Integer value representing bitmask of the mediums for which the
-+ reverse path protection is disabled. If the source validation
-+ results in reverse path to interface with medium_id value in
-+ the 1..31 range the access is allowed if the corresponding bit
-+ is set in the bitmask. The bitmask value is considered only when
-+ rp_filter is enabled. By default the bitmask is empty preserving
-+ the original rp_filter semantic.
-+
- arp_filter - BOOLEAN
- 1 - Allows you to have multiple network interfaces on the same
- subnet, and have the ARPs for each interface be answered
-@@ -1332,6 +1354,14 @@ drop_gratuitous_arp - BOOLEAN
- Default: off (0)
-
-
-+hidden - BOOLEAN
-+ Hide addresses attached to this device from other devices.
-+ Such addresses will never be selected by source address autoselection
-+ mechanism, host does not answer broadcast ARP requests for them,
-+ does not announce them as source address of ARP requests, but they
-+ are still reachable via IP. This flag is activated only if it is
-+ enabled both in specific device section and in "all" section.
-+
- tag - INTEGER
- Allows you to write a number, which can be used as required.
- Default value is 0.
-diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h
-index a64f21a97369..f2103b9e67de 100644
---- a/include/linux/inetdevice.h
-+++ b/include/linux/inetdevice.h
-@@ -97,9 +97,11 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
- #define IN_DEV_MFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), MC_FORWARDING)
- #define IN_DEV_BFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), BC_FORWARDING)
- #define IN_DEV_RPFILTER(in_dev) IN_DEV_MAXCONF((in_dev), RP_FILTER)
-+#define IN_DEV_RPFILTER_MASK(in_dev) IN_DEV_CONF_GET(in_dev, RP_FILTER_MASK)
- #define IN_DEV_SRC_VMARK(in_dev) IN_DEV_ORCONF((in_dev), SRC_VMARK)
- #define IN_DEV_SOURCE_ROUTE(in_dev) IN_DEV_ANDCONF((in_dev), \
- ACCEPT_SOURCE_ROUTE)
-+#define IN_DEV_FORWARD_SHARED(in_dev) IN_DEV_ANDCONF((in_dev), FORWARD_SHARED)
- #define IN_DEV_ACCEPT_LOCAL(in_dev) IN_DEV_ORCONF((in_dev), ACCEPT_LOCAL)
- #define IN_DEV_BOOTP_RELAY(in_dev) IN_DEV_ANDCONF((in_dev), BOOTP_RELAY)
-
-@@ -112,6 +114,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
- SECURE_REDIRECTS)
- #define IN_DEV_IDTAG(in_dev) IN_DEV_CONF_GET(in_dev, TAG)
- #define IN_DEV_MEDIUM_ID(in_dev) IN_DEV_CONF_GET(in_dev, MEDIUM_ID)
-+#define IN_DEV_HIDDEN(in_dev) IN_DEV_ANDCONF((in_dev), HIDDEN)
- #define IN_DEV_PROMOTE_SECONDARIES(in_dev) \
- IN_DEV_ORCONF((in_dev), \
- PROMOTE_SECONDARIES)
-diff --git a/include/net/flow.h b/include/net/flow.h
-index 93f2c9a0f098..b0516bb8b64a 100644
---- a/include/net/flow.h
-+++ b/include/net/flow.h
-@@ -91,6 +91,7 @@ struct flowi4 {
- #define fl4_ipsec_spi uli.spi
- #define fl4_mh_type uli.mht.type
- #define fl4_gre_key uli.gre_key
-+ __be32 fl4_gw;
- } __attribute__((__aligned__(BITS_PER_LONG/8)));
-
- static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
-@@ -114,6 +115,7 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
- fl4->saddr = saddr;
- fl4->fl4_dport = dport;
- fl4->fl4_sport = sport;
-+ fl4->fl4_gw = 0;
- }
-
- /* Reset some input parameters after previous lookup */
-diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
-index 9c8214d2116d..a1b2aa38264b 100644
---- a/include/net/ip_fib.h
-+++ b/include/net/ip_fib.h
-@@ -378,6 +378,8 @@ static inline bool fib4_rules_early_flow_dissect(struct net *net,
- return true;
- }
-
-+u32 fib_result_table(struct fib_result *res);
-+
- #endif /* CONFIG_IP_MULTIPLE_TABLES */
-
- /* Exported by fib_frontend.c */
-@@ -387,7 +389,8 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb);
- bool fib_info_nh_uses_dev(struct fib_info *fi, const struct net_device *dev);
- int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- u8 tos, int oif, struct net_device *dev,
-- struct in_device *idev, u32 *itag);
-+ struct in_device *idev, u32 *itag, int our);
-+void fib_select_default(const struct flowi4 *flp, struct fib_result *res);
- #ifdef CONFIG_IP_ROUTE_CLASSID
- static inline int fib_num_tclassid_users(struct net *net)
- {
-diff --git a/include/net/netfilter/nf_nat.h b/include/net/netfilter/nf_nat.h
-index a17eb2f8d40e..749d505486d3 100644
---- a/include/net/netfilter/nf_nat.h
-+++ b/include/net/netfilter/nf_nat.h
-@@ -37,6 +37,11 @@ struct nf_conn_nat {
- #endif
- };
-
-+/* Call input routing for SNAT-ed traffic */
-+unsigned int ip_nat_route_input(void *priv,
-+ struct sk_buff *skb,
-+ const struct nf_hook_state *state);
-+
- /* Set up the info structure to map into this range. */
- unsigned int nf_nat_setup_info(struct nf_conn *ct,
- const struct nf_nat_range2 *range,
-diff --git a/include/net/route.h b/include/net/route.h
-index 9883dc82f723..a617bc7e0d8f 100644
---- a/include/net/route.h
-+++ b/include/net/route.h
-@@ -182,6 +182,9 @@ int ip_route_input_noref(struct sk_buff *skb, __be32 dst, __be32 src,
- int ip_route_input_rcu(struct sk_buff *skb, __be32 dst, __be32 src,
- u8 tos, struct net_device *devin,
- struct fib_result *res);
-+int ip_route_input_common_rcu(struct sk_buff *skb, __be32 dst, __be32 src,
-+ u8 tos, struct net_device *devin, __be32 lsrc,
-+ struct fib_result *res);
-
- static inline int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src,
- u8 tos, struct net_device *devin)
-@@ -217,6 +220,8 @@ unsigned int inet_addr_type_dev_table(struct net *net,
- void ip_rt_multicast_event(struct in_device *);
- int ip_rt_ioctl(struct net *, unsigned int cmd, struct rtentry *rt);
- void ip_rt_get_source(u8 *src, struct sk_buff *skb, struct rtable *rt);
-+int ip_route_input_lookup(struct sk_buff*, __be32 dst, __be32 src, u8 tos,
-+ struct net_device *devin, __be32 lsrc);
- struct rtable *rt_dst_alloc(struct net_device *dev,
- unsigned int flags, u16 type,
- bool nopolicy, bool noxfrm, bool will_cache);
-diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
-index e42d13b55cf3..d03711046f2e 100644
---- a/include/uapi/linux/ip.h
-+++ b/include/uapi/linux/ip.h
-@@ -169,6 +169,9 @@ enum
- IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
- IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
- IPV4_DEVCONF_BC_FORWARDING,
-+ IPV4_DEVCONF_HIDDEN,
-+ IPV4_DEVCONF_RP_FILTER_MASK,
-+ IPV4_DEVCONF_FORWARD_SHARED,
- __IPV4_DEVCONF_MAX
- };
-
-diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
-index 46399367627f..92593fd1a055 100644
---- a/include/uapi/linux/rtnetlink.h
-+++ b/include/uapi/linux/rtnetlink.h
-@@ -157,6 +157,13 @@ enum {
- RTM_GETCHAIN,
- #define RTM_GETCHAIN RTM_GETCHAIN
-
-+ RTM_NEWARPRULE = 104,
-+#define RTM_NEWARPRULE RTM_NEWARPRULE
-+ RTM_DELARPRULE,
-+#define RTM_DELARPRULE RTM_DELARPRULE
-+ RTM_GETARPRULE,
-+#define RTM_GETARPRULE RTM_GETARPRULE
-+
- __RTM_MAX,
- #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
- };
-@@ -374,8 +381,11 @@ struct rtnexthop {
- #define RTNH_F_OFFLOAD 8 /* offloaded route */
- #define RTNH_F_LINKDOWN 16 /* carrier-down on nexthop */
- #define RTNH_F_UNRESOLVED 32 /* The entry is unresolved (ipmr) */
-+#define RTNH_F_SUSPECT 64 /* We don't know the real state */
-+#define RTNH_F_BADSTATE (RTNH_F_DEAD | RTNH_F_SUSPECT)
-
--#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
-+#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | \
-+ RTNH_F_OFFLOAD | RTNH_F_SUSPECT)
-
- /* Macros to handle hexthops */
-
-@@ -617,6 +627,54 @@ enum {
-
- #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
-
-+/******************************************************************************
-+ * Definitions used in ARP tables administration
-+ ****/
-+
-+#define ARPA_TABLE_INPUT 0
-+#define ARPA_TABLE_OUTPUT 1
-+#define ARPA_TABLE_FORWARD 2
-+#define ARPA_TABLE_ALL -1
-+
-+#define ARPM_F_PREFSRC 0x0001
-+#define ARPM_F_WILDIIF 0x0002
-+#define ARPM_F_WILDOIF 0x0004
-+#define ARPM_F_BROADCAST 0x0008
-+#define ARPM_F_UNICAST 0x0010
-+
-+struct arpmsg
-+{
-+ unsigned char arpm_family;
-+ unsigned char arpm_table;
-+ unsigned char arpm_action;
-+ unsigned char arpm_from_len;
-+ unsigned char arpm_to_len;
-+ unsigned char arpm__pad1;
-+ unsigned short arpm__pad2;
-+ unsigned arpm_pref;
-+ unsigned arpm_flags;
-+};
-+
-+enum
-+{
-+ ARPA_UNSPEC,
-+ ARPA_FROM, /* FROM IP prefix */
-+ ARPA_TO, /* TO IP prefix */
-+ ARPA_LLFROM, /* FROM LL prefix */
-+ ARPA_LLTO, /* TO LL prefix */
-+ ARPA_LLSRC, /* New SRC lladdr */
-+ ARPA_LLDST, /* New DST lladdr */
-+ ARPA_IIF, /* In interface prefix */
-+ ARPA_OIF, /* Out interface prefix */
-+ ARPA_SRC, /* New IP SRC */
-+ ARPA_DST, /* New IP DST, not used */
-+ ARPA_PACKETS, /* Packets */
-+};
-+
-+#define ARPA_MAX ARPA_PACKETS
-+
-+#define ARPA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct arpmsg))))
-+
- #ifndef __KERNEL__
- /* RTnetlink multicast groups - backwards compatibility for userspace */
- #define RTMGRP_LINK 1
-@@ -637,6 +695,8 @@ enum {
- #define RTMGRP_DECnet_IFADDR 0x1000
- #define RTMGRP_DECnet_ROUTE 0x4000
-
-+#define RTMGRP_ARP 0x00010000
-+
- #define RTMGRP_IPV6_PREFIX 0x20000
- #endif
-
-@@ -704,6 +764,8 @@ enum rtnetlink_groups {
- #define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
- RTNLGRP_IPV6_MROUTE_R,
- #define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
-+ RTNLGRP_ARP,
-+#define RTNLGRP_ARP RTNLGRP_ARP
- __RTNLGRP_MAX
- };
- #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
-diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c
-index fc605758323b..5f2ba880d0ed 100644
---- a/net/bridge/br_netfilter_hooks.c
-+++ b/net/bridge/br_netfilter_hooks.c
-@@ -347,6 +347,9 @@ static int br_nf_pre_routing_finish(struct net *net, struct sock *sk, struct sk_
-
- nf_bridge->frag_max_size = IPCB(skb)->frag_max_size;
-
-+ /* Old skb->dst is not expected, it is lost in all cases */
-+ skb_dst_drop(skb);
-+
- if (nf_bridge->pkt_otherhost) {
- skb->pkt_type = PACKET_OTHERHOST;
- nf_bridge->pkt_otherhost = false;
-diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
-index 850a6f13a082..d92ae82268de 100644
---- a/net/ipv4/arp.c
-+++ b/net/ipv4/arp.c
-@@ -71,6 +71,9 @@
- * sending (e.g. insert 8021q tag).
- * Harald Welte : convert to make use of jenkins hash
- * Jesper D. Brouer: Proxy ARP PVLAN RFC 3069 support.
-+ * Julian Anastasov: "hidden" flag: hide the
-+ * interface and don't reply for it
-+ * Julian Anastasov: ARP filtering via netlink
- */
-
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-@@ -95,6 +98,7 @@
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
- #include <linux/stat.h>
-+#include <net/netlink.h>
- #include <linux/init.h>
- #include <linux/net.h>
- #include <linux/rcupdate.h>
-@@ -185,6 +189,48 @@ struct neigh_table arp_tbl = {
- };
- EXPORT_SYMBOL(arp_tbl);
-
-+struct arpf_node {
-+ struct arpf_node * at_next;
-+ u32 at_pref;
-+ u32 at_from;
-+ u32 at_from_mask;
-+ u32 at_to;
-+ u32 at_to_mask;
-+ u32 at_src;
-+ atomic_t at_packets;
-+ atomic_t at_refcnt;
-+ unsigned at_flags;
-+ unsigned char at_from_len;
-+ unsigned char at_to_len;
-+ unsigned char at_action;
-+ char at_dead;
-+ unsigned char at_llfrom_len;
-+ unsigned char at_llto_len;
-+ unsigned char at_llsrc_len;
-+ unsigned char at_lldst_len;
-+ unsigned char at_iif_len;
-+ unsigned char at_oif_len;
-+ unsigned short at__pad1;
-+ unsigned char at_llfrom[MAX_ADDR_LEN];
-+ unsigned char at_llto[MAX_ADDR_LEN];
-+ unsigned char at_llsrc[MAX_ADDR_LEN];
-+ unsigned char at_lldst[MAX_ADDR_LEN];
-+ char at_iif[IFNAMSIZ];
-+ char at_oif[IFNAMSIZ];
-+};
-+
-+static struct arpf_node *arp_tabs[3];
-+
-+static struct kmem_cache *arpf_cachep;
-+
-+static DEFINE_RWLOCK(arpf_lock);
-+
-+static void
-+arpf_send(int table, struct net *net, struct sk_buff *skb, u32 sip, u32 tip,
-+ unsigned char *from_hw, unsigned char *to_hw,
-+ struct net_device *idev, struct net_device *odev,
-+ struct dst_entry *dst);
-+
- int arp_mc_map(__be32 addr, u8 *haddr, struct net_device *dev, int dir)
- {
- switch (dev->type) {
-@@ -338,7 +384,9 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- struct net_device *dev = neigh->dev;
- __be32 target = *(__be32 *)neigh->primary_key;
- int probes = atomic_read(&neigh->probes);
-- struct in_device *in_dev;
-+ struct in_device *in_dev, *in_dev2;
-+ struct net_device *dev2;
-+ int mode;
- struct dst_entry *dst = NULL;
-
- rcu_read_lock();
-@@ -347,9 +395,22 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- rcu_read_unlock();
- return;
- }
-- switch (IN_DEV_ARP_ANNOUNCE(in_dev)) {
-+ mode = IN_DEV_ARP_ANNOUNCE(in_dev);
-+ if (mode != 2 && skb &&
-+ (dev2 = __ip_dev_find(dev_net(dev), ip_hdr(skb)->saddr,
-+ false)) != NULL &&
-+ (saddr = ip_hdr(skb)->saddr,
-+ in_dev2 = __in_dev_get_rcu(dev2)) != NULL &&
-+ IN_DEV_HIDDEN(in_dev2)) {
-+ saddr = 0;
-+ goto get;
-+ }
-+
-+ switch (mode) {
- default:
- case 0: /* By default announce any local IP */
-+ if (saddr)
-+ break;
- if (skb && inet_addr_type_dev_table(dev_net(dev), dev,
- ip_hdr(skb)->saddr) == RTN_LOCAL)
- saddr = ip_hdr(skb)->saddr;
-@@ -357,9 +418,10 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- case 1: /* Restrict announcements of saddr in same subnet */
- if (!skb)
- break;
-- saddr = ip_hdr(skb)->saddr;
-- if (inet_addr_type_dev_table(dev_net(dev), dev,
-- saddr) == RTN_LOCAL) {
-+ if (saddr ||
-+ (saddr = ip_hdr(skb)->saddr,
-+ inet_addr_type_dev_table(dev_net(dev), dev,
-+ saddr) == RTN_LOCAL)) {
- /* saddr should be known to target */
- if (inet_addr_onlink(in_dev, target, saddr))
- break;
-@@ -369,6 +431,8 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- case 2: /* Avoid secondary IPs, get a primary/preferred one */
- break;
- }
-+
-+get:
- rcu_read_unlock();
-
- if (!saddr)
-@@ -390,8 +454,8 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
-
- if (skb && !(dev->priv_flags & IFF_XMIT_DST_RELEASE))
- dst = skb_dst(skb);
-- arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, target, dev, saddr,
-- dst_hw, dev->dev_addr, NULL, dst);
-+ arpf_send(ARPA_TABLE_OUTPUT, dev_net(dev), skb, saddr, target, NULL,
-+ dst_hw, NULL, dev, dst);
- }
-
- static int arp_ignore(struct in_device *in_dev, __be32 sip, __be32 tip)
-@@ -448,6 +512,21 @@ static int arp_filter(__be32 sip, __be32 tip, struct net_device *dev)
- return flag;
- }
-
-+static int arp_hidden(u32 tip, struct net_device *dev)
-+{
-+ struct net_device *dev2;
-+ struct in_device *in_dev2;
-+ int ret = 0;
-+
-+ if (!IPV4_DEVCONF_ALL(dev_net(dev), HIDDEN))
-+ return 0;
-+
-+ if ((dev2 = __ip_dev_find(dev_net(dev), tip, false)) && dev2 != dev &&
-+ (in_dev2 = __in_dev_get_rcu(dev2)) && IN_DEV_HIDDEN(in_dev2))
-+ ret = 1;
-+ return ret;
-+}
-+
- /*
- * Check if we can use proxy ARP for this path
- */
-@@ -808,9 +887,10 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
- if (sip == 0) {
- if (arp->ar_op == htons(ARPOP_REQUEST) &&
- inet_addr_type_dev_table(net, dev, tip) == RTN_LOCAL &&
-+ !arp_hidden(tip, dev) &&
- !arp_ignore(in_dev, sip, tip))
-- arp_send_dst(ARPOP_REPLY, ETH_P_ARP, sip, dev, tip,
-- sha, dev->dev_addr, sha, reply_dst);
-+ arpf_send(ARPA_TABLE_INPUT, net, skb, sip, tip, sha,
-+ tha, dev, NULL, reply_dst);
- goto out_consume_skb;
- }
-
-@@ -826,13 +906,14 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
- dont_send = arp_ignore(in_dev, sip, tip);
- if (!dont_send && IN_DEV_ARPFILTER(in_dev))
- dont_send = arp_filter(sip, tip, dev);
-+ if (!dont_send && skb->pkt_type != PACKET_HOST)
-+ dont_send = arp_hidden(tip,dev);
- if (!dont_send) {
- n = neigh_event_ns(&arp_tbl, sha, &sip, dev);
- if (n) {
-- arp_send_dst(ARPOP_REPLY, ETH_P_ARP,
-- sip, dev, tip, sha,
-- dev->dev_addr, sha,
-- reply_dst);
-+ arpf_send(ARPA_TABLE_INPUT, net, skb,
-+ sip, tip, sha, tha, dev,
-+ NULL, reply_dst);
- neigh_release(n);
- }
- }
-@@ -850,10 +931,9 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
- if (NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED ||
- skb->pkt_type == PACKET_HOST ||
- NEIGH_VAR(in_dev->arp_parms, PROXY_DELAY) == 0) {
-- arp_send_dst(ARPOP_REPLY, ETH_P_ARP,
-- sip, dev, tip, sha,
-- dev->dev_addr, sha,
-- reply_dst);
-+ arpf_send(ARPA_TABLE_FORWARD, net,
-+ skb, sip, tip, sha, tha, dev,
-+ rt->dst.dev, reply_dst);
- } else {
- pneigh_enqueue(&arp_tbl,
- in_dev->arp_parms, skb);
-@@ -1279,6 +1359,577 @@ void arp_ifdown(struct net_device *dev)
- }
-
-
-+static void arpf_destroy(struct arpf_node *afp)
-+{
-+ if (!afp->at_dead) {
-+ printk(KERN_ERR "Destroying alive arp table node %p from %08lx\n", afp,
-+ *(((unsigned long*)&afp)-1));
-+ return;
-+ }
-+ kmem_cache_free(arpf_cachep, afp);
-+}
-+
-+static inline void arpf_put(struct arpf_node *afp)
-+{
-+ if (atomic_dec_and_test(&afp->at_refcnt))
-+ arpf_destroy(afp);
-+}
-+
-+static inline struct arpf_node *
-+arpf_lookup(int table, struct sk_buff *skb, u32 sip, u32 tip,
-+ unsigned char *from_hw, unsigned char *to_hw,
-+ struct net_device *idev, struct net_device *odev)
-+{
-+ int sz_iif = idev? strlen(idev->name) : 0;
-+ int sz_oif = odev? strlen(odev->name) : 0;
-+ int alen;
-+ struct arpf_node *afp;
-+
-+ if (ARPA_TABLE_OUTPUT != table) {
-+ alen = idev->addr_len;
-+ } else {
-+ if (!from_hw) from_hw = odev->dev_addr;
-+ if (!to_hw) to_hw = odev->broadcast;
-+ alen = odev->addr_len;
-+ }
-+
-+ read_lock_bh(&arpf_lock);
-+ for (afp = arp_tabs[table]; afp; afp = afp->at_next) {
-+ if ((tip ^ afp->at_to) & afp->at_to_mask)
-+ continue;
-+ if ((sip ^ afp->at_from) & afp->at_from_mask)
-+ continue;
-+ if (afp->at_llfrom_len &&
-+ (afp->at_llfrom_len > alen ||
-+ memcmp(from_hw, afp->at_llfrom, afp->at_llfrom_len)))
-+ continue;
-+ if (afp->at_llto_len &&
-+ (afp->at_llto_len > alen ||
-+ memcmp(to_hw, afp->at_llto, afp->at_llto_len)))
-+ continue;
-+ if (afp->at_iif_len &&
-+ (afp->at_iif_len > sz_iif ||
-+ memcmp(afp->at_iif, idev->name, afp->at_iif_len) ||
-+ (sz_iif != afp->at_iif_len &&
-+ !(afp->at_flags & ARPM_F_WILDIIF))))
-+ continue;
-+ if (afp->at_oif_len &&
-+ (afp->at_oif_len > sz_oif ||
-+ memcmp(afp->at_oif, odev->name, afp->at_oif_len) ||
-+ (sz_oif != afp->at_oif_len &&
-+ !(afp->at_flags & ARPM_F_WILDOIF))))
-+ continue;
-+ if (afp->at_flags & ARPM_F_BROADCAST &&
-+ skb->pkt_type == PACKET_HOST)
-+ continue;
-+ if (afp->at_flags & ARPM_F_UNICAST &&
-+ skb->pkt_type != PACKET_HOST)
-+ continue;
-+ if (afp->at_llsrc_len && afp->at_llsrc_len != alen)
-+ continue;
-+ if (afp->at_lldst_len && afp->at_lldst_len != alen)
-+ continue;
-+ atomic_inc(&afp->at_refcnt);
-+ atomic_inc(&afp->at_packets);
-+ break;
-+ }
-+ read_unlock_bh(&arpf_lock);
-+ return afp;
-+}
-+
-+static void
-+arpf_send(int table, struct net *net, struct sk_buff *skb, u32 sip, u32 tip,
-+ unsigned char *from_hw, unsigned char *to_hw,
-+ struct net_device *idev, struct net_device *odev,
-+ struct dst_entry *dst)
-+{
-+ struct arpf_node *afp = NULL;
-+
-+ if (!arp_tabs[table] ||
-+ !net_eq(net, &init_net) ||
-+ !(afp = arpf_lookup(table, skb, sip, tip,
-+ from_hw, to_hw, idev, odev))) {
-+ switch (table) {
-+ case ARPA_TABLE_INPUT:
-+ case ARPA_TABLE_FORWARD:
-+ arp_send_dst(ARPOP_REPLY, ETH_P_ARP, sip, idev, tip,
-+ from_hw, idev->dev_addr, from_hw, dst);
-+ break;
-+ case ARPA_TABLE_OUTPUT:
-+ arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, tip, odev, sip,
-+ to_hw, odev->dev_addr, NULL, dst);
-+ break;
-+ }
-+ return;
-+ }
-+
-+ /* deny? */
-+ if (!afp->at_action) goto out;
-+
-+ switch (table) {
-+ case ARPA_TABLE_INPUT:
-+ case ARPA_TABLE_FORWARD:
-+ arp_send_dst(ARPOP_REPLY, ETH_P_ARP, sip, idev, tip,
-+ afp->at_lldst_len?afp->at_lldst:from_hw,
-+ afp->at_llsrc_len?afp->at_llsrc:idev->dev_addr,
-+ afp->at_lldst_len?afp->at_lldst:from_hw, dst);
-+ break;
-+ case ARPA_TABLE_OUTPUT:
-+ if (afp->at_flags & ARPM_F_PREFSRC && afp->at_src == 0) {
-+ struct rtable *rt;
-+ struct flowi4 fl4 = { .daddr = tip,
-+ .flowi4_oif = odev->ifindex };
-+
-+ rt = ip_route_output_key(net, &fl4);
-+ if (IS_ERR(rt))
-+ break;
-+ sip = fl4.saddr;
-+ ip_rt_put(rt);
-+ if (!sip)
-+ break;
-+ }
-+ arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, tip, odev,
-+ afp->at_src?:sip,
-+ afp->at_lldst_len?afp->at_lldst:to_hw,
-+ afp->at_llsrc_len?afp->at_llsrc:odev->dev_addr,
-+ NULL, dst);
-+ break;
-+ }
-+
-+out:
-+ arpf_put(afp);
-+}
-+
-+static int
-+arpf_fill_node(struct sk_buff *skb, u32 portid, u32 seq, unsigned flags,
-+ int event, int table, struct arpf_node *afp)
-+{
-+ struct arpmsg *am;
-+ struct nlmsghdr *nlh;
-+ u32 packets = atomic_read(&afp->at_packets);
-+
-+ nlh = nlmsg_put(skb, portid, seq, event, sizeof(*am), 0);
-+ if (nlh == NULL)
-+ return -ENOBUFS;
-+ nlh->nlmsg_flags = flags;
-+ am = nlmsg_data(nlh);
-+ am->arpm_family = AF_UNSPEC;
-+ am->arpm_table = table;
-+ am->arpm_action = afp->at_action;
-+ am->arpm_from_len = afp->at_from_len;
-+ am->arpm_to_len = afp->at_to_len;
-+ am->arpm_pref = afp->at_pref;
-+ am->arpm_flags = afp->at_flags;
-+ if (afp->at_from_len &&
-+ nla_put(skb, ARPA_FROM, 4, &afp->at_from))
-+ goto nla_put_failure;
-+ if (afp->at_to_len &&
-+ nla_put(skb, ARPA_TO, 4, &afp->at_to))
-+ goto nla_put_failure;
-+ if ((afp->at_src || afp->at_flags & ARPM_F_PREFSRC) &&
-+ nla_put(skb, ARPA_SRC, 4, &afp->at_src))
-+ goto nla_put_failure;
-+ if (afp->at_iif[0] &&
-+ nla_put(skb, ARPA_IIF, sizeof(afp->at_iif), afp->at_iif))
-+ goto nla_put_failure;
-+ if (afp->at_oif[0] &&
-+ nla_put(skb, ARPA_OIF, sizeof(afp->at_oif), afp->at_oif))
-+ goto nla_put_failure;
-+ if (afp->at_llfrom_len &&
-+ nla_put(skb, ARPA_LLFROM, afp->at_llfrom_len, afp->at_llfrom))
-+ goto nla_put_failure;
-+ if (afp->at_llto_len &&
-+ nla_put(skb, ARPA_LLTO, afp->at_llto_len, afp->at_llto))
-+ goto nla_put_failure;
-+ if (afp->at_llsrc_len &&
-+ nla_put(skb, ARPA_LLSRC, afp->at_llsrc_len, afp->at_llsrc))
-+ goto nla_put_failure;
-+ if (afp->at_lldst_len &&
-+ nla_put(skb, ARPA_LLDST, afp->at_lldst_len, afp->at_lldst))
-+ goto nla_put_failure;
-+ if (nla_put(skb, ARPA_PACKETS, 4, &packets))
-+ goto nla_put_failure;
-+ nlmsg_end(skb, nlh);
-+ return 0;
-+
-+nla_put_failure:
-+ nlmsg_cancel(skb, nlh);
-+ return -EMSGSIZE;
-+}
-+
-+static void
-+arpmsg_notify(struct sk_buff *oskb, struct nlmsghdr *nlh, int table,
-+ struct arpf_node *afp, int event)
-+{
-+ struct sk_buff *skb;
-+ u32 portid = oskb ? NETLINK_CB(oskb).portid : 0;
-+ int payload = sizeof(struct arpmsg) + 256;
-+ int err = -ENOBUFS;
-+
-+ skb = nlmsg_new(nlmsg_total_size(payload), GFP_KERNEL);
-+ if (!skb)
-+ goto errout;
-+
-+ err = arpf_fill_node(skb, portid, nlh->nlmsg_seq, 0, event, table, afp);
-+ if (err < 0) {
-+ kfree_skb(skb);
-+ goto errout;
-+ }
-+
-+ rtnl_notify(skb, &init_net, portid, RTNLGRP_ARP, nlh, GFP_KERNEL);
-+ return;
-+errout:
-+ if (err < 0)
-+ rtnl_set_sk_err(&init_net, RTNLGRP_ARP, err);
-+}
-+
-+static inline int
-+arpf_str_size(int a, struct nlattr **rta, int maxlen)
-+{
-+ int size = 0;
-+
-+ if (rta[a] && (size = nla_len(rta[a]))) {
-+ if (size > maxlen)
-+ size = maxlen;
-+ }
-+ return size;
-+}
-+
-+static inline int
-+arpf_get_str(int a, struct nlattr **rta, unsigned char *p,
-+ int maxlen, unsigned char *l)
-+{
-+ int size = arpf_str_size(a, rta, maxlen);
-+
-+ if (size) {
-+ memcpy(p, nla_data(rta[a]), size);
-+ *l = size;
-+ }
-+ return size;
-+}
-+
-+#define ARPF_MATCH_U32(ind, field) ( \
-+ (!rta[ind] && r->at_ ## field == 0) || \
-+ (rta[ind] && \
-+ *(u32*) nla_data(rta[ind]) == r->at_ ## field))
-+
-+#define ARPF_MATCH_STR(ind, field) ( \
-+ (!rta[ind] && r->at_ ## field ## _len == 0) || \
-+ (rta[ind] && r->at_ ## field ## _len && \
-+ r->at_ ## field ## _len < nla_len(rta[ind]) && \
-+ strcmp(nla_data(rta[ind]), r->at_ ## field) == 0))
-+
-+#define ARPF_MATCH_DATA(ind, field) ( \
-+ (!rta[ind] && r->at_ ## field ## _len == 0) || \
-+ (rta[ind] && r->at_ ## field ## _len && \
-+ r->at_ ## field ## _len == nla_len(rta[ind]) && \
-+ memcmp(nla_data(rta[ind]), &r->at_ ## field, \
-+ r->at_ ## field ## _len) == 0))
-+
-+/* RTM_NEWARPRULE/RTM_DELARPRULE/RTM_GETARPRULE */
-+
-+int arpf_rule_ctl(struct sk_buff *skb, struct nlmsghdr *n,
-+ struct netlink_ext_ack *extack)
-+{
-+ struct net *net = sock_net(skb->sk);
-+ struct nlattr *rta[ARPA_MAX + 1];
-+ struct arpmsg *am;
-+ struct arpf_node *r, **rp, **prevp = 0, **delp = 0, *newp = 0;
-+ unsigned pref = 1;
-+ int size, ret;
-+
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ if (!net_eq(net, &init_net))
-+ return -EINVAL;
-+
-+ ret = nlmsg_parse(n, sizeof(struct arpmsg), rta, ARPA_MAX, NULL,
-+ extack);
-+ if (ret < 0)
-+ return ret;
-+
-+ am = nlmsg_data(n);
-+ ret = -EINVAL;
-+ if (am->arpm_table >= sizeof(arp_tabs)/sizeof(arp_tabs[0]))
-+ goto out;
-+ if (!((~am->arpm_flags) & (ARPM_F_BROADCAST|ARPM_F_UNICAST)))
-+ goto out;
-+ if (am->arpm_action > 1)
-+ goto out;
-+ if (am->arpm_to_len > 32 || am->arpm_from_len > 32)
-+ goto out;
-+ if (am->arpm_flags & ARPM_F_WILDIIF &&
-+ (!rta[ARPA_IIF] || !nla_len(rta[ARPA_IIF]) ||
-+ !*(char*) nla_data(rta[ARPA_IIF])))
-+ am->arpm_flags &= ~ARPM_F_WILDIIF;
-+ if (am->arpm_flags & ARPM_F_WILDOIF &&
-+ (!rta[ARPA_OIF] || !nla_len(rta[ARPA_OIF]) ||
-+ !*(char*) nla_data(rta[ARPA_OIF])))
-+ am->arpm_flags &= ~ARPM_F_WILDOIF;
-+ switch (am->arpm_table) {
-+ case ARPA_TABLE_INPUT:
-+ if (rta[ARPA_SRC] || rta[ARPA_OIF])
-+ goto out;
-+ break;
-+ case ARPA_TABLE_OUTPUT:
-+ if (rta[ARPA_IIF])
-+ goto out;
-+ if (am->arpm_flags & (ARPM_F_BROADCAST|ARPM_F_UNICAST))
-+ goto out;
-+ break;
-+ case ARPA_TABLE_FORWARD:
-+ if (rta[ARPA_SRC])
-+ goto out;
-+ break;
-+ }
-+ if (rta[ARPA_SRC] && !*(u32*) nla_data(rta[ARPA_SRC]))
-+ am->arpm_flags |= ARPM_F_PREFSRC;
-+ else
-+ am->arpm_flags &= ~ARPM_F_PREFSRC;
-+
-+ for (rp = &arp_tabs[am->arpm_table]; (r=*rp) != NULL; rp=&r->at_next) {
-+ if (pref < r->at_pref)
-+ prevp = rp;
-+ if (am->arpm_pref == r->at_pref ||
-+ (!am->arpm_pref &&
-+ am->arpm_to_len == r->at_to_len &&
-+ am->arpm_from_len == r->at_from_len &&
-+ !((am->arpm_flags ^ r->at_flags) &
-+ (ARPM_F_BROADCAST | ARPM_F_UNICAST |
-+ ARPM_F_WILDIIF | ARPM_F_WILDOIF)) &&
-+ ARPF_MATCH_U32(ARPA_TO, to) &&
-+ ARPF_MATCH_U32(ARPA_FROM, from) &&
-+ ARPF_MATCH_DATA(ARPA_LLFROM, llfrom) &&
-+ ARPF_MATCH_DATA(ARPA_LLTO, llto) &&
-+ ARPF_MATCH_STR(ARPA_IIF, iif) &&
-+ ARPF_MATCH_STR(ARPA_OIF, oif) &&
-+ (n->nlmsg_type != RTM_DELARPRULE ||
-+ /* DEL matches more keys */
-+ (am->arpm_flags == r->at_flags &&
-+ am->arpm_action == r->at_action &&
-+ ARPF_MATCH_U32(ARPA_SRC, src) &&
-+ ARPF_MATCH_DATA(ARPA_LLSRC, llsrc) &&
-+ ARPF_MATCH_DATA(ARPA_LLDST, lldst)
-+ )
-+ )
-+ )
-+ )
-+ break;
-+ if (am->arpm_pref && r->at_pref > am->arpm_pref) {
-+ r = NULL;
-+ break;
-+ }
-+ pref = r->at_pref+1;
-+ }
-+
-+ /*
-+ * r=NULL: *rp != NULL (stopped before next pref), pref: not valid
-+ * *rp == NULL (not found), pref: ready to use
-+ * r!=NULL: found, pref: not valid
-+ *
-+ * prevp=NULL: no free slot
-+ * prevp!=NULL: free slot for rule
-+ */
-+
-+ if (n->nlmsg_type == RTM_DELARPRULE) {
-+ if (!r)
-+ return -ESRCH;
-+ delp = rp;
-+ goto dequeue;
-+ }
-+
-+ if (r) {
-+ /* Existing rule */
-+ ret = -EEXIST;
-+ if (n->nlmsg_flags&NLM_F_EXCL)
-+ goto out;
-+
-+ if (n->nlmsg_flags&NLM_F_REPLACE) {
-+ pref = r->at_pref;
-+ prevp = delp = rp;
-+ goto replace;
-+ }
-+ }
-+
-+ if (n->nlmsg_flags&NLM_F_APPEND) {
-+ if (r) {
-+ pref = r->at_pref+1;
-+ for (rp=&r->at_next; (r=*rp) != NULL; rp=&r->at_next) {
-+ if (pref != r->at_pref)
-+ break;
-+ pref ++;
-+ }
-+ ret = -EBUSY;
-+ if (!pref)
-+ goto out;
-+ } else if (am->arpm_pref)
-+ pref = am->arpm_pref;
-+ prevp = rp;
-+ }
-+
-+ if (!(n->nlmsg_flags&NLM_F_CREATE)) {
-+ ret = -ENOENT;
-+ if (n->nlmsg_flags&NLM_F_EXCL || r)
-+ ret = 0;
-+ goto out;
-+ }
-+
-+ if (!(n->nlmsg_flags&NLM_F_APPEND)) {
-+ if (!prevp) {
-+ ret = -EBUSY;
-+ if (r || *rp ||
-+ (!am->arpm_pref && arp_tabs[am->arpm_table]))
-+ goto out;
-+ prevp = rp;
-+ pref = am->arpm_pref? : 99;
-+ } else {
-+ if (r || !am->arpm_pref) {
-+ pref = (*prevp)->at_pref - 1;
-+ if (am->arpm_pref && am->arpm_pref < pref)
-+ pref = am->arpm_pref;
-+ } else {
-+ prevp = rp;
-+ pref = am->arpm_pref;
-+ }
-+ }
-+ }
-+
-+replace:
-+
-+ ret = -ENOMEM;
-+ r = kmem_cache_alloc(arpf_cachep, GFP_KERNEL);
-+ if (!r)
-+ return ret;
-+ memset(r, 0, sizeof(*r));
-+
-+ arpf_get_str(ARPA_LLFROM, rta, r->at_llfrom, MAX_ADDR_LEN,
-+ &r->at_llfrom_len);
-+ arpf_get_str(ARPA_LLTO, rta, r->at_llto, MAX_ADDR_LEN,
-+ &r->at_llto_len);
-+ arpf_get_str(ARPA_LLSRC, rta, r->at_llsrc, MAX_ADDR_LEN,
-+ &r->at_llsrc_len);
-+ arpf_get_str(ARPA_LLDST, rta, r->at_lldst, MAX_ADDR_LEN,
-+ &r->at_lldst_len);
-+
-+ if (delp)
-+ r->at_next = (*delp)->at_next;
-+ else if (*prevp)
-+ r->at_next = *prevp;
-+
-+ r->at_pref = pref;
-+ r->at_from_len = am->arpm_from_len;
-+ r->at_from_mask = inet_make_mask(r->at_from_len);
-+ if (rta[ARPA_FROM])
-+ r->at_from = *(u32*) nla_data(rta[ARPA_FROM]);
-+ r->at_from &= r->at_from_mask;
-+ r->at_to_len = am->arpm_to_len;
-+ r->at_to_mask = inet_make_mask(r->at_to_len);
-+ if (rta[ARPA_TO])
-+ r->at_to = *(u32*) nla_data(rta[ARPA_TO]);
-+ r->at_to &= r->at_to_mask;
-+ if (rta[ARPA_SRC])
-+ r->at_src = *(u32*) nla_data(rta[ARPA_SRC]);
-+ if (rta[ARPA_PACKETS]) {
-+ u32 packets = *(u32*) nla_data(rta[ARPA_PACKETS]);
-+ atomic_set(&r->at_packets, packets);
-+ }
-+ atomic_set(&r->at_refcnt, 1);
-+ r->at_flags = am->arpm_flags;
-+ r->at_action = am->arpm_action;
-+
-+ if (rta[ARPA_IIF] && (size = nla_len(rta[ARPA_IIF]))) {
-+ if (size >= sizeof(r->at_iif))
-+ size = sizeof(r->at_iif)-1;
-+ memcpy(r->at_iif, nla_data(rta[ARPA_IIF]), size);
-+ r->at_iif_len = strlen(r->at_iif);
-+ }
-+ if (rta[ARPA_OIF] && (size = nla_len(rta[ARPA_OIF]))) {
-+ if (size >= sizeof(r->at_oif))
-+ size = sizeof(r->at_oif)-1;
-+ memcpy(r->at_oif, nla_data(rta[ARPA_OIF]), size);
-+ r->at_oif_len = strlen(r->at_oif);
-+ }
-+
-+ newp = r;
-+
-+dequeue:
-+
-+ if (delp) {
-+ r = *delp;
-+ write_lock_bh(&arpf_lock);
-+ if (newp) {
-+ if (!rta[ARPA_PACKETS])
-+ atomic_set(&newp->at_packets,
-+ atomic_read(&r->at_packets));
-+ *delp = newp;
-+ } else {
-+ *delp = r->at_next;
-+ }
-+ r->at_dead = 1;
-+ write_unlock_bh(&arpf_lock);
-+ arpmsg_notify(skb, n, am->arpm_table, r, RTM_DELARPRULE);
-+ arpf_put(r);
-+ prevp = 0;
-+ }
-+
-+ if (newp) {
-+ if (prevp) {
-+ write_lock_bh(&arpf_lock);
-+ *prevp = newp;
-+ write_unlock_bh(&arpf_lock);
-+ }
-+ arpmsg_notify(skb, n, am->arpm_table, newp, RTM_NEWARPRULE);
-+ }
-+
-+ ret = 0;
-+
-+out:
-+ return ret;
-+}
-+
-+int arpf_dump_table(int t, struct sk_buff *skb, struct netlink_callback *cb)
-+{
-+ int idx, ret = -1;
-+ struct arpf_node *afp;
-+ int s_idx = cb->args[1];
-+
-+ for (idx=0, afp = arp_tabs[t]; afp; afp = afp->at_next, idx++) {
-+ if (idx < s_idx)
-+ continue;
-+ if (arpf_fill_node(skb, NETLINK_CB(cb->skb).portid,
-+ cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWARPRULE, t, afp) < 0)
-+ goto out;
-+ }
-+
-+ ret = skb->len;
-+
-+out:
-+ cb->args[1] = idx;
-+
-+ return ret;
-+}
-+
-+int arpf_dump_rules(struct sk_buff *skb, struct netlink_callback *cb)
-+{
-+ int idx;
-+ int s_idx = cb->args[0];
-+
-+ read_lock_bh(&arpf_lock);
-+ for (idx = 0; idx < sizeof(arp_tabs)/sizeof(arp_tabs[0]); idx++) {
-+ if (idx < s_idx)
-+ continue;
-+ if (idx > s_idx)
-+ memset(&cb->args[1], 0, sizeof(cb->args)-1*sizeof(cb->args[0]));
-+ if (arpf_dump_table(idx, skb, cb) < 0)
-+ break;
-+ }
-+ read_unlock_bh(&arpf_lock);
-+ cb->args[0] = idx;
-+
-+ return skb->len;
-+}
-+
- /*
- * Called once on startup.
- */
-@@ -1292,6 +1943,16 @@ static int arp_proc_init(void);
-
- void __init arp_init(void)
- {
-+ arpf_cachep = kmem_cache_create("ip_arpf_cache",
-+ sizeof(struct arpf_node), 0,
-+ SLAB_HWCACHE_ALIGN, NULL);
-+ if (!arpf_cachep)
-+ panic("IP: failed to allocate ip_arpf_cache\n");
-+
-+ rtnl_register(PF_UNSPEC, RTM_NEWARPRULE, arpf_rule_ctl, NULL, 0);
-+ rtnl_register(PF_UNSPEC, RTM_DELARPRULE, arpf_rule_ctl, NULL, 0);
-+ rtnl_register(PF_UNSPEC, RTM_GETARPRULE, NULL, arpf_dump_rules, 0);
-+
- neigh_table_init(NEIGH_ARP_TABLE, &arp_tbl);
-
- dev_add_pack(&arp_packet_type);
-diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index e258a00b4a3d..e9e24f6fb16c 100644
---- a/net/ipv4/devinet.c
-+++ b/net/ipv4/devinet.c
-@@ -1308,9 +1308,14 @@ __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
- if (!in_dev)
- continue;
-
-- addr = in_dev_select_addr(in_dev, scope);
-- if (addr)
-- goto out_unlock;
-+ for_primary_ifa(in_dev) {
-+ if (!IN_DEV_HIDDEN(in_dev) &&
-+ ifa->ifa_scope != RT_SCOPE_LINK &&
-+ ifa->ifa_scope <= scope) {
-+ addr = ifa->ifa_local;
-+ goto out_unlock;
-+ }
-+ } endfor_ifa(in_dev);
- }
- out_unlock:
- rcu_read_unlock();
-@@ -2427,13 +2432,16 @@ static struct devinet_sysctl_table {
- DEVINET_SYSCTL_RW_ENTRY(SEND_REDIRECTS, "send_redirects"),
- DEVINET_SYSCTL_RW_ENTRY(ACCEPT_SOURCE_ROUTE,
- "accept_source_route"),
-+ DEVINET_SYSCTL_RW_ENTRY(FORWARD_SHARED, "forward_shared"),
- DEVINET_SYSCTL_RW_ENTRY(ACCEPT_LOCAL, "accept_local"),
- DEVINET_SYSCTL_RW_ENTRY(SRC_VMARK, "src_valid_mark"),
- DEVINET_SYSCTL_RW_ENTRY(PROXY_ARP, "proxy_arp"),
- DEVINET_SYSCTL_RW_ENTRY(MEDIUM_ID, "medium_id"),
-+ DEVINET_SYSCTL_RW_ENTRY(RP_FILTER_MASK, "rp_filter_mask"),
- DEVINET_SYSCTL_RW_ENTRY(BOOTP_RELAY, "bootp_relay"),
- DEVINET_SYSCTL_RW_ENTRY(LOG_MARTIANS, "log_martians"),
- DEVINET_SYSCTL_RW_ENTRY(TAG, "tag"),
-+ DEVINET_SYSCTL_RW_ENTRY(HIDDEN, "hidden"),
- DEVINET_SYSCTL_RW_ENTRY(ARPFILTER, "arp_filter"),
- DEVINET_SYSCTL_RW_ENTRY(ARP_ANNOUNCE, "arp_announce"),
- DEVINET_SYSCTL_RW_ENTRY(ARP_IGNORE, "arp_ignore"),
-diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
-index ed14ec245584..1c5782a2e983 100644
---- a/net/ipv4/fib_frontend.c
-+++ b/net/ipv4/fib_frontend.c
-@@ -51,6 +51,8 @@
-
- #ifndef CONFIG_IP_MULTIPLE_TABLES
-
-+#define FIB_RES_TABLE(r) (RT_TABLE_MAIN)
-+
- static int __net_init fib4_rules_init(struct net *net)
- {
- struct fib_table *local_table, *main_table;
-@@ -80,6 +82,8 @@ static bool fib4_has_custom_rules(struct net *net)
- }
- #else
-
-+#define FIB_RES_TABLE(r) (fib_result_table(r))
-+
- struct fib_table *fib_new_table(struct net *net, u32 id)
- {
- struct fib_table *tb, *alias = NULL;
-@@ -351,13 +355,19 @@ EXPORT_SYMBOL_GPL(fib_info_nh_uses_dev);
- */
- static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- u8 tos, int oif, struct net_device *dev,
-- int rpf, struct in_device *idev, u32 *itag)
-+ int rpf, struct in_device *idev, u32 *itag,
-+ int our)
- {
- struct net *net = dev_net(dev);
- struct flow_keys flkeys;
-+ u32 table;
-+ unsigned char prefixlen;
-+ unsigned char scope;
- int ret, no_addr;
- struct fib_result res;
- struct flowi4 fl4;
-+ int fwdsh;
-+ unsigned int rpf_mask;
- bool dev_match;
-
- fl4.flowi4_oif = 0;
-@@ -371,10 +381,13 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- fl4.flowi4_tun_key.tun_id = 0;
- fl4.flowi4_flags = 0;
- fl4.flowi4_uid = sock_net_uid(net, NULL);
-+ fl4.fl4_gw = 0;
-
- no_addr = idev->ifa_list == NULL;
-
-+ fwdsh = IN_DEV_FORWARD_SHARED(idev);
- fl4.flowi4_mark = IN_DEV_SRC_VMARK(idev) ? skb->mark : 0;
-+ rpf_mask = IN_DEV_RPFILTER_MASK(idev);
- if (!fib4_rules_early_flow_dissect(net, skb, &fl4, &flkeys)) {
- fl4.flowi4_proto = 0;
- fl4.fl4_sport = 0;
-@@ -383,7 +396,12 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
-
- if (fib_lookup(net, &fl4, &res, 0))
- goto last_resort;
-- if (res.type != RTN_UNICAST &&
-+ if (fwdsh) {
-+ fwdsh = (res.type == RTN_LOCAL && !our);
-+ if (fwdsh)
-+ rpf = 0;
-+ }
-+ if (res.type != RTN_UNICAST && !fwdsh &&
- (res.type != RTN_LOCAL || !IN_DEV_ACCEPT_LOCAL(idev)))
- goto e_inval;
- fib_combine_itag(itag, &res);
-@@ -393,17 +411,36 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- ret = FIB_RES_NH(res).nh_scope >= RT_SCOPE_HOST;
- return ret;
- }
-+ if (rpf_mask && rpf) {
-+ int omi = 0;
-+
-+ idev = __in_dev_get_rcu(FIB_RES_DEV(res));
-+ if (idev)
-+ omi = IN_DEV_MEDIUM_ID(idev);
-+ if (omi >= 1 && omi <= 31 && ((1 << omi) & rpf_mask))
-+ rpf = 0;
-+ }
- if (no_addr)
- goto last_resort;
-- if (rpf == 1)
-- goto e_rpf;
-+ table = FIB_RES_TABLE(&res);
-+ prefixlen = res.prefixlen;
-+ scope = res.scope;
- fl4.flowi4_oif = dev->ifindex;
-+ if (fwdsh)
-+ fl4.flowi4_iif = LOOPBACK_IFINDEX;
-
- ret = 0;
- if (fib_lookup(net, &fl4, &res, FIB_LOOKUP_IGNORE_LINKSTATE) == 0) {
-- if (res.type == RTN_UNICAST)
-+ if (res.type == RTN_UNICAST &&
-+ ((table == FIB_RES_TABLE(&res) &&
-+ res.prefixlen >= prefixlen && res.scope >= scope) ||
-+ !rpf)) {
- ret = FIB_RES_NH(res).nh_scope >= RT_SCOPE_HOST;
-+ return ret;
-+ }
- }
-+ if (rpf == 1)
-+ goto e_rpf;
- return ret;
-
- last_resort:
-@@ -421,7 +458,7 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- /* Ignore rp_filter for packets protected by IPsec. */
- int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- u8 tos, int oif, struct net_device *dev,
-- struct in_device *idev, u32 *itag)
-+ struct in_device *idev, u32 *itag, int our)
- {
- int r = secpath_exists(skb) ? 0 : IN_DEV_RPFILTER(idev);
- struct net *net = dev_net(dev);
-@@ -446,7 +483,8 @@ int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- }
-
- full_check:
-- return __fib_validate_source(skb, src, dst, tos, oif, dev, r, idev, itag);
-+ return __fib_validate_source(skb, src, dst, tos, oif, dev, r, idev,
-+ itag, our);
- }
-
- static inline __be32 sk_extract_addr(struct sockaddr *addr)
-@@ -1328,9 +1366,7 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
- switch (event) {
- case NETDEV_UP:
- fib_add_ifaddr(ifa);
--#ifdef CONFIG_IP_ROUTE_MULTIPATH
- fib_sync_up(dev, RTNH_F_DEAD);
--#endif
- atomic_inc(&net->ipv4.dev_addr_genid);
- rt_cache_flush(dev_net(dev));
- break;
-@@ -1374,9 +1410,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
- for_ifa(in_dev) {
- fib_add_ifaddr(ifa);
- } endfor_ifa(in_dev);
--#ifdef CONFIG_IP_ROUTE_MULTIPATH
- fib_sync_up(dev, RTNH_F_DEAD);
--#endif
- atomic_inc(&net->ipv4.dev_addr_genid);
- rt_cache_flush(net);
- break;
-diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c
-index cfec3af54c8d..6ffc52a5c272 100644
---- a/net/ipv4/fib_rules.c
-+++ b/net/ipv4/fib_rules.c
-@@ -78,6 +78,11 @@ unsigned int fib4_rules_seq_read(struct net *net)
- return fib_rules_seq_read(net, AF_INET);
- }
-
-+u32 fib_result_table(struct fib_result *res)
-+{
-+ return res->table ? res->table->tb_id : RT_TABLE_UNSPEC;
-+}
-+
- int __fib_lookup(struct net *net, struct flowi4 *flp,
- struct fib_result *res, unsigned int flags)
- {
-diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
-index 5022bc63863a..d8e8711406c6 100644
---- a/net/ipv4/fib_semantics.c
-+++ b/net/ipv4/fib_semantics.c
-@@ -53,6 +53,7 @@ static struct hlist_head *fib_info_hash;
- static struct hlist_head *fib_info_laddrhash;
- static unsigned int fib_info_hash_size;
- static unsigned int fib_info_cnt;
-+DEFINE_RWLOCK(fib_nhflags_lock);
-
- #define DEVINDEX_HASHBITS 8
- #define DEVINDEX_HASHSIZE (1U << DEVINDEX_HASHBITS)
-@@ -433,28 +434,71 @@ void rtmsg_fib(int event, __be32 key, struct fib_alias *fa,
-
- static int fib_detect_death(struct fib_info *fi, int order,
- struct fib_info **last_resort, int *last_idx,
-- int dflt)
-+ int dflt, int *last_nhsel,
-+ const struct flowi4 *flp)
- {
- struct neighbour *n;
-- int state = NUD_NONE;
-+ int nhsel;
-+ int state;
-+ struct fib_nh * nh;
-+ __be32 dst;
-+ int flag, dead = 1;
-
-- n = neigh_lookup(&arp_tbl, &fi->fib_nh[0].nh_gw, fi->fib_dev);
-- if (n) {
-- state = n->nud_state;
-- neigh_release(n);
-- } else {
-- return 0;
-- }
-- if (state == NUD_REACHABLE)
-- return 0;
-- if ((state & NUD_VALID) && order != dflt)
-- return 0;
-- if ((state & NUD_VALID) ||
-- (*last_idx < 0 && order > dflt && state != NUD_INCOMPLETE)) {
-- *last_resort = fi;
-- *last_idx = order;
-+ /* change_nexthops(fi) { */
-+ for (nhsel = 0, nh = fi->fib_nh; nhsel < fi->fib_nhs; nh++, nhsel++) {
-+ if (flp->flowi4_oif && flp->flowi4_oif != nh->nh_oif &&
-+ !(flp->flowi4_flags & FLOWI_FLAG_SKIP_NH_OIF))
-+ continue;
-+ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw && nh->nh_gw &&
-+ nh->nh_scope == RT_SCOPE_LINK)
-+ continue;
-+ if (nh->nh_flags & RTNH_F_DEAD)
-+ continue;
-+
-+ flag = 0;
-+ if (nh->nh_dev->flags & IFF_NOARP) {
-+ dead = 0;
-+ goto setfl;
-+ }
-+
-+ dst = nh->nh_gw;
-+ if (!nh->nh_gw || nh->nh_scope != RT_SCOPE_LINK)
-+ dst = flp->daddr;
-+
-+ state = NUD_NONE;
-+ n = neigh_lookup(&arp_tbl, &dst, nh->nh_dev);
-+ if (n) {
-+ state = n->nud_state;
-+ neigh_release(n);
-+ }
-+ if (state == NUD_REACHABLE ||
-+ ((state & NUD_VALID) && order != dflt)) {
-+ dead = 0;
-+ goto setfl;
-+ }
-+ if (!(state & NUD_VALID))
-+ flag = 1;
-+ if (!dead)
-+ goto setfl;
-+ if ((state & NUD_VALID) ||
-+ (*last_idx < 0 && order >= dflt)) {
-+ *last_resort = fi;
-+ *last_idx = order;
-+ *last_nhsel = nhsel;
-+ }
-+
-+ setfl:
-+
-+ read_lock_bh(&fib_nhflags_lock);
-+ if (flag)
-+ nh->nh_flags |= RTNH_F_SUSPECT;
-+ else
-+ nh->nh_flags &= ~RTNH_F_SUSPECT;
-+ read_unlock_bh(&fib_nhflags_lock);
- }
-- return 1;
-+ /* } endfor_nexthops(fi) */
-+
-+ return dead;
- }
-
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
-@@ -781,6 +825,7 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- int err = 0;
- struct net *net;
- struct net_device *dev;
-+ struct fib_info *fi = nh->nh_parent;
-
- net = cfg->fc_nlinfo.nl_net;
- if (nh->nh_gw) {
-@@ -800,9 +845,12 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- return -ENODEV;
- }
- if (!(dev->flags & IFF_UP)) {
-- NL_SET_ERR_MSG(extack,
-- "Nexthop device is not up");
-- return -ENETDOWN;
-+ if (fi->fib_protocol != RTPROT_STATIC) {
-+ NL_SET_ERR_MSG(extack,
-+ "Nexthop device is not up");
-+ return -ENETDOWN;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
- }
- addr_type = inet_addr_type_dev_table(net, dev, nh->nh_gw);
- if (addr_type != RTN_UNICAST) {
-@@ -847,31 +895,57 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- err = fib_lookup(net, &fl4, &res,
- FIB_LOOKUP_IGNORE_LINKSTATE);
- }
-+ }
-+ if (err) {
-+ struct in_device *in_dev;
-
-- if (err) {
-+ if (err != -ENETUNREACH ||
-+ fi->fib_protocol != RTPROT_STATIC) {
- NL_SET_ERR_MSG(extack,
- "Nexthop has invalid gateway");
-- rcu_read_unlock();
-- return err;
-+ goto out;
- }
-+
-+ in_dev = inetdev_by_index(net, nh->nh_oif);
-+ if (in_dev == NULL ||
-+ in_dev->dev->flags & IFF_UP) {
-+ NL_SET_ERR_MSG(extack,
-+ "Device for nexthop is not up");
-+ goto out;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
-+ nh->nh_scope = RT_SCOPE_LINK;
-+ nh->nh_dev = in_dev->dev;
-+ dev_hold(nh->nh_dev);
-+ } else {
-+ err = -EINVAL;
-+ if (res.type != RTN_UNICAST && res.type != RTN_LOCAL) {
-+ NL_SET_ERR_MSG(extack,
-+ "Nexthop has invalid gateway");
-+ goto out;
-+ }
-+ nh->nh_scope = res.scope;
-+ nh->nh_oif = FIB_RES_OIF(res);
-+ nh->nh_dev = dev = FIB_RES_DEV(res);
-+ if (!dev) {
-+ NL_SET_ERR_MSG(extack,
-+ "No egress device for nexthop gateway");
-+ goto out;
-+ }
-+ dev_hold(dev);
-+ if (!netif_carrier_ok(dev))
-+ nh->nh_flags |= RTNH_F_LINKDOWN;
-+ if (!(nh->nh_dev->flags & IFF_UP)) {
-+ if (fi->fib_protocol != RTPROT_STATIC) {
-+ err = -ENETDOWN;
-+ NL_SET_ERR_MSG(extack,
-+ "Device for nexthop is not up");
-+ goto out;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
-+ }
-+ err = 0;
- }
-- err = -EINVAL;
-- if (res.type != RTN_UNICAST && res.type != RTN_LOCAL) {
-- NL_SET_ERR_MSG(extack, "Nexthop has invalid gateway");
-- goto out;
-- }
-- nh->nh_scope = res.scope;
-- nh->nh_oif = FIB_RES_OIF(res);
-- nh->nh_dev = dev = FIB_RES_DEV(res);
-- if (!dev) {
-- NL_SET_ERR_MSG(extack,
-- "No egress device for nexthop gateway");
-- goto out;
-- }
-- dev_hold(dev);
-- if (!netif_carrier_ok(dev))
-- nh->nh_flags |= RTNH_F_LINKDOWN;
-- err = (dev->flags & IFF_UP) ? 0 : -ENETDOWN;
- } else {
- struct in_device *in_dev;
-
-@@ -887,8 +961,12 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- goto out;
- err = -ENETDOWN;
- if (!(in_dev->dev->flags & IFF_UP)) {
-- NL_SET_ERR_MSG(extack, "Device for nexthop is not up");
-- goto out;
-+ if (fi->fib_protocol != RTPROT_STATIC) {
-+ NL_SET_ERR_MSG(extack,
-+ "Device for nexthop is not up");
-+ goto out;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
- }
- nh->nh_dev = in_dev->dev;
- dev_hold(nh->nh_dev);
-@@ -1535,10 +1613,15 @@ int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force)
- prev_fi = fi;
- dead = 0;
- change_nexthops(fi) {
-- if (nexthop_nh->nh_flags & RTNH_F_DEAD)
-- dead++;
-- else if (nexthop_nh->nh_dev == dev &&
-- nexthop_nh->nh_scope != scope) {
-+ if (nexthop_nh->nh_flags & RTNH_F_DEAD) {
-+ if (fi->fib_protocol != RTPROT_STATIC ||
-+ nexthop_nh->nh_dev == NULL ||
-+ __in_dev_get_rtnl(nexthop_nh->nh_dev) == NULL ||
-+ nexthop_nh->nh_dev->flags&IFF_UP)
-+ dead++;
-+ } else if (nexthop_nh->nh_dev == dev &&
-+ nexthop_nh->nh_scope != scope) {
-+ write_lock_bh(&fib_nhflags_lock);
- switch (event) {
- case NETDEV_DOWN:
- case NETDEV_UNREGISTER:
-@@ -1550,7 +1633,11 @@ int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force)
- }
- call_fib_nh_notifiers(nexthop_nh,
- FIB_EVENT_NH_DEL);
-- dead++;
-+ write_unlock_bh(&fib_nhflags_lock);
-+ if (fi->fib_protocol != RTPROT_STATIC ||
-+ force ||
-+ __in_dev_get_rtnl(dev) == NULL)
-+ dead++;
- }
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
- if (event == NETDEV_UNREGISTER &&
-@@ -1580,13 +1667,13 @@ int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force)
- }
-
- /* Must be invoked inside of an RCU protected region. */
--static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
-+void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- {
- struct fib_info *fi = NULL, *last_resort = NULL;
- struct hlist_head *fa_head = res->fa_head;
- struct fib_table *tb = res->table;
- u8 slen = 32 - res->prefixlen;
-- int order = -1, last_idx = -1;
-+ int order = -1, last_idx = -1, last_nhsel = 0;
- struct fib_alias *fa, *fa1 = NULL;
- u32 last_prio = res->fi->fib_priority;
- u8 last_tos = 0;
-@@ -1614,9 +1701,6 @@ static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- if (next_fi->fib_scope != res->scope ||
- fa->fa_type != RTN_UNICAST)
- continue;
-- if (!next_fi->fib_nh[0].nh_gw ||
-- next_fi->fib_nh[0].nh_scope != RT_SCOPE_LINK)
-- continue;
-
- fib_alias_accessed(fa);
-
-@@ -1625,7 +1709,8 @@ static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- break;
- fa1 = fa;
- } else if (!fib_detect_death(fi, order, &last_resort,
-- &last_idx, fa1->fa_default)) {
-+ &last_idx, fa1->fa_default,
-+ &last_nhsel, flp)) {
- fib_result_assign(res, fi);
- fa1->fa_default = order;
- goto out;
-@@ -1635,28 +1720,39 @@ static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- }
-
- if (order <= 0 || !fi) {
-+ if (fi && fi->fib_nhs > 1 &&
-+ fib_detect_death(fi, order, &last_resort, &last_idx,
-+ fa1->fa_default, &last_nhsel, flp) &&
-+ last_resort == fi) {
-+ read_lock_bh(&fib_nhflags_lock);
-+ fi->fib_nh[last_nhsel].nh_flags &= ~RTNH_F_SUSPECT;
-+ read_unlock_bh(&fib_nhflags_lock);
-+ }
- if (fa1)
- fa1->fa_default = -1;
- goto out;
- }
-
- if (!fib_detect_death(fi, order, &last_resort, &last_idx,
-- fa1->fa_default)) {
-+ fa1->fa_default, &last_nhsel, flp)) {
- fib_result_assign(res, fi);
- fa1->fa_default = order;
- goto out;
- }
-
-- if (last_idx >= 0)
-+ if (last_idx >= 0) {
- fib_result_assign(res, last_resort);
-+ read_lock_bh(&fib_nhflags_lock);
-+ last_resort->fib_nh[last_nhsel].nh_flags &= ~RTNH_F_SUSPECT;
-+ read_unlock_bh(&fib_nhflags_lock);
-+ }
- fa1->fa_default = last_idx;
- out:
- return;
- }
-
- /*
-- * Dead device goes up. We wake up dead nexthops.
-- * It takes sense only on multipath routes.
-+ * Dead device goes up or new address is added. We wake up dead nexthops.
- */
- int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- {
-@@ -1664,8 +1760,10 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- unsigned int hash;
- struct hlist_head *head;
- struct fib_nh *nh;
-- int ret;
-+ struct fib_result res;
-+ int ret, rep;
-
-+repeat:
- if (!(dev->flags & IFF_UP))
- return 0;
-
-@@ -1680,6 +1778,7 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- hash = fib_devindex_hashfn(dev->ifindex);
- head = &fib_info_devhash[hash];
- ret = 0;
-+ rep = 0;
-
- hlist_for_each_entry(nh, head, nh_hash) {
- struct fib_info *fi = nh->nh_parent;
-@@ -1692,16 +1791,37 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- prev_fi = fi;
- alive = 0;
- change_nexthops(fi) {
-- if (!(nexthop_nh->nh_flags & nh_flags)) {
-- alive++;
-+ if (!(nexthop_nh->nh_flags & nh_flags))
- continue;
-- }
- if (!nexthop_nh->nh_dev ||
- !(nexthop_nh->nh_dev->flags & IFF_UP))
- continue;
- if (nexthop_nh->nh_dev != dev ||
- !__in_dev_get_rtnl(dev))
- continue;
-+ if ((nh_flags & RTNH_F_DEAD) && nexthop_nh->nh_gw &&
-+ fi->fib_protocol == RTPROT_STATIC) {
-+ struct flowi4 fl4 = {
-+ .daddr = nexthop_nh->nh_gw,
-+ .flowi4_scope = nexthop_nh->nh_scope,
-+ .flowi4_oif = nexthop_nh->nh_oif,
-+ };
-+
-+ rcu_read_lock();
-+ if (fib_lookup(dev_net(dev), &fl4, &res,
-+ FIB_LOOKUP_IGNORE_LINKSTATE) != 0) {
-+ rcu_read_unlock();
-+ continue;
-+ }
-+ if (res.type != RTN_UNICAST &&
-+ res.type != RTN_LOCAL) {
-+ rcu_read_unlock();
-+ continue;
-+ }
-+ nexthop_nh->nh_scope = res.scope;
-+ rcu_read_unlock();
-+ rep = 1;
-+ }
- alive++;
- nexthop_nh->nh_flags &= ~nh_flags;
- call_fib_nh_notifiers(nexthop_nh, FIB_EVENT_NH_ADD);
-@@ -1714,6 +1834,8 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
-
- fib_rebalance(fi);
- }
-+ if (rep)
-+ goto repeat;
-
- return ret;
- }
-@@ -1767,23 +1889,16 @@ void fib_select_multipath(struct fib_result *res, int hash)
- void fib_select_path(struct net *net, struct fib_result *res,
- struct flowi4 *fl4, const struct sk_buff *skb)
- {
-- if (fl4->flowi4_oif && !(fl4->flowi4_flags & FLOWI_FLAG_SKIP_NH_OIF))
-- goto check_saddr;
--
-+ if (res->type == RTN_UNICAST)
-+ fib_select_default(fl4, res);
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
- if (res->fi->fib_nhs > 1) {
- int h = fib_multipath_hash(net, fl4, skb, NULL);
-
- fib_select_multipath(res, h);
- }
-- else
- #endif
-- if (!res->prefixlen &&
-- res->table->tb_num_default > 1 &&
-- res->type == RTN_UNICAST)
-- fib_select_default(fl4, res);
-
--check_saddr:
- if (!fl4->saddr)
- fl4->saddr = FIB_RES_PREFSRC(net, *res);
- }
-diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
-index a573e37e0615..d7572cbcfd7c 100644
---- a/net/ipv4/fib_trie.c
-+++ b/net/ipv4/fib_trie.c
-@@ -1482,6 +1482,9 @@ int fib_table_lookup(struct fib_table *tb, const struct flowi4 *flp,
- if (flp->flowi4_oif &&
- flp->flowi4_oif != nh->nh_oif)
- continue;
-+ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw &&
-+ nh->nh_gw && nh->nh_scope == RT_SCOPE_LINK)
-+ continue;
- }
-
- if (!(fib_flags & FIB_LOOKUP_NOREF))
-diff --git a/net/ipv4/netfilter/iptable_nat.c b/net/ipv4/netfilter/iptable_nat.c
-index a317445448bf..9be4af94f10e 100644
---- a/net/ipv4/netfilter/iptable_nat.c
-+++ b/net/ipv4/netfilter/iptable_nat.c
-@@ -45,6 +45,13 @@ static const struct nf_hook_ops nf_nat_ipv4_ops[] = {
- .hooknum = NF_INET_PRE_ROUTING,
- .priority = NF_IP_PRI_NAT_DST,
- },
-+ /* Before routing, route before mangling */
-+ {
-+ .hook = ip_nat_route_input,
-+ .pf = NFPROTO_IPV4,
-+ .hooknum = NF_INET_PRE_ROUTING,
-+ .priority = NF_IP_PRI_LAST-1,
-+ },
- {
- .hook = iptable_nat_do_chain,
- .pf = NFPROTO_IPV4,
-diff --git a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-index 41327bb99093..96a6daa525e5 100644
---- a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-+++ b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-@@ -30,8 +30,8 @@ nf_nat_masquerade_ipv4(struct sk_buff *skb, unsigned int hooknum,
- struct nf_conn_nat *nat;
- enum ip_conntrack_info ctinfo;
- struct nf_nat_range2 newrange;
-- const struct rtable *rt;
-- __be32 newsrc, nh;
-+ struct rtable *rt;
-+ __be32 newsrc;
-
- WARN_ON(hooknum != NF_INET_POST_ROUTING);
-
-@@ -46,12 +46,23 @@ nf_nat_masquerade_ipv4(struct sk_buff *skb, unsigned int hooknum,
- if (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip == 0)
- return NF_ACCEPT;
-
-- rt = skb_rtable(skb);
-- nh = rt_nexthop(rt, ip_hdr(skb)->daddr);
-- newsrc = inet_select_addr(out, nh, RT_SCOPE_UNIVERSE);
-- if (!newsrc) {
-- pr_info("%s ate my IP address\n", out->name);
-- return NF_DROP;
-+ {
-+ struct flowi4 fl4 = { .flowi4_tos = RT_TOS(ip_hdr(skb)->tos),
-+ .flowi4_mark = skb->mark,
-+ .flowi4_oif = out->ifindex,
-+ .daddr = ip_hdr(skb)->daddr,
-+ .fl4_gw = skb_rtable(skb)->rt_gateway };
-+ rt = ip_route_output_key(dev_net(out), &fl4);
-+ if (IS_ERR(rt)) {
-+ /* Funky routing can do this. */
-+ if (net_ratelimit())
-+ pr_info("%s:"
-+ " No route: Rusty's brain broke!\n",
-+ out->name);
-+ return NF_DROP;
-+ }
-+ newsrc = fl4.saddr;
-+ ip_rt_put(rt);
- }
-
- nat = nf_ct_nat_ext_add(ct);
-diff --git a/net/ipv4/route.c b/net/ipv4/route.c
-index 3c89ca325947..25fcdd17c1fc 100644
---- a/net/ipv4/route.c
-+++ b/net/ipv4/route.c
-@@ -1647,7 +1647,7 @@ int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- return -EINVAL;
- } else {
- err = fib_validate_source(skb, saddr, 0, tos, 0, dev,
-- in_dev, itag);
-+ in_dev, itag, 1);
- if (err < 0)
- return err;
- }
-@@ -1722,7 +1722,7 @@ static void ip_handle_martian_source(struct net_device *dev,
- static int __mkroute_input(struct sk_buff *skb,
- const struct fib_result *res,
- struct in_device *in_dev,
-- __be32 daddr, __be32 saddr, u32 tos)
-+ __be32 daddr, __be32 saddr, u32 tos, __be32 lsrc)
- {
- struct fib_nh_exception *fnhe;
- struct rtable *rth;
-@@ -1739,7 +1739,7 @@ static int __mkroute_input(struct sk_buff *skb,
- }
-
- err = fib_validate_source(skb, saddr, daddr, tos, FIB_RES_OIF(*res),
-- in_dev->dev, in_dev, &itag);
-+ in_dev->dev, in_dev, &itag, 0);
- if (err < 0) {
- ip_handle_martian_source(in_dev->dev, in_dev, skb, daddr,
- saddr);
-@@ -1749,7 +1749,7 @@ static int __mkroute_input(struct sk_buff *skb,
-
- do_cache = res->fi && !itag;
- if (out_dev == in_dev && err && IN_DEV_TX_REDIRECTS(out_dev) &&
-- skb->protocol == htons(ETH_P_IP) &&
-+ skb->protocol == htons(ETH_P_IP) && !lsrc &&
- (IN_DEV_SHARED_MEDIA(out_dev) ||
- inet_addr_onlink(out_dev, saddr, FIB_RES_GW(*res))))
- IPCB(skb)->flags |= IPSKB_DOREDIRECT;
-@@ -1907,10 +1907,12 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
-
- static int ip_mkroute_input(struct sk_buff *skb,
- struct fib_result *res,
-+ const struct flowi4 *fl4,
- struct in_device *in_dev,
- __be32 daddr, __be32 saddr, u32 tos,
-- struct flow_keys *hkeys)
-+ struct flow_keys *hkeys, __be32 lsrc)
- {
-+ fib_select_default(fl4, res);
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
- if (res->fi && res->fi->fib_nhs > 1) {
- int h = fib_multipath_hash(res->fi->fib_net, NULL, skb, hkeys);
-@@ -1920,7 +1922,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
- #endif
-
- /* create a routing cache entry */
-- return __mkroute_input(skb, res, in_dev, daddr, saddr, tos);
-+ return __mkroute_input(skb, res, in_dev, daddr, saddr, tos, lsrc);
- }
-
- /*
-@@ -1935,7 +1937,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
- */
-
- static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-- u8 tos, struct net_device *dev,
-+ u8 tos, struct net_device *dev, __be32 lsrc,
- struct fib_result *res)
- {
- struct in_device *in_dev = __in_dev_get_rcu(dev);
-@@ -1993,18 +1995,25 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- goto martian_source;
- }
-
-+ if (lsrc) {
-+ if (ipv4_is_multicast(lsrc) || ipv4_is_lbcast(lsrc) ||
-+ ipv4_is_zeronet(lsrc) || ipv4_is_loopback(lsrc))
-+ goto martian_source;
-+ }
-+
- /*
- * Now we are ready to route packet.
- */
- fl4.flowi4_oif = 0;
-- fl4.flowi4_iif = dev->ifindex;
-+ fl4.flowi4_iif = lsrc ? LOOPBACK_IFINDEX : dev->ifindex;
- fl4.flowi4_mark = skb->mark;
- fl4.flowi4_tos = tos;
- fl4.flowi4_scope = RT_SCOPE_UNIVERSE;
- fl4.flowi4_flags = 0;
- fl4.daddr = daddr;
-- fl4.saddr = saddr;
-+ fl4.saddr = lsrc? : saddr;
- fl4.flowi4_uid = sock_net_uid(net, NULL);
-+ fl4.fl4_gw = 0;
-
- if (fib4_rules_early_flow_dissect(net, skb, &fl4, &_flkeys)) {
- flkeys = &_flkeys;
-@@ -2015,6 +2024,8 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- }
-
- err = fib_lookup(net, &fl4, res, 0);
-+ fl4.flowi4_iif = dev->ifindex;
-+ fl4.saddr = saddr;
- if (err != 0) {
- if (!IN_DEV_FORWARD(in_dev))
- err = -EHOSTUNREACH;
-@@ -2029,7 +2040,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-
- if (res->type == RTN_LOCAL) {
- err = fib_validate_source(skb, saddr, daddr, tos,
-- 0, dev, in_dev, &itag);
-+ 0, dev, in_dev, &itag, 1);
- if (err < 0)
- goto martian_source;
- goto local_input;
-@@ -2043,16 +2054,19 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- goto martian_destination;
-
- make_route:
-- err = ip_mkroute_input(skb, res, in_dev, daddr, saddr, tos, flkeys);
-+ err = ip_mkroute_input(skb, res, &fl4, in_dev, daddr, saddr, tos,
-+ flkeys, lsrc);
- out: return err;
-
- brd_input:
- if (skb->protocol != htons(ETH_P_IP))
- goto e_inval;
-+ if (lsrc)
-+ goto e_inval;
-
- if (!ipv4_is_zeronet(saddr)) {
- err = fib_validate_source(skb, saddr, 0, tos, 0, dev,
-- in_dev, &itag);
-+ in_dev, &itag, 1);
- if (err < 0)
- goto martian_source;
- }
-@@ -2156,9 +2170,26 @@ int ip_route_input_noref(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- }
- EXPORT_SYMBOL(ip_route_input_noref);
-
-+int ip_route_input_lookup(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-+ u8 tos, struct net_device *dev, __be32 lsrc)
-+{
-+ struct fib_result res;
-+ int err;
-+
-+ tos &= IPTOS_RT_MASK;
-+ rcu_read_lock();
-+ err = ip_route_input_common_rcu(skb, daddr, saddr, tos, dev, lsrc,
-+ &res);
-+ rcu_read_unlock();
-+
-+ return err;
-+}
-+EXPORT_SYMBOL(ip_route_input_lookup);
-+
- /* called with rcu_read_lock held */
--int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-- u8 tos, struct net_device *dev, struct fib_result *res)
-+int ip_route_input_common_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-+ u8 tos, struct net_device *dev, __be32 lsrc,
-+ struct fib_result *res)
- {
- /* Multicast recognition logic is moved from route cache to here.
- The problem was that too many Ethernet cards have broken/missing
-@@ -2204,7 +2235,13 @@ int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- return err;
- }
-
-- return ip_route_input_slow(skb, daddr, saddr, tos, dev, res);
-+ return ip_route_input_slow(skb, daddr, saddr, tos, dev, lsrc, res);
-+}
-+
-+int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-+ u8 tos, struct net_device *dev, struct fib_result *res)
-+{
-+ return ip_route_input_common_rcu(skb, daddr, saddr, tos, dev, 0, res);
- }
-
- /* called with rcu_read_lock() */
-@@ -2456,6 +2493,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
- fl4->daddr = fl4->saddr = htonl(INADDR_LOOPBACK);
- dev_out = net->loopback_dev;
- fl4->flowi4_oif = LOOPBACK_IFINDEX;
-+ fl4->fl4_gw = 0;
- res->type = RTN_LOCAL;
- flags |= RTCF_LOCAL;
- goto make_route;
-@@ -2514,6 +2552,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
- orig_oif = FIB_RES_OIF(*res);
-
- fl4->flowi4_oif = dev_out->ifindex;
-+ fl4->fl4_gw = 0;
- flags |= RTCF_LOCAL;
- goto make_route;
- }
-diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
-index d159e9e7835b..8c96a28ae3c9 100644
---- a/net/netfilter/nf_nat_core.c
-+++ b/net/netfilter/nf_nat_core.c
-@@ -1100,6 +1100,49 @@ static struct nf_nat_hook nat_hook = {
- .manip_pkt = nf_nat_manip_pkt,
- };
-
-+unsigned int ip_nat_route_input(void *priv,
-+ struct sk_buff *skb,
-+ const struct nf_hook_state *state)
-+{
-+ struct iphdr *iph;
-+ struct nf_conn *conn;
-+ enum ip_conntrack_info ctinfo;
-+ enum ip_conntrack_dir dir;
-+ unsigned long statusbit;
-+ __be32 saddr;
-+
-+ if (!(conn = nf_ct_get(skb, &ctinfo)))
-+ return NF_ACCEPT;
-+
-+ if (!(conn->status & IPS_NAT_DONE_MASK))
-+ return NF_ACCEPT;
-+ dir = CTINFO2DIR(ctinfo);
-+ statusbit = IPS_SRC_NAT;
-+ if (dir == IP_CT_DIR_REPLY)
-+ statusbit ^= IPS_NAT_MASK;
-+ if (!(conn->status & statusbit))
-+ return NF_ACCEPT;
-+
-+ if (skb_dst(skb))
-+ return NF_ACCEPT;
-+
-+ if (skb->len < sizeof(struct iphdr))
-+ return NF_ACCEPT;
-+
-+ /* use daddr in other direction as masquerade address (lsrc) */
-+ iph = ip_hdr(skb);
-+ saddr = conn->tuplehash[!dir].tuple.dst.u3.ip;
-+ if (saddr == iph->saddr)
-+ return NF_ACCEPT;
-+
-+ if (ip_route_input_lookup(skb, iph->daddr, iph->saddr, iph->tos,
-+ skb->dev, saddr))
-+ return NF_DROP;
-+
-+ return NF_ACCEPT;
-+}
-+EXPORT_SYMBOL_GPL(ip_nat_route_input);
-+
- static int __init nf_nat_init(void)
- {
- int ret, i;
-diff --git a/security/selinux/nlmsgtab.c b/security/selinux/nlmsgtab.c
-index 9cec81209617..820ede89c74a 100644
---- a/security/selinux/nlmsgtab.c
-+++ b/security/selinux/nlmsgtab.c
-@@ -83,6 +83,9 @@ static const struct nlmsg_perm nlmsg_route_perms[] =
- { RTM_NEWCHAIN, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
- { RTM_DELCHAIN, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
- { RTM_GETCHAIN, NETLINK_ROUTE_SOCKET__NLMSG_READ },
-+ { RTM_NEWARPRULE, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
-+ { RTM_DELARPRULE, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
-+ { RTM_GETARPRULE, NETLINK_ROUTE_SOCKET__NLMSG_READ },
- };
-
- static const struct nlmsg_perm nlmsg_tcpdiag_perms[] =
-@@ -166,7 +169,7 @@ int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm)
- * structures at the top of this file with the new mappings
- * before updating the BUILD_BUG_ON() macro!
- */
-- BUILD_BUG_ON(RTM_MAX != (RTM_NEWCHAIN + 3));
-+ BUILD_BUG_ON(RTM_MAX != (RTM_NEWARPRULE + 3));
- err = nlmsg_perm(nlmsg_type, perm, nlmsg_route_perms,
- sizeof(nlmsg_route_perms));
- break;
diff --git a/sys-kernel/boest-v5.0.15/0003-pool-2.6.25-disable-tcp-debug.diff.patch b/sys-kernel/boest-v5.0.15/0003-pool-2.6.25-disable-tcp-debug.diff.patch
deleted file mode 100644
index 7238be48..00000000
--- a/sys-kernel/boest-v5.0.15/0003-pool-2.6.25-disable-tcp-debug.diff.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From e614f758ecc4c0ec3ee6f8c57038b28879b23e81 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Sun, 15 Feb 2009 14:51:33 +0100
-Subject: [PATCH 03/12] pool/2.6.25-disable-tcp-debug.diff
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- include/net/tcp.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 4c068f01a812..5835fb7b05b6 100644
---- a/include/net/tcp.h
-+++ b/include/net/tcp.h
-@@ -18,7 +18,7 @@
- #ifndef _TCP_H
- #define _TCP_H
-
--#define FASTRETRANS_DEBUG 1
-+#define FASTRETRANS_DEBUG 0
-
- #include <linux/list.h>
- #include <linux/tcp.h>
diff --git a/sys-kernel/boest-v5.0.15/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch b/sys-kernel/boest-v5.0.15/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch
deleted file mode 100644
index a44fbd18..00000000
--- a/sys-kernel/boest-v5.0.15/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From e6e7ea0dc99810272d61cdf061d14bad950f10c7 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 8 Oct 2008 10:00:42 +0200
-Subject: [PATCH 04/12] TCP: add a sysctl to disable simultaneous connection
- opening.
-
-Strict implementation of RFC793 (TCP) requires support for a feature
-called "simultaneous connect", which allows two clients to connect to
-each other without anyone entering a listening state. While almost
-never used, and supported by few OSes, Linux supports this feature.
-
-However, it introduces a weakness in the protocol which makes it very
-easy for an attacker to prevent a client from connecting to a known
-server. The attacker only has to guess the source port to shut down
-the client connection during its establishment. The impact is limited,
-but it may be used to prevent an antivirus or IPS from fetching updates
-and not detecting an attack, or to prevent an SSL gateway from fetching
-a CRL for example.
-
-This patch provides a new sysctl "tcp_simult_connect" to enable or disable
-support for this useless feature. It comes disabled by default.
-
-Hundreds of systems running with that feature disabled for more than 4 years
-have never encountered an application which requires it. It is almost never
-supported by firewalls BTW.
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Reviewed-by: Bertrand Jacquin <bertrand@jacquin.bzh>
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- Documentation/networking/ip-sysctl.txt | 22 ++++++++++++++++++++++
- include/net/netns/ipv4.h | 1 +
- include/uapi/linux/sysctl.h | 1 +
- net/ipv4/sysctl_net_ipv4.c | 7 +++++++
- net/ipv4/tcp_input.c | 6 +++++-
- 5 files changed, 36 insertions(+), 1 deletion(-)
-
-diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
-index 8b77e97b7d14..ab6d2945f53b 100644
---- a/Documentation/networking/ip-sysctl.txt
-+++ b/Documentation/networking/ip-sysctl.txt
-@@ -199,6 +199,28 @@ inet_peer_maxttl - INTEGER
-
- TCP variables:
-
-+tcp_simult_connect - BOOLEAN
-+ Enables TCP simultaneous connect feature conforming to RFC793.
-+ Strict implementation of RFC793 (TCP) requires support for a feature
-+ called "simultaneous connect", which allows two clients to connect to
-+ each other without anyone entering a listening state. While almost
-+ never used, and supported by few OSes, Linux supports this feature.
-+
-+ However, it introduces a weakness in the protocol which makes it very
-+ easy for an attacker to prevent a client from connecting to a known
-+ server. The attacker only has to guess the source port to shut down
-+ the client connection during its establishment. The impact is limited,
-+ but it may be used to prevent an antivirus or IPS from fetching updates
-+ and not detecting an attack, or to prevent an SSL gateway from fetching
-+ a CRL for example.
-+
-+ If you want absolute compatibility with any possible application,
-+ you should set it to 1. If you prefer to enhance security on your
-+ systems you'd better let it to 0. After four years of usage on
-+ hundreds of systems, no application was ever found to require this
-+ feature, which is not even supported by most firewalls.
-+ Default: 0
-+
- somaxconn - INTEGER
- Limit of socket listen() backlog, known in userspace as SOMAXCONN.
- Defaults to 128. See also tcp_max_syn_backlog for additional tuning
-diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
-index 104a6669e344..f406fdc12340 100644
---- a/include/net/netns/ipv4.h
-+++ b/include/net/netns/ipv4.h
-@@ -140,6 +140,7 @@ struct netns_ipv4 {
- int sysctl_tcp_recovery;
- int sysctl_tcp_thin_linear_timeouts;
- int sysctl_tcp_slow_start_after_idle;
-+ int sysctl_tcp_simult_connect;
- int sysctl_tcp_retrans_collapse;
- int sysctl_tcp_stdurg;
- int sysctl_tcp_rfc1337;
-diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
-index 87aa2a6d9125..c94a1099bc5b 100644
---- a/include/uapi/linux/sysctl.h
-+++ b/include/uapi/linux/sysctl.h
-@@ -426,6 +426,7 @@ enum
- NET_TCP_ALLOWED_CONG_CONTROL=123,
- NET_TCP_MAX_SSTHRESH=124,
- NET_TCP_FRTO_RESPONSE=125,
-+ NET_TCP_SIMULT_CONNECT=126,
- };
-
- enum {
-diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
-index eeb4041fa5f9..5d6345007a7d 100644
---- a/net/ipv4/sysctl_net_ipv4.c
-+++ b/net/ipv4/sysctl_net_ipv4.c
-@@ -515,6 +515,13 @@ static struct ctl_table ipv4_table[] = {
- .mode = 0444,
- .proc_handler = proc_tcp_available_congestion_control,
- },
-+ {
-+ .procname = "tcp_simult_connect",
-+ .data = &init_net.ipv4.sysctl_tcp_simult_connect,
-+ .maxlen = sizeof(int),
-+ .mode = 0644,
-+ .proc_handler = &proc_dointvec,
-+ },
- {
- .procname = "tcp_allowed_congestion_control",
- .maxlen = TCP_CA_BUF_MAX,
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 95b2e31fff08..156399ec006c 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -5773,6 +5773,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
- const struct tcphdr *th)
- {
- struct inet_connection_sock *icsk = inet_csk(sk);
-+ struct net *net = sock_net(sk);
- struct tcp_sock *tp = tcp_sk(sk);
- struct tcp_fastopen_cookie foc = { .len = -1 };
- int saved_clamp = tp->rx_opt.mss_clamp;
-@@ -5928,10 +5929,13 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
- tcp_paws_reject(&tp->rx_opt, 0))
- goto discard_and_undo;
-
-- if (th->syn) {
-+ if (th->syn && net->ipv4.sysctl_tcp_simult_connect) {
- /* We see SYN without ACK. It is attempt of
- * simultaneous connect with crossed SYNs.
- * Particularly, it can be connect to self.
-+ * This feature is disabled by default as it introduces
-+ * weakness in the protocol. It can be enabled by a
-+ * sysctl.
- */
- tcp_set_state(sk, TCP_SYN_RECV);
-
diff --git a/sys-kernel/boest-v5.0.15/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch b/sys-kernel/boest-v5.0.15/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch
deleted file mode 100644
index e25168cd..00000000
--- a/sys-kernel/boest-v5.0.15/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From dc7aaae6fda5cbe8ae0149b9fa74c666dc9137d5 Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Wed, 9 Jan 2013 00:28:28 +0100
-Subject: [PATCH 06/12] Disable CONFIG_PROCESSOR_SELECT printk()'s
-
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- arch/x86/kernel/cpu/common.c | 17 -----------------
- 1 file changed, 17 deletions(-)
-
-diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index cb28e98a0659..e6c914785fad 100644
---- a/arch/x86/kernel/cpu/common.c
-+++ b/arch/x86/kernel/cpu/common.c
-@@ -1137,10 +1137,6 @@ void __init early_cpu_init(void)
- const struct cpu_dev *const *cdev;
- int count = 0;
-
--#ifdef CONFIG_PROCESSOR_SELECT
-- pr_info("KERNEL supported cpus:\n");
--#endif
--
- for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) {
- const struct cpu_dev *cpudev = *cdev;
-
-@@ -1148,19 +1144,6 @@ void __init early_cpu_init(void)
- break;
- cpu_devs[count] = cpudev;
- count++;
--
--#ifdef CONFIG_PROCESSOR_SELECT
-- {
-- unsigned int j;
--
-- for (j = 0; j < 2; j++) {
-- if (!cpudev->c_ident[j])
-- continue;
-- pr_info(" %s %s\n", cpudev->c_vendor,
-- cpudev->c_ident[j]);
-- }
-- }
--#endif
- }
- early_identify_cpu(&boot_cpu_data);
- }
diff --git a/sys-kernel/boest-v5.0.15/0008-fs-Enable-link-security-restrictions-by-default.patch b/sys-kernel/boest-v5.0.15/0008-fs-Enable-link-security-restrictions-by-default.patch
deleted file mode 100644
index 01be265c..00000000
--- a/sys-kernel/boest-v5.0.15/0008-fs-Enable-link-security-restrictions-by-default.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 42a4380f4f49e6502bdde6dfcce55c9935f2cbd8 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Fri, 2 Nov 2012 05:32:06 +0000
-Subject: [PATCH 08/12] fs: Enable link security restrictions by default
-
-This reverts commit 561ec64ae67ef25cac8d72bb9c4bfc955edfd415
-('VFS: don't do protected {sym,hard}links by default').
----
- fs/namei.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/namei.c b/fs/namei.c
-index 914178cdbe94..bd94f65a9efd 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -885,8 +885,8 @@ static inline void put_link(struct nameidata *nd)
- path_put(&last->link);
- }
-
--int sysctl_protected_symlinks __read_mostly = 0;
--int sysctl_protected_hardlinks __read_mostly = 0;
-+int sysctl_protected_symlinks __read_mostly = 1;
-+int sysctl_protected_hardlinks __read_mostly = 1;
- int sysctl_protected_fifos __read_mostly;
- int sysctl_protected_regular __read_mostly;
-
diff --git a/sys-kernel/boest-v5.0.15/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch b/sys-kernel/boest-v5.0.15/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch
deleted file mode 100644
index 0c59e608..00000000
--- a/sys-kernel/boest-v5.0.15/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 063bf6dce6c5154afa63e1462b6867a9d49cb2af Mon Sep 17 00:00:00 2001
-From: Laura Abbott <labbott@fedoraproject.org>
-Date: Tue, 8 Sep 2015 09:53:38 -0700
-Subject: [PATCH 09/12] usb-storage: Disable UAS on JMicron SATA enclosure
-
-Steve Ellis reported incorrect block sizes and alignement
-offsets with a SATA enclosure. Adding a quirk to disable
-UAS fixes the problems.
-
-Reported-by: Steven Ellis <sellis@redhat.com>
-Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
----
- drivers/usb/storage/unusual_uas.h | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
-index d0bdebd87ce3..1b23741036ee 100644
---- a/drivers/usb/storage/unusual_uas.h
-+++ b/drivers/usb/storage/unusual_uas.h
-@@ -87,12 +87,15 @@ UNUSUAL_DEV(0x2537, 0x1068, 0x0000, 0x9999,
- USB_SC_DEVICE, USB_PR_DEVICE, NULL,
- US_FL_IGNORE_UAS),
-
--/* Reported-by: Takeo Nakayama <javhera@gmx.com> */
-+/*
-+ * Initially Reported-by: Takeo Nakayama <javhera@gmx.com>
-+ * UAS Ignore Reported by Steven Ellis <sellis@redhat.com>
-+ */
- UNUSUAL_DEV(0x357d, 0x7788, 0x0000, 0x9999,
- "JMicron",
- "JMS566",
- USB_SC_DEVICE, USB_PR_DEVICE, NULL,
-- US_FL_NO_REPORT_OPCODES),
-+ US_FL_NO_REPORT_OPCODES | US_FL_IGNORE_UAS),
-
- /* Reported-by: Hans de Goede <hdegoede@redhat.com> */
- UNUSUAL_DEV(0x4971, 0x1012, 0x0000, 0x9999,
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0194-media-m88ds3103-serialize-reset-messages-in-m88ds310.patch b/sys-kernel/boest-v5.0.15/raspberrypi/0194-media-m88ds3103-serialize-reset-messages-in-m88ds310.patch
deleted file mode 100644
index 875c4fc2..00000000
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0194-media-m88ds3103-serialize-reset-messages-in-m88ds310.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From c06e126d6f58fcb9966f0e41c61587e200490914 Mon Sep 17 00:00:00 2001
-From: James Hutchinson <jahutchinson99@googlemail.com>
-Date: Sun, 13 Jan 2019 16:13:47 -0500
-Subject: [PATCH 194/194] media: m88ds3103: serialize reset messages in
- m88ds3103_set_frontend
-
-commit 981fbe3da20a6f35f17977453bce7dfc1664d74f upstream.
-
-Ref: https://bugzilla.kernel.org/show_bug.cgi?id=199323
-
-Users are experiencing problems with the DVBSky S960/S960C USB devices
-since the following commit:
-
-9d659ae: ("locking/mutex: Add lock handoff to avoid starvation")
-
-The device malfunctions after running for an indeterminable period of
-time, and the problem can only be cleared by rebooting the machine.
-
-It is possible to encourage the problem to surface by blocking the
-signal to the LNB.
-
-Further debugging revealed the cause of the problem.
-
-In the following capture:
-- thread #1325 is running m88ds3103_set_frontend
-- thread #42 is running ts2020_stat_work
-
-a> [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 07 80
- [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 08
- [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 68 3f
- [42] usb 1-1: dvb_usb_v2_generic_io: <<< 08 ff
- [42] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
- [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07
- [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 60 3d
- [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07 ff
-b> [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 07 00
- [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 07
- [42] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
- [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07
- [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 60 21
- [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07 ff
- [42] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
- [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07
- [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 60 66
- [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07 ff
- [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
- [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 07
- [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 60 02 10 0b
- [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 07
-
-Two i2c messages are sent to perform a reset in m88ds3103_set_frontend:
-
- a. 0x07, 0x80
- b. 0x07, 0x00
-
-However, as shown in the capture, the regmap mutex is being handed over
-to another thread (ts2020_stat_work) in between these two messages.
-
->From here, the device responds to every i2c message with an 07 message,
-and will only return to normal operation following a power cycle.
-
-Use regmap_multi_reg_write to group the two reset messages, ensuring
-both are processed before the regmap mutex is unlocked.
-
-Signed-off-by: James Hutchinson <jahutchinson99@googlemail.com>
-Reviewed-by: Antti Palosaari <crope@iki.fi>
-Signed-off-by: Sean Young <sean@mess.org>
-Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
----
- drivers/media/dvb-frontends/m88ds3103.c | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
-index 123f2a33738b..403f42806455 100644
---- a/drivers/media/dvb-frontends/m88ds3103.c
-+++ b/drivers/media/dvb-frontends/m88ds3103.c
-@@ -309,6 +309,9 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
- u16 u16tmp;
- u32 tuner_frequency_khz, target_mclk;
- s32 s32tmp;
-+ static const struct reg_sequence reset_buf[] = {
-+ {0x07, 0x80}, {0x07, 0x00}
-+ };
-
- dev_dbg(&client->dev,
- "delivery_system=%d modulation=%d frequency=%u symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
-@@ -321,11 +324,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
- }
-
- /* reset */
-- ret = regmap_write(dev->regmap, 0x07, 0x80);
-- if (ret)
-- goto err;
--
-- ret = regmap_write(dev->regmap, 0x07, 0x00);
-+ ret = regmap_multi_reg_write(dev->regmap, reset_buf, 2);
- if (ret)
- goto err;
-
diff --git a/sys-kernel/boest-v5.0.16/0002-pool-2.6.25-tcp-timewait-20s.diff.patch b/sys-kernel/boest-v5.0.16/0002-pool-2.6.25-tcp-timewait-20s.diff.patch
deleted file mode 100644
index 74ef4488..00000000
--- a/sys-kernel/boest-v5.0.16/0002-pool-2.6.25-tcp-timewait-20s.diff.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From b91260ac92111f634ecaf45638d2b214fa902ed1 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Sun, 15 Feb 2009 14:51:33 +0100
-Subject: [PATCH 02/12] pool/2.6.25-tcp-timewait-20s.diff
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- include/net/tcp.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/include/net/tcp.h b/include/net/tcp.h
-index e0a65c067662..4c068f01a812 100644
---- a/include/net/tcp.h
-+++ b/include/net/tcp.h
-@@ -118,8 +118,8 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
- * initial RTO.
- */
-
--#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
-- * state, about 60 seconds */
-+#define TCP_TIMEWAIT_LEN (20*HZ) /* how long to wait to destroy TIME-WAIT
-+ * state, about 20 seconds */
- #define TCP_FIN_TIMEOUT TCP_TIMEWAIT_LEN
- /* BSD style FIN_WAIT2 deadlock breaker.
- * It used to be 3min, new value is 60sec,
diff --git a/sys-kernel/boest-v5.0.16/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch b/sys-kernel/boest-v5.0.16/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch
deleted file mode 100644
index 096574d2..00000000
--- a/sys-kernel/boest-v5.0.16/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 4b5fbea773dc9d66f25f880f6bece8126f82a68e Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Sun, 15 Feb 2009 14:51:33 +0100
-Subject: [PATCH 05/12] pool/2.6.25-disable-kbdrate-at-boot.diff
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Reviewed-by: Bertrand Jacquin <bertrand@jacquin.bzh>
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- arch/x86/boot/main.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/arch/x86/boot/main.c b/arch/x86/boot/main.c
-index 73532543d689..e0d26ecfb713 100644
---- a/arch/x86/boot/main.c
-+++ b/arch/x86/boot/main.c
-@@ -64,6 +64,8 @@ static void copy_boot_params(void)
- */
- static void keyboard_init(void)
- {
-+/*This may take several seconds if the system has no kbd controller */
-+#ifdef CONFIG_INPUT_KEYBOARD
- struct biosregs ireg, oreg;
- initregs(&ireg);
-
-@@ -73,6 +75,7 @@ static void keyboard_init(void)
-
- ireg.ax = 0x0305; /* Set keyboard repeat rate */
- intcall(0x16, &ireg, NULL);
-+#endif
- }
-
- /*
diff --git a/sys-kernel/boest-v5.0.16/0007-This-patch-adds-support-for-a-restricted-user-contro.patch b/sys-kernel/boest-v5.0.16/0007-This-patch-adds-support-for-a-restricted-user-contro.patch
deleted file mode 100644
index d9f04458..00000000
--- a/sys-kernel/boest-v5.0.16/0007-This-patch-adds-support-for-a-restricted-user-contro.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 812ca57f5a82891ee935585673aac7c4a2b3bf2d Mon Sep 17 00:00:00 2001
-From: "Anthony G. Basile" <blueness@gentoo.org>
-Date: Tue, 15 Jan 2019 10:16:38 -0500
-Subject: [PATCH 07/12] This patch adds support for a restricted
- user-controlled namespace on tmpfs filesystem used to house PaX flags. The
- namespace must be of the form user.pax.* and its value cannot exceed a size
- of 8 bytes.
-
-This is needed even on all Gentoo systems so that XATTR_PAX flags
-are preserved for users who might build packages using portage on
-a tmpfs system with a non-hardened kernel and then switch to a
-hardened kernel with XATTR_PAX enabled.
-
-The namespace is added to any user with Extended Attribute support
-enabled for tmpfs. Users who do not enable xattrs will not have
-the XATTR_PAX flags preserved.
----
- include/uapi/linux/xattr.h | 4 ++++
- mm/shmem.c | 15 +++++++++++++++
- 2 files changed, 19 insertions(+)
-
-diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
-index c1395b5bd432..bac6d48eca8e 100644
---- a/include/uapi/linux/xattr.h
-+++ b/include/uapi/linux/xattr.h
-@@ -77,5 +77,9 @@
- #define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
- #define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
-
-+/* User namespace */
-+#define XATTR_PAX_PREFIX XATTR_USER_PREFIX "pax."
-+#define XATTR_PAX_FLAGS_SUFFIX "flags"
-+#define XATTR_NAME_PAX_FLAGS XATTR_PAX_PREFIX XATTR_PAX_FLAGS_SUFFIX
-
- #endif /* _UAPI_LINUX_XATTR_H */
-diff --git a/mm/shmem.c b/mm/shmem.c
-index 2c012eee133d..b8bce7b3c614 100644
---- a/mm/shmem.c
-+++ b/mm/shmem.c
-@@ -3140,6 +3140,14 @@ static int shmem_xattr_handler_set(const struct xattr_handler *handler,
- struct shmem_inode_info *info = SHMEM_I(inode);
-
- name = xattr_full_name(handler, name);
-+
-+ if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
-+ if (strcmp(name, XATTR_NAME_PAX_FLAGS))
-+ return -EOPNOTSUPP;
-+ if (size > 8)
-+ return -EINVAL;
-+ }
-+
- return simple_xattr_set(&info->xattrs, name, value, size, flags);
- }
-
-@@ -3155,6 +3163,12 @@ static const struct xattr_handler shmem_trusted_xattr_handler = {
- .set = shmem_xattr_handler_set,
- };
-
-+static const struct xattr_handler shmem_user_xattr_handler = {
-+ .prefix = XATTR_USER_PREFIX,
-+ .get = shmem_xattr_handler_get,
-+ .set = shmem_xattr_handler_set,
-+};
-+
- static const struct xattr_handler *shmem_xattr_handlers[] = {
- #ifdef CONFIG_TMPFS_POSIX_ACL
- &posix_acl_access_xattr_handler,
-@@ -3162,6 +3176,7 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
- #endif
- &shmem_security_xattr_handler,
- &shmem_trusted_xattr_handler,
-+ &shmem_user_xattr_handler,
- NULL
- };
-
diff --git a/sys-kernel/boest-v5.0.16/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch b/sys-kernel/boest-v5.0.16/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch
deleted file mode 100644
index 424416a7..00000000
--- a/sys-kernel/boest-v5.0.16/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 69f8bfcb8e0af72b0d448fc86994727034f14341 Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Tue, 15 Jan 2019 10:16:38 -0500
-Subject: [PATCH 10/12] 5.0:2600_enable-key-swapping-for-apple-mac.patch
-
----
- drivers/hid/hid-apple.c | 76 +++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 74 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
-index 1cb41992aaa1..c34a3be5085a 100644
---- a/drivers/hid/hid-apple.c
-+++ b/drivers/hid/hid-apple.c
-@@ -54,6 +54,22 @@ MODULE_PARM_DESC(swap_opt_cmd, "Swap the Option (\"Alt\") and Command (\"Flag\")
- "(For people who want to keep Windows PC keyboard muscle memory. "
- "[0] = as-is, Mac layout. 1 = swapped, Windows layout.)");
-
-+static unsigned int swap_fn_leftctrl;
-+module_param(swap_fn_leftctrl, uint, 0644);
-+MODULE_PARM_DESC(swap_fn_leftctrl, "Swap the Fn and left Control keys. "
-+ "(For people who want to keep PC keyboard muscle memory. "
-+ "[0] = as-is, Mac layout, 1 = swapped, PC layout)");
-+
-+static unsigned int rightalt_as_rightctrl;
-+module_param(rightalt_as_rightctrl, uint, 0644);
-+MODULE_PARM_DESC(rightalt_as_rightctrl, "Use the right Alt key as a right Ctrl key. "
-+ "[0] = as-is, Mac layout. 1 = Right Alt is right Ctrl");
-+
-+static unsigned int ejectcd_as_delete;
-+module_param(ejectcd_as_delete, uint, 0644);
-+MODULE_PARM_DESC(ejectcd_as_delete, "Use Eject-CD key as Delete key. "
-+ "([0] = disabled, 1 = enabled)");
-+
- struct apple_sc {
- unsigned long quirks;
- unsigned int fn_on;
-@@ -166,6 +182,21 @@ static const struct apple_key_translation swapped_option_cmd_keys[] = {
- { }
- };
-
-+static const struct apple_key_translation swapped_fn_leftctrl_keys[] = {
-+ { KEY_FN, KEY_LEFTCTRL },
-+ { }
-+};
-+
-+static const struct apple_key_translation rightalt_as_rightctrl_keys[] = {
-+ { KEY_RIGHTALT, KEY_RIGHTCTRL },
-+ { }
-+};
-+
-+static const struct apple_key_translation ejectcd_as_delete_keys[] = {
-+ { KEY_EJECTCD, KEY_DELETE },
-+ { }
-+};
-+
- static const struct apple_key_translation *apple_find_translation(
- const struct apple_key_translation *table, u16 from)
- {
-@@ -185,9 +216,11 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
- struct apple_sc *asc = hid_get_drvdata(hid);
- const struct apple_key_translation *trans, *table;
-
-- if (usage->code == KEY_FN) {
-+ u16 fn_keycode = (swap_fn_leftctrl) ? (KEY_LEFTCTRL) : (KEY_FN);
-+
-+ if (usage->code == fn_keycode) {
- asc->fn_on = !!value;
-- input_event(input, usage->type, usage->code, value);
-+ input_event(input, usage->type, KEY_FN, value);
- return 1;
- }
-
-@@ -266,6 +299,30 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
- }
- }
-
-+ if (swap_fn_leftctrl) {
-+ trans = apple_find_translation(swapped_fn_leftctrl_keys, usage->code);
-+ if (trans) {
-+ input_event(input, usage->type, trans->to, value);
-+ return 1;
-+ }
-+ }
-+
-+ if (ejectcd_as_delete) {
-+ trans = apple_find_translation(ejectcd_as_delete_keys, usage->code);
-+ if (trans) {
-+ input_event(input, usage->type, trans->to, value);
-+ return 1;
-+ }
-+ }
-+
-+ if (rightalt_as_rightctrl) {
-+ trans = apple_find_translation(rightalt_as_rightctrl_keys, usage->code);
-+ if (trans) {
-+ input_event(input, usage->type, trans->to, value);
-+ return 1;
-+ }
-+ }
-+
- return 0;
- }
-
-@@ -329,6 +386,21 @@ static void apple_setup_input(struct input_dev *input)
-
- for (trans = apple_iso_keyboard; trans->from; trans++)
- set_bit(trans->to, input->keybit);
-+
-+ if (swap_fn_leftctrl) {
-+ for (trans = swapped_fn_leftctrl_keys; trans->from; trans++)
-+ set_bit(trans->to, input->keybit);
-+ }
-+
-+ if (ejectcd_as_delete) {
-+ for (trans = ejectcd_as_delete_keys; trans->from; trans++)
-+ set_bit(trans->to, input->keybit);
-+ }
-+
-+ if (rightalt_as_rightctrl) {
-+ for (trans = rightalt_as_rightctrl_keys; trans->from; trans++)
-+ set_bit(trans->to, input->keybit);
-+ }
- }
-
- static int apple_input_mapping(struct hid_device *hdev, struct hid_input *hi,
diff --git a/sys-kernel/boest-v5.0.16/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch b/sys-kernel/boest-v5.0.16/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch
deleted file mode 100644
index d2f51111..00000000
--- a/sys-kernel/boest-v5.0.16/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From 16fa500325672b92da6cdf39a10484d3bd875df3 Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Fri, 28 Dec 2018 18:58:06 -0500
-Subject: [PATCH 11/12] 5.0:4567_distro-Gentoo-Kconfig.patch
-
----
- Kconfig | 2 +
- distro/Kconfig | 147 +++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 149 insertions(+)
-
-diff --git a/Kconfig b/Kconfig
-index 48a80beab685..a5ad73c66099 100644
---- a/Kconfig
-+++ b/Kconfig
-@@ -30,3 +30,5 @@ source "crypto/Kconfig"
- source "lib/Kconfig"
-
- source "lib/Kconfig.debug"
-+
-+source "distro/Kconfig"
-diff --git a/distro/Kconfig b/distro/Kconfig
-new file mode 100644
-index 000000000000..57379b7720de
---- /dev/null
-+++ b/distro/Kconfig
-@@ -0,0 +1,147 @@
-+menu "Gentoo Linux"
-+
-+config GENTOO_LINUX
-+ bool "Gentoo Linux support"
-+
-+ default y
-+
-+ help
-+ In order to boot Gentoo Linux a minimal set of config settings needs to
-+ be enabled in the kernel; to avoid the users from having to enable them
-+ manually as part of a Gentoo Linux installation or a new clean config,
-+ we enable these config settings by default for convenience.
-+
-+ See the settings that become available for more details and fine-tuning.
-+
-+config GENTOO_LINUX_UDEV
-+ bool "Linux dynamic and persistent device naming (userspace devfs) support"
-+
-+ depends on GENTOO_LINUX
-+ default y if GENTOO_LINUX
-+
-+ select DEVTMPFS
-+ select TMPFS
-+ select UNIX
-+
-+ select MMU
-+ select SHMEM
-+
-+ help
-+ In order to boot Gentoo Linux a minimal set of config settings needs to
-+ be enabled in the kernel; to avoid the users from having to enable them
-+ manually as part of a Gentoo Linux installation or a new clean config,
-+ we enable these config settings by default for convenience.
-+
-+ Currently this only selects TMPFS, DEVTMPFS and their dependencies.
-+ TMPFS is enabled to maintain a tmpfs file system at /dev/shm, /run and
-+ /sys/fs/cgroup; DEVTMPFS to maintain a devtmpfs file system at /dev.
-+
-+ Some of these are critical files that need to be available early in the
-+ boot process; if not available, it causes sysfs and udev to malfunction.
-+
-+ To ensure Gentoo Linux boots, it is best to leave this setting enabled;
-+ if you run a custom setup, you could consider whether to disable this.
-+
-+config GENTOO_LINUX_PORTAGE
-+ bool "Select options required by Portage features"
-+
-+ depends on GENTOO_LINUX
-+ default y if GENTOO_LINUX
-+
-+ select CGROUPS
-+ select NAMESPACES
-+ select IPC_NS
-+ select NET_NS
-+ select PID_NS
-+ select SYSVIPC
-+
-+ help
-+ This enables options required by various Portage FEATURES.
-+ Currently this selects:
-+
-+ CGROUPS (required for FEATURES=cgroup)
-+ IPC_NS (required for FEATURES=ipc-sandbox)
-+ NET_NS (required for FEATURES=network-sandbox)
-+ PID_NS (required for FEATURES=pid-sandbox)
-+ SYSVIPC (required by IPC_NS)
-+
-+
-+ It is highly recommended that you leave this enabled as these FEATURES
-+ are, or will soon be, enabled by default.
-+
-+menu "Support for init systems, system and service managers"
-+ visible if GENTOO_LINUX
-+
-+config GENTOO_LINUX_INIT_SCRIPT
-+ bool "OpenRC, runit and other script based systems and managers"
-+
-+ default y if GENTOO_LINUX
-+
-+ depends on GENTOO_LINUX
-+
-+ select BINFMT_SCRIPT
-+
-+ help
-+ The init system is the first thing that loads after the kernel booted.
-+
-+ These config settings allow you to select which init systems to support;
-+ instead of having to select all the individual settings all over the
-+ place, these settings allows you to select all the settings at once.
-+
-+ This particular setting enables all the known requirements for OpenRC,
-+ runit and similar script based systems and managers.
-+
-+ If you are unsure about this, it is best to leave this setting enabled.
-+
-+config GENTOO_LINUX_INIT_SYSTEMD
-+ bool "systemd"
-+
-+ default n
-+
-+ depends on GENTOO_LINUX && GENTOO_LINUX_UDEV
-+
-+ select AUTOFS4_FS
-+ select BLK_DEV_BSG
-+ select CGROUPS
-+ select CHECKPOINT_RESTORE
-+ select CRYPTO_HMAC
-+ select CRYPTO_SHA256
-+ select CRYPTO_USER_API_HASH
-+ select DEVPTS_MULTIPLE_INSTANCES
-+ select DMIID if X86_32 || X86_64 || X86
-+ select EPOLL
-+ select FANOTIFY
-+ select FHANDLE
-+ select INOTIFY_USER
-+ select IPV6
-+ select NET
-+ select NET_NS
-+ select PROC_FS
-+ select SECCOMP
-+ select SECCOMP_FILTER
-+ select SIGNALFD
-+ select SYSFS
-+ select TIMERFD
-+ select TMPFS_POSIX_ACL
-+ select TMPFS_XATTR
-+
-+ select ANON_INODES
-+ select BLOCK
-+ select EVENTFD
-+ select FSNOTIFY
-+ select INET
-+ select NLATTR
-+
-+ help
-+ The init system is the first thing that loads after the kernel booted.
-+
-+ These config settings allow you to select which init systems to support;
-+ instead of having to select all the individual settings all over the
-+ place, these settings allows you to select all the settings at once.
-+
-+ This particular setting enables all the known requirements for systemd;
-+ it also enables suggested optional settings, as the package suggests to.
-+
-+endmenu
-+
-+endmenu
diff --git a/sys-kernel/boest-v5.0.16/0012-WARNING-This-patch-works-with-gcc-versions-4.9-and-w.patch b/sys-kernel/boest-v5.0.16/0012-WARNING-This-patch-works-with-gcc-versions-4.9-and-w.patch
deleted file mode 100644
index 3d8702f9..00000000
--- a/sys-kernel/boest-v5.0.16/0012-WARNING-This-patch-works-with-gcc-versions-4.9-and-w.patch
+++ /dev/null
@@ -1,565 +0,0 @@
-From 531877bf7a058c91a178e711ea1d14c7a2fb137b Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Mon, 4 Mar 2019 08:10:52 -0500
-Subject: [PATCH 12/12] WARNING This patch works with gcc versions 4.9+ and
- with kernel version 4.13+ and should NOT be applied when compiling on older
- versions of gcc due to key name changes of the march flags introduced with
- the version 4.9 release of gcc.[1]
-
-Use the older version of this patch hosted on the same github for older
-versions of gcc.
-
-FEATURES
-This patch adds additional CPU options to the Linux kernel accessible under:
- Processor type and features --->
- Processor family --->
-
-The expanded microarchitectures include:
-* AMD Improved K8-family
-* AMD K10-family
-* AMD Family 10h (Barcelona)
-* AMD Family 14h (Bobcat)
-* AMD Family 16h (Jaguar)
-* AMD Family 15h (Bulldozer)
-* AMD Family 15h (Piledriver)
-* AMD Family 15h (Steamroller)
-* AMD Family 15h (Excavator)
-* AMD Family 17h (Zen)
-* Intel Silvermont low-power processors
-* Intel 1st Gen Core i3/i5/i7 (Nehalem)
-* Intel 1.5 Gen Core i3/i5/i7 (Westmere)
-* Intel 2nd Gen Core i3/i5/i7 (Sandybridge)
-* Intel 3rd Gen Core i3/i5/i7 (Ivybridge)
-* Intel 4th Gen Core i3/i5/i7 (Haswell)
-* Intel 5th Gen Core i3/i5/i7 (Broadwell)
-* Intel 6th Gen Core i3/i5/i7 (Skylake)
-* Intel 6th Gen Core i7/i9 (Skylake X)
-
-It also offers to compile passing the 'native' option which, "selects the CPU
-to generate code for at compilation time by determining the processor type of
-the compiling machine. Using -march=native enables all instruction subsets
-supported by the local machine and will produce code optimized for the local
-machine under the constraints of the selected instruction set."[3]
-
-MINOR NOTES
-This patch also changes 'atom' to 'bonnell' in accordance with the gcc v4.9
-changes. Note that upstream is using the deprecated 'match=atom' flags when I
-believe it should use the newer 'march=bonnell' flag for atom processors.[2]
-
-It is not recommended to compile on Atom-CPUs with the 'native' option.[4] The
-recommendation is to use the 'atom' option instead.
-
-BENEFITS
-Small but real speed increases are measurable using a make endpoint comparing
-a generic kernel to one built with one of the respective microarchs.
-
-See the following experimental evidence supporting this statement:
-https://github.com/graysky2/kernel_gcc_patch
-
-REQUIREMENTS
-linux version >=4.13
-gcc version >=4.9
-
-ACKNOWLEDGMENTS
-This patch builds on the seminal work by Jeroen.[5]
-
-REFERENCES
-1. https://gcc.gnu.org/gcc-4.9/changes.html
-2. https://bugzilla.kernel.org/show_bug.cgi?id=77461
-3. https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
-4. https://github.com/graysky2/kernel_gcc_patch/issues/15
-5. http://www.linuxforge.net/docs/linux/linux-gcc.php
----
- arch/x86/Kconfig.cpu | 235 +++++++++++++++++++++++++++++-----
- arch/x86/Makefile | 35 ++++-
- arch/x86/Makefile_32.cpu | 24 +++-
- arch/x86/include/asm/module.h | 40 ++++++
- 4 files changed, 297 insertions(+), 37 deletions(-)
-
-diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
-index 6adce15268bd..7d0709e548af 100644
---- a/arch/x86/Kconfig.cpu
-+++ b/arch/x86/Kconfig.cpu
-@@ -116,6 +116,7 @@ config MPENTIUMM
- config MPENTIUM4
- bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon"
- depends on X86_32
-+ select X86_P6_NOP
- ---help---
- Select this for Intel Pentium 4 chips. This includes the
- Pentium 4, Pentium D, P4-based Celeron and Xeon, and
-@@ -148,9 +149,8 @@ config MPENTIUM4
- -Paxville
- -Dempsey
-
--
- config MK6
-- bool "K6/K6-II/K6-III"
-+ bool "AMD K6/K6-II/K6-III"
- depends on X86_32
- ---help---
- Select this for an AMD K6-family processor. Enables use of
-@@ -158,7 +158,7 @@ config MK6
- flags to GCC.
-
- config MK7
-- bool "Athlon/Duron/K7"
-+ bool "AMD Athlon/Duron/K7"
- depends on X86_32
- ---help---
- Select this for an AMD Athlon K7-family processor. Enables use of
-@@ -166,12 +166,83 @@ config MK7
- flags to GCC.
-
- config MK8
-- bool "Opteron/Athlon64/Hammer/K8"
-+ bool "AMD Opteron/Athlon64/Hammer/K8"
- ---help---
- Select this for an AMD Opteron or Athlon64 Hammer-family processor.
- Enables use of some extended instructions, and passes appropriate
- optimization flags to GCC.
-
-+config MK8SSE3
-+ bool "AMD Opteron/Athlon64/Hammer/K8 with SSE3"
-+ ---help---
-+ Select this for improved AMD Opteron or Athlon64 Hammer-family processors.
-+ Enables use of some extended instructions, and passes appropriate
-+ optimization flags to GCC.
-+
-+config MK10
-+ bool "AMD 61xx/7x50/PhenomX3/X4/II/K10"
-+ ---help---
-+ Select this for an AMD 61xx Eight-Core Magny-Cours, Athlon X2 7x50,
-+ Phenom X3/X4/II, Athlon II X2/X3/X4, or Turion II-family processor.
-+ Enables use of some extended instructions, and passes appropriate
-+ optimization flags to GCC.
-+
-+config MBARCELONA
-+ bool "AMD Barcelona"
-+ ---help---
-+ Select this for AMD Family 10h Barcelona processors.
-+
-+ Enables -march=barcelona
-+
-+config MBOBCAT
-+ bool "AMD Bobcat"
-+ ---help---
-+ Select this for AMD Family 14h Bobcat processors.
-+
-+ Enables -march=btver1
-+
-+config MJAGUAR
-+ bool "AMD Jaguar"
-+ ---help---
-+ Select this for AMD Family 16h Jaguar processors.
-+
-+ Enables -march=btver2
-+
-+config MBULLDOZER
-+ bool "AMD Bulldozer"
-+ ---help---
-+ Select this for AMD Family 15h Bulldozer processors.
-+
-+ Enables -march=bdver1
-+
-+config MPILEDRIVER
-+ bool "AMD Piledriver"
-+ ---help---
-+ Select this for AMD Family 15h Piledriver processors.
-+
-+ Enables -march=bdver2
-+
-+config MSTEAMROLLER
-+ bool "AMD Steamroller"
-+ ---help---
-+ Select this for AMD Family 15h Steamroller processors.
-+
-+ Enables -march=bdver3
-+
-+config MEXCAVATOR
-+ bool "AMD Excavator"
-+ ---help---
-+ Select this for AMD Family 15h Excavator processors.
-+
-+ Enables -march=bdver4
-+
-+config MZEN
-+ bool "AMD Zen"
-+ ---help---
-+ Select this for AMD Family 17h Zen processors.
-+
-+ Enables -march=znver1
-+
- config MCRUSOE
- bool "Crusoe"
- depends on X86_32
-@@ -253,6 +324,7 @@ config MVIAC7
-
- config MPSC
- bool "Intel P4 / older Netburst based Xeon"
-+ select X86_P6_NOP
- depends on X86_64
- ---help---
- Optimize for Intel Pentium 4, Pentium D and older Nocona/Dempsey
-@@ -262,17 +334,9 @@ config MPSC
- using the cpu family field
- in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one.
-
--config MCORE2
-- bool "Core 2/newer Xeon"
-- ---help---
--
-- Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
-- 53xx) CPUs. You can distinguish newer from older Xeons by the CPU
-- family in /proc/cpuinfo. Newer ones have 6 and older ones 15
-- (not a typo)
--
- config MATOM
- bool "Intel Atom"
-+ select X86_P6_NOP
- ---help---
-
- Select this for the Intel Atom platform. Intel Atom CPUs have an
-@@ -280,6 +344,99 @@ config MATOM
- accordingly optimized code. Use a recent GCC with specific Atom
- support in order to fully benefit from selecting this option.
-
-+config MCORE2
-+ bool "Intel Core 2"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
-+ 53xx) CPUs. You can distinguish newer from older Xeons by the CPU
-+ family in /proc/cpuinfo. Newer ones have 6 and older ones 15
-+ (not a typo)
-+
-+ Enables -march=core2
-+
-+config MNEHALEM
-+ bool "Intel Nehalem"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 1st Gen Core processors in the Nehalem family.
-+
-+ Enables -march=nehalem
-+
-+config MWESTMERE
-+ bool "Intel Westmere"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for the Intel Westmere formerly Nehalem-C family.
-+
-+ Enables -march=westmere
-+
-+config MSILVERMONT
-+ bool "Intel Silvermont"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for the Intel Silvermont platform.
-+
-+ Enables -march=silvermont
-+
-+config MSANDYBRIDGE
-+ bool "Intel Sandy Bridge"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 2nd Gen Core processors in the Sandy Bridge family.
-+
-+ Enables -march=sandybridge
-+
-+config MIVYBRIDGE
-+ bool "Intel Ivy Bridge"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 3rd Gen Core processors in the Ivy Bridge family.
-+
-+ Enables -march=ivybridge
-+
-+config MHASWELL
-+ bool "Intel Haswell"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 4th Gen Core processors in the Haswell family.
-+
-+ Enables -march=haswell
-+
-+config MBROADWELL
-+ bool "Intel Broadwell"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 5th Gen Core processors in the Broadwell family.
-+
-+ Enables -march=broadwell
-+
-+config MSKYLAKE
-+ bool "Intel Skylake"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 6th Gen Core processors in the Skylake family.
-+
-+ Enables -march=skylake
-+
-+config MSKYLAKEX
-+ bool "Intel Skylake X"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 6th Gen Core processors in the Skylake X family.
-+
-+ Enables -march=skylake-avx512
-+
- config GENERIC_CPU
- bool "Generic-x86-64"
- depends on X86_64
-@@ -287,6 +444,19 @@ config GENERIC_CPU
- Generic x86-64 CPU.
- Run equally well on all x86-64 CPUs.
-
-+config MNATIVE
-+ bool "Native optimizations autodetected by GCC"
-+ ---help---
-+
-+ GCC 4.2 and above support -march=native, which automatically detects
-+ the optimum settings to use based on your processor. -march=native
-+ also detects and applies additional settings beyond -march specific
-+ to your CPU, (eg. -msse4). Unless you have a specific reason not to
-+ (e.g. distcc cross-compiling), you should probably be using
-+ -march=native rather than anything listed below.
-+
-+ Enables -march=native
-+
- endchoice
-
- config X86_GENERIC
-@@ -311,7 +481,7 @@ config X86_INTERNODE_CACHE_SHIFT
- config X86_L1_CACHE_SHIFT
- int
- default "7" if MPENTIUM4 || MPSC
-- default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
-+ default "6" if MK7 || MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR || MPENTIUMM || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
- default "4" if MELAN || M486 || MGEODEGX1
- default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
-
-@@ -329,35 +499,36 @@ config X86_ALIGNMENT_16
-
- config X86_INTEL_USERCOPY
- def_bool y
-- depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
-+ depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK8SSE3 || MK7 || MEFFICEON || MCORE2 || MK10 || MBARCELONA || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE
-
- config X86_USE_PPRO_CHECKSUM
- def_bool y
-- depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
-+ depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MK10 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MATOM || MNATIVE
-
- config X86_USE_3DNOW
- def_bool y
- depends on (MCYRIXIII || MK7 || MGEODE_LX) && !UML
-
--#
--# P6_NOPs are a relatively minor optimization that require a family >=
--# 6 processor, except that it is broken on certain VIA chips.
--# Furthermore, AMD chips prefer a totally different sequence of NOPs
--# (which work on all CPUs). In addition, it looks like Virtual PC
--# does not understand them.
--#
--# As a result, disallow these if we're not compiling for X86_64 (these
--# NOPs do work on all x86-64 capable chips); the list of processors in
--# the right-hand clause are the cores that benefit from this optimization.
--#
- config X86_P6_NOP
-- def_bool y
-- depends on X86_64
-- depends on (MCORE2 || MPENTIUM4 || MPSC)
-+ default n
-+ bool "Support for P6_NOPs on Intel chips"
-+ depends on (MCORE2 || MPENTIUM4 || MPSC || MATOM || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE)
-+ ---help---
-+ P6_NOPs are a relatively minor optimization that require a family >=
-+ 6 processor, except that it is broken on certain VIA chips.
-+ Furthermore, AMD chips prefer a totally different sequence of NOPs
-+ (which work on all CPUs). In addition, it looks like Virtual PC
-+ does not understand them.
-+
-+ As a result, disallow these if we're not compiling for X86_64 (these
-+ NOPs do work on all x86-64 capable chips); the list of processors in
-+ the right-hand clause are the cores that benefit from this optimization.
-+
-+ Say Y if you have Intel CPU newer than Pentium Pro, N otherwise.
-
- config X86_TSC
- def_bool y
-- depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
-+ depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE || MATOM) || X86_64
-
- config X86_CMPXCHG64
- def_bool y
-@@ -367,7 +538,7 @@ config X86_CMPXCHG64
- # generates cmov.
- config X86_CMOV
- def_bool y
-- depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
-+ depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR || MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MNATIVE || MATOM || MGEODE_LX)
-
- config X86_MINIMUM_CPU_FAMILY
- int
-diff --git a/arch/x86/Makefile b/arch/x86/Makefile
-index c0c7291d4ccf..1963f302cd57 100644
---- a/arch/x86/Makefile
-+++ b/arch/x86/Makefile
-@@ -118,13 +118,42 @@ else
- KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
-
- # FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
-+ cflags-$(CONFIG_MNATIVE) += $(call cc-option,-march=native)
- cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
-+ cflags-$(CONFIG_MK8SSE3) += $(call cc-option,-march=k8-sse3,-mtune=k8)
-+ cflags-$(CONFIG_MK10) += $(call cc-option,-march=amdfam10)
-+ cflags-$(CONFIG_MBARCELONA) += $(call cc-option,-march=barcelona)
-+ cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1)
-+ cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2)
-+ cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1)
-+ cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2)
-+ cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-march=bdver3)
-+ cflags-$(CONFIG_MEXCAVATOR) += $(call cc-option,-march=bdver4)
-+ cflags-$(CONFIG_MZEN) += $(call cc-option,-march=znver1)
- cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
-
- cflags-$(CONFIG_MCORE2) += \
-- $(call cc-option,-march=core2,$(call cc-option,-mtune=generic))
-- cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom) \
-- $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
-+ $(call cc-option,-march=core2,$(call cc-option,-mtune=core2))
-+ cflags-$(CONFIG_MNEHALEM) += \
-+ $(call cc-option,-march=nehalem,$(call cc-option,-mtune=nehalem))
-+ cflags-$(CONFIG_MWESTMERE) += \
-+ $(call cc-option,-march=westmere,$(call cc-option,-mtune=westmere))
-+ cflags-$(CONFIG_MSILVERMONT) += \
-+ $(call cc-option,-march=silvermont,$(call cc-option,-mtune=silvermont))
-+ cflags-$(CONFIG_MSANDYBRIDGE) += \
-+ $(call cc-option,-march=sandybridge,$(call cc-option,-mtune=sandybridge))
-+ cflags-$(CONFIG_MIVYBRIDGE) += \
-+ $(call cc-option,-march=ivybridge,$(call cc-option,-mtune=ivybridge))
-+ cflags-$(CONFIG_MHASWELL) += \
-+ $(call cc-option,-march=haswell,$(call cc-option,-mtune=haswell))
-+ cflags-$(CONFIG_MBROADWELL) += \
-+ $(call cc-option,-march=broadwell,$(call cc-option,-mtune=broadwell))
-+ cflags-$(CONFIG_MSKYLAKE) += \
-+ $(call cc-option,-march=skylake,$(call cc-option,-mtune=skylake))
-+ cflags-$(CONFIG_MSKYLAKEX) += \
-+ $(call cc-option,-march=skylake-avx512,$(call cc-option,-mtune=skylake-avx512))
-+ cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell) \
-+ $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
- cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
- KBUILD_CFLAGS += $(cflags-y)
-
-diff --git a/arch/x86/Makefile_32.cpu b/arch/x86/Makefile_32.cpu
-index 1f5faf8606b4..4a3a27cedc75 100644
---- a/arch/x86/Makefile_32.cpu
-+++ b/arch/x86/Makefile_32.cpu
-@@ -23,7 +23,18 @@ cflags-$(CONFIG_MK6) += -march=k6
- # Please note, that patches that add -march=athlon-xp and friends are pointless.
- # They make zero difference whatsosever to performance at this time.
- cflags-$(CONFIG_MK7) += -march=athlon
-+cflags-$(CONFIG_MNATIVE) += $(call cc-option,-march=native)
- cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,-march=athlon)
-+cflags-$(CONFIG_MK8SSE3) += $(call cc-option,-march=k8-sse3,-march=athlon)
-+cflags-$(CONFIG_MK10) += $(call cc-option,-march=amdfam10,-march=athlon)
-+cflags-$(CONFIG_MBARCELONA) += $(call cc-option,-march=barcelona,-march=athlon)
-+cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1,-march=athlon)
-+cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2,-march=athlon)
-+cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1,-march=athlon)
-+cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2,-march=athlon)
-+cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-march=bdver3,-march=athlon)
-+cflags-$(CONFIG_MEXCAVATOR) += $(call cc-option,-march=bdver4,-march=athlon)
-+cflags-$(CONFIG_MZEN) += $(call cc-option,-march=znver1,-march=athlon)
- cflags-$(CONFIG_MCRUSOE) += -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0
- cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) -falign-functions=0 -falign-jumps=0 -falign-loops=0
- cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
-@@ -32,8 +43,17 @@ cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) -falign-fu
- cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
- cflags-$(CONFIG_MVIAC7) += -march=i686
- cflags-$(CONFIG_MCORE2) += -march=i686 $(call tune,core2)
--cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom,$(call cc-option,-march=core2,-march=i686)) \
-- $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
-+cflags-$(CONFIG_MNEHALEM) += -march=i686 $(call tune,nehalem)
-+cflags-$(CONFIG_MWESTMERE) += -march=i686 $(call tune,westmere)
-+cflags-$(CONFIG_MSILVERMONT) += -march=i686 $(call tune,silvermont)
-+cflags-$(CONFIG_MSANDYBRIDGE) += -march=i686 $(call tune,sandybridge)
-+cflags-$(CONFIG_MIVYBRIDGE) += -march=i686 $(call tune,ivybridge)
-+cflags-$(CONFIG_MHASWELL) += -march=i686 $(call tune,haswell)
-+cflags-$(CONFIG_MBROADWELL) += -march=i686 $(call tune,broadwell)
-+cflags-$(CONFIG_MSKYLAKE) += -march=i686 $(call tune,skylake)
-+cflags-$(CONFIG_MSKYLAKEX) += -march=i686 $(call tune,skylake-avx512)
-+cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell,$(call cc-option,-march=core2,-march=i686)) \
-+ $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
-
- # AMD Elan support
- cflags-$(CONFIG_MELAN) += -march=i486
-diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h
-index 7948a17febb4..22c53c8b844b 100644
---- a/arch/x86/include/asm/module.h
-+++ b/arch/x86/include/asm/module.h
-@@ -25,6 +25,26 @@ struct mod_arch_specific {
- #define MODULE_PROC_FAMILY "586MMX "
- #elif defined CONFIG_MCORE2
- #define MODULE_PROC_FAMILY "CORE2 "
-+#elif defined CONFIG_MNATIVE
-+#define MODULE_PROC_FAMILY "NATIVE "
-+#elif defined CONFIG_MNEHALEM
-+#define MODULE_PROC_FAMILY "NEHALEM "
-+#elif defined CONFIG_MWESTMERE
-+#define MODULE_PROC_FAMILY "WESTMERE "
-+#elif defined CONFIG_MSILVERMONT
-+#define MODULE_PROC_FAMILY "SILVERMONT "
-+#elif defined CONFIG_MSANDYBRIDGE
-+#define MODULE_PROC_FAMILY "SANDYBRIDGE "
-+#elif defined CONFIG_MIVYBRIDGE
-+#define MODULE_PROC_FAMILY "IVYBRIDGE "
-+#elif defined CONFIG_MHASWELL
-+#define MODULE_PROC_FAMILY "HASWELL "
-+#elif defined CONFIG_MBROADWELL
-+#define MODULE_PROC_FAMILY "BROADWELL "
-+#elif defined CONFIG_MSKYLAKE
-+#define MODULE_PROC_FAMILY "SKYLAKE "
-+#elif defined CONFIG_MSKYLAKEX
-+#define MODULE_PROC_FAMILY "SKYLAKEX "
- #elif defined CONFIG_MATOM
- #define MODULE_PROC_FAMILY "ATOM "
- #elif defined CONFIG_M686
-@@ -43,6 +63,26 @@ struct mod_arch_specific {
- #define MODULE_PROC_FAMILY "K7 "
- #elif defined CONFIG_MK8
- #define MODULE_PROC_FAMILY "K8 "
-+#elif defined CONFIG_MK8SSE3
-+#define MODULE_PROC_FAMILY "K8SSE3 "
-+#elif defined CONFIG_MK10
-+#define MODULE_PROC_FAMILY "K10 "
-+#elif defined CONFIG_MBARCELONA
-+#define MODULE_PROC_FAMILY "BARCELONA "
-+#elif defined CONFIG_MBOBCAT
-+#define MODULE_PROC_FAMILY "BOBCAT "
-+#elif defined CONFIG_MBULLDOZER
-+#define MODULE_PROC_FAMILY "BULLDOZER "
-+#elif defined CONFIG_MPILEDRIVER
-+#define MODULE_PROC_FAMILY "PILEDRIVER "
-+#elif defined CONFIG_MSTEAMROLLER
-+#define MODULE_PROC_FAMILY "STEAMROLLER "
-+#elif defined CONFIG_MJAGUAR
-+#define MODULE_PROC_FAMILY "JAGUAR "
-+#elif defined CONFIG_MEXCAVATOR
-+#define MODULE_PROC_FAMILY "EXCAVATOR "
-+#elif defined CONFIG_MZEN
-+#define MODULE_PROC_FAMILY "ZEN "
- #elif defined CONFIG_MELAN
- #define MODULE_PROC_FAMILY "ELAN "
- #elif defined CONFIG_MCRUSOE
diff --git a/sys-kernel/boest-v5.0.16/0001-patch-4.20-ja1.diff.patch b/sys-kernel/boest-v5.0.21/0001-patch-4.20-ja1.diff.patch
index 0a8a2be9..b86a71a4 100644
--- a/sys-kernel/boest-v5.0.16/0001-patch-4.20-ja1.diff.patch
+++ b/sys-kernel/boest-v5.0.21/0001-patch-4.20-ja1.diff.patch
@@ -1,4 +1,4 @@
-From 42c61208853e3fd64e5f59c88438f2a287962a9b Mon Sep 17 00:00:00 2001
+From 1b898047dcc0c19b5a57c3fca0f5ee6eaf9564c0 Mon Sep 17 00:00:00 2001
From: Julian Anastasov <ja@ssi.bg>
Date: Sun, 20 Jan 2019 13:22:45 +0000
Subject: [PATCH 01/12] patch-4.20-ja1.diff
@@ -1842,10 +1842,10 @@ index 41327bb99093..96a6daa525e5 100644
nat = nf_ct_nat_ext_add(ct);
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
-index 3c89ca325947..25fcdd17c1fc 100644
+index b66f78fad98c..d9aed502cd75 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -1647,7 +1647,7 @@ int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+@@ -1649,7 +1649,7 @@ int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,
return -EINVAL;
} else {
err = fib_validate_source(skb, saddr, 0, tos, 0, dev,
@@ -1854,7 +1854,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
if (err < 0)
return err;
}
-@@ -1722,7 +1722,7 @@ static void ip_handle_martian_source(struct net_device *dev,
+@@ -1724,7 +1724,7 @@ static void ip_handle_martian_source(struct net_device *dev,
static int __mkroute_input(struct sk_buff *skb,
const struct fib_result *res,
struct in_device *in_dev,
@@ -1863,7 +1863,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
{
struct fib_nh_exception *fnhe;
struct rtable *rth;
-@@ -1739,7 +1739,7 @@ static int __mkroute_input(struct sk_buff *skb,
+@@ -1741,7 +1741,7 @@ static int __mkroute_input(struct sk_buff *skb,
}
err = fib_validate_source(skb, saddr, daddr, tos, FIB_RES_OIF(*res),
@@ -1872,7 +1872,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
if (err < 0) {
ip_handle_martian_source(in_dev->dev, in_dev, skb, daddr,
saddr);
-@@ -1749,7 +1749,7 @@ static int __mkroute_input(struct sk_buff *skb,
+@@ -1751,7 +1751,7 @@ static int __mkroute_input(struct sk_buff *skb,
do_cache = res->fi && !itag;
if (out_dev == in_dev && err && IN_DEV_TX_REDIRECTS(out_dev) &&
@@ -1881,7 +1881,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
(IN_DEV_SHARED_MEDIA(out_dev) ||
inet_addr_onlink(out_dev, saddr, FIB_RES_GW(*res))))
IPCB(skb)->flags |= IPSKB_DOREDIRECT;
-@@ -1907,10 +1907,12 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
+@@ -1909,10 +1909,12 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
static int ip_mkroute_input(struct sk_buff *skb,
struct fib_result *res,
@@ -1895,7 +1895,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
#ifdef CONFIG_IP_ROUTE_MULTIPATH
if (res->fi && res->fi->fib_nhs > 1) {
int h = fib_multipath_hash(res->fi->fib_net, NULL, skb, hkeys);
-@@ -1920,7 +1922,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
+@@ -1922,7 +1924,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
#endif
/* create a routing cache entry */
@@ -1904,7 +1904,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
}
/*
-@@ -1935,7 +1937,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
+@@ -1937,7 +1939,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
*/
static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
@@ -1913,7 +1913,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
struct fib_result *res)
{
struct in_device *in_dev = __in_dev_get_rcu(dev);
-@@ -1993,18 +1995,25 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+@@ -1995,18 +1997,25 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
goto martian_source;
}
@@ -1941,7 +1941,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
if (fib4_rules_early_flow_dissect(net, skb, &fl4, &_flkeys)) {
flkeys = &_flkeys;
-@@ -2015,6 +2024,8 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+@@ -2017,6 +2026,8 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
}
err = fib_lookup(net, &fl4, res, 0);
@@ -1950,7 +1950,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
if (err != 0) {
if (!IN_DEV_FORWARD(in_dev))
err = -EHOSTUNREACH;
-@@ -2029,7 +2040,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+@@ -2031,7 +2042,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
if (res->type == RTN_LOCAL) {
err = fib_validate_source(skb, saddr, daddr, tos,
@@ -1959,7 +1959,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
if (err < 0)
goto martian_source;
goto local_input;
-@@ -2043,16 +2054,19 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+@@ -2045,16 +2056,19 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
goto martian_destination;
make_route:
@@ -1981,7 +1981,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
if (err < 0)
goto martian_source;
}
-@@ -2156,9 +2170,26 @@ int ip_route_input_noref(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+@@ -2158,9 +2172,26 @@ int ip_route_input_noref(struct sk_buff *skb, __be32 daddr, __be32 saddr,
}
EXPORT_SYMBOL(ip_route_input_noref);
@@ -2010,7 +2010,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
{
/* Multicast recognition logic is moved from route cache to here.
The problem was that too many Ethernet cards have broken/missing
-@@ -2204,7 +2235,13 @@ int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+@@ -2206,7 +2237,13 @@ int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
return err;
}
@@ -2025,7 +2025,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
}
/* called with rcu_read_lock() */
-@@ -2456,6 +2493,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
+@@ -2458,6 +2495,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
fl4->daddr = fl4->saddr = htonl(INADDR_LOOPBACK);
dev_out = net->loopback_dev;
fl4->flowi4_oif = LOOPBACK_IFINDEX;
@@ -2033,7 +2033,7 @@ index 3c89ca325947..25fcdd17c1fc 100644
res->type = RTN_LOCAL;
flags |= RTCF_LOCAL;
goto make_route;
-@@ -2514,6 +2552,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
+@@ -2516,6 +2554,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
orig_oif = FIB_RES_OIF(*res);
fl4->flowi4_oif = dev_out->ifindex;
@@ -2042,10 +2042,10 @@ index 3c89ca325947..25fcdd17c1fc 100644
goto make_route;
}
diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
-index d159e9e7835b..8c96a28ae3c9 100644
+index ade527565127..c7625430107d 100644
--- a/net/netfilter/nf_nat_core.c
+++ b/net/netfilter/nf_nat_core.c
-@@ -1100,6 +1100,49 @@ static struct nf_nat_hook nat_hook = {
+@@ -1105,6 +1105,49 @@ static struct nf_nat_hook nat_hook = {
.manip_pkt = nf_nat_manip_pkt,
};
diff --git a/sys-kernel/boest-v5.0.15/0002-pool-2.6.25-tcp-timewait-20s.diff.patch b/sys-kernel/boest-v5.0.21/0002-pool-2.6.25-tcp-timewait-20s.diff.patch
index be3b3d04..f21b1d94 100644
--- a/sys-kernel/boest-v5.0.15/0002-pool-2.6.25-tcp-timewait-20s.diff.patch
+++ b/sys-kernel/boest-v5.0.21/0002-pool-2.6.25-tcp-timewait-20s.diff.patch
@@ -1,4 +1,4 @@
-From 76e057f475f9906249ab5f4b6684f00da1009f25 Mon Sep 17 00:00:00 2001
+From ef263390526f1c506767146837409982f6791e63 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@1wt.eu>
Date: Sun, 15 Feb 2009 14:51:33 +0100
Subject: [PATCH 02/12] pool/2.6.25-tcp-timewait-20s.diff
diff --git a/sys-kernel/boest-v5.0.16/0003-pool-2.6.25-disable-tcp-debug.diff.patch b/sys-kernel/boest-v5.0.21/0003-pool-2.6.25-disable-tcp-debug.diff.patch
index 3813485e..ed7cf524 100644
--- a/sys-kernel/boest-v5.0.16/0003-pool-2.6.25-disable-tcp-debug.diff.patch
+++ b/sys-kernel/boest-v5.0.21/0003-pool-2.6.25-disable-tcp-debug.diff.patch
@@ -1,4 +1,4 @@
-From 23d59eef54ede06e2fadfc551d19795e583417ff Mon Sep 17 00:00:00 2001
+From 3b5a8b70e6a04fa47e693c5474a27035fd0a0256 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@1wt.eu>
Date: Sun, 15 Feb 2009 14:51:33 +0100
Subject: [PATCH 03/12] pool/2.6.25-disable-tcp-debug.diff
diff --git a/sys-kernel/boest-v5.0.16/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch b/sys-kernel/boest-v5.0.21/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch
index 3ff8785c..8ead79bb 100644
--- a/sys-kernel/boest-v5.0.16/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch
+++ b/sys-kernel/boest-v5.0.21/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch
@@ -1,4 +1,4 @@
-From 53072877af3b2127705a5a72d1809b66b3e1beac Mon Sep 17 00:00:00 2001
+From 5126e49907cf2d3ffc86476a78d1e06028f9307b Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@1wt.eu>
Date: Wed, 8 Oct 2008 10:00:42 +0200
Subject: [PATCH 04/12] TCP: add a sysctl to disable simultaneous connection
@@ -72,10 +72,10 @@ index 2c9787017dae..9f4d3cd44dbb 100644
Limit of socket listen() backlog, known in userspace as SOMAXCONN.
Defaults to 128. See also tcp_max_syn_backlog for additional tuning
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
-index 104a6669e344..f406fdc12340 100644
+index 7698460a3dd1..74e4fbf9be4f 100644
--- a/include/net/netns/ipv4.h
+++ b/include/net/netns/ipv4.h
-@@ -140,6 +140,7 @@ struct netns_ipv4 {
+@@ -141,6 +141,7 @@ struct netns_ipv4 {
int sysctl_tcp_recovery;
int sysctl_tcp_thin_linear_timeouts;
int sysctl_tcp_slow_start_after_idle;
diff --git a/sys-kernel/boest-v5.0.15/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch b/sys-kernel/boest-v5.0.21/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch
index ce2d7fc9..03eba637 100644
--- a/sys-kernel/boest-v5.0.15/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch
+++ b/sys-kernel/boest-v5.0.21/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch
@@ -1,4 +1,4 @@
-From 3c803ece91e7a766f2445d81020f6713f6ebfe86 Mon Sep 17 00:00:00 2001
+From 848eb1dc9a54a121251e382df6d8c6a5ddbb4f13 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@1wt.eu>
Date: Sun, 15 Feb 2009 14:51:33 +0100
Subject: [PATCH 05/12] pool/2.6.25-disable-kbdrate-at-boot.diff
diff --git a/sys-kernel/boest-v5.0.16/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch b/sys-kernel/boest-v5.0.21/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch
index 713fe39b..e1139b95 100644
--- a/sys-kernel/boest-v5.0.16/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch
+++ b/sys-kernel/boest-v5.0.21/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch
@@ -1,4 +1,4 @@
-From 88a0e31f2ff96d3eb973ec3e9fb270c77b1d2144 Mon Sep 17 00:00:00 2001
+From 96bdb30d6bad427ffb1a78a97dbc87e8fa9d02b6 Mon Sep 17 00:00:00 2001
From: Bertrand Jacquin <bertrand@jacquin.bzh>
Date: Wed, 9 Jan 2013 00:28:28 +0100
Subject: [PATCH 06/12] Disable CONFIG_PROCESSOR_SELECT printk()'s
diff --git a/sys-kernel/boest-v5.0.15/0007-This-patch-adds-support-for-a-restricted-user-contro.patch b/sys-kernel/boest-v5.0.21/0007-This-patch-adds-support-for-a-restricted-user-contro.patch
index 6f6604a7..7f19d474 100644
--- a/sys-kernel/boest-v5.0.15/0007-This-patch-adds-support-for-a-restricted-user-contro.patch
+++ b/sys-kernel/boest-v5.0.21/0007-This-patch-adds-support-for-a-restricted-user-contro.patch
@@ -1,4 +1,4 @@
-From 5bfa27096f77d6003852787651283b2be2087a71 Mon Sep 17 00:00:00 2001
+From 7fc0d2ef3ed15c79112122dceb940814ebe46f78 Mon Sep 17 00:00:00 2001
From: "Anthony G. Basile" <blueness@gentoo.org>
Date: Tue, 15 Jan 2019 10:16:38 -0500
Subject: [PATCH 07/12] This patch adds support for a restricted
diff --git a/sys-kernel/boest-v5.0.16/0008-fs-Enable-link-security-restrictions-by-default.patch b/sys-kernel/boest-v5.0.21/0008-fs-Enable-link-security-restrictions-by-default.patch
index 5f27adc9..fcc60548 100644
--- a/sys-kernel/boest-v5.0.16/0008-fs-Enable-link-security-restrictions-by-default.patch
+++ b/sys-kernel/boest-v5.0.21/0008-fs-Enable-link-security-restrictions-by-default.patch
@@ -1,4 +1,4 @@
-From a3f9c164e32dbd9739c19c4987020c77bdde7e04 Mon Sep 17 00:00:00 2001
+From f1159e91944392d8fb2833854570424252d8ad8a Mon Sep 17 00:00:00 2001
From: Ben Hutchings <ben@decadent.org.uk>
Date: Fri, 2 Nov 2012 05:32:06 +0000
Subject: [PATCH 08/12] fs: Enable link security restrictions by default
diff --git a/sys-kernel/boest-v5.0.16/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch b/sys-kernel/boest-v5.0.21/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch
index a7c82b52..1c13dacd 100644
--- a/sys-kernel/boest-v5.0.16/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch
+++ b/sys-kernel/boest-v5.0.21/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch
@@ -1,4 +1,4 @@
-From 2baf9c00c23a074d9a95ff581548b2e1857dd7f5 Mon Sep 17 00:00:00 2001
+From f715bdcd7844910684679afa63b578272afdf64b Mon Sep 17 00:00:00 2001
From: Laura Abbott <labbott@fedoraproject.org>
Date: Tue, 8 Sep 2015 09:53:38 -0700
Subject: [PATCH 09/12] usb-storage: Disable UAS on JMicron SATA enclosure
diff --git a/sys-kernel/boest-v5.0.15/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch b/sys-kernel/boest-v5.0.21/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch
index c7d5dded..59de7f4e 100644
--- a/sys-kernel/boest-v5.0.15/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch
+++ b/sys-kernel/boest-v5.0.21/0010-5.0-2600_enable-key-swapping-for-apple-mac.patch.patch
@@ -1,4 +1,4 @@
-From d0f5392c46586c84d241d11987a61f77e41d4a1e Mon Sep 17 00:00:00 2001
+From b702c4ad56a03d0c79eaf3f8aa38718bb0c5fe30 Mon Sep 17 00:00:00 2001
From: Mike Pagano <mpagano@gentoo.org>
Date: Tue, 15 Jan 2019 10:16:38 -0500
Subject: [PATCH 10/12] 5.0:2600_enable-key-swapping-for-apple-mac.patch
diff --git a/sys-kernel/boest-v5.0.15/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch b/sys-kernel/boest-v5.0.21/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch
index 0be33f63..9500a466 100644
--- a/sys-kernel/boest-v5.0.15/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch
+++ b/sys-kernel/boest-v5.0.21/0011-5.0-4567_distro-Gentoo-Kconfig.patch.patch
@@ -1,4 +1,4 @@
-From 54ce8a676fe67576bac564bea24d0d15e16647af Mon Sep 17 00:00:00 2001
+From e9eaca9efc5008a4c48503b615d6f1ad90e33839 Mon Sep 17 00:00:00 2001
From: Mike Pagano <mpagano@gentoo.org>
Date: Fri, 28 Dec 2018 18:58:06 -0500
Subject: [PATCH 11/12] 5.0:4567_distro-Gentoo-Kconfig.patch
diff --git a/sys-kernel/boest-v5.0.15/0012-WARNING.patch b/sys-kernel/boest-v5.0.21/0012-WARNING.patch
index c906f904..09c49dad 100644
--- a/sys-kernel/boest-v5.0.15/0012-WARNING.patch
+++ b/sys-kernel/boest-v5.0.21/0012-WARNING.patch
@@ -1,4 +1,4 @@
-From 214ccc18049d8e9437259196ef6703b0d5327789 Mon Sep 17 00:00:00 2001
+From 637b2594cc18d455d80b67ba564f1d7931109aec Mon Sep 17 00:00:00 2001
From: Mike Pagano <mpagano@gentoo.org>
Date: Mon, 4 Mar 2019 08:10:52 -0500
Subject: [PATCH 12/12] WARNING This patch works with gcc versions 4.9+ and
@@ -413,7 +413,7 @@ index 6adce15268bd..7d0709e548af 100644
config X86_MINIMUM_CPU_FAMILY
int
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
-index c0c7291d4ccf..1963f302cd57 100644
+index 2cf52617a1e7..62f9bb23fa76 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -118,13 +118,42 @@ else
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch
index 749c640d..953ae639 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch
@@ -1,7 +1,7 @@
-From 2ccfa2710252818496bdc135ea59d7d30e400231 Mon Sep 17 00:00:00 2001
+From bfcbe989feadf2b5c0936aec2a5a07669dd40681 Mon Sep 17 00:00:00 2001
From: Dan Pasanen <dan.pasanen@gmail.com>
Date: Thu, 21 Sep 2017 09:55:42 -0500
-Subject: [PATCH 001/194] arm: partially revert
+Subject: [PATCH 001/325] arm: partially revert
702b94bff3c50542a6e4ab9a4f4cef093262fe65
* Re-expose some dmi APIs for use in VCSM
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0002-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0002-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch
index e90f1ead..38d6653a 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0002-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0002-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch
@@ -1,7 +1,7 @@
-From 7305a86b3b55dd8ec67af3f1860e01a7e707e03b Mon Sep 17 00:00:00 2001
+From 1afa1fe89845f5348aca093471172dc77d615961 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 29 Oct 2018 14:45:45 +0000
-Subject: [PATCH 002/194] Revert "rtc: pcf8523: properly handle oscillator stop
+Subject: [PATCH 002/325] Revert "rtc: pcf8523: properly handle oscillator stop
bit"
This reverts commit ede44c908d44b166a5b6bd7caacd105c2ff5a70f.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0003-smsx95xx-fix-crimes-against-truesize.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0003-smsx95xx-fix-crimes-against-truesize.patch
index 39895b30..4c332ecf 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0003-smsx95xx-fix-crimes-against-truesize.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0003-smsx95xx-fix-crimes-against-truesize.patch
@@ -1,7 +1,7 @@
-From b4cd5d127b3d60d8d4b3ce0f7ef48d0ca5c1df92 Mon Sep 17 00:00:00 2001
+From 5fdccd8152fb8f6f26a4a297cb06c49cc5688595 Mon Sep 17 00:00:00 2001
From: Steve Glendinning <steve.glendinning@smsc.com>
Date: Thu, 19 Feb 2015 18:47:12 +0000
-Subject: [PATCH 003/194] smsx95xx: fix crimes against truesize
+Subject: [PATCH 003/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0004-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0004-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
index 2dc707e8..dab4baf8 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0004-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0004-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
@@ -1,7 +1,7 @@
-From 93bdb7c7cad2b5bdec9d4ec0fcc45624c74060de Mon Sep 17 00:00:00 2001
+From 9a17aae354b2f8f16dda782808aa183997bd5745 Mon Sep 17 00:00:00 2001
From: Sam Nazarko <email@samnazarko.co.uk>
Date: Fri, 1 Apr 2016 17:27:21 +0100
-Subject: [PATCH 004/194] smsc95xx: Experimental: Enable turbo_mode and
+Subject: [PATCH 004/325] smsc95xx: Experimental: Enable turbo_mode and
packetsize=2560 by default
See: http://forum.kodi.tv/showthread.php?tid=285288
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0005-Allow-mac-address-to-be-set-in-smsc95xx.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0005-Allow-mac-address-to-be-set-in-smsc95xx.patch
index 9f4616bd..6dfba5bf 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0005-Allow-mac-address-to-be-set-in-smsc95xx.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0005-Allow-mac-address-to-be-set-in-smsc95xx.patch
@@ -1,7 +1,7 @@
-From f54e77d0c774baf0aeb4bb41684051052e26ab6f Mon Sep 17 00:00:00 2001
+From 8af4fefe7dfee21e941aa7bbf3a87362baa2a227 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 26 Mar 2013 17:26:38 +0000
-Subject: [PATCH 005/194] Allow mac address to be set in smsc95xx
+Subject: [PATCH 005/325] Allow mac address to be set in smsc95xx
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0006-Protect-__release_resource-against-resources-without.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0006-Protect-__release_resource-against-resources-without.patch
index 35e9a6aa..e821ac6c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0006-Protect-__release_resource-against-resources-without.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0006-Protect-__release_resource-against-resources-without.patch
@@ -1,7 +1,7 @@
-From e78980692c215c252053da5ff46ea1ece66e9fbe Mon Sep 17 00:00:00 2001
+From 84ff08f55034c711c1888fafce6cb7a09d8e74cd Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Fri, 13 Mar 2015 12:43:36 +0000
-Subject: [PATCH 006/194] Protect __release_resource against resources without
+Subject: [PATCH 006/325] Protect __release_resource against resources without
parents
Without this patch, removing a device tree overlay can crash here.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0007-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0007-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
index 9ebe01fc..4d6e9dff 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0007-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0007-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
@@ -1,7 +1,7 @@
-From a26e6a607bf257ecbb170fe1b3ea668e8e6a0ec9 Mon Sep 17 00:00:00 2001
+From 8c0e535a3a2f4a90fce16569e61e2038e2665a66 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Fri, 4 Dec 2015 17:41:50 +0000
-Subject: [PATCH 007/194] irq-bcm2836: Prevent spurious interrupts, and trap
+Subject: [PATCH 007/325] irq-bcm2836: Prevent spurious interrupts, and trap
them early
The old arch-specific IRQ macros included a dsb to ensure the
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0008-irq-bcm2836-Avoid-Invalid-trigger-warning.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0008-irq-bcm2836-Avoid-Invalid-trigger-warning.patch
index d3b8bf63..ff162f3b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0008-irq-bcm2836-Avoid-Invalid-trigger-warning.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0008-irq-bcm2836-Avoid-Invalid-trigger-warning.patch
@@ -1,7 +1,7 @@
-From f108a25222212acc7b42ecc90940d1a3e8fde990 Mon Sep 17 00:00:00 2001
+From 76ad1a2a56b144989f899ce4c0a8aab06a0cb392 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 9 Feb 2017 14:33:30 +0000
-Subject: [PATCH 008/194] irq-bcm2836: Avoid "Invalid trigger warning"
+Subject: [PATCH 008/325] irq-bcm2836: Avoid "Invalid trigger warning"
Initialise the level for each IRQ to avoid a warning from the
arm arch timer code.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0009-irqchip-bcm2835-Add-FIQ-support.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0009-irqchip-bcm2835-Add-FIQ-support.patch
index db952343..e99d3e2e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0009-irqchip-bcm2835-Add-FIQ-support.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0009-irqchip-bcm2835-Add-FIQ-support.patch
@@ -1,7 +1,7 @@
-From b426a047a60dbafae12267258875f57f9a122143 Mon Sep 17 00:00:00 2001
+From 1bb63ef451bff77ab24a49bc7508508fbaf06cb6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Fri, 12 Jun 2015 19:01:05 +0200
-Subject: [PATCH 009/194] irqchip: bcm2835: Add FIQ support
+Subject: [PATCH 009/325] irqchip: bcm2835: Add FIQ support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0010-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0010-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
index eb742392..b9225403 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0010-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0010-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
@@ -1,7 +1,7 @@
-From 43ecccc3832fd0cec670b35b9957e29724466350 Mon Sep 17 00:00:00 2001
+From 3bb70341a3bd22d10c4f2e3a793b1f0c71ccb13d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Fri, 23 Oct 2015 16:26:55 +0200
-Subject: [PATCH 010/194] irqchip: irq-bcm2835: Add 2836 FIQ support
+Subject: [PATCH 010/325] irqchip: irq-bcm2835: Add 2836 FIQ support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0011-spi-spidev-Completely-disable-the-spidev-warning.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0011-spi-spidev-Completely-disable-the-spidev-warning.patch
index 98e60030..39812dce 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0011-spi-spidev-Completely-disable-the-spidev-warning.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0011-spi-spidev-Completely-disable-the-spidev-warning.patch
@@ -1,7 +1,7 @@
-From 9247bef1b1931e27b98c187a4fd58484ac74ab5c Mon Sep 17 00:00:00 2001
+From f3a7257d1e9adaf616b050ff0ba4cfb4366d6400 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 14 Jul 2015 10:26:09 +0100
-Subject: [PATCH 011/194] spi: spidev: Completely disable the spidev warning
+Subject: [PATCH 011/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0012-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0012-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
index 086803fa..2b7b36e7 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0012-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0012-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
@@ -1,7 +1,7 @@
-From bfbfd87ff06e9c393acae432ca0af941d334601d Mon Sep 17 00:00:00 2001
+From 9e04fa0be55736189e848fa7fddc339269e0871e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Sat, 3 Oct 2015 22:22:55 +0200
-Subject: [PATCH 012/194] dmaengine: bcm2835: Load driver early and support
+Subject: [PATCH 012/325] dmaengine: bcm2835: Load driver early and support
legacy API
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -32,7 +32,7 @@ index d2286c7f7222..518761906c72 100644
select DMA_VIRTUAL_CHANNELS
diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index ae10f5614f95..fbef664e611e 100644
+index bf5119203637..7af3a88b42ff 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
@@ -28,6 +28,7 @@
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0013-firmware-Updated-mailbox-header.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0013-firmware-Updated-mailbox-header.patch
index bc9913c4..2f8e0747 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0013-firmware-Updated-mailbox-header.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0013-firmware-Updated-mailbox-header.patch
@@ -1,7 +1,7 @@
-From ea67db9723778b000c2794943e439f90b2a06fad Mon Sep 17 00:00:00 2001
+From 4bbdcdaadbcfd768c4546e4fd806c8f8b90dd39a Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 25 Jan 2016 17:25:12 +0000
-Subject: [PATCH 013/194] firmware: Updated mailbox header
+Subject: [PATCH 013/325] firmware: Updated mailbox header
---
include/soc/bcm2835/raspberrypi-firmware.h | 5 +++++
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0014-rtc-Add-SPI-alias-for-pcf2123-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0014-rtc-Add-SPI-alias-for-pcf2123-driver.patch
index d15b6c3b..32cd3a04 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0014-rtc-Add-SPI-alias-for-pcf2123-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0014-rtc-Add-SPI-alias-for-pcf2123-driver.patch
@@ -1,7 +1,7 @@
-From 6dc36e13ff98b2b6a5b5e48a25a13706e97a28a0 Mon Sep 17 00:00:00 2001
+From 39d4ad38a6ded4169160b15235131056c455d3c3 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 15 Jun 2016 16:48:41 +0100
-Subject: [PATCH 014/194] rtc: Add SPI alias for pcf2123 driver
+Subject: [PATCH 014/325] rtc: Add SPI alias for pcf2123 driver
Without this alias, Device Tree won't cause the driver
to be loaded.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0015-watchdog-bcm2835-Support-setting-reboot-partition.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0015-watchdog-bcm2835-Support-setting-reboot-partition.patch
index 2b30d7c0..fe56244d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0015-watchdog-bcm2835-Support-setting-reboot-partition.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0015-watchdog-bcm2835-Support-setting-reboot-partition.patch
@@ -1,7 +1,7 @@
-From 1b223e96bb38cd1600d218c0eb437b2495daf0cc Mon Sep 17 00:00:00 2001
+From 282fd2999745a11a4ad44a1cba78dfcafeb5a9b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Fri, 7 Oct 2016 16:50:59 +0200
-Subject: [PATCH 015/194] watchdog: bcm2835: Support setting reboot partition
+Subject: [PATCH 015/325] watchdog: bcm2835: Support setting reboot partition
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0016-reboot-Use-power-off-rather-than-busy-spinning-when-.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0016-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
index 625d2f62..7e83c5ae 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0016-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0016-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
@@ -1,7 +1,7 @@
-From 6623a50916cea53c4b697247b25547e40a6700d6 Mon Sep 17 00:00:00 2001
+From 3e3c7052b4a4da6b6096a7597d16c8ca7b556e11 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 5 Apr 2016 19:40:12 +0100
-Subject: [PATCH 016/194] reboot: Use power off rather than busy spinning when
+Subject: [PATCH 016/325] reboot: Use power off rather than busy spinning when
halt is requested
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0017-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0017-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch
index 253fabc0..56bec73f 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0017-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0017-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch
@@ -1,7 +1,7 @@
-From 9958a89832f875e7d6e55eca0886e6b29e4133dd Mon Sep 17 00:00:00 2001
+From 921b4f237618c9ba1e5df3606a3b3205eb2c53ac Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 9 Nov 2016 13:02:52 +0000
-Subject: [PATCH 017/194] bcm: Make RASPBERRYPI_POWER depend on PM
+Subject: [PATCH 017/325] bcm: Make RASPBERRYPI_POWER depend on PM
---
drivers/soc/bcm/Kconfig | 1 +
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0018-Register-the-clocks-early-during-the-boot-process-so.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0018-Register-the-clocks-early-during-the-boot-process-so.patch
index 6af55c52..33c2e393 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0018-Register-the-clocks-early-during-the-boot-process-so.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0018-Register-the-clocks-early-during-the-boot-process-so.patch
@@ -1,7 +1,7 @@
-From 4274477c6b8c6e9848c3136d12ac186ca2e70cb8 Mon Sep 17 00:00:00 2001
+From 8dc8ad7009f731e73ea914465c765a13751bc9c9 Mon Sep 17 00:00:00 2001
From: Martin Sperl <kernel@martin.sperl.org>
Date: Fri, 2 Sep 2016 16:45:27 +0100
-Subject: [PATCH 018/194] Register the clocks early during the boot process, so
+Subject: [PATCH 018/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0019-bcm2835-rng-Avoid-initialising-if-already-enabled.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0019-bcm2835-rng-Avoid-initialising-if-already-enabled.patch
index 98f7af4c..0e310b09 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0019-bcm2835-rng-Avoid-initialising-if-already-enabled.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0019-bcm2835-rng-Avoid-initialising-if-already-enabled.patch
@@ -1,7 +1,7 @@
-From 02517048fda22044c0ccc8bba0645f68d8c57d9f Mon Sep 17 00:00:00 2001
+From 0532efb05ad84d0dea940186e021bec4ef66f32e Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 6 Dec 2016 17:05:39 +0000
-Subject: [PATCH 019/194] bcm2835-rng: Avoid initialising if already enabled
+Subject: [PATCH 019/325] bcm2835-rng: Avoid initialising if already enabled
Avoids the 0x40000 cycles of warmup again if firmware has already used it
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0020-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0020-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch
index e85b37a4..eec9e20c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0020-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0020-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch
@@ -1,7 +1,7 @@
-From e9e2b255f1d1f019cea1e0f797bcd9ed4f78bcf8 Mon Sep 17 00:00:00 2001
+From c88a52f565d5d2e353bcf85f612a4024686e8fce Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 13 Feb 2017 17:20:08 +0000
-Subject: [PATCH 020/194] clk-bcm2835: Mark used PLLs and dividers CRITICAL
+Subject: [PATCH 020/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0021-clk-bcm2835-Add-claim-clocks-property.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0021-clk-bcm2835-Add-claim-clocks-property.patch
index 1bb245ca..b204533e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0021-clk-bcm2835-Add-claim-clocks-property.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0021-clk-bcm2835-Add-claim-clocks-property.patch
@@ -1,7 +1,7 @@
-From 9f31cb790b18c2018554f9dcbf60873c7edfc0a6 Mon Sep 17 00:00:00 2001
+From 940c0d652e42793db245667fc3357a8edb08cac6 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 13 Feb 2017 17:20:08 +0000
-Subject: [PATCH 021/194] clk-bcm2835: Add claim-clocks property
+Subject: [PATCH 021/325] 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,
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0022-clk-bcm2835-Read-max-core-clock-from-firmware.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0022-clk-bcm2835-Read-max-core-clock-from-firmware.patch
index 09d241e1..9e4db283 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0022-clk-bcm2835-Read-max-core-clock-from-firmware.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0022-clk-bcm2835-Read-max-core-clock-from-firmware.patch
@@ -1,7 +1,7 @@
-From eb5c4064a35fe1f41b07a5474547f25ef20760fa Mon Sep 17 00:00:00 2001
+From a1fd96f08470318b72bff6de240a796cdf96e342 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 6 Mar 2017 09:06:18 +0000
-Subject: [PATCH 022/194] clk-bcm2835: Read max core clock from firmware
+Subject: [PATCH 022/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0023-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0023-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
index aa700bab..55c5fa4f 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0023-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0023-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
@@ -1,7 +1,7 @@
-From 61eafd65999e1a2983b53c5f1abbd20cfd2a20c6 Mon Sep 17 00:00:00 2001
+From 402e6bd22be8e645624f0b9b38ffcc574ca665cc Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Mon, 9 May 2016 17:28:18 -0700
-Subject: [PATCH 023/194] clk: bcm2835: Mark GPIO clocks enabled at boot as
+Subject: [PATCH 023/325] clk: bcm2835: Mark GPIO clocks enabled at boot as
critical.
These divide off of PLLD_PER and are used for the ethernet and wifi
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0024-sound-Demote-deferral-errors-to-INFO-level.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0024-sound-Demote-deferral-errors-to-INFO-level.patch
index e621d578..381f02b9 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0024-sound-Demote-deferral-errors-to-INFO-level.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0024-sound-Demote-deferral-errors-to-INFO-level.patch
@@ -1,7 +1,7 @@
-From 7d561939dc424bf29fb4cf56d8881b63454cb638 Mon Sep 17 00:00:00 2001
+From 89d961225324dbf2c768e42f2c2f7d1f3a202f02 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 9 Feb 2017 14:36:44 +0000
-Subject: [PATCH 024/194] sound: Demote deferral errors to INFO level
+Subject: [PATCH 024/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0025-Update-vfpmodule.c.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0025-Update-vfpmodule.c.patch
index 5f56c6a7..2cebf109 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0025-Update-vfpmodule.c.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0025-Update-vfpmodule.c.patch
@@ -1,7 +1,7 @@
-From 2b518ad9926f5792c031c55c75d4e700bed46ac0 Mon Sep 17 00:00:00 2001
+From 3cbab2774b9b8959085716296d51b80fa9b919db Mon Sep 17 00:00:00 2001
From: Claggy3 <stephen.maclagan@hotmail.com>
Date: Sat, 11 Feb 2017 14:00:30 +0000
-Subject: [PATCH 025/194] Update vfpmodule.c
+Subject: [PATCH 025/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0026-i2c-bcm2835-Add-debug-support.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0026-i2c-bcm2835-Add-debug-support.patch
index 911c043c..0be439ae 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0026-i2c-bcm2835-Add-debug-support.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0026-i2c-bcm2835-Add-debug-support.patch
@@ -1,7 +1,7 @@
-From 3aad5a84cf37a10712ab40468ee1cb4cf9f79746 Mon Sep 17 00:00:00 2001
+From 50d69580b63ab04c8a86331fd292fc25a8c47abb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Tue, 1 Nov 2016 15:15:41 +0100
-Subject: [PATCH 026/194] i2c: bcm2835: Add debug support
+Subject: [PATCH 026/325] i2c: bcm2835: Add debug support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0027-mm-Remove-the-PFN-busy-warning.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0027-mm-Remove-the-PFN-busy-warning.patch
index b81a4f85..6c78180c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0027-mm-Remove-the-PFN-busy-warning.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0027-mm-Remove-the-PFN-busy-warning.patch
@@ -1,7 +1,7 @@
-From 1e5d8abbd4c7aa8aa12adbdfe91b3e443108b2d3 Mon Sep 17 00:00:00 2001
+From 11c4c75b0f34c91f41b32eba626fe8f8ca232aa9 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Thu, 18 Dec 2014 16:07:15 -0800
-Subject: [PATCH 027/194] mm: Remove the PFN busy warning
+Subject: [PATCH 027/325] mm: Remove the PFN busy warning
See commit dae803e165a11bc88ca8dbc07a11077caf97bbcb -- the warning is
expected sometimes when using CMA. However, that commit still spams
@@ -13,10 +13,10 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
1 file changed, 2 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 318ef6ccdb3b..4ecd514f964e 100644
+index d59be95ba45c..a08e8af01a3f 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -8236,8 +8236,6 @@ int alloc_contig_range(unsigned long start, unsigned long end,
+@@ -8245,8 +8245,6 @@ int alloc_contig_range(unsigned long start, unsigned long end,
/* Make sure the range is really isolated. */
if (test_pages_isolated(outer_start, end, false)) {
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0028-ASoC-Add-prompt-for-ICS43432-codec.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0028-ASoC-Add-prompt-for-ICS43432-codec.patch
index c834a1c1..5027f3aa 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0028-ASoC-Add-prompt-for-ICS43432-codec.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0028-ASoC-Add-prompt-for-ICS43432-codec.patch
@@ -1,7 +1,7 @@
-From 85a00e9ca42bdee17ec2fcc3dfacddc37f706563 Mon Sep 17 00:00:00 2001
+From 791598b9fd8669068bb96e5d6e5fe31abf518e22 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 23 Mar 2017 10:06:56 +0000
-Subject: [PATCH 028/194] ASoC: Add prompt for ICS43432 codec
+Subject: [PATCH 028/325] ASoC: Add prompt for ICS43432 codec
Without a prompt string, a config setting can't be included in a
defconfig. Give CONFIG_SND_SOC_ICS43432 a prompt so that Pi soundcards
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0029-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0029-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch
index 7cbbedd9..2563c1c3 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0029-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0029-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch
@@ -1,7 +1,7 @@
-From 7b5bb9696b28ff570fb9246607973e8eecab1671 Mon Sep 17 00:00:00 2001
+From a747c094f3bfb3aec91a5e28d8c8af128ce2e243 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 23 Jan 2018 16:52:45 +0000
-Subject: [PATCH 029/194] irqchip: irq-bcm2836: Remove regmap and syscon use
+Subject: [PATCH 029/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch
index d63e40f3..32d936f4 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch
@@ -1,7 +1,7 @@
-From b92bb1b004e1032717381d5e28e65bd64dbfbd59 Mon Sep 17 00:00:00 2001
+From 8025c128a5a3db5b36c5f72d08cf0b7ac064d70e Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 17 Oct 2017 15:04:29 +0100
-Subject: [PATCH 030/194] lan78xx: Enable LEDs and auto-negotiation
+Subject: [PATCH 030/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0031-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0031-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch
index f9e545da..114d4c18 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0031-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0031-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch
@@ -1,7 +1,7 @@
-From 5500fa1d5ba050b8e039e0911c1696e1305dc1e8 Mon Sep 17 00:00:00 2001
+From c884a6739790d3bfa8c713e5040b1198e80f6b2b Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 23 Feb 2016 17:26:48 +0000
-Subject: [PATCH 031/194] amba_pl011: Don't use DT aliases for numbering
+Subject: [PATCH 031/325] amba_pl011: Don't use DT aliases for numbering
The pl011 driver looks for DT aliases of the form "serial<n>",
and if found uses <n> as the device ID. This can cause
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0032-amba_pl011-Round-input-clock-up.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0032-amba_pl011-Round-input-clock-up.patch
index 45151b2e..86f0f3ed 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0032-amba_pl011-Round-input-clock-up.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0032-amba_pl011-Round-input-clock-up.patch
@@ -1,7 +1,7 @@
-From 66f655dc40a2dc9031dfd881e7f7240e42c16eb2 Mon Sep 17 00:00:00 2001
+From 0146543d380e24737c7bee512defe33ea7bca503 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 1 Mar 2017 16:07:39 +0000
-Subject: [PATCH 032/194] amba_pl011: Round input clock up
+Subject: [PATCH 032/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0033-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0033-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
index ae0664ad..905d161e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0033-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0033-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
@@ -1,7 +1,7 @@
-From 34f47644078ca39bbed33fd982770f0504bd9ea8 Mon Sep 17 00:00:00 2001
+From 18e6daaa4bb92e72064511170abf8ca67b594771 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Fri, 29 Sep 2017 10:32:19 +0100
-Subject: [PATCH 033/194] amba_pl011: Insert mb() for correct FIFO handling
+Subject: [PATCH 033/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0034-amba_pl011-Add-cts-event-workaround-DT-property.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0034-amba_pl011-Add-cts-event-workaround-DT-property.patch
index 467cc768..86b95f0c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0034-amba_pl011-Add-cts-event-workaround-DT-property.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0034-amba_pl011-Add-cts-event-workaround-DT-property.patch
@@ -1,7 +1,7 @@
-From 135edda2bb6fe457863f06c3f90ac9551cc5da98 Mon Sep 17 00:00:00 2001
+From 36abcdf1d1457d645f5accc9824efcda74d2eeb8 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Fri, 29 Sep 2017 10:32:19 +0100
-Subject: [PATCH 034/194] amba_pl011: Add cts-event-workaround DT property
+Subject: [PATCH 034/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0035-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0035-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch
index 50c5ecb2..1a2fc8b2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0035-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0035-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch
@@ -1,7 +1,7 @@
-From 0306125f06f7aba392dedc86313913cc00f46de1 Mon Sep 17 00:00:00 2001
+From 2fc88882c1a584012f3669fedd4a8c0899704ad2 Mon Sep 17 00:00:00 2001
From: notro <notro@tronnes.org>
Date: Thu, 10 Jul 2014 13:59:47 +0200
-Subject: [PATCH 035/194] pinctrl-bcm2835: Set base to 0 give expected gpio
+Subject: [PATCH 035/325] pinctrl-bcm2835: Set base to 0 give expected gpio
numbering
Signed-off-by: Noralf Tronnes <notro@tronnes.org>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0036-Main-bcm2708-bcm2709-linux-port.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0036-Main-bcm2708-bcm2709-linux-port.patch
index 267395fb..663aa50e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0036-Main-bcm2708-bcm2709-linux-port.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0036-Main-bcm2708-bcm2709-linux-port.patch
@@ -1,7 +1,7 @@
-From 5c1cb5d83fe9b1cd89be4c5a20d86989a58621ae Mon Sep 17 00:00:00 2001
+From 120af58d3e4995b77d8d2ebc8837472b65934b2d Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 12 May 2013 12:24:19 +0100
-Subject: [PATCH 036/194] Main bcm2708/bcm2709 linux port
+Subject: [PATCH 036/325] Main bcm2708/bcm2709 linux port
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0037-Add-dwc_otg-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0037-Add-dwc_otg-driver.patch
index eb1c5069..e8d0a841 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0037-Add-dwc_otg-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0037-Add-dwc_otg-driver.patch
@@ -1,7 +1,7 @@
-From e8026d36a02e68ee6db71fc7b9ab7be8606fd85a Mon Sep 17 00:00:00 2001
+From f7c0679f3fa41109ff3b3fe7a6610df172fa37a6 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 1 May 2013 19:46:17 +0100
-Subject: [PATCH 037/194] Add dwc_otg driver
+Subject: [PATCH 037/325] Add dwc_otg driver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -911,7 +911,7 @@ index f713cecc1f41..72bf1da12a52 100644
return i;
}
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 55c87be5764c..55a7b7f7d613 100644
+index d325dd66f10e..2bbaf83e9b79 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -5248,7 +5248,7 @@ static void port_event(struct usb_hub *hub, int port1)
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0038-bcm2708-framebuffer-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0038-bcm2708-framebuffer-driver.patch
index 2c33b8bf..46569a57 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0038-bcm2708-framebuffer-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0038-bcm2708-framebuffer-driver.patch
@@ -1,7 +1,7 @@
-From 43102f75c1b95b0ef04fce4b9785fa0470225fbc Mon Sep 17 00:00:00 2001
+From 32b63bc1024d4518115ab2c71997ae087c8b1082 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 17 Jun 2015 17:06:34 +0100
-Subject: [PATCH 038/194] bcm2708 framebuffer driver
+Subject: [PATCH 038/325] bcm2708 framebuffer driver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0039-fbdev-add-FBIOCOPYAREA-ioctl.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0039-fbdev-add-FBIOCOPYAREA-ioctl.patch
index 6a8baf2e..0c01f7c3 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0039-fbdev-add-FBIOCOPYAREA-ioctl.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0039-fbdev-add-FBIOCOPYAREA-ioctl.patch
@@ -1,7 +1,7 @@
-From a708c9c6d104b462a779aafcef13a88e6ba959f3 Mon Sep 17 00:00:00 2001
+From bdbad49acc36acdb47a4f7f417701e47918cf845 Mon Sep 17 00:00:00 2001
From: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon, 17 Jun 2013 13:32:11 +0300
-Subject: [PATCH 039/194] fbdev: add FBIOCOPYAREA ioctl
+Subject: [PATCH 039/325] fbdev: add FBIOCOPYAREA ioctl
Based on the patch authored by Ali Gholami Rudi at
https://lkml.org/lkml/2009/7/13/153
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0040-Speed-up-console-framebuffer-imageblit-function.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0040-Speed-up-console-framebuffer-imageblit-function.patch
index 0097403d..390f3d6d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0040-Speed-up-console-framebuffer-imageblit-function.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0040-Speed-up-console-framebuffer-imageblit-function.patch
@@ -1,7 +1,7 @@
-From e1803dfad5f5e00220e261af57c44512b404beba Mon Sep 17 00:00:00 2001
+From d36c90442800c607a3106ac8a455622c9550b3de Mon Sep 17 00:00:00 2001
From: Harm Hanemaaijer <fgenfb@yahoo.com>
Date: Thu, 20 Jun 2013 20:21:39 +0200
-Subject: [PATCH 040/194] Speed up console framebuffer imageblit function
+Subject: [PATCH 040/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0041-dmaengine-Add-support-for-BCM2708.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0041-dmaengine-Add-support-for-BCM2708.patch
index 8027ba19..049dfcc2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0041-dmaengine-Add-support-for-BCM2708.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0041-dmaengine-Add-support-for-BCM2708.patch
@@ -1,7 +1,7 @@
-From 93f3a656addf86972d3cfff3cc946cfe633ae3f5 Mon Sep 17 00:00:00 2001
+From fbedb45be7e4ca6061207f29ed083ecf9cb33564 Mon Sep 17 00:00:00 2001
From: Florian Meier <florian.meier@koalo.de>
Date: Fri, 22 Nov 2013 14:22:53 +0100
-Subject: [PATCH 041/194] dmaengine: Add support for BCM2708
+Subject: [PATCH 041/325] dmaengine: Add support for BCM2708
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0042-MMC-added-alternative-MMC-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0042-MMC-added-alternative-MMC-driver.patch
index 47a97957..065db20c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0042-MMC-added-alternative-MMC-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0042-MMC-added-alternative-MMC-driver.patch
@@ -1,7 +1,7 @@
-From 86ff0aa6fada11d9115425c400640fceb7eb5209 Mon Sep 17 00:00:00 2001
+From eac197ab366c5aa6e79096afc4957fa42318b406 Mon Sep 17 00:00:00 2001
From: gellert <gellert@raspberrypi.org>
Date: Fri, 15 Aug 2014 16:35:06 +0100
-Subject: [PATCH 042/194] MMC: added alternative MMC driver
+Subject: [PATCH 042/325] MMC: added alternative MMC driver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -319,7 +319,7 @@ index dd2f73af8f2c..b11a56e76a4f 100644
};
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
-index a44ec8bb5418..7c77afa5f159 100644
+index 260be2c3c61d..cbc2225d057f 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -4,6 +4,35 @@
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0043-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0043-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch
index 1e0995aa..d1a9f1c7 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0043-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0043-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch
@@ -1,7 +1,7 @@
-From 82223573d5abe7434c39487ccadd04f50fa98740 Mon Sep 17 00:00:00 2001
+From 3410a2b4c0266eb8f4a05739b50d17843a78444a Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 25 Mar 2015 17:49:47 +0000
-Subject: [PATCH 043/194] Adding bcm2835-sdhost driver, and an overlay to
+Subject: [PATCH 043/325] Adding bcm2835-sdhost driver, and an overlay to
enable it
BCM2835 has two SD card interfaces. This driver uses the other one.
@@ -236,7 +236,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
3 files changed, 2225 insertions(+)
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
-index 7c77afa5f159..a9e8830013ef 100644
+index cbc2225d057f..a2210baba977 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -33,6 +33,16 @@ config MMC_BCM2835_PIO_DMA_BARRIER
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0044-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0044-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch
index 47cdc71d..59ac24fa 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0044-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0044-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch
@@ -1,7 +1,7 @@
-From 9f7367b877ff76f3078757e2bb2e52a62bd1a374 Mon Sep 17 00:00:00 2001
+From 038a4a3df148b81e8da93d6b9965fdae26291bdb Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 28 Oct 2016 15:36:43 +0100
-Subject: [PATCH 044/194] vc_mem: Add vc_mem driver for querying firmware
+Subject: [PATCH 044/325] vc_mem: Add vc_mem driver for querying firmware
memory addresses
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0045-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0045-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch
index b507bb9a..3f596da8 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0045-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0045-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch
@@ -1,7 +1,7 @@
-From 46a01619f047025eed27f55083d9b32f72ad3c63 Mon Sep 17 00:00:00 2001
+From 379b927f1e5c63b5d5badb0932edb3fe9d956573 Mon Sep 17 00:00:00 2001
From: Tim Gover <tgover@broadcom.com>
Date: Tue, 22 Jul 2014 15:41:04 +0100
-Subject: [PATCH 045/194] vcsm: VideoCore shared memory service for BCM2835
+Subject: [PATCH 045/325] vcsm: VideoCore shared memory service for BCM2835
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0046-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0046-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch
index b76e8387..0c67820e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0046-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0046-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch
@@ -1,7 +1,7 @@
-From 09e97e2003076c56f422fe3cedb57c3be45dc946 Mon Sep 17 00:00:00 2001
+From 5b3ddcf50818a7ed1bf9eaf2412e567455786315 Mon Sep 17 00:00:00 2001
From: Luke Wren <luke@raspberrypi.org>
Date: Fri, 21 Aug 2015 23:14:48 +0100
-Subject: [PATCH 046/194] Add /dev/gpiomem device for rootless user GPIO access
+Subject: [PATCH 046/325] Add /dev/gpiomem device for rootless user GPIO access
Signed-off-by: Luke Wren <luke@raspberrypi.org>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0047-Add-SMI-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0047-Add-SMI-driver.patch
index bdfaab69..9b5d7e1b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0047-Add-SMI-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0047-Add-SMI-driver.patch
@@ -1,7 +1,7 @@
-From fa42c0549447bf7525e21084fe1d78a2df3ab63d Mon Sep 17 00:00:00 2001
+From 759788a3e6fa89aaebf8e9b22d90f23d83a74946 Mon Sep 17 00:00:00 2001
From: Luke Wren <wren6991@gmail.com>
Date: Sat, 5 Sep 2015 01:14:45 +0100
-Subject: [PATCH 047/194] Add SMI driver
+Subject: [PATCH 047/325] Add SMI driver
Signed-off-by: Luke Wren <wren6991@gmail.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0048-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0048-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch
index 943ebb75..ff98d3a4 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0048-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0048-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch
@@ -1,7 +1,7 @@
-From b7da38e9f13a1614ba05f4bdcdd925371351957e Mon Sep 17 00:00:00 2001
+From 7beb318923a957535d71b3b3da211114807ab1ba Mon Sep 17 00:00:00 2001
From: Martin Sperl <kernel@martin.sperl.org>
Date: Tue, 26 Apr 2016 14:59:21 +0000
-Subject: [PATCH 048/194] MISC: bcm2835: smi: use clock manager and fix reload
+Subject: [PATCH 048/325] MISC: bcm2835: smi: use clock manager and fix reload
issues
Use clock manager instead of self-made clockmanager.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0049-Add-SMI-NAND-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0049-Add-SMI-NAND-driver.patch
index 7f29cfe4..784c1677 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0049-Add-SMI-NAND-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0049-Add-SMI-NAND-driver.patch
@@ -1,7 +1,7 @@
-From aef7060eda0feb2f59f20d9dea704436300adb5a Mon Sep 17 00:00:00 2001
+From e5e17b7f1dbff1cc63a00c0eacbfbe285554bbf0 Mon Sep 17 00:00:00 2001
From: Luke Wren <wren6991@gmail.com>
Date: Sat, 5 Sep 2015 01:16:10 +0100
-Subject: [PATCH 049/194] Add SMI NAND driver
+Subject: [PATCH 049/325] Add SMI NAND driver
Signed-off-by: Luke Wren <wren6991@gmail.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0050-Revert-Add-SMI-NAND-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0050-Revert-Add-SMI-NAND-driver.patch
index 7ef86a65..5ec8b276 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0050-Revert-Add-SMI-NAND-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0050-Revert-Add-SMI-NAND-driver.patch
@@ -1,7 +1,7 @@
-From f2ab50d3f66c35e87f529b431007266b1c190ec1 Mon Sep 17 00:00:00 2001
+From de699f5726122f2f876d195942e04ac43a30712d Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 12 Nov 2018 15:57:17 +0000
-Subject: [PATCH 050/194] Revert "Add SMI NAND driver"
+Subject: [PATCH 050/325] Revert "Add SMI NAND driver"
This reverts commit b1521a1f77c32e0754edf41064f8eac574380634.
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0051-Add-cpufreq-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0051-Add-cpufreq-driver.patch
index 35a07a7c..b5e2800e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0051-Add-cpufreq-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0051-Add-cpufreq-driver.patch
@@ -1,7 +1,7 @@
-From ca40700822529d029482e38b6b0a9e266dcedeab Mon Sep 17 00:00:00 2001
+From 56866b3dc83ca4cf22bd28023cf1e07ef5bd354d Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:49:20 +0100
-Subject: [PATCH 051/194] Add cpufreq driver
+Subject: [PATCH 051/325] Add cpufreq driver
Signed-off-by: popcornmix <popcornmix@gmail.com>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0052-Add-Chris-Boot-s-i2c-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0052-Add-Chris-Boot-s-i2c-driver.patch
index c572059e..eb507921 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0052-Add-Chris-Boot-s-i2c-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0052-Add-Chris-Boot-s-i2c-driver.patch
@@ -1,7 +1,7 @@
-From 7290533a44d88ee44634d1c52d8a346c680285ad Mon Sep 17 00:00:00 2001
+From 2b71eefa1a62e4c4d9ac8ed9cd0e42fc051752ee Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 17 Jun 2015 15:44:08 +0100
-Subject: [PATCH 052/194] Add Chris Boot's i2c driver
+Subject: [PATCH 052/325] Add Chris Boot's i2c driver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0053-char-broadcom-Add-vcio-module.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0053-char-broadcom-Add-vcio-module.patch
index 4087ec4d..ebaaf9f2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0053-char-broadcom-Add-vcio-module.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0053-char-broadcom-Add-vcio-module.patch
@@ -1,7 +1,7 @@
-From 7a99be196ae64f73ae61262e21eedc513a37070e Mon Sep 17 00:00:00 2001
+From c110081411585b5d2af009a9e04de7ef03fe6dff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Fri, 26 Jun 2015 14:27:06 +0200
-Subject: [PATCH 053/194] char: broadcom: Add vcio module
+Subject: [PATCH 053/325] char: broadcom: Add vcio module
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0054-firmware-bcm2835-Support-ARCH_BCM270x.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0054-firmware-bcm2835-Support-ARCH_BCM270x.patch
index ff107f8d..4c50c643 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0054-firmware-bcm2835-Support-ARCH_BCM270x.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0054-firmware-bcm2835-Support-ARCH_BCM270x.patch
@@ -1,7 +1,7 @@
-From 7540aac5413a37ed67627cb7007eabc2d05f2bdc Mon Sep 17 00:00:00 2001
+From 2f63cec2dec141409bd29d895bcab61773ab656d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Fri, 26 Jun 2015 14:25:01 +0200
-Subject: [PATCH 054/194] firmware: bcm2835: Support ARCH_BCM270x
+Subject: [PATCH 054/325] firmware: bcm2835: Support ARCH_BCM270x
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0055-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0055-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch
index 246428f4..6502480d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0055-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0055-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch
@@ -1,7 +1,7 @@
-From 388893e51567c4e0ccba2c9fd88143e62cda8a93 Mon Sep 17 00:00:00 2001
+From a0e1e082721d5f63fa07b488910cb7004b7422f3 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 11 May 2015 09:00:42 +0100
-Subject: [PATCH 055/194] scripts: Add mkknlimg and knlinfo scripts from tools
+Subject: [PATCH 055/325] scripts: Add mkknlimg and knlinfo scripts from tools
repo
The Raspberry Pi firmware looks for a trailer on the kernel image to
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0056-BCM2708-Add-core-Device-Tree-support.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0056-BCM2708-Add-core-Device-Tree-support.patch
index b4a107d4..0803fe3c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0056-BCM2708-Add-core-Device-Tree-support.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0056-BCM2708-Add-core-Device-Tree-support.patch
@@ -1,7 +1,7 @@
-From b2485abef063b14f72e203ec08c47765df9422c0 Mon Sep 17 00:00:00 2001
+From 3f311e36e7e3b1ec86d532d04aa69daafbeaa1db Mon Sep 17 00:00:00 2001
From: notro <notro@tronnes.org>
Date: Wed, 9 Jul 2014 14:46:08 +0200
-Subject: [PATCH 056/194] BCM2708: Add core Device Tree support
+Subject: [PATCH 056/325] BCM2708: Add core Device Tree support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0057-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0057-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch
index 48c8d95d..e7250c3b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0057-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0057-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch
@@ -1,7 +1,7 @@
-From 7a04ffc135f19d541770972e9495f8e5ffcec598 Mon Sep 17 00:00:00 2001
+From 71c294123acfeea35d7864f2fe61963d84120cb9 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Fri, 6 Feb 2015 13:50:57 +0000
-Subject: [PATCH 057/194] BCM270x_DT: Add pwr_led, and the required "input"
+Subject: [PATCH 057/325] BCM270x_DT: Add pwr_led, and the required "input"
trigger
The "input" trigger makes the associated GPIO an input. This is to support
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0058-Added-Device-IDs-for-August-DVB-T-205.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0058-Added-Device-IDs-for-August-DVB-T-205.patch
index 20e5b6ac..e73e8001 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0058-Added-Device-IDs-for-August-DVB-T-205.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0058-Added-Device-IDs-for-August-DVB-T-205.patch
@@ -1,7 +1,7 @@
-From 822eaaea26c31f11e73651140fb9dcd763e97851 Mon Sep 17 00:00:00 2001
+From fe93779ee033b5926f507eb81f70afedea36df49 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:54:08 +0100
-Subject: [PATCH 058/194] Added Device IDs for August DVB-T 205
+Subject: [PATCH 058/325] Added Device IDs for August DVB-T 205
---
drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 ++++
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0059-Improve-__copy_to_user-and-__copy_from_user-performa.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0059-Improve-__copy_to_user-and-__copy_from_user-performa.patch
index 49662b0a..eccee92a 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0059-Improve-__copy_to_user-and-__copy_from_user-performa.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0059-Improve-__copy_to_user-and-__copy_from_user-performa.patch
@@ -1,7 +1,7 @@
-From 8e916999621d47b8fe1dbc7b2ae3bdd95a64ca1d Mon Sep 17 00:00:00 2001
+From 34a8571c7b4c86ed84796f5da1247a2aa1146164 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 28 Nov 2016 16:50:04 +0000
-Subject: [PATCH 059/194] Improve __copy_to_user and __copy_from_user
+Subject: [PATCH 059/325] Improve __copy_to_user and __copy_from_user
performance
Provide a __copy_from_user that uses memcpy. On BCM2708, use
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
index 9329edaf..80d64b4f 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
@@ -1,7 +1,7 @@
-From 559537e33ab8b516068f3fb1f5512a9a6a518e84 Mon Sep 17 00:00:00 2001
+From c20cfd10e5c4bf406ac35583c4e1cd2450a5eeb0 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 25 Jun 2015 12:16:11 +0100
-Subject: [PATCH 060/194] gpio-poweroff: Allow it to work on Raspberry Pi
+Subject: [PATCH 060/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0061-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0061-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
index 4e8774a8..db53b29c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0061-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0061-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
@@ -1,7 +1,7 @@
-From 7cdd016bba23cafbc773cfe267da24a7564ec124 Mon Sep 17 00:00:00 2001
+From 47291fae3314da2bf0f93a7311e8bd3430453db1 Mon Sep 17 00:00:00 2001
From: Phil Elwell <pelwell@users.noreply.github.com>
Date: Tue, 14 Jul 2015 14:32:47 +0100
-Subject: [PATCH 061/194] mfd: Add Raspberry Pi Sense HAT core driver
+Subject: [PATCH 061/325] mfd: Add Raspberry Pi Sense HAT core driver
---
drivers/input/joystick/Kconfig | 8 +
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0062-ASoC-pcm512x-implement-set_tdm_slot-interface.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0062-ASoC-pcm512x-implement-set_tdm_slot-interface.patch
index 46ff9f0a..d2b16ecd 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0062-ASoC-pcm512x-implement-set_tdm_slot-interface.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0062-ASoC-pcm512x-implement-set_tdm_slot-interface.patch
@@ -1,7 +1,7 @@
-From 788354c4fcdd7410b30a8eea6c8ebecb95dafab1 Mon Sep 17 00:00:00 2001
+From b8a9ae1627fa6dd9eb634c667b725a23fbcd9fe7 Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Thu, 22 Feb 2018 11:55:06 +0100
-Subject: [PATCH 062/194] ASoC: pcm512x: implement set_tdm_slot interface
+Subject: [PATCH 062/325] ASoC: pcm512x: implement set_tdm_slot interface
PCM512x can accept data padded with additional BCLK cycles
but the driver currently lacks an interface to configure this.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0063-ASoC-Add-support-for-Rpi-DAC.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0063-ASoC-Add-support-for-Rpi-DAC.patch
index e6bc6ba5..649a440a 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0063-ASoC-Add-support-for-Rpi-DAC.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0063-ASoC-Add-support-for-Rpi-DAC.patch
@@ -1,7 +1,7 @@
-From 46cf3285f847eafaf6607a7871553af9016f0b92 Mon Sep 17 00:00:00 2001
+From 3f666687d62c738a47df736ae62ebafe6ed72553 Mon Sep 17 00:00:00 2001
From: Florian Meier <florian.meier@koalo.de>
Date: Mon, 25 Jan 2016 15:48:59 +0000
-Subject: [PATCH 063/194] ASoC: Add support for Rpi-DAC
+Subject: [PATCH 063/325] ASoC: Add support for Rpi-DAC
---
sound/soc/codecs/Kconfig | 5 +++
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0064-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0064-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch
index 045d2341..94530f98 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0064-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0064-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch
@@ -1,7 +1,7 @@
-From 7833b687950fc7a489b5ea04351d1b6f22e4e165 Mon Sep 17 00:00:00 2001
+From 6c45e848d6fde65cd5cdc47a351d186ac7944b85 Mon Sep 17 00:00:00 2001
From: Gordon Garrity <gordon@iqaudio.com>
Date: Sat, 8 Mar 2014 16:56:57 +0000
-Subject: [PATCH 064/194] Add IQaudIO Sound Card support for Raspberry Pi
+Subject: [PATCH 064/325] Add IQaudIO Sound Card support for Raspberry Pi
Set a limit of 0dB on Digital Volume Control
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0065-Added-support-for-HiFiBerry-DAC.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0065-Added-support-for-HiFiBerry-DAC.patch
index 24a23cef..072e744d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0065-Added-support-for-HiFiBerry-DAC.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0065-Added-support-for-HiFiBerry-DAC.patch
@@ -1,7 +1,7 @@
-From e9f99d8154435f17415f4bc11f657ddf4f29cf6a Mon Sep 17 00:00:00 2001
+From 2edeeb7c80c5278e94b96f8d84bbc7f0d79fcd92 Mon Sep 17 00:00:00 2001
From: Daniel Matuschek <info@crazy-audio.com>
Date: Mon, 4 Aug 2014 10:06:56 +0200
-Subject: [PATCH 065/194] Added support for HiFiBerry DAC+
+Subject: [PATCH 065/325] Added support for HiFiBerry DAC+
The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses
a different codec chip (PCM5122), therefore a new driver is necessary.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0066-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0066-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch
index 8ee4343e..d8c13cde 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0066-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0066-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch
@@ -1,7 +1,7 @@
-From 56974efc4853abaefddc362a5b089e2cc570edff Mon Sep 17 00:00:00 2001
+From fbb3fb4f38604def176d2080cc5838caf5048a1c Mon Sep 17 00:00:00 2001
From: Daniel Matuschek <info@crazy-audio.com>
Date: Mon, 4 Aug 2014 11:09:58 +0200
-Subject: [PATCH 066/194] Added driver for HiFiBerry Amp amplifier add-on board
+Subject: [PATCH 066/325] Added driver for HiFiBerry Amp amplifier add-on board
The driver contains a low-level hardware driver for the TAS5713 and the
drivers for the Raspberry Pi I2S subsystem.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0067-Add-driver-for-rpi-proto.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0067-Add-driver-for-rpi-proto.patch
index 2cbc5126..19a24a84 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0067-Add-driver-for-rpi-proto.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0067-Add-driver-for-rpi-proto.patch
@@ -1,7 +1,7 @@
-From c1b379109bb4d99429b224c5468d79cd0fb80ae1 Mon Sep 17 00:00:00 2001
+From ddafff9c630b34333536c2e413286cc77b8abb15 Mon Sep 17 00:00:00 2001
From: Waldemar Brodkorb <wbrodkorb@conet.de>
Date: Wed, 25 Mar 2015 09:26:17 +0100
-Subject: [PATCH 067/194] Add driver for rpi-proto
+Subject: [PATCH 067/325] Add driver for rpi-proto
Forward port of 3.10.x driver from https://github.com/koalo
We are using a custom board and would like to use rpi 3.18.x
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0068-Add-Support-for-JustBoom-Audio-boards.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0068-Add-Support-for-JustBoom-Audio-boards.patch
index 28eb3acb..ed77f8c2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0068-Add-Support-for-JustBoom-Audio-boards.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0068-Add-Support-for-JustBoom-Audio-boards.patch
@@ -1,7 +1,7 @@
-From a87e48da973e7cbfbde9113a557a9e9ebaa463fc Mon Sep 17 00:00:00 2001
+From 0db312b2556529d2b7d23390c3272de8ad4aecf5 Mon Sep 17 00:00:00 2001
From: Aaron Shaw <shawaj@gmail.com>
Date: Thu, 7 Apr 2016 21:26:21 +0100
-Subject: [PATCH 068/194] Add Support for JustBoom Audio boards
+Subject: [PATCH 068/325] Add Support for JustBoom Audio boards
justboom-dac: Adjust for ALSA API change
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0069-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0069-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
index fae45884..fee33fdb 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0069-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0069-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
@@ -1,7 +1,7 @@
-From 61296367125e25e3ab7f584908523c73f478174c Mon Sep 17 00:00:00 2001
+From 979553f07662b6e47b0efab90b66a583d8bd71e0 Mon Sep 17 00:00:00 2001
From: Matt Flax <flatmax@flatmax.org>
Date: Mon, 16 May 2016 21:36:31 +1000
-Subject: [PATCH 069/194] New AudioInjector.net Pi soundcard with low jitter
+Subject: [PATCH 069/325] New AudioInjector.net Pi soundcard with low jitter
audio in and out.
Contains the sound/soc/bcm ALSA machine driver and necessary alterations to the Kconfig and Makefile.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0070-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0070-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
index b5047655..36e7551b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0070-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0070-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
@@ -1,7 +1,7 @@
-From 40b31202b8bdeab4de64586bd53d967c9c45aca1 Mon Sep 17 00:00:00 2001
+From 444ae46db5b25b9fe0cb24b3b06fa9ac83e34fd1 Mon Sep 17 00:00:00 2001
From: escalator2015 <jmtasende@gmail.com>
Date: Tue, 24 May 2016 16:20:09 +0100
-Subject: [PATCH 070/194] New driver for RRA DigiDAC1 soundcard using WM8741 +
+Subject: [PATCH 070/325] New driver for RRA DigiDAC1 soundcard using WM8741 +
WM8804
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0071-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0071-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
index 418a4109..294a6ff9 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0071-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0071-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
@@ -1,7 +1,7 @@
-From 4b8111a58cccf05f0484f84264c3257fbeb49050 Mon Sep 17 00:00:00 2001
+From 0c058b53fe14e5b40829d42aee9192a69834c1d4 Mon Sep 17 00:00:00 2001
From: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
Date: Sat, 2 Jul 2016 16:26:19 +0100
-Subject: [PATCH 071/194] Add support for Dion Audio LOCO DAC-AMP HAT
+Subject: [PATCH 071/325] Add support for Dion Audio LOCO DAC-AMP HAT
Using dedicated machine driver and pcm5102a codec driver.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0072-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0072-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch
index fec5b563..9ed884c9 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0072-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0072-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch
@@ -1,7 +1,7 @@
-From 99b7b86a7893bffd547a78ac84bd96cc6c16fef8 Mon Sep 17 00:00:00 2001
+From a5830fc32258c2a90eb5e6c5e722890230290c2f Mon Sep 17 00:00:00 2001
From: Clive Messer <clive.m.messer@gmail.com>
Date: Mon, 19 Sep 2016 14:01:04 +0100
-Subject: [PATCH 072/194] Allo Piano DAC boards: Initial 2 channel (stereo)
+Subject: [PATCH 072/325] Allo Piano DAC boards: Initial 2 channel (stereo)
support (#1645)
Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards,
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0073-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0073-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch
index 53bea9ef..2006a632 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0073-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0073-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch
@@ -1,7 +1,7 @@
-From b5deca082d00173fc188eaa59ecc6c9788ae4283 Mon Sep 17 00:00:00 2001
+From 291eb2fce9434585e7f6d69adc00d29845897440 Mon Sep 17 00:00:00 2001
From: Raashid Muhammed <raashidmuhammed@zilogic.com>
Date: Mon, 27 Mar 2017 12:35:00 +0530
-Subject: [PATCH 073/194] Add support for Allo Piano DAC 2.1 plus add-on board
+Subject: [PATCH 073/325] Add support for Allo Piano DAC 2.1 plus add-on board
for Raspberry Pi.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0074-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0074-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch
index fc25498c..fec1a542 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0074-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0074-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch
@@ -1,7 +1,7 @@
-From 5d7fe186e6f83b0516f3248bb198d112136d9def Mon Sep 17 00:00:00 2001
+From aa16d92fa788d5ca70b3e0dce1bb48e7f55d72c7 Mon Sep 17 00:00:00 2001
From: BabuSubashChandar <babuenir@gmail.com>
Date: Tue, 28 Mar 2017 20:04:42 +0530
-Subject: [PATCH 074/194] Add support for Allo Boss DAC add-on board for
+Subject: [PATCH 074/325] Add support for Allo Boss DAC add-on board for
Raspberry Pi. (#1924)
Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0075-Support-for-Blokas-Labs-pisound-board.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0075-Support-for-Blokas-Labs-pisound-board.patch
index 5214e398..e2faf371 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0075-Support-for-Blokas-Labs-pisound-board.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0075-Support-for-Blokas-Labs-pisound-board.patch
@@ -1,7 +1,7 @@
-From 44c6a5c357ff607d2d6f6062e4e88be712c7d3c3 Mon Sep 17 00:00:00 2001
+From dad51da97adb6a4c3daa0bc4c78e2586f6ed9da3 Mon Sep 17 00:00:00 2001
From: gtrainavicius <gtrainavicius@users.noreply.github.com>
Date: Sun, 23 Oct 2016 12:06:53 +0300
-Subject: [PATCH 075/194] Support for Blokas Labs pisound board
+Subject: [PATCH 075/325] Support for Blokas Labs pisound board
Pisound dynamic overlay (#1760)
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0076-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0076-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch
index 7ffc28cf..5020afae 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0076-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0076-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch
@@ -1,7 +1,7 @@
-From 777a3637f8ec5c7d49a047b64618b36bb08ef590 Mon Sep 17 00:00:00 2001
+From 842c5abc61ee22fba984b8e56822c13030a6cf4f Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Sun, 22 Jan 2017 12:49:37 +0100
-Subject: [PATCH 076/194] ASoC: Add driver for Cirrus Logic Audio Card
+Subject: [PATCH 076/325] ASoC: Add driver for Cirrus Logic Audio Card
Note: due to problems with deferred probing of regulators
the following softdep should be added to a modprobe.d file
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0077-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0077-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch
index 4434cd62..190e7f7b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0077-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0077-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch
@@ -1,7 +1,7 @@
-From f5b15f090b03c841bfbe71a38fc70a207d415aef Mon Sep 17 00:00:00 2001
+From 62110230cc84c1754fbc4d3379e5e927c4b1cddf Mon Sep 17 00:00:00 2001
From: Miquel <miquelblauw@hotmail.com>
Date: Fri, 24 Feb 2017 20:51:06 +0100
-Subject: [PATCH 077/194] sound: Support for Dion Audio LOCO-V2 DAC-AMP HAT
+Subject: [PATCH 077/325] sound: Support for Dion Audio LOCO-V2 DAC-AMP HAT
Signed-off-by: Miquel Blauw <info@dionaudio.nl>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0078-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0078-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch
index 8ed3f45a..714e2bad 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0078-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0078-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch
@@ -1,7 +1,7 @@
-From 3fa8adc35f47b6750cfddc4c752d0867aa4f6ee3 Mon Sep 17 00:00:00 2001
+From 4d5dfccf6e430ca572682c8e84fcb208598cafbf Mon Sep 17 00:00:00 2001
From: Fe-Pi <fe-pi@cox.net>
Date: Wed, 1 Mar 2017 04:42:43 -0700
-Subject: [PATCH 078/194] Add support for Fe-Pi audio sound card. (#1867)
+Subject: [PATCH 078/325] Add support for Fe-Pi audio sound card. (#1867)
Fe-Pi Audio Sound Card is based on NXP SGTL5000 codec.
Mechanical specification of the board is the same the Raspberry Pi Zero.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0079-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0079-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch
index 30d179f8..487e8d8e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0079-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0079-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch
@@ -1,7 +1,7 @@
-From 6198e436f25ff1df99fe94d85bbe3efb40818c68 Mon Sep 17 00:00:00 2001
+From 8637da5d30d8eb85f9482633c374f37db00aaf50 Mon Sep 17 00:00:00 2001
From: Matt Flax <flatmax@flatmax.org>
Date: Wed, 8 Mar 2017 20:04:13 +1100
-Subject: [PATCH 079/194] Add support for the AudioInjector.net Octo sound card
+Subject: [PATCH 079/325] Add support for the AudioInjector.net Octo sound card
AudioInjector Octo: sample rates, regulators, reset
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0080-Driver-support-for-Google-voiceHAT-soundcard.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0080-Driver-support-for-Google-voiceHAT-soundcard.patch
index f7577ea4..0cab5eb1 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0080-Driver-support-for-Google-voiceHAT-soundcard.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0080-Driver-support-for-Google-voiceHAT-soundcard.patch
@@ -1,7 +1,7 @@
-From bd8f751dafaaa499c19f0635a50d7098dffd9eb9 Mon Sep 17 00:00:00 2001
+From bd5af28fffea6c798c0a5c0c26977fac7a2e35ba Mon Sep 17 00:00:00 2001
From: Peter Malkin <petermalkin@google.com>
Date: Mon, 27 Mar 2017 16:38:21 -0700
-Subject: [PATCH 080/194] Driver support for Google voiceHAT soundcard.
+Subject: [PATCH 080/325] Driver support for Google voiceHAT soundcard.
ASoC: googlevoicehat-codec: Use correct device when grabbing GPIO
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0081-Driver-and-overlay-for-Allo-Katana-DAC.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0081-Driver-and-overlay-for-Allo-Katana-DAC.patch
index 132bb092..1ef61d39 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0081-Driver-and-overlay-for-Allo-Katana-DAC.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0081-Driver-and-overlay-for-Allo-Katana-DAC.patch
@@ -1,7 +1,7 @@
-From 26cecfb536bea8a138a7b2d08be840be2a7d4b5b Mon Sep 17 00:00:00 2001
+From 9327004164ab1cce2c5d8f30a4428d3c7d15719d Mon Sep 17 00:00:00 2001
From: allocom <sparky-dev@allo.com>
Date: Thu, 19 Apr 2018 12:12:26 +0530
-Subject: [PATCH 081/194] Driver and overlay for Allo Katana DAC
+Subject: [PATCH 081/325] Driver and overlay for Allo Katana DAC
Allo Katana DAC: Updated default values
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0082-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0082-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch
index 920d45eb..6fc45bce 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0082-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0082-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch
@@ -1,7 +1,7 @@
-From fc072f333bac96c2a1d55ba616c4744083630e45 Mon Sep 17 00:00:00 2001
+From c349f8fd2928fb32cc5bc104fb68117044b1e6ea Mon Sep 17 00:00:00 2001
From: Tim Gover <tim.gover@raspberrypi.org>
Date: Wed, 27 Jun 2018 15:59:12 +0100
-Subject: [PATCH 082/194] ASoC: Add generic RPI driver for simple soundcards.
+Subject: [PATCH 082/325] ASoC: Add generic RPI driver for simple soundcards.
The RPI simple sound card driver provides a generic ALSA SOC card driver
supporting a variety of Pi HAT soundcards. The intention is to avoid
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0083-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0083-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch
index 5543de66..f3516b1f 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0083-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0083-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch
@@ -1,7 +1,7 @@
-From 56a8d4b83ea4989fbd08e8f4ad37b9cc6b73ec02 Mon Sep 17 00:00:00 2001
+From 96755240206109b50262fbf446c4d4d958361745 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 3 Sep 2018 17:00:36 +0100
-Subject: [PATCH 083/194] ASoC: Add Kconfig and Makefile for sound/soc/bcm
+Subject: [PATCH 083/325] ASoC: Add Kconfig and Makefile for sound/soc/bcm
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0084-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0084-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch
index 1136e593..aff82488 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0084-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0084-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch
@@ -1,7 +1,7 @@
-From c29577ea9bf8cc2eb9baffbf548bc26cea57ba2d Mon Sep 17 00:00:00 2001
+From 68581d7e519035a1d8bce7278beb24d27cba112d Mon Sep 17 00:00:00 2001
From: Tim Gover <tim.gover@raspberrypi.org>
Date: Sat, 21 Jul 2018 20:07:46 +0100
-Subject: [PATCH 084/194] ASoC: Create a generic Pi Hat WM8804 driver
+Subject: [PATCH 084/325] ASoC: Create a generic Pi Hat WM8804 driver
Reduce the amount of duplicated code by creating a generic driver for
Pi Hat digi cards using the WM8804 codec.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0085-rpi_display-add-backlight-driver-and-overlay.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0085-rpi_display-add-backlight-driver-and-overlay.patch
index eebad554..94345281 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0085-rpi_display-add-backlight-driver-and-overlay.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0085-rpi_display-add-backlight-driver-and-overlay.patch
@@ -1,7 +1,7 @@
-From 47b1ab462c5a6a71830371d91a2f7bb656b89bf8 Mon Sep 17 00:00:00 2001
+From 3ed832e58b0997f841d1317e7d9426497aa99b2c Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Wed, 21 Oct 2015 14:55:21 +0100
-Subject: [PATCH 085/194] rpi_display: add backlight driver and overlay
+Subject: [PATCH 085/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0086-bcm2835-virtgpio-Virtual-GPIO-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0086-bcm2835-virtgpio-Virtual-GPIO-driver.patch
index f64f3c8a..2eef97e9 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0086-bcm2835-virtgpio-Virtual-GPIO-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0086-bcm2835-virtgpio-Virtual-GPIO-driver.patch
@@ -1,7 +1,7 @@
-From 1a3206f2929e2757a247d8f9933626efa912aa0f Mon Sep 17 00:00:00 2001
+From 6ba2b1c08af8115c3c65bca212aa032e5b6e8eff Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 23 Feb 2016 19:56:04 +0000
-Subject: [PATCH 086/194] bcm2835-virtgpio: Virtual GPIO driver
+Subject: [PATCH 086/325] bcm2835-virtgpio: Virtual GPIO driver
Add a virtual GPIO driver that uses the firmware mailbox interface to
request that the VPU toggles LEDs.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0087-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0087-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch
index 8d13686b..3ee5e036 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0087-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0087-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch
@@ -1,7 +1,7 @@
-From 1beefd3451b95342f1dd928767979b4beafb1afb Mon Sep 17 00:00:00 2001
+From 4b304b9270943e9d38f9beee7683ae7f354398aa Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 3 Sep 2012 17:10:23 +0100
-Subject: [PATCH 087/194] net: Add non-mainline source for rtl8192cu wlan
+Subject: [PATCH 087/325] net: Add non-mainline source for rtl8192cu wlan
We are now syncing with version from:
https://github.com/pvaret/rtl8192cu-fixes
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0088-OF-DT-Overlay-configfs-interface.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0088-OF-DT-Overlay-configfs-interface.patch
index ac2e3946..7900c8db 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0088-OF-DT-Overlay-configfs-interface.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0088-OF-DT-Overlay-configfs-interface.patch
@@ -1,7 +1,7 @@
-From f4a21e2a91415af977982a780b708510e4035968 Mon Sep 17 00:00:00 2001
+From 40546fcc4b03d142ead78a0f14f5e0e244ff5a6f Mon Sep 17 00:00:00 2001
From: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
Date: Wed, 3 Dec 2014 13:23:28 +0200
-Subject: [PATCH 088/194] OF: DT-Overlay configfs interface
+Subject: [PATCH 088/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0089-brcm-adds-support-for-BCM43341-wifi.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0089-brcm-adds-support-for-BCM43341-wifi.patch
index 104dc389..87923e7f 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0089-brcm-adds-support-for-BCM43341-wifi.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0089-brcm-adds-support-for-BCM43341-wifi.patch
@@ -1,7 +1,7 @@
-From 67a6f20844eaa35eb8765d7e5b6c3ffb986dd27c Mon Sep 17 00:00:00 2001
+From 3cc85e6d16632f4c7b2130e22d99d2c0aaed4a90 Mon Sep 17 00:00:00 2001
From: Cheong2K <cheong@redbear.cc>
Date: Fri, 26 Feb 2016 18:20:10 +0800
-Subject: [PATCH 089/194] brcm: adds support for BCM43341 wifi
+Subject: [PATCH 089/325] brcm: adds support for BCM43341 wifi
brcmfmac: Disable power management
@@ -47,7 +47,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
3 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-index 35301237d435..1b55e15529df 100644
+index ded629460fc0..790e54e7d578 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -2705,6 +2705,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev,
@@ -59,7 +59,7 @@ index 35301237d435..1b55e15529df 100644
cfg->pwr_save = enabled;
if (!check_vif_up(ifp->vif)) {
-@@ -6794,12 +6796,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2],
+@@ -6800,12 +6802,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2],
struct brcmfmac_pd_cc *country_codes;
struct brcmfmac_pd_cc_entry *cc;
s32 found_index;
@@ -80,7 +80,7 @@ index 35301237d435..1b55e15529df 100644
}
if ((alpha2[0] == ccreq->country_abbrev[0]) &&
-@@ -6823,10 +6831,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2],
+@@ -6829,10 +6837,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2],
brcmf_dbg(TRACE, "No country code match found\n");
return -EINVAL;
}
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch
index bdafb55f..0a78a215 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch
@@ -1,7 +1,7 @@
-From 50eb9f32133e2d503b968bdbd3ad9d843b7d2288 Mon Sep 17 00:00:00 2001
+From de564f13bc04da7445caa2698a4e839b916a03d2 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 17 Dec 2015 13:37:07 +0000
-Subject: [PATCH 090/194] hci_h5: Don't send conf_req when ACTIVE
+Subject: [PATCH 090/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0091-config-Add-default-configs.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0091-config-Add-default-configs.patch
index 8772930c..42c1cf67 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0091-config-Add-default-configs.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0091-config-Add-default-configs.patch
@@ -1,7 +1,7 @@
-From c65b347d4072dac27d91239c1660b242986f7109 Mon Sep 17 00:00:00 2001
+From d858e5638e808edfaee8770f1784b1bf4999aba2 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 13 Apr 2015 17:16:29 +0100
-Subject: [PATCH 091/194] config: Add default configs
+Subject: [PATCH 091/325] config: Add default configs
---
arch/arm/configs/bcm2709_defconfig | 1381 ++++++++++++++++++++++++++++
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0092-Add-arm64-configuration-and-device-tree-differences..patch b/sys-kernel/boest-v5.0.21/raspberrypi/0092-Add-arm64-configuration-and-device-tree-differences..patch
index 0503e388..51cf5cf2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0092-Add-arm64-configuration-and-device-tree-differences..patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0092-Add-arm64-configuration-and-device-tree-differences..patch
@@ -1,7 +1,7 @@
-From 5b1c1c98e86fadb0dc88959f0522f14eb819a45a Mon Sep 17 00:00:00 2001
+From 6edc47367cbe314d76fb217d94d1dab51ddf92da Mon Sep 17 00:00:00 2001
From: Michael Zoran <mzoran@crowfest.net>
Date: Wed, 24 Aug 2016 03:35:56 -0700
-Subject: [PATCH 092/194] Add arm64 configuration and device tree differences.
+Subject: [PATCH 092/325] Add arm64 configuration and device tree differences.
Disable MMC_BCM2835_SDHOST and MMC_BCM2835 since these drivers are crashing
at the moment.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0093-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0093-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch
index 1b7c32c6..337042a7 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0093-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0093-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch
@@ -1,7 +1,7 @@
-From 667f663cb604c772227778941c83f7b5c9911660 Mon Sep 17 00:00:00 2001
+From 3cb6dc52946cbfef2f3db21dd2f12157f3f4fc65 Mon Sep 17 00:00:00 2001
From: Michael Zoran <mzoran@crowfest.net>
Date: Sat, 14 Jan 2017 21:33:51 -0800
-Subject: [PATCH 093/194] ARM64/DWC_OTG: Port dwc_otg driver to ARM64
+Subject: [PATCH 093/325] ARM64/DWC_OTG: Port dwc_otg driver to ARM64
In ARM64, the FIQ mechanism used by this driver is not current
implemented. As a workaround, reqular IRQ is used instead
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0094-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0094-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch
index cf4af1ab..64c77e95 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0094-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0094-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch
@@ -1,7 +1,7 @@
-From c9e7e08300749b6508a63500d4b9ac1509986bf8 Mon Sep 17 00:00:00 2001
+From 43b08ca8e1dad58a71707f2765b4dfc206133bc1 Mon Sep 17 00:00:00 2001
From: Michael Zoran <mzoran@crowfest.net>
Date: Sat, 14 Jan 2017 21:43:57 -0800
-Subject: [PATCH 094/194] ARM64: Round-Robin dispatch IRQs between CPUs.
+Subject: [PATCH 094/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0095-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0095-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch
index c2c181ce..8124064d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0095-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0095-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch
@@ -1,7 +1,7 @@
-From 876d4d27e5bab4f467efcd67ffb282a46d3b8909 Mon Sep 17 00:00:00 2001
+From 61aa90c838ca0d6c7d68a93d686468f7eca49a3c Mon Sep 17 00:00:00 2001
From: Michael Zoran <mzoran@crowfest.net>
Date: Sat, 11 Feb 2017 01:18:31 -0800
-Subject: [PATCH 095/194] ARM64: Force hardware emulation of deprecated
+Subject: [PATCH 095/325] ARM64: Force hardware emulation of deprecated
instructions.
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0096-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0096-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch
index 411841c7..8c3b4c58 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0096-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0096-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch
@@ -1,7 +1,7 @@
-From 09dba0b8cbda7c016497f82e769b7c6c7e4af8b9 Mon Sep 17 00:00:00 2001
+From a03d89659c9197b7ab5922da09653fb331fb7d9b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 10 Feb 2017 17:57:08 -0800
-Subject: [PATCH 096/194] build/arm64: Add rules for .dtbo files for dts
+Subject: [PATCH 096/325] build/arm64: Add rules for .dtbo files for dts
overlays
We now create overlays as .dtbo files.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0097-Revert-build-arm64-Add-rules-for-.dtbo-files-for-dts.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0097-Revert-build-arm64-Add-rules-for-.dtbo-files-for-dts.patch
index 3b858460..be6417e5 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0097-Revert-build-arm64-Add-rules-for-.dtbo-files-for-dts.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0097-Revert-build-arm64-Add-rules-for-.dtbo-files-for-dts.patch
@@ -1,7 +1,7 @@
-From e2cd355b70d5d207db27a0f20bda184964d8df36 Mon Sep 17 00:00:00 2001
+From 2519c336a4f503c023c3f18f099af10211e69678 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 26 Nov 2018 21:01:18 +0000
-Subject: [PATCH 097/194] Revert "build/arm64: Add rules for .dtbo files for
+Subject: [PATCH 097/325] Revert "build/arm64: Add rules for .dtbo files for
dts overlays"
DT build rules are now in the common top-level Makefile.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0098-cache-export-clean-and-invalidate.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0098-cache-export-clean-and-invalidate.patch
index f49661ca..2896c5de 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0098-cache-export-clean-and-invalidate.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0098-cache-export-clean-and-invalidate.patch
@@ -1,7 +1,7 @@
-From ecd458cd07e93291715d0c387f477b8e66d89ea9 Mon Sep 17 00:00:00 2001
+From 93faa0a4a5c3fc4e80b204ce1e26e3c92fd94b44 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 25 Aug 2017 19:18:13 +0100
-Subject: [PATCH 098/194] cache: export clean and invalidate
+Subject: [PATCH 098/325] cache: export clean and invalidate
hack: cache: Fix linker error
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0099-AXI-performance-monitor-driver-2222.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0099-AXI-performance-monitor-driver-2222.patch
index a36a991d..e18dc360 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0099-AXI-performance-monitor-driver-2222.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0099-AXI-performance-monitor-driver-2222.patch
@@ -1,7 +1,7 @@
-From a1d8e080c154bcbfe1c0c0ffa0ee0792e8a14299 Mon Sep 17 00:00:00 2001
+From 9f0a1c5b6e97ab11813bf309d069773aa511c98b Mon Sep 17 00:00:00 2001
From: James Hughes <JamesH65@users.noreply.github.com>
Date: Tue, 14 Nov 2017 15:13:15 +0000
-Subject: [PATCH 099/194] AXI performance monitor driver (#2222)
+Subject: [PATCH 099/325] AXI performance monitor driver (#2222)
Uses the debugfs I/F to provide access to the AXI
bus performance monitors.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0100-mcp2515-Use-DT-supplied-interrupt-flags.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0100-mcp2515-Use-DT-supplied-interrupt-flags.patch
index e433bf3b..8c5c9c11 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0100-mcp2515-Use-DT-supplied-interrupt-flags.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0100-mcp2515-Use-DT-supplied-interrupt-flags.patch
@@ -1,7 +1,7 @@
-From 5d9fc0900101f43b5fe25b18d508a960e357284c Mon Sep 17 00:00:00 2001
+From c66e9cbf6e2074d56e70494791bb0be475232b50 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 14 Nov 2017 11:03:22 +0000
-Subject: [PATCH 100/194] mcp2515: Use DT-supplied interrupt flags
+Subject: [PATCH 100/325] mcp2515: Use DT-supplied interrupt flags
The MCP2515 datasheet clearly describes a level-triggered interrupt
pin. Therefore the receiving interrupt controller must also be
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0101-cgroup-Disable-cgroup-memory-by-default.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0101-cgroup-Disable-cgroup-memory-by-default.patch
index 5319b45d..2d6bef02 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0101-cgroup-Disable-cgroup-memory-by-default.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0101-cgroup-Disable-cgroup-memory-by-default.patch
@@ -1,7 +1,7 @@
-From 8742c93be3168ce2c7bff159499efdda6d3b0086 Mon Sep 17 00:00:00 2001
+From b7c2b533166d0f309dece3c03daf01a4beb46138 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 27 Nov 2017 17:14:54 +0000
-Subject: [PATCH 101/194] cgroup: Disable cgroup "memory" by default
+Subject: [PATCH 101/325] 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:
@@ -16,10 +16,10 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
1 file changed, 30 insertions(+)
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
-index f84bf28f36ba..1c8992ef52ac 100644
+index ee77b0f00edd..2127a5ecf1c1 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -5366,6 +5366,8 @@ int __init cgroup_init_early(void)
+@@ -5372,6 +5372,8 @@ int __init cgroup_init_early(void)
}
static u16 cgroup_disable_mask __initdata;
@@ -28,7 +28,7 @@ index f84bf28f36ba..1c8992ef52ac 100644
/**
* cgroup_init - cgroup initialization
-@@ -5406,6 +5408,12 @@ int __init cgroup_init(void)
+@@ -5412,6 +5414,12 @@ int __init cgroup_init(void)
mutex_unlock(&cgroup_mutex);
@@ -41,7 +41,7 @@ index f84bf28f36ba..1c8992ef52ac 100644
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
-@@ -5789,6 +5797,28 @@ static int __init cgroup_disable(char *str)
+@@ -5795,6 +5803,28 @@ static int __init cgroup_disable(char *str)
}
__setup("cgroup_disable=", cgroup_disable);
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0102-ARM-bcm2835-Set-Serial-number-and-Revision.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0102-ARM-bcm2835-Set-Serial-number-and-Revision.patch
index f5f6bab5..7865b7b3 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0102-ARM-bcm2835-Set-Serial-number-and-Revision.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0102-ARM-bcm2835-Set-Serial-number-and-Revision.patch
@@ -1,7 +1,7 @@
-From bc6118abb2fa04f0be30d24573ad47899efefc14 Mon Sep 17 00:00:00 2001
+From 8bd68ae503a34bff835e0dc61d702d348c252667 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Wed, 3 Jun 2015 12:26:13 +0200
-Subject: [PATCH 102/194] ARM: bcm2835: Set Serial number and Revision
+Subject: [PATCH 102/325] ARM: bcm2835: Set Serial number and Revision
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0103-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0103-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch
index ddb752f2..b8934f2d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0103-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0103-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch
@@ -1,7 +1,7 @@
-From fde94339515c346ac22bf1450f861eb344dcd1d6 Mon Sep 17 00:00:00 2001
+From ab9c542dda97b597c5bb37d52989303095701652 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 16 Jul 2018 14:40:13 +0100
-Subject: [PATCH 103/194] dwc-otg: FIQ: Fix "bad mode in data abort handler"
+Subject: [PATCH 103/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0104-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0104-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch
index e1286772..496549eb 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0104-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0104-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch
@@ -1,7 +1,7 @@
-From b1da8014529e194acf1952d35e342e5a4a3c6d97 Mon Sep 17 00:00:00 2001
+From c5b5e29bbc196689836095f7b3ab71ea1418db8d Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 11 Dec 2017 09:18:32 +0000
-Subject: [PATCH 104/194] ARM: Activate FIQs to avoid __irq_startup warnings
+Subject: [PATCH 104/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0105-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0105-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch
index 3e329988..86c6dc90 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0105-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0105-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch
@@ -1,7 +1,7 @@
-From de24c9ed62f8decd38c5817b2957422e900e583a Mon Sep 17 00:00:00 2001
+From 34ced1a45c0d43d48e15bea8e6d8ee89fbb75983 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 22 Jan 2018 17:26:38 +0000
-Subject: [PATCH 105/194] serial: 8250: bcm2835aux - suppress EPROBE_DEFER
+Subject: [PATCH 105/325] serial: 8250: bcm2835aux - suppress EPROBE_DEFER
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0106-raspberrypi-firmware-Export-the-general-transaction-.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0106-raspberrypi-firmware-Export-the-general-transaction-.patch
index 9bc9fbc7..ac8ad12d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0106-raspberrypi-firmware-Export-the-general-transaction-.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0106-raspberrypi-firmware-Export-the-general-transaction-.patch
@@ -1,7 +1,7 @@
-From 2470ea3dacf7de7cb93cd71864b07b4c5def68c3 Mon Sep 17 00:00:00 2001
+From 40858e8d32dd698f766a9b7651baa8326211da0a Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Wed, 14 Sep 2016 09:16:19 +0100
-Subject: [PATCH 106/194] raspberrypi-firmware: Export the general transaction
+Subject: [PATCH 106/325] raspberrypi-firmware: Export the general transaction
function.
The vc4-firmware-kms module is going to be doing the MBOX FB call.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0107-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0107-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch
index 7f2a859f..e021dc86 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0107-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0107-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch
@@ -1,7 +1,7 @@
-From 6baba2935db55ebef130e768ce2e7381514eae4a Mon Sep 17 00:00:00 2001
+From 151558d1ce863a9fa796aa59cc10bcc6a66303c6 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Wed, 14 Sep 2016 08:39:33 +0100
-Subject: [PATCH 107/194] drm/vc4: Add a mode for using the closed firmware for
+Subject: [PATCH 107/325] drm/vc4: Add a mode for using the closed firmware for
display.
Signed-off-by: Eric Anholt <eric@anholt.net>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0108-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0108-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch
index 174d74e0..4ecd19d3 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0108-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0108-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch
@@ -1,7 +1,7 @@
-From e851c4197ee342d93b8ceafc12532ef969df48f7 Mon Sep 17 00:00:00 2001
+From 69685d685825d687fd345b4b875a39e5bf1bc99b Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Wed, 1 Feb 2017 17:09:18 -0800
-Subject: [PATCH 108/194] drm/vc4: Name the primary and cursor planes in fkms.
+Subject: [PATCH 108/325] drm/vc4: Name the primary and cursor planes in fkms.
This makes debugging nicer, compared to trying to remember what the
IDs are.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0109-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0109-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch
index 09c07f5e..4ad52464 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0109-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0109-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch
@@ -1,7 +1,7 @@
-From f1fdb7ea4cf4a30ab6e93bd0e81893cd70183f78 Mon Sep 17 00:00:00 2001
+From eaf2f79a898db71dd7045358e218f18ddc8e7b84 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Wed, 1 Feb 2017 17:10:09 -0800
-Subject: [PATCH 109/194] drm/vc4: Add DRM_DEBUG_ATOMIC for the insides of
+Subject: [PATCH 109/325] drm/vc4: Add DRM_DEBUG_ATOMIC for the insides of
fkms.
Trying to debug weston on fkms involved figuring out what calls I was
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0110-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0110-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch
index a47c3534..6b72fb35 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0110-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0110-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch
@@ -1,7 +1,7 @@
-From 0c99d7d195e504398dfc100f1d31d30c4dd9a381 Mon Sep 17 00:00:00 2001
+From b4ead4f02897ee47b79f6848735577b1668c360c Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Thu, 2 Feb 2017 09:42:18 -0800
-Subject: [PATCH 110/194] drm/vc4: Fix sending of page flip completion events
+Subject: [PATCH 110/325] drm/vc4: Fix sending of page flip completion events
in FKMS mode.
In the rewrite of vc4_crtc.c for fkms, I dropped the part of the
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0111-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0111-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch
index 9552714f..134ee0c0 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0111-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0111-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch
@@ -1,7 +1,7 @@
-From 369775a3731f6fe81292433a07a8a30bbe8a79f5 Mon Sep 17 00:00:00 2001
+From c6c6ef52180f633601aaf9120b5760edd266d0e7 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Thu, 6 Jul 2017 11:45:48 -0700
-Subject: [PATCH 111/194] drm/vc4: Add support for setting DPMS in firmwarekms.
+Subject: [PATCH 111/325] drm/vc4: Add support for setting DPMS in firmwarekms.
This ensures that the screen goes blank during DPMS (screensaver),
including the cursor. Planes don't necessarily get disabled during
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0112-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0112-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch
index 073d5f7d..ea5ca68a 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0112-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0112-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch
@@ -1,7 +1,7 @@
-From 6d55f139619182c374cdde2304481b7643f35960 Mon Sep 17 00:00:00 2001
+From 8a6b297d87c54a8fc794886d5e5d141a9766cc73 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Wed, 7 Jun 2017 14:39:49 -0700
-Subject: [PATCH 112/194] drm/vc4: Add FB modifier support to firmwarekms.
+Subject: [PATCH 112/325] drm/vc4: Add FB modifier support to firmwarekms.
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 11752d73488e08aaeb65fe8289a9c016acde26c2)
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0113-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0113-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch
index 062af343..b7d80f15 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0113-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0113-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch
@@ -1,7 +1,7 @@
-From 6e579e1528e71feec0bcf560d4da3b5a589972e4 Mon Sep 17 00:00:00 2001
+From 17599a89ce9a14e7a042cdbe1efcc6ab9b8b0c9a Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Tue, 30 Jan 2018 14:21:02 -0800
-Subject: [PATCH 113/194] drm/vc4: Add missing enable/disable vblank handlers
+Subject: [PATCH 113/325] drm/vc4: Add missing enable/disable vblank handlers
in fkms.
Fixes hang at boot in 4.14.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0114-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0114-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch
index 987c4f33..3a54553c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0114-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0114-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch
@@ -1,7 +1,7 @@
-From 724cc581aeff06d5d1b5bfc9e75c16049bac467a Mon Sep 17 00:00:00 2001
+From 39a34c0f3700f7fad59f2b07a76b0b37adbdb3f2 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 18 Apr 2017 21:43:46 +0100
-Subject: [PATCH 114/194] vc4_fkms: Apply firmware overscan offset to hardware
+Subject: [PATCH 114/325] vc4_fkms: Apply firmware overscan offset to hardware
cursor
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
index a2829dec..f2ee3deb 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
@@ -1,7 +1,7 @@
-From 9e1958f8132d36257e76a90b786ec07e4fd5995f Mon Sep 17 00:00:00 2001
+From 2918eba483fbbcec7cf215c9a7729e8c53efe24e Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Mon, 5 Feb 2018 18:01:02 +0000
-Subject: [PATCH 115/194] drm/vc4: Fix warning about vblank interrupts before
+Subject: [PATCH 115/325] drm/vc4: Fix warning about vblank interrupts before
DRM core is ready.
The SMICS interrupt fires continuously, but since it's 1/100 the rate
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0116-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0116-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch
index 75949a88..ef82eed2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0116-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0116-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch
@@ -1,7 +1,7 @@
-From ea5a390a1f96f4c8c0a2600d3e4afa3b511d044e Mon Sep 17 00:00:00 2001
+From 9ac375a79a786f0a3ae83339ae0894f768bdc1dc Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Mon, 5 Feb 2018 18:02:30 +0000
-Subject: [PATCH 116/194] drm/vc4: Skip SET_CURSOR_INFO when the cursor
+Subject: [PATCH 116/325] drm/vc4: Skip SET_CURSOR_INFO when the cursor
contents didn't change.
Signed-off-by: Eric Anholt <eric@anholt.net>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0117-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0117-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch
index 1b67f870..ff488577 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0117-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0117-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch
@@ -1,7 +1,7 @@
-From d94d5d7ba62194d54b506074b37a85aff88bb548 Mon Sep 17 00:00:00 2001
+From 3f133de3433f81f5852d833923a874cbce3df58d Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Mon, 5 Feb 2018 18:22:03 +0000
-Subject: [PATCH 117/194] drm/vc4: Remove duplicate primary/cursor fields from
+Subject: [PATCH 117/325] drm/vc4: Remove duplicate primary/cursor fields from
FKMS driver.
The CRTC has those fields and we can just use them.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0118-vc4_firmware_kms-fix-build.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0118-vc4_firmware_kms-fix-build.patch
index f55bd1cc..43d91e3d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0118-vc4_firmware_kms-fix-build.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0118-vc4_firmware_kms-fix-build.patch
@@ -1,7 +1,7 @@
-From 437f342c2efd8312c6dd8de4af2125ccd132a850 Mon Sep 17 00:00:00 2001
+From 17fa73afc4e3808aab05f199a8c20d89ca1983bb Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 17 Jun 2018 13:22:07 +0100
-Subject: [PATCH 118/194] vc4_firmware_kms: fix build
+Subject: [PATCH 118/325] vc4_firmware_kms: fix build
---
drivers/gpu/drm/vc4/vc4_firmware_kms.c | 7 +++++--
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0119-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0119-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch
index 1a30e053..ad651deb 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0119-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0119-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch
@@ -1,7 +1,7 @@
-From bc54f18fac430d652fcf85074a21bea2f262c130 Mon Sep 17 00:00:00 2001
+From 0412a77c98d365f512edc19063745929caf310b9 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Tue, 19 Feb 2019 15:06:31 +0000
-Subject: [PATCH 119/194] gpu:vc4-fkms: Update driver to not use plane->crtc.
+Subject: [PATCH 119/325] gpu:vc4-fkms: Update driver to not use plane->crtc.
Following on from
commit 2f958af7fc248 ("drm/vc4: Stop updating plane->fb/crtc")
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0120-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0120-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch
index 0c6d84ab..89c78941 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0120-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0120-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch
@@ -1,7 +1,7 @@
-From 472b32408a56656646b9e71343668068c9d850cd Mon Sep 17 00:00:00 2001
+From 0c9c97c5a16e0576cb3d9ced01396d829a3ed0e7 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Mon, 5 Feb 2018 18:53:18 +0000
-Subject: [PATCH 120/194] drm/vc4: Don't wait for vblank on fkms cursor
+Subject: [PATCH 120/325] drm/vc4: Don't wait for vblank on fkms cursor
updates.
We don't use the same async update path between fkms and normal kms,
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0121-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0121-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch
index 75385040..749946b2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0121-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0121-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch
@@ -1,7 +1,7 @@
-From dfd98e51133f0217ff11ffcf94eaba25012da801 Mon Sep 17 00:00:00 2001
+From 8731640ad7dd9a3c0c53308bc2bda6d70096a93c Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 20 Feb 2018 10:07:27 +0000
-Subject: [PATCH 121/194] i2c-gpio: Also set bus numbers from reg property
+Subject: [PATCH 121/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0122-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0122-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch
index 106b85cd..d7ea6405 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0122-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0122-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch
@@ -1,7 +1,7 @@
-From 0a00325f393e8e517ac5bf7285fec89ecd6ca942 Mon Sep 17 00:00:00 2001
+From 6793b4f029559c3b216fc02e5406bcea6744f7e3 Mon Sep 17 00:00:00 2001
From: hdoverobinson <hdoverobinson@gmail.com>
Date: Tue, 13 Mar 2018 06:58:39 -0400
-Subject: [PATCH 122/194] added capture_clear option to pps-gpio via dtoverlay
+Subject: [PATCH 122/325] added capture_clear option to pps-gpio via dtoverlay
(#2433)
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0123-lan78xx-Read-initial-EEE-status-from-DT.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0123-lan78xx-Read-initial-EEE-status-from-DT.patch
index c5017593..0ab7afb6 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0123-lan78xx-Read-initial-EEE-status-from-DT.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0123-lan78xx-Read-initial-EEE-status-from-DT.patch
@@ -1,7 +1,7 @@
-From d45877f8111af82c6292614a2ba902c0a7ca870e Mon Sep 17 00:00:00 2001
+From a4015154171e8db1b1b0413434029a5ca61b6f03 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Fri, 9 Mar 2018 12:01:00 +0000
-Subject: [PATCH 123/194] lan78xx: Read initial EEE status from DT
+Subject: [PATCH 123/325] lan78xx: Read initial EEE status from DT
Add two new DT properties:
* microchip,eee-enabled - a boolean to enable EEE
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0124-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0124-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch
index 4567f26d..f578c062 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0124-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0124-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch
@@ -1,7 +1,7 @@
-From dc1afe5c19e1e8ad956344a5a601aaba802cdd82 Mon Sep 17 00:00:00 2001
+From a8c776a349396cc0fed104201653051952ec8752 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 14 Jul 2014 22:02:09 +0100
-Subject: [PATCH 124/194] hid: Reduce default mouse polling interval to 60Hz
+Subject: [PATCH 124/325] hid: Reduce default mouse polling interval to 60Hz
Reduces overhead when using X
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0125-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0125-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch
index 77f6d829..84d2e395 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0125-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0125-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch
@@ -1,7 +1,7 @@
-From 0222a3c897c6f285ca159265016bfe85a2371a82 Mon Sep 17 00:00:00 2001
+From b674446d4dde74a34b5efa5d543a0a6829abfed6 Mon Sep 17 00:00:00 2001
From: Nick Bulleid <nedbulleid@fastmail.com>
Date: Thu, 10 May 2018 21:57:02 +0100
-Subject: [PATCH 125/194] Add ability to export gpio used by gpio-poweroff
+Subject: [PATCH 125/325] Add ability to export gpio used by gpio-poweroff
Signed-off-by: Nick Bulleid <nedbulleid@fastmail.com>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0126-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0126-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch
index 1880085d..8bc9cc19 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0126-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0126-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch
@@ -1,7 +1,7 @@
-From e3a18a0d7a61bc4e4cc9e5478d57a65e0786c9eb Mon Sep 17 00:00:00 2001
+From 40918483cbe518e0466de9ac10a35349547b98b8 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Sat, 12 May 2018 21:35:43 +0100
-Subject: [PATCH 126/194] firmware/raspberrypi: Notify firmware of a reboot
+Subject: [PATCH 126/325] firmware/raspberrypi: Notify firmware of a reboot
Register for reboot notifications, sending RPI_FIRMWARE_NOTIFY_REBOOT
over the mailbox interface on reception.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0127-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0127-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch
index 70567d3e..d762f7aa 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0127-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0127-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch
@@ -1,7 +1,7 @@
-From d1ae7706a40c025d280fae27ceaad72d372449e9 Mon Sep 17 00:00:00 2001
+From 8dc21a84de510c66adbe68ca2d1430a6ec6b002b Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 14 Jun 2018 11:21:04 +0100
-Subject: [PATCH 127/194] irqchip: irq-bcm2835: Calc. FIQ_START at boot-time
+Subject: [PATCH 127/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0128-of-configfs-Use-of_overlay_fdt_apply-API-call.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0128-of-configfs-Use-of_overlay_fdt_apply-API-call.patch
index 77e7b355..a8c3ef44 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0128-of-configfs-Use-of_overlay_fdt_apply-API-call.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0128-of-configfs-Use-of_overlay_fdt_apply-API-call.patch
@@ -1,7 +1,7 @@
-From 72384ad4b044ba7d2c1554563d89237ec36ffefb Mon Sep 17 00:00:00 2001
+From f3179406977f76b5540344c4af5c263f2da0e078 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 14 Jun 2018 15:07:26 +0100
-Subject: [PATCH 128/194] of: configfs: Use of_overlay_fdt_apply API call
+Subject: [PATCH 128/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0129-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0129-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
index efd733f1..415646f7 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0129-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0129-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
@@ -1,7 +1,7 @@
-From f67e4ad90a624c885a4790eccd4bdf017cd8ac8b Mon Sep 17 00:00:00 2001
+From 56eb7f37215ded2dda52fe8aa0506d157c243d8e Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Wed, 13 Jun 2018 15:21:10 +0100
-Subject: [PATCH 129/194] net: lan78xx: Disable TCP Segmentation Offload (TSO)
+Subject: [PATCH 129/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0130-brcmfmac-Re-enable-firmware-roaming-support.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0130-brcmfmac-Re-enable-firmware-roaming-support.patch
index 6381bc99..c9cc296e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0130-brcmfmac-Re-enable-firmware-roaming-support.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0130-brcmfmac-Re-enable-firmware-roaming-support.patch
@@ -1,7 +1,7 @@
-From b8917c14a7f50c572dd1c3b9696327d522eba212 Mon Sep 17 00:00:00 2001
+From 6bc90dceda08f3e2e0860cce4a6960d912d3bbad Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 20 Jun 2018 12:20:01 +0100
-Subject: [PATCH 130/194] brcmfmac: Re-enable firmware roaming support
+Subject: [PATCH 130/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0131-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0131-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
index 52151fd2..dc420d26 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0131-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0131-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
@@ -1,7 +1,7 @@
-From 37a4f51736c4eac2949f2196bc7110ddbb4e43d9 Mon Sep 17 00:00:00 2001
+From f49c7fc9cf7c4180faa16689b96f4fb079c4b934 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 5 Apr 2018 14:46:11 +0100
-Subject: [PATCH 131/194] lan78xx: Move enabling of EEE into PHY init code
+Subject: [PATCH 131/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0132-Add-rpi-poe-fan-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0132-Add-rpi-poe-fan-driver.patch
index cc91cebe..9a7e0400 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0132-Add-rpi-poe-fan-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0132-Add-rpi-poe-fan-driver.patch
@@ -1,7 +1,7 @@
-From c9dac733abc19c713167db0ccdc84094d005f46a Mon Sep 17 00:00:00 2001
+From b9a81fd58b522a8c4f43715a4f701dcbeab7cf70 Mon Sep 17 00:00:00 2001
From: Serge Schneider <serge@raspberrypi.org>
Date: Mon, 9 Jul 2018 12:54:25 +0100
-Subject: [PATCH 132/194] Add rpi-poe-fan driver
+Subject: [PATCH 132/325] Add rpi-poe-fan driver
Signed-off-by: Serge Schneider <serge@raspberrypi.org>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0133-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0133-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch
index 9fdc8f4d..39e4d9ce 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0133-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0133-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch
@@ -1,7 +1,7 @@
-From be7a181e6c2866542f1221d1bc4868efb95711dc Mon Sep 17 00:00:00 2001
+From d0592bac1189ded1ba0e1aab4c6ff543e756e234 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 17 Sep 2018 17:31:18 +0100
-Subject: [PATCH 133/194] cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880
+Subject: [PATCH 133/325] cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880
with MEDIA_SUBDRV_AUTOSELECT
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0134-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0134-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch
index 0f514e31..e0e68369 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0134-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0134-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch
@@ -1,7 +1,7 @@
-From dafc600bb9561afb380ee731e28853aca23273db Mon Sep 17 00:00:00 2001
+From 102b9c1dc7b8c4da68b55a2d03bf2da83f36f57b Mon Sep 17 00:00:00 2001
From: detule <ogjoneski@gmail.com>
Date: Tue, 2 Oct 2018 04:10:08 -0400
-Subject: [PATCH 134/194] vchiq_2835_arm: Implement a DMA pool for small bulk
+Subject: [PATCH 134/325] vchiq_2835_arm: Implement a DMA pool for small bulk
transfers (#2699)
During a bulk transfer we request a DMA allocation to hold the
@@ -20,7 +20,7 @@ Signed-off-by: Oliver Gjoneski <ogjoneski@gmail.com>
1 file changed, 33 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
-index dd4898861b83..300e8cb5fbbc 100644
+index eb1e5dcb0d52..ff9fdf98d847 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
@@ -37,6 +37,7 @@
@@ -71,7 +71,7 @@ index dd4898861b83..300e8cb5fbbc 100644
vchiq_log_info(vchiq_arm_log_level,
"vchiq_init - done (slots %pK, phys %pad)",
vchiq_slot_zero, &slot_phys);
-@@ -368,9 +381,14 @@ cleanup_pagelistinfo(struct vchiq_pagelist_info *pagelistinfo)
+@@ -371,9 +384,14 @@ cleanup_pagelistinfo(struct vchiq_pagelist_info *pagelistinfo)
for (i = 0; i < pagelistinfo->num_pages; i++)
put_page(pagelistinfo->pages[i]);
}
@@ -89,7 +89,7 @@ index dd4898861b83..300e8cb5fbbc 100644
}
/* There is a potential problem with partial cache lines (pages?)
-@@ -390,6 +408,7 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
+@@ -393,6 +411,7 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
u32 *addrs;
unsigned int num_pages, offset, i, k;
int actual_pages;
@@ -97,7 +97,7 @@ index dd4898861b83..300e8cb5fbbc 100644
size_t pagelist_size;
struct scatterlist *scatterlist, *sg;
int dma_buffers;
-@@ -407,8 +426,16 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
+@@ -410,8 +429,16 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
/* Allocate enough storage to hold the page pointers and the page
* list
*/
@@ -116,7 +116,7 @@ index dd4898861b83..300e8cb5fbbc 100644
vchiq_log_trace(vchiq_arm_log_level, "%s - %pK", __func__, pagelist);
-@@ -429,6 +456,7 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
+@@ -432,6 +459,7 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
pagelistinfo->pagelist = pagelist;
pagelistinfo->pagelist_buffer_size = pagelist_size;
pagelistinfo->dma_addr = dma_addr;
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0135-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0135-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch
index e12b86fc..76ed6233 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0135-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0135-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch
@@ -1,7 +1,7 @@
-From fbd83727c77d0aa18591770d01af5e85152fee08 Mon Sep 17 00:00:00 2001
+From 2fc2d60da8641f80572e347f0c2796dcd50490e0 Mon Sep 17 00:00:00 2001
From: Stefan Wahren <stefan.wahren@i2se.com>
Date: Sat, 6 Oct 2018 16:46:18 +0200
-Subject: [PATCH 135/194] hwmon: raspberrypi: Prevent voltage low warnings from
+Subject: [PATCH 135/325] hwmon: raspberrypi: Prevent voltage low warnings from
filling log
Although the correct fix for low voltage warnings is to
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0136-firmware-raspberrypi-Add-backward-compatible-get_thr.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0136-firmware-raspberrypi-Add-backward-compatible-get_thr.patch
index 0426aecd..02c05f01 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0136-firmware-raspberrypi-Add-backward-compatible-get_thr.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0136-firmware-raspberrypi-Add-backward-compatible-get_thr.patch
@@ -1,7 +1,7 @@
-From e080370ea5a9795bc45d20c0fede08a8eb805de9 Mon Sep 17 00:00:00 2001
+From 8a61c12ad082e1a1fade428d9aad94970b86d271 Mon Sep 17 00:00:00 2001
From: Stefan Wahren <stefan.wahren@i2se.com>
Date: Sat, 13 Oct 2018 13:31:21 +0200
-Subject: [PATCH 136/194] firmware: raspberrypi: Add backward compatible
+Subject: [PATCH 136/325] firmware: raspberrypi: Add backward compatible
get_throttled
Avoid a hard userspace ABI change by adding a compatible get_throttled
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0137-sc16is7xx-Don-t-spin-if-no-data-received.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0137-sc16is7xx-Don-t-spin-if-no-data-received.patch
index b9c6bd15..3ce113fd 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0137-sc16is7xx-Don-t-spin-if-no-data-received.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0137-sc16is7xx-Don-t-spin-if-no-data-received.patch
@@ -1,7 +1,7 @@
-From 129aae8b0b3fbec5a9b425de050a8044978153ca Mon Sep 17 00:00:00 2001
+From 36edc588cb3b82a05b6841fdf2f09c16127ce714 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 6 Nov 2018 12:57:48 +0000
-Subject: [PATCH 137/194] sc16is7xx: Don't spin if no data received
+Subject: [PATCH 137/325] sc16is7xx: Don't spin if no data received
See: https://github.com/raspberrypi/linux/issues/2676
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0138-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0138-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch
index 8f6c87b8..259101a2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0138-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0138-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch
@@ -1,7 +1,7 @@
-From 8c6ad513d5ccc9c377bcdae846d186aa30149bff Mon Sep 17 00:00:00 2001
+From 0fb41ba9216839b731eb6308f4e5fbb2d483083d Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 24 Aug 2017 16:16:16 +0100
-Subject: [PATCH 138/194] brcmfmac: Disable ARP offloading when promiscuous
+Subject: [PATCH 138/325] brcmfmac: Disable ARP offloading when promiscuous
This is a test patch for brcmfmac from Franky Lin at Broadcom to disable
ARP offloading when in promiscuous mode, re-enabling the ability to
@@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-index 860a4372cb56..6d593dde61cc 100644
+index 36a04c1144e5..afd65caf800c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -88,25 +88,25 @@ void brcmf_configure_arp_nd_offload(struct brcmf_if *ifp, bool enable)
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0139-drivers-thermal-step_wise-add-support-for-hysteresis.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0139-drivers-thermal-step_wise-add-support-for-hysteresis.patch
index b395c9fb..3dc8b59b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0139-drivers-thermal-step_wise-add-support-for-hysteresis.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0139-drivers-thermal-step_wise-add-support-for-hysteresis.patch
@@ -1,7 +1,7 @@
-From 8a9bf5bf6588a581c198c5bf52fcb049feffc961 Mon Sep 17 00:00:00 2001
+From c3f17ac6dd0a422b1230b8e304e966356726e947 Mon Sep 17 00:00:00 2001
From: Ram Chandrasekar <rkumbako@codeaurora.org>
Date: Mon, 7 May 2018 11:54:08 -0600
-Subject: [PATCH 139/194] drivers: thermal: step_wise: add support for
+Subject: [PATCH 139/325] drivers: thermal: step_wise: add support for
hysteresis
Step wise governor increases the mitigation level when the temperature
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0140-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0140-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch
index 1079c1b1..06bf1a66 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0140-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0140-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch
@@ -1,7 +1,7 @@
-From b420e8c5eb50aa7715e870fd9f437828a7af00f2 Mon Sep 17 00:00:00 2001
+From b1c04dfc999c18a60f9f57e907ea2e97c7b8bfc8 Mon Sep 17 00:00:00 2001
From: Serge Schneider <serge@raspberrypi.org>
Date: Tue, 2 Oct 2018 11:14:15 +0100
-Subject: [PATCH 140/194] drivers: thermal: step_wise: avoid throttling at
+Subject: [PATCH 140/325] drivers: thermal: step_wise: avoid throttling at
hysteresis temperature after dropping below it
Signed-off-by: Serge Schneider <serge@raspberrypi.org>
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0141-Update-issue-templates-2736.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0141-Update-issue-templates-2736.patch
index fff2a4b2..21063141 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0141-Update-issue-templates-2736.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0141-Update-issue-templates-2736.patch
@@ -1,7 +1,7 @@
-From bcdf6effefef6ba69b55a29d94ee4b7c89848e4e Mon Sep 17 00:00:00 2001
+From 90583ef64f9890f687704e6092cfbca8424f951f Mon Sep 17 00:00:00 2001
From: James Hughes <JamesH65@users.noreply.github.com>
Date: Fri, 2 Nov 2018 11:55:49 +0000
-Subject: [PATCH 141/194] Update issue templates (#2736)
+Subject: [PATCH 141/325] Update issue templates (#2736)
---
.github/ISSUE_TEMPLATE/bug_report.md | 34 ++++++++++++++++++++++++++++
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0142-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0142-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch
index 03e9573d..3735e25c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0142-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0142-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch
@@ -1,7 +1,7 @@
-From 231b17fe5cc939eae0499c328c38cc7db08dfabe Mon Sep 17 00:00:00 2001
+From f85d7d221bec079fc7c9b91595026667e6026223 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 24 Apr 2018 14:42:27 +0100
-Subject: [PATCH 142/194] gpiolib: Don't prevent IRQ usage of output GPIOs
+Subject: [PATCH 142/325] 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
@@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
-index d1adfdf50fb3..2b969ae77f83 100644
+index 34fbf879411f..c334562d7cf7 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -54,6 +54,8 @@
@@ -28,7 +28,7 @@ index d1adfdf50fb3..2b969ae77f83 100644
/* Device and char device-related information */
static DEFINE_IDA(gpio_ida);
static dev_t gpio_devt;
-@@ -2671,8 +2673,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value)
+@@ -2675,8 +2677,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value)
value = !!value;
/* GPIOs used for enabled IRQs shall not be set as output */
@@ -39,7 +39,7 @@ index d1adfdf50fb3..2b969ae77f83 100644
gpiod_err(desc,
"%s: tried to set a GPIO tied to an IRQ as output\n",
__func__);
-@@ -3451,7 +3453,7 @@ int gpiochip_lock_as_irq(struct gpio_chip *chip, unsigned int offset)
+@@ -3455,7 +3457,7 @@ int gpiochip_lock_as_irq(struct gpio_chip *chip, unsigned int offset)
}
}
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0143-lan78xx-disable-interrupts-for-PHY-irqs.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0143-lan78xx-disable-interrupts-for-PHY-irqs.patch
index 4a745a8a..6ee413c5 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0143-lan78xx-disable-interrupts-for-PHY-irqs.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0143-lan78xx-disable-interrupts-for-PHY-irqs.patch
@@ -1,7 +1,7 @@
-From f63de753d6b98e1e18090cfa499d49a0f7d9ba67 Mon Sep 17 00:00:00 2001
+From 9cb139d17c4611b7a980077d67ffd33f96a07ed3 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 14 Nov 2018 17:36:26 +0000
-Subject: [PATCH 143/194] lan78xx: disable interrupts for PHY irqs
+Subject: [PATCH 143/325] lan78xx: disable interrupts for PHY irqs
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0144-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0144-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch
index 4add39fa..f47b7054 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0144-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0144-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch
@@ -1,7 +1,7 @@
-From f72ae155c2cb673f877aed6194977370fc3d5c63 Mon Sep 17 00:00:00 2001
+From 0192db9066eabc67534c7d6651f0b5a2bc741f64 Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Sun, 18 Nov 2018 15:24:16 +0100
-Subject: [PATCH 144/194] rpi-wm8804-soundcard: drop PWRDN register writes
+Subject: [PATCH 144/325] rpi-wm8804-soundcard: drop PWRDN register writes
Since kernel 4.0 the PWRDN register bits are under DAPM
control from the wm8804 driver.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0145-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0145-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch
index bab83598..a1998ac2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0145-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0145-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch
@@ -1,7 +1,7 @@
-From f02e640beac7b74e23dfca94716e579401726f9d Mon Sep 17 00:00:00 2001
+From 8e768cb6ba0422ee3fde1216885c2533a64e300a Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Sun, 18 Nov 2018 15:32:28 +0100
-Subject: [PATCH 145/194] rpi-wm8804-soundcard: configure wm8804 clocks only on
+Subject: [PATCH 145/325] rpi-wm8804-soundcard: configure wm8804 clocks only on
rate change
This should avoid clicks when stopping and immediately afterwards
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0146-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0146-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch
index 1175325d..ab2e4fa0 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0146-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0146-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch
@@ -1,7 +1,7 @@
-From d71d298b5e5c089f880254b5a24888eb250afda7 Mon Sep 17 00:00:00 2001
+From 8253f133665d89cef7649dacd55f3d98a14028b2 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 26 Nov 2018 19:46:58 +0000
-Subject: [PATCH 146/194] net: lan78xx: Support auto-downshift to 100Mb/s
+Subject: [PATCH 146/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0147-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0147-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch
index 76cd0606..8ae0345c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0147-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0147-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch
@@ -1,7 +1,7 @@
-From ce22d7a7f2e15abe38c6415a0877477e2c5ce0da Mon Sep 17 00:00:00 2001
+From f82b587928d6c43aa451cf3782876e81e0ca069a Mon Sep 17 00:00:00 2001
From: dev-3Dlab <45081440+dev-3Dlab@users.noreply.github.com>
Date: Wed, 5 Dec 2018 10:59:11 +0100
-Subject: [PATCH 147/194] ASoC: add driver for 3Dlab Nano soundcard (#2758)
+Subject: [PATCH 147/325] ASoC: add driver for 3Dlab Nano soundcard (#2758)
Signed-off-by: GT <dev@3d-lab-av.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0148-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0148-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch
index 0d79672e..565d4713 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0148-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0148-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch
@@ -1,7 +1,7 @@
-From 334a150636e30b14d7c412d439522261f18f33e7 Mon Sep 17 00:00:00 2001
+From 5dfc3fa21df7c4820b131f0fc3c95b5844c76b56 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Mon, 29 Oct 2018 14:21:04 +0000
-Subject: [PATCH 148/194] staging: bcm2835-camera: Ensure H264 header bytes get
+Subject: [PATCH 148/325] staging: bcm2835-camera: Ensure H264 header bytes get
a sensible timestamp
H264 header come from VC with 0 timestamps, which means they get a
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0149-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0149-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch
index f8e94974..29d5d2e4 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0149-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0149-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch
@@ -1,7 +1,7 @@
-From a0d15e61f93add3060311518efc5eae98e361cd9 Mon Sep 17 00:00:00 2001
+From 6f074f8158da342c78cf769a17af87a01e660e0b Mon Sep 17 00:00:00 2001
From: 6by9 <6by9@users.noreply.github.com>
Date: Tue, 11 Dec 2018 15:18:02 +0000
-Subject: [PATCH 149/194] staging: bcm2835-camera: Check the error for
+Subject: [PATCH 149/325] staging: bcm2835-camera: Check the error for
REPEAT_SEQ_HEADER (#2782)
When handling for V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER was added
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0150-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0150-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
index 48769674..2f9f1865 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0150-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0150-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
@@ -1,7 +1,7 @@
-From 70d13057bf61c2fd87824ecee4f05323dbda493e Mon Sep 17 00:00:00 2001
+From 67747fe6385677e1e81214485177839f0889429d Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Thu, 10 Jan 2019 17:58:06 +0000
-Subject: [PATCH 150/194] firmware: raspberrypi: Report the fw variant during
+Subject: [PATCH 150/325] firmware: raspberrypi: Report the fw variant during
probe
The driver already reported the firmware build date during probe.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0151-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0151-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch
index 3e250794..c6aa4e3a 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0151-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0151-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch
@@ -1,7 +1,7 @@
-From 318e505898960133373c0f9937d6f17f631c9034 Mon Sep 17 00:00:00 2001
+From d3478acfcbee0061a1d0db318ba36a568491a110 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Thu, 10 Jan 2019 18:48:54 +0000
-Subject: [PATCH 151/194] firmware: raspberrypi: Report the fw git hash during
+Subject: [PATCH 151/325] firmware: raspberrypi: Report the fw git hash during
probe
The firmware can now report the git hash from which it was built
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0152-arm64-dts-broadcom-Enable-fixups-for-overlays.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0152-arm64-dts-broadcom-Enable-fixups-for-overlays.patch
index 2780bbe5..c1ffca0e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0152-arm64-dts-broadcom-Enable-fixups-for-overlays.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0152-arm64-dts-broadcom-Enable-fixups-for-overlays.patch
@@ -1,7 +1,7 @@
-From 0109a85d93e46a3fe22d467f9564d9020da6d026 Mon Sep 17 00:00:00 2001
+From 0c62e7261ee180a9b74ff5c6d88f480418ece2fc Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 15 Jan 2019 09:56:41 +0000
-Subject: [PATCH 152/194] arm64: dts: broadcom: Enable fixups for overlays
+Subject: [PATCH 152/325] arm64: dts: broadcom: Enable fixups for overlays
See: https://github.com/raspberrypi/linux/pull/2733
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0153-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0153-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch
index b0056752..1315ad7d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0153-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0153-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch
@@ -1,7 +1,7 @@
-From 11222c986ad3ed52477c1ff664c4b1684f91ac21 Mon Sep 17 00:00:00 2001
+From b53ff6a8564e69dedd27d6d7a5c3d6122615bfab Mon Sep 17 00:00:00 2001
From: Ezekiel Bethel <zek@9net.org>
Date: Wed, 12 Dec 2018 19:11:13 +0000
-Subject: [PATCH 153/194] bcm2835_smi: re-add dereference to fix DMA transfers
+Subject: [PATCH 153/325] bcm2835_smi: re-add dereference to fix DMA transfers
---
drivers/misc/bcm2835_smi.c | 2 +-
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0154-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0154-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
index d5f853ff..3c58e124 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0154-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0154-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
@@ -1,7 +1,7 @@
-From b6e04a7280b954d470e6f5fb6cd422bba49ff54c Mon Sep 17 00:00:00 2001
+From d002601efc8660f3c6831bdd91da0e44f27cee03 Mon Sep 17 00:00:00 2001
From: Joshua Emele <jemele@acm.org>
Date: Wed, 7 Nov 2018 16:07:40 -0800
-Subject: [PATCH 154/194] lan78xx: Debounce link events to minimize poll storm
+Subject: [PATCH 154/325] 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
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0155-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0155-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch
index e561ebdb..45ce6cf7 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0155-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0155-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch
@@ -1,7 +1,7 @@
-From 210bbbd0d49bbd69781592a49e5545c9c08ee1c4 Mon Sep 17 00:00:00 2001
+From 03cfb6362372740365b82084441bde1bd1e70486 Mon Sep 17 00:00:00 2001
From: b-ak <anur.bhargav@gmail.com>
Date: Thu, 3 Jan 2019 00:01:08 +0530
-Subject: [PATCH 155/194] ASoC: Add support for AudioSense-Pi add-on soundcard
+Subject: [PATCH 155/325] ASoC: Add support for AudioSense-Pi add-on soundcard
AudioSense-Pi is a RPi HAT based on a TI's TLV320AIC32x4 stereo codec
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0156-spi-spi-bcm2835-Re-enable-HW-CS.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0156-spi-spi-bcm2835-Re-enable-HW-CS.patch
index cd3d12c8..9693227b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0156-spi-spi-bcm2835-Re-enable-HW-CS.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0156-spi-spi-bcm2835-Re-enable-HW-CS.patch
@@ -1,7 +1,7 @@
-From 4a6c4a0fd80156f50efb27ae75c91435e23aee36 Mon Sep 17 00:00:00 2001
+From 061659759e97904a5aa7620f686e902e7641231b Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 15 Jan 2019 12:39:50 +0000
-Subject: [PATCH 156/194] spi: spi-bcm2835: Re-enable HW CS
+Subject: [PATCH 156/325] spi: spi-bcm2835: Re-enable HW CS
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0157-spi-spi-bcm2835-Disable-forced-software-CS.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0157-spi-spi-bcm2835-Disable-forced-software-CS.patch
index f8ce07c7..c0e06c72 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0157-spi-spi-bcm2835-Disable-forced-software-CS.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0157-spi-spi-bcm2835-Disable-forced-software-CS.patch
@@ -1,7 +1,7 @@
-From 13c2badd89dbbd55b24e1943180ae87137bd2f29 Mon Sep 17 00:00:00 2001
+From 5b5d2732cdba17325ced1caa75c6838ea1599f7a Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 15 Jan 2019 12:41:15 +0000
-Subject: [PATCH 157/194] spi: spi-bcm2835: Disable forced software CS
+Subject: [PATCH 157/325] spi: spi-bcm2835: Disable forced software CS
With GPIO CS used by the DTBs, allow hardware CS to be selected by an
overlay.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0158-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0158-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch
index 29bfaa7d..b17bd62e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0158-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0158-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch
@@ -1,7 +1,7 @@
-From 29bf37e159a59e53724841f179eb6b61394fbd32 Mon Sep 17 00:00:00 2001
+From 30c62b07fcf38ff5f748de8c2f6f9aa982016331 Mon Sep 17 00:00:00 2001
From: HiFiBerry <info@hifiberry.com>
Date: Mon, 8 Oct 2018 18:10:12 +0200
-Subject: [PATCH 158/194] Added driver for the HiFiBerry DAC+ ADC (#2694)
+Subject: [PATCH 158/325] Added driver for the HiFiBerry DAC+ ADC (#2694)
Signed-off-by: Daniel Matuschek <daniel@hifiberry.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0159-mfd-Add-rpi_sense_core-of-compatible-string.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0159-mfd-Add-rpi_sense_core-of-compatible-string.patch
index ba8ba1fb..8fc45114 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0159-mfd-Add-rpi_sense_core-of-compatible-string.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0159-mfd-Add-rpi_sense_core-of-compatible-string.patch
@@ -1,7 +1,7 @@
-From 998b986f48efd457e3ad8ff55c3a932a8a28a2ad Mon Sep 17 00:00:00 2001
+From 7b879f37aa54c27283a1172b396a1b43e71015b1 Mon Sep 17 00:00:00 2001
From: Serge Schneider <serge@raspberrypi.org>
Date: Tue, 29 Jan 2019 12:05:49 +0000
-Subject: [PATCH 159/194] mfd: Add rpi_sense_core of compatible string
+Subject: [PATCH 159/325] mfd: Add rpi_sense_core of compatible string
---
drivers/mfd/rpisense-core.c | 8 ++++++++
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0160-configs-Enable-the-AD193x-codecs.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0160-configs-Enable-the-AD193x-codecs.patch
index 08a3de6c..f11cb890 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0160-configs-Enable-the-AD193x-codecs.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0160-configs-Enable-the-AD193x-codecs.patch
@@ -1,7 +1,7 @@
-From 190d0169d0f2cb6ebefedca453cf2cbe4b77fc72 Mon Sep 17 00:00:00 2001
+From a0c3520e4174725cc08b61dc57665bdd609567d4 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 7 Feb 2019 18:16:25 +0000
-Subject: [PATCH 160/194] configs: Enable the AD193x codecs
+Subject: [PATCH 160/325] configs: Enable the AD193x codecs
See: https://github.com/raspberrypi/linux/issues/2850
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0161-lan78xx-EEE-support-is-now-a-PHY-property.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0161-lan78xx-EEE-support-is-now-a-PHY-property.patch
index 09be5f60..68d26943 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0161-lan78xx-EEE-support-is-now-a-PHY-property.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0161-lan78xx-EEE-support-is-now-a-PHY-property.patch
@@ -1,7 +1,7 @@
-From f877c984a3e1d984917a796a88fe8a463c843b17 Mon Sep 17 00:00:00 2001
+From df58e31b040519df57c2cf112ff2adc878e0da65 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 5 Mar 2019 09:51:22 +0000
-Subject: [PATCH 161/194] lan78xx: EEE support is now a PHY property
+Subject: [PATCH 161/325] 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.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0162-Revert-staging-vchiq-delete-vchiq_killable.h.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0162-Revert-staging-vchiq-delete-vchiq_killable.h.patch
index 468f6b66..e70d28cc 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0162-Revert-staging-vchiq-delete-vchiq_killable.h.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0162-Revert-staging-vchiq-delete-vchiq_killable.h.patch
@@ -1,7 +1,7 @@
-From 2ee8dbd8be3a66537de8d256626c1baa3672ad53 Mon Sep 17 00:00:00 2001
+From edfaf1ad826033b8df24772c8af432fdd129d862 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 6 Mar 2019 16:28:09 +0000
-Subject: [PATCH 162/194] Revert "staging: vchiq: delete vchiq_killable.h"
+Subject: [PATCH 162/325] Revert "staging: vchiq: delete vchiq_killable.h"
This reverts commit 2da56630b1cc422f58408033102b8f91ae97bc91.
---
@@ -14,7 +14,7 @@ This reverts commit 2da56630b1cc422f58408033102b8f91ae97bc91.
6 files changed, 60 insertions(+)
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
-index 300e8cb5fbbc..9e787b87c0e4 100644
+index ff9fdf98d847..94e6a2068a94 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
@@ -49,6 +49,7 @@
@@ -50,7 +50,7 @@ index 7d64e2ed7b42..7ea29665bd0c 100644
#include <linux/mutex.h>
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
-index 53f5a1cb4636..573e2a4b3071 100644
+index 819813e742d8..f08a8dcd792c 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
@@ -32,6 +32,7 @@
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0163-Revert-staging-vchiq_2835_arm-quit-using-custom-down.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0163-Revert-staging-vchiq_2835_arm-quit-using-custom-down.patch
index 0469f458..b590cbea 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0163-Revert-staging-vchiq_2835_arm-quit-using-custom-down.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0163-Revert-staging-vchiq_2835_arm-quit-using-custom-down.patch
@@ -1,7 +1,7 @@
-From 75f1ea3965849385b62238f0b69118c490f7c096 Mon Sep 17 00:00:00 2001
+From cf28bb1fb1fd2d4bdbe659e1c4431111e1a2e407 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 6 Mar 2019 16:29:13 +0000
-Subject: [PATCH 163/194] Revert "staging: vchiq_2835_arm: quit using custom
+Subject: [PATCH 163/325] Revert "staging: vchiq_2835_arm: quit using custom
down_interruptible()"
This reverts commit ff5979ad86368425b7da3a25f4e84650b51ff5fd.
@@ -10,10 +10,10 @@ This reverts commit ff5979ad86368425b7da3a25f4e84650b51ff5fd.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
-index 9e787b87c0e4..35c91c0f16b6 100644
+index 94e6a2068a94..e5b21b520f30 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
-@@ -570,7 +570,7 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
+@@ -573,7 +573,7 @@ create_pagelist(char __user *buf, size_t count, unsigned short type)
(g_cache_line_size - 1)))) {
char *fragments;
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0164-Revert-staging-vchiq-switch-to-wait_for_completion_k.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0164-Revert-staging-vchiq-switch-to-wait_for_completion_k.patch
index 48096180..86816bd5 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0164-Revert-staging-vchiq-switch-to-wait_for_completion_k.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0164-Revert-staging-vchiq-switch-to-wait_for_completion_k.patch
@@ -1,7 +1,7 @@
-From 4efb0f2b6ace2d5309fba8e05e8b6d67d4c7d417 Mon Sep 17 00:00:00 2001
+From b59009019e7380e2131eac7898e4821a0bc5358f Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 6 Mar 2019 16:29:22 +0000
-Subject: [PATCH 164/194] Revert "staging: vchiq: switch to
+Subject: [PATCH 164/325] Revert "staging: vchiq: switch to
wait_for_completion_killable"
This reverts commit a772f116702e3f0afdd7e6acadc1b8fb3b20b9ff.
@@ -107,7 +107,7 @@ index 8775cd4eb4c3..0d0e50fe7daa 100644
vchiq_log_error(vchiq_susp_log_level,
"%s interrupted", __func__);
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
-index 573e2a4b3071..1145a166a35f 100644
+index f08a8dcd792c..a70101444754 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
@@ -591,7 +591,7 @@ reserve_space(struct vchiq_state *state, size_t space, int is_blocking)
@@ -147,7 +147,7 @@ index 573e2a4b3071..1145a166a35f 100644
DEBUG_TRACE(PARSE_LINE);
goto bail_not_ready;
}
-@@ -2457,7 +2458,7 @@ vchiq_open_service_internal(struct vchiq_service *service, int client_id)
+@@ -2459,7 +2460,7 @@ vchiq_open_service_internal(struct vchiq_service *service, int client_id)
QMFLAGS_IS_BLOCKING);
if (status == VCHIQ_SUCCESS) {
/* Wait for the ACK/NAK */
@@ -156,7 +156,7 @@ index 573e2a4b3071..1145a166a35f 100644
status = VCHIQ_RETRY;
vchiq_release_service_internal(service);
} else if ((service->srvstate != VCHIQ_SRVSTATE_OPEN) &&
-@@ -2824,7 +2825,7 @@ vchiq_connect_internal(struct vchiq_state *state, VCHIQ_INSTANCE_T instance)
+@@ -2826,7 +2827,7 @@ vchiq_connect_internal(struct vchiq_state *state, VCHIQ_INSTANCE_T instance)
}
if (state->conn_state == VCHIQ_CONNSTATE_CONNECTING) {
@@ -165,7 +165,7 @@ index 573e2a4b3071..1145a166a35f 100644
return VCHIQ_RETRY;
vchiq_set_conn_state(state, VCHIQ_CONNSTATE_CONNECTED);
-@@ -2923,7 +2924,7 @@ vchiq_close_service(VCHIQ_SERVICE_HANDLE_T handle)
+@@ -2925,7 +2926,7 @@ vchiq_close_service(VCHIQ_SERVICE_HANDLE_T handle)
}
while (1) {
@@ -174,7 +174,7 @@ index 573e2a4b3071..1145a166a35f 100644
status = VCHIQ_RETRY;
break;
}
-@@ -2984,7 +2985,7 @@ vchiq_remove_service(VCHIQ_SERVICE_HANDLE_T handle)
+@@ -2986,7 +2987,7 @@ vchiq_remove_service(VCHIQ_SERVICE_HANDLE_T handle)
request_poll(service->state, service, VCHIQ_POLL_REMOVE);
}
while (1) {
@@ -183,7 +183,7 @@ index 573e2a4b3071..1145a166a35f 100644
status = VCHIQ_RETRY;
break;
}
-@@ -3067,7 +3068,7 @@ VCHIQ_STATUS_T vchiq_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle,
+@@ -3069,7 +3070,7 @@ VCHIQ_STATUS_T vchiq_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle,
VCHIQ_SERVICE_STATS_INC(service, bulk_stalls);
do {
mutex_unlock(&service->bulk_mutex);
@@ -192,7 +192,7 @@ index 573e2a4b3071..1145a166a35f 100644
&service->bulk_remove_event)) {
status = VCHIQ_RETRY;
goto error_exit;
-@@ -3144,7 +3145,7 @@ VCHIQ_STATUS_T vchiq_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle,
+@@ -3146,7 +3147,7 @@ VCHIQ_STATUS_T vchiq_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle,
if (bulk_waiter) {
bulk_waiter->bulk = bulk;
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0165-Revert-staging-vchiq-rework-remove_event-handling.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0165-Revert-staging-vchiq-rework-remove_event-handling.patch
index aee0be42..619ade5e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0165-Revert-staging-vchiq-rework-remove_event-handling.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0165-Revert-staging-vchiq-rework-remove_event-handling.patch
@@ -1,7 +1,7 @@
-From 204baa56779609f59ec1e87e5f2c0fcf3af9a66f Mon Sep 17 00:00:00 2001
+From 789054688ad17800c2133b680527d3d249e29ea8 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 6 Mar 2019 21:25:47 +0000
-Subject: [PATCH 165/194] Revert "staging: vchiq: rework remove_event handling"
+Subject: [PATCH 165/325] Revert "staging: vchiq: rework remove_event handling"
This reverts commit 852b2876a8a82f2c618da40b881bb07c2d42eb5c.
@@ -12,7 +12,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
2 files changed, 45 insertions(+), 30 deletions(-)
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
-index 1145a166a35f..163b8cfe435d 100644
+index a70101444754..0b55a89506af 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
@@ -418,23 +418,26 @@ vchiq_set_conn_state(struct vchiq_state *state, VCHIQ_CONNSTATE_T newstate)
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0166-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0166-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch
index f46304e7..5c45fb75 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0166-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0166-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch
@@ -1,7 +1,7 @@
-From 6753e4327d9917a90b83857ccc4c9ad7841be385 Mon Sep 17 00:00:00 2001
+From f481bf7cb1ddcd8320bde29c2324e65bc744baa4 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 15 Mar 2019 21:11:10 +0000
-Subject: [PATCH 166/194] Revert "staging: bcm2835-audio: Drop DT dependency"
+Subject: [PATCH 166/325] Revert "staging: bcm2835-audio: Drop DT dependency"
This reverts commit b7491a9fca2dc2535b9dc922550a37c5baae9d3d.
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0167-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0167-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch
index 9bbf0df7..491f6a46 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0167-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0167-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch
@@ -1,7 +1,7 @@
-From c5f44abfd7c7a6c39f481d11e3818adcab705bdb Mon Sep 17 00:00:00 2001
+From 3058f1bce5a8618c3f2d8d60ff24191b5e74ed49 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Mon, 28 Jan 2019 14:40:16 +0000
-Subject: [PATCH 167/194] gpu: vc4_firmware_kms: Fix up 64 bit compile
+Subject: [PATCH 167/325] gpu: vc4_firmware_kms: Fix up 64 bit compile
warnings.
Resolve two build warnings with regard using incorrectly
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0168-bcm2835-dma-Add-support-for-per-channel-flags.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0168-bcm2835-dma-Add-support-for-per-channel-flags.patch
index eff6bb4a..abead8e2 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0168-bcm2835-dma-Add-support-for-per-channel-flags.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0168-bcm2835-dma-Add-support-for-per-channel-flags.patch
@@ -1,7 +1,7 @@
-From f38a268771df9bdcf92b9246134d57034b590432 Mon Sep 17 00:00:00 2001
+From 91b9c2b3298d986ae5e39fe98b1c49f15081824e Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Fri, 20 Jul 2018 22:03:41 +0100
-Subject: [PATCH 168/194] bcm2835-dma: Add support for per-channel flags
+Subject: [PATCH 168/325] 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
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index fbef664e611e..d857d822d3c1 100644
+index 7af3a88b42ff..0ee47455cc27 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
@@ -137,6 +137,10 @@ struct bcm2835_desc {
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0169-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0169-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch
index 92225894..6e9fd271 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0169-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0169-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch
@@ -1,7 +1,7 @@
-From e3b04dbd2c98e5ce567b80377e24d8b1b861800b Mon Sep 17 00:00:00 2001
+From 5f44461135ee37c1a047bed6ed333d1867d60ce0 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Tue, 19 Feb 2019 15:18:25 +0000
-Subject: [PATCH 169/194] drm: vc4: Programming the CTM is conditional on
+Subject: [PATCH 169/325] drm: vc4: Programming the CTM is conditional on
running full KMS
vc4_ctm_commit writes to HVS registers, so this is only applicable
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0170-rtc-rv3028-add-new-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0170-rtc-rv3028-add-new-driver.patch
index 8ce8668c..01b1fbbb 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0170-rtc-rv3028-add-new-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0170-rtc-rv3028-add-new-driver.patch
@@ -1,7 +1,7 @@
-From 197cc994b26fc0000babe5c80ec6be40b77933f1 Mon Sep 17 00:00:00 2001
+From 6d79a5d84e1f689c0fde7a2472142ac8449b0555 Mon Sep 17 00:00:00 2001
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date: Wed, 13 Feb 2019 00:21:36 +0100
-Subject: [PATCH 170/194] rtc: rv3028: add new driver
+Subject: [PATCH 170/325] rtc: rv3028: add new driver
commit e6e7376cfd7b3f9b63de3a22792f64d9bfb2ab53 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0171-rtc-rv3028-Add-backup-switchover-mode-support.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0171-rtc-rv3028-Add-backup-switchover-mode-support.patch
index 2cc45dfc..691a3dff 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0171-rtc-rv3028-Add-backup-switchover-mode-support.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0171-rtc-rv3028-Add-backup-switchover-mode-support.patch
@@ -1,7 +1,7 @@
-From a03a0b9e1cac28ab1b5b8dd8378c9e3c6d1fa398 Mon Sep 17 00:00:00 2001
+From 700a33e4f02a401dbd6cf46195ba9b1631cce396 Mon Sep 17 00:00:00 2001
From: Phil Howard <phil@gadgetoid.com>
Date: Fri, 29 Mar 2019 10:53:14 +0000
-Subject: [PATCH 171/194] rtc: rv3028: Add backup switchover mode support
+Subject: [PATCH 171/325] rtc: rv3028: Add backup switchover mode support
Signed-off-by: Phil Howard <phil@pimoroni.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0172-dt-bindings-rv3028-backup-switchover-support.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0172-dt-bindings-rv3028-backup-switchover-support.patch
index 398ac917..e742796f 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0172-dt-bindings-rv3028-backup-switchover-support.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0172-dt-bindings-rv3028-backup-switchover-support.patch
@@ -1,7 +1,7 @@
-From a97b35198aefa3bcd44127ce53ffe462a6213f91 Mon Sep 17 00:00:00 2001
+From 2592cf660b620607ed0e8b3832cbc1e8d89a0062 Mon Sep 17 00:00:00 2001
From: Phil Howard <phil@gadgetoid.com>
Date: Fri, 29 Mar 2019 10:57:07 +0000
-Subject: [PATCH 172/194] dt-bindings: rv3028 backup switchover support
+Subject: [PATCH 172/325] dt-bindings: rv3028 backup switchover support
Signed-off-by: Phil Howard <phil@pimoroni.com>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0173-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0173-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch
index 7bd6f90b..41a572e1 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0173-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0173-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch
@@ -1,7 +1,7 @@
-From e0d64ecb620b0b7b8d67c456f9116f70bea10c8c Mon Sep 17 00:00:00 2001
+From 4b9e6e7a8266d4b4024498377039e390dd53a19e Mon Sep 17 00:00:00 2001
From: b-ak <anur.bhargav@gmail.com>
Date: Wed, 9 Jan 2019 22:41:21 +0530
-Subject: [PATCH 173/194] ASoC: tlv320aic32x4: SND_SOC_DAPM_MICBIAS is
+Subject: [PATCH 173/325] ASoC: tlv320aic32x4: SND_SOC_DAPM_MICBIAS is
deprecated
commit 04d979d7a7bac2f645cd827ea37e5ffa5b4e1f97 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0174-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0174-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch
index 72b3d99c..f53fa21c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0174-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0174-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch
@@ -1,7 +1,7 @@
-From 49b51181ab7876e0cf1370124587f132e8a9e163 Mon Sep 17 00:00:00 2001
+From 39d28abdd0dfb92cb7fca925feb78d3b079c2092 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Mon, 18 Mar 2019 20:37:44 -0700
-Subject: [PATCH 174/194] ASoC: tlv320aic32x4: Break out clock setting into
+Subject: [PATCH 174/325] ASoC: tlv320aic32x4: Break out clock setting into
separate function
commit bf31cbfbe25001036e1e096b1c260bf871766ea5 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0175-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0175-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch
index 4ee623c1..f3caf031 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0175-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0175-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch
@@ -1,7 +1,7 @@
-From 782143eed66d76a2536013e7ffd2aa6884164df2 Mon Sep 17 00:00:00 2001
+From ba45a5cc414aff589d20b86b749ddda5f7fc1511 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Wed, 20 Mar 2019 19:38:44 -0700
-Subject: [PATCH 175/194] ASoC: tlv320aic32x4: Properly Set Processing Blocks
+Subject: [PATCH 175/325] ASoC: tlv320aic32x4: Properly Set Processing Blocks
commit c95e3a4b96293403a427b5185e60fad28af51fdd upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0176-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0176-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch
index 6c023ac6..ef4e43ca 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0176-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0176-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch
@@ -1,7 +1,7 @@
-From 4b88bd1732a0baf2e613e6b043ab869d438ecc86 Mon Sep 17 00:00:00 2001
+From 3d5aa9b3aafab0b7067af25c4b08668ccf385db6 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:45 -0700
-Subject: [PATCH 176/194] ASoC: tlv320aic32x4: Model PLL in CCF
+Subject: [PATCH 176/325] ASoC: tlv320aic32x4: Model PLL in CCF
commit 514b044cba667e4b7c383ec79b42b997e624b91d upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0177-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0177-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch
index 1fe95982..c5171c97 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0177-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0177-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch
@@ -1,7 +1,7 @@
-From 8abfe20617750ee6e21dd6d6fd4bd1a16586b118 Mon Sep 17 00:00:00 2001
+From 5fe10bec49b57988e467c05e1efc94751fa8c7e0 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:46 -0700
-Subject: [PATCH 177/194] ASoC: tlv320aic32x4: Model CODEC_CLKIN in CCF
+Subject: [PATCH 177/325] ASoC: tlv320aic32x4: Model CODEC_CLKIN in CCF
commit fd2df3aeafa4b4cc468d58e147e0822967034b71 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0178-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0178-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch
index f8339717..37069eea 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0178-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0178-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch
@@ -1,7 +1,7 @@
-From 28424e43505a720378d23f76440abe5e70af1ee6 Mon Sep 17 00:00:00 2001
+From 9c3f1412da41303908ef0a4d174762bbac22c15a Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:47 -0700
-Subject: [PATCH 178/194] ASoC: tlv320aic32x4: Model DAC/ADC dividers in CCF
+Subject: [PATCH 178/325] ASoC: tlv320aic32x4: Model DAC/ADC dividers in CCF
commit a51b50062091619915c5155085bbe13a7aca6903 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0179-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0179-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch
index ed4d4ad6..d25292eb 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0179-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0179-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch
@@ -1,7 +1,7 @@
-From 9d04de465a1dbe9d78aeca16959d2be254b58e4d Mon Sep 17 00:00:00 2001
+From a17dfa1c8012f7b2dd636b0b4ece59b8ce7c6a80 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:48 -0700
-Subject: [PATCH 179/194] ASoC: tlv320aic32x4: Model BDIV divider in CCF
+Subject: [PATCH 179/325] ASoC: tlv320aic32x4: Model BDIV divider in CCF
commit 9b484124ebd906c4d6bc826cc0d417e80cc1105c upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0180-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0180-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch
index 31d809a1..e7075f34 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0180-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0180-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch
@@ -1,7 +1,7 @@
-From da4813715e51351166f1bf0d06daf10973ed745d Mon Sep 17 00:00:00 2001
+From 50c9990bda04c52c5fc703a2bf764b3724c655d4 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:49 -0700
-Subject: [PATCH 180/194] ASoC: tlv320aic32x4: Control clock gating with CCF
+Subject: [PATCH 180/325] ASoC: tlv320aic32x4: Control clock gating with CCF
commit d25970b5fd51e9fcf0afbe190908ea4049454da4 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0181-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0181-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch
index 11b27c57..054ca34b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0181-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0181-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch
@@ -1,7 +1,7 @@
-From 4c2672cf9133c1b8f5cb4388a2099880c5cd5a7e Mon Sep 17 00:00:00 2001
+From d08238866469ffff8f14f02ffe0981414d469261 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:50 -0700
-Subject: [PATCH 181/194] ASoC: tlv320aic32x4: Move aosr and dosr setting to
+Subject: [PATCH 181/325] ASoC: tlv320aic32x4: Move aosr and dosr setting to
separate functions
commit fbafbf6517274a797e6e6508c18dd8dba5920c89 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0182-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0182-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch
index 8854f625..b8d5e2a0 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0182-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0182-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch
@@ -1,7 +1,7 @@
-From e0a0ee9e0260f9a028c0207d754cca861e670585 Mon Sep 17 00:00:00 2001
+From fb70f5b823ec7b0601386987f0e4b6cc3f8331bf Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:51 -0700
-Subject: [PATCH 182/194] ASoC: tlv320aic32x4: Dynamically Determine Clocking
+Subject: [PATCH 182/325] ASoC: tlv320aic32x4: Dynamically Determine Clocking
commit 96c3bb00239de4fb5f4ddca42c1f90d6d9b3c697 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0183-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0183-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch
index dc67f8c6..5558ffc7 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0183-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0183-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch
@@ -1,7 +1,7 @@
-From 196f9c05a3462f0f4885522859498d78a201d764 Mon Sep 17 00:00:00 2001
+From b56852ca3bfa423b3332c8671a8a31e4494f0fb3 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:52 -0700
-Subject: [PATCH 183/194] ASoC: tlv320aic32x4: Restructure set_dai_sysclk
+Subject: [PATCH 183/325] ASoC: tlv320aic32x4: Restructure set_dai_sysclk
commit aa6a60f7be925210d5156f0e8025f3afe1f4f54d upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0184-ASoC-tlv320aic32x4-Remove-mclk-references.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0184-ASoC-tlv320aic32x4-Remove-mclk-references.patch
index 870f746a..16ef0b64 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0184-ASoC-tlv320aic32x4-Remove-mclk-references.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0184-ASoC-tlv320aic32x4-Remove-mclk-references.patch
@@ -1,7 +1,7 @@
-From cf345fbdf54911d5bfe2487f99dbbc02800c9634 Mon Sep 17 00:00:00 2001
+From 961c4d9dba53fcbcf93d144f7dfd025e91b0789c Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:53 -0700
-Subject: [PATCH 184/194] ASoC: tlv320aic32x4: Remove mclk references
+Subject: [PATCH 184/325] ASoC: tlv320aic32x4: Remove mclk references
commit 78f2d58a289302e56a7def96a783a7686ebf27e2 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0185-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0185-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch
index 655be510..e20f7bfd 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0185-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0185-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch
@@ -1,7 +1,7 @@
-From 114c1a4ea3ef1e0cf4a6d84522b584661dfe4713 Mon Sep 17 00:00:00 2001
+From 237a48711f65f5f76519a8df3d9b77e334466454 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Thu, 21 Mar 2019 17:58:54 -0700
-Subject: [PATCH 185/194] ASoC: tlv320aic32x4: Allow 192000 Sample Rate
+Subject: [PATCH 185/325] ASoC: tlv320aic32x4: Allow 192000 Sample Rate
commit 6d56ee1550b8a81bc63c80051ff78d8d704b09ba upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0186-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0186-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch
index 1d91d252..2bc1b61c 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0186-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0186-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch
@@ -1,7 +1,7 @@
-From db5fc325d1c0a63a7051ef86146ee498615195fd Mon Sep 17 00:00:00 2001
+From dcf9706ff31a65a41db169a9b4219dd565761505 Mon Sep 17 00:00:00 2001
From: Mark Brown <broonie@kernel.org>
Date: Tue, 26 Mar 2019 13:10:13 +0000
-Subject: [PATCH 186/194] ASoC: tlv320aic32x4: Only enable with common clock
+Subject: [PATCH 186/325] ASoC: tlv320aic32x4: Only enable with common clock
commit 64f01d2b5ccc621c3aa66b82daf9154f5581f36a upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0187-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0187-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch
index 4b245696..c201181d 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0187-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0187-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch
@@ -1,7 +1,7 @@
-From 8316bc21909136aec22bab47032b2b7751af3981 Mon Sep 17 00:00:00 2001
+From 2b03f25e598dcaff9122c0a2dc4b8866c9fc857b Mon Sep 17 00:00:00 2001
From: FERHAT Nicolas <contact@audiophonics.fr>
Date: Fri, 5 Apr 2019 13:06:42 +0100
-Subject: [PATCH 187/194] Audiophonics I-Sabre 9038Q2M DAC driver
+Subject: [PATCH 187/325] Audiophonics I-Sabre 9038Q2M DAC driver
Signed-off-by: Audiophonics <contact@audiophonics.fr>
---
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0188-ASoC-tlv320aic32x4-Change-author-s-name.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0188-ASoC-tlv320aic32x4-Change-author-s-name.patch
index 8d420e53..0a1c182e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0188-ASoC-tlv320aic32x4-Change-author-s-name.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0188-ASoC-tlv320aic32x4-Change-author-s-name.patch
@@ -1,7 +1,7 @@
-From d584006442a64dec1981db601f6149bbb8fc81d5 Mon Sep 17 00:00:00 2001
+From 0475365634d885a4aedb439aa8a2197a2128afd5 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Wed, 3 Apr 2019 21:17:15 -0700
-Subject: [PATCH 188/194] ASoC: tlv320aic32x4: Change author's name
+Subject: [PATCH 188/325] ASoC: tlv320aic32x4: Change author's name
commit 7297ba6c74c5b9e78d8e936af82eecfcf7d32dfb upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0189-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0189-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch
index 32c1590f..0f84e47e 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0189-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0189-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch
@@ -1,7 +1,7 @@
-From e3af2a228c9cd638128e70ad018a4ccb55297c5e Mon Sep 17 00:00:00 2001
+From adb52a38c23ea8ecb97f15927e2df6e712fc6af6 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Wed, 3 Apr 2019 21:17:16 -0700
-Subject: [PATCH 189/194] ASoC: tlv320aic32x4: Update copyright and use SPDX
+Subject: [PATCH 189/325] ASoC: tlv320aic32x4: Update copyright and use SPDX
identifier
commit 8a1d95c393d971e624fc28f11516b0bc3a7fa706 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0190-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0190-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch
index d5029ea0..a7876e0b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0190-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0190-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch
@@ -1,7 +1,7 @@
-From d840aec18455b4f7513e822cc571e82fa1758406 Mon Sep 17 00:00:00 2001
+From aef534b40dea1e211a1a8f8cf0406e6a26efc03c Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Wed, 3 Apr 2019 21:01:54 -0700
-Subject: [PATCH 190/194] ASoC: tlv320aic32x4: Add Switch for Setting Common
+Subject: [PATCH 190/325] ASoC: tlv320aic32x4: Add Switch for Setting Common
Mode Voltage
commit 44ceee847e27c828f2f1ef4e400e6bc0c8d04de3 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0191-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0191-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch
index 1c320d24..531e74f3 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0191-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0191-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch
@@ -1,7 +1,7 @@
-From eb78d6a320854920e740b3bb09094d6dc1f89ac2 Mon Sep 17 00:00:00 2001
+From da85ea351b1d30d67feded1db940adbc05fd5724 Mon Sep 17 00:00:00 2001
From: Annaliese McDermond <nh6z@nh6z.net>
Date: Wed, 3 Apr 2019 21:01:55 -0700
-Subject: [PATCH 191/194] ASoC: tlv320aic32x4: Add Playback PowerTune Controls
+Subject: [PATCH 191/325] ASoC: tlv320aic32x4: Add Playback PowerTune Controls
commit d3e6e374566e1154820a9a3dc82f7eef646fcf95 upstream.
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0192-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0192-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch
index 40d3f532..475491fe 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0192-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0192-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch
@@ -1,7 +1,7 @@
-From c45b8538b76fcf51e442423561a446ff60bfe10d Mon Sep 17 00:00:00 2001
+From 1b3daed556a28a8e7dabb1e1c893c5f152a9b50c Mon Sep 17 00:00:00 2001
From: Samuel Hsu <hsu@distec.de>
Date: Mon, 8 Apr 2019 16:42:17 +0200
-Subject: [PATCH 192/194] Input: ili210x - fetch touchscreen geometry from DT
+Subject: [PATCH 192/325] Input: ili210x - fetch touchscreen geometry from DT
commit f67cc3e927d8414ad3872e046764534ea1f5db0d upstream
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0193-Input-ili210x-add-DT-binding-document.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0193-Input-ili210x-add-DT-binding-document.patch
index cce38208..3a78814b 100644
--- a/sys-kernel/boest-v5.0.15/raspberrypi/0193-Input-ili210x-add-DT-binding-document.patch
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0193-Input-ili210x-add-DT-binding-document.patch
@@ -1,7 +1,7 @@
-From f6302c418ba6f3dee5cba8c6bd938f98b85e19fb Mon Sep 17 00:00:00 2001
+From f0b0d396d62326c61960cbd30b4d4f463950ae7d Mon Sep 17 00:00:00 2001
From: Samuel Hsu <hsu@distec.de>
Date: Mon, 8 Apr 2019 16:49:51 +0200
-Subject: [PATCH 193/194] Input: ili210x - add DT binding document
+Subject: [PATCH 193/325] Input: ili210x - add DT binding document
commit 41a852e002e65ab7a1e6841b485d72d022e95df2 upstream
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0194-sound-Fixes-for-audioinjector-octo-under-4.19.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0194-sound-Fixes-for-audioinjector-octo-under-4.19.patch
new file mode 100644
index 00000000..7de216c6
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0194-sound-Fixes-for-audioinjector-octo-under-4.19.patch
@@ -0,0 +1,116 @@
+From 49129c8e06b6056d7dd879fc5b595296df4bcf0f Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Thu, 21 Mar 2019 11:19:46 +0000
+Subject: [PATCH 194/325] sound: Fixes for audioinjector-octo under 4.19
+
+1. Move the DT alias declaration to the I2C shim in the cases
+where the shim is enabled. This works around a problem caused by a
+4.19 commit [1] that generates DT/OF uevents for I2C drivers.
+
+2. Fix the diagnostics in an error path of the soundcard driver to
+correctly identify the reason for the failure to load.
+
+3. Move the declaration of the clock node in the overlay outside
+the I2C node to avoid warnings.
+
+4. Sort the overlay nodes so that dependencies are only to earlier
+fragments, in an attempt to get runtime dtoverlay application to
+work (it still doesn't...)
+
+See: https://github.com/Audio-Injector/Octo/issues/14
+Signed-off-by: Phil Elwell <phil@raspberrypi.org>
+
+[1] af503716ac14 ("i2c: core: report OF style module alias for devices registered via OF")
+---
+ .../overlays/audioinjector-addons-overlay.dts | 19 ++++++++++++-------
+ sound/soc/bcm/audioinjector-octo-soundcard.c | 2 +-
+ sound/soc/codecs/cs42xx8-i2c.c | 7 +++++++
+ sound/soc/codecs/cs42xx8.c | 2 ++
+ 4 files changed, 22 insertions(+), 8 deletions(-)
+
+diff --git a/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
+index cedbf5ecdbcd..6d192af10da9 100644
+--- a/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
++++ b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
+@@ -13,6 +13,17 @@
+ };
+
+ fragment@1 {
++ target-path = "/";
++ __overlay__ {
++ cs42448_mclk: codec-mclk {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-frequency = <49152000>;
++ };
++ };
++ };
++
++ fragment@2 {
+ target = <&i2c1>;
+ __overlay__ {
+ #address-cells = <1>;
+@@ -27,16 +38,10 @@
+ clock-names = "mclk";
+ status = "okay";
+ };
+-
+- cs42448_mclk: codec-mclk {
+- compatible = "fixed-clock";
+- #clock-cells = <0>;
+- clock-frequency = <49152000>;
+- };
+ };
+ };
+
+- fragment@2 {
++ fragment@3 {
+ target = <&sound>;
+ snd: __overlay__ {
+ compatible = "ai,audioinjector-octo-soundcard";
+diff --git a/sound/soc/bcm/audioinjector-octo-soundcard.c b/sound/soc/bcm/audioinjector-octo-soundcard.c
+index 8fbd176dc8bc..d0b5660f663f 100644
+--- a/sound/soc/bcm/audioinjector-octo-soundcard.c
++++ b/sound/soc/bcm/audioinjector-octo-soundcard.c
+@@ -297,7 +297,7 @@ static int audioinjector_octo_probe(struct platform_device *pdev)
+ dai->codec_name = NULL;
+ dai->codec_of_node = codec_node;
+ } else
+- if (!dai->cpu_of_node) {
++ if (!i2s_node) {
+ dev_err(&pdev->dev,
+ "i2s-controller missing or invalid in DT\n");
+ return -EINVAL;
+diff --git a/sound/soc/codecs/cs42xx8-i2c.c b/sound/soc/codecs/cs42xx8-i2c.c
+index 0214e3ab9da0..a4586ea4acf6 100644
+--- a/sound/soc/codecs/cs42xx8-i2c.c
++++ b/sound/soc/codecs/cs42xx8-i2c.c
+@@ -45,6 +45,13 @@ static struct i2c_device_id cs42xx8_i2c_id[] = {
+ };
+ MODULE_DEVICE_TABLE(i2c, cs42xx8_i2c_id);
+
++const struct of_device_id cs42xx8_of_match[] = {
++ { .compatible = "cirrus,cs42448", .data = &cs42448_data, },
++ { .compatible = "cirrus,cs42888", .data = &cs42888_data, },
++ { /* sentinel */ }
++};
++MODULE_DEVICE_TABLE(of, cs42xx8_of_match);
++
+ static struct i2c_driver cs42xx8_i2c_driver = {
+ .driver = {
+ .name = "cs42xx8",
+diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c
+index ebb9e0cf8364..42677c630f23 100644
+--- a/sound/soc/codecs/cs42xx8.c
++++ b/sound/soc/codecs/cs42xx8.c
+@@ -436,8 +436,10 @@ const struct of_device_id cs42xx8_of_match[] = {
+ { .compatible = "cirrus,cs42888", .data = &cs42888_data, },
+ { /* sentinel */ }
+ };
++#if !IS_ENABLED(CONFIG_SND_SOC_CS42XX8_I2C)
+ MODULE_DEVICE_TABLE(of, cs42xx8_of_match);
+ EXPORT_SYMBOL_GPL(cs42xx8_of_match);
++#endif
+
+ int cs42xx8_probe(struct device *dev, struct regmap *regmap)
+ {
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0195-overlays-Add-PiGlow-overlay.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0195-overlays-Add-PiGlow-overlay.patch
new file mode 100644
index 00000000..b51e6dcb
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0195-overlays-Add-PiGlow-overlay.patch
@@ -0,0 +1,153 @@
+From 4ae382f8eb9e260257cbe4439481513669c84a69 Mon Sep 17 00:00:00 2001
+From: Stefan Wahren <wahrenst@gmx.net>
+Date: Mon, 29 Apr 2019 19:35:33 +0200
+Subject: [PATCH 195/325] overlays: Add PiGlow overlay
+
+The PiGlow is a small add-on board for the Raspberry Pi that provides
+18 individually controllable LEDs (SN3218) and uses the following pins:
+
+P1 & P17 (3V3)
+P2 (5V)
+P3 (SDA)
+P5 (SCL)
+P14 (GND)
+
+Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
+---
+ arch/arm/boot/dts/overlays/Makefile | 1 +
+ arch/arm/boot/dts/overlays/README | 6 ++
+ arch/arm/boot/dts/overlays/piglow-overlay.dts | 97 +++++++++++++++++++
+ 3 files changed, 104 insertions(+)
+
+diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
+index 1d56220400a6..aff7885faefb 100644
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -94,6 +94,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
+ pi3-disable-wifi.dtbo \
+ pi3-miniuart-bt.dtbo \
+ pibell.dtbo \
++ piglow.dtbo \
+ piscreen.dtbo \
+ piscreen2r.dtbo \
+ pisound.dtbo \
+diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
+index f9fbf938b062..47f092a2c45a 100644
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -1494,6 +1494,12 @@ Params: alsaname Set the name as it appears in ALSA (default
+ "PiBell")
+
+
++Name: piglow
++Info: Configures the PiGlow by pimoroni.com
++Load: dtoverlay=piglow
++Params: <None>
++
++
+ Name: piscreen
+ Info: PiScreen display by OzzMaker.com
+ Load: dtoverlay=piscreen,<param>=<val>
+diff --git a/arch/arm/boot/dts/overlays/piglow-overlay.dts b/arch/arm/boot/dts/overlays/piglow-overlay.dts
+new file mode 100644
+index 000000000000..e66e47ae83b2
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/piglow-overlay.dts
+@@ -0,0 +1,97 @@
++// Definitions for SN3218 LED driver from Si-En Technology on PiGlow
++/dts-v1/;
++/plugin/;
++
++/ {
++ compatible = "brcm,bcm2708";
++
++ fragment@0 {
++ target = <&i2c_arm>;
++ __overlay__ {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "okay";
++
++ sn3218@54 {
++ compatible = "si-en,sn3218";
++ reg = <0x54>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "okay";
++
++ led@1 {
++ reg = <1>;
++ label = "piglow:red:led1";
++ };
++ led@2 {
++ reg = <2>;
++ label = "piglow:orange:led2";
++ };
++ led@3 {
++ reg = <3>;
++ label = "piglow:yellow:led3";
++ };
++ led@4 {
++ reg = <4>;
++ label = "piglow:green:led4";
++ };
++ led@5 {
++ reg = <5>;
++ label = "piglow:blue:led5";
++ };
++ led@6 {
++ reg = <6>;
++ label = "piglow:green:led6";
++ };
++ led@7 {
++ reg = <7>;
++ label = "piglow:red:led7";
++ };
++ led@8 {
++ reg = <8>;
++ label = "piglow:orange:led8";
++ };
++ led@9 {
++ reg = <9>;
++ label = "piglow:yellow:led9";
++ };
++ led@10 {
++ reg = <10>;
++ label = "piglow:white:led10";
++ };
++ led@11 {
++ reg = <11>;
++ label = "piglow:white:led11";
++ };
++ led@12 {
++ reg = <12>;
++ label = "piglow:blue:led12";
++ };
++ led@13 {
++ reg = <13>;
++ label = "piglow:white:led13";
++ };
++ led@14 {
++ reg = <14>;
++ label = "piglow:green:led14";
++ };
++ led@15 {
++ reg = <15>;
++ label = "piglow:blue:led15";
++ };
++ led@16 {
++ reg = <16>;
++ label = "piglow:yellow:led16";
++ };
++ led@17 {
++ reg = <17>;
++ label = "piglow:orange:led17";
++ };
++ led@18 {
++ reg = <18>;
++ label = "piglow:red:led18";
++ };
++ };
++ };
++ };
++};
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0196-configs-enable-LED-driver-for-PiGlow.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0196-configs-enable-LED-driver-for-PiGlow.patch
new file mode 100644
index 00000000..edf87a99
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0196-configs-enable-LED-driver-for-PiGlow.patch
@@ -0,0 +1,48 @@
+From dbf6d471610fe7d330a077b7fd6eed75d9087abd Mon Sep 17 00:00:00 2001
+From: Stefan Wahren <wahrenst@gmx.net>
+Date: Mon, 29 Apr 2019 19:28:51 +0200
+Subject: [PATCH 196/325] configs: enable LED driver for PiGlow
+
+Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig | 1 +
+ arch/arm64/configs/bcmrpi3_defconfig | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
+index 2c5553bacec7..d3ed1fb3c14c 100644
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -1122,6 +1122,7 @@ CONFIG_MMC_SPI=m
+ CONFIG_LEDS_CLASS=y
+ CONFIG_LEDS_GPIO=y
+ CONFIG_LEDS_PCA963X=m
++CONFIG_LEDS_IS31FL32XX=m
+ CONFIG_LEDS_TRIGGER_TIMER=y
+ CONFIG_LEDS_TRIGGER_ONESHOT=y
+ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
+index 836fd83a968a..451aa917e523 100644
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -1115,6 +1115,7 @@ CONFIG_MMC_SPI=m
+ CONFIG_LEDS_CLASS=y
+ CONFIG_LEDS_GPIO=y
+ CONFIG_LEDS_PCA963X=m
++CONFIG_LEDS_IS31FL32XX=m
+ CONFIG_LEDS_TRIGGER_TIMER=y
+ CONFIG_LEDS_TRIGGER_ONESHOT=y
+ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig
+index 84d33006d5e1..528e640fb1bb 100644
+--- a/arch/arm64/configs/bcmrpi3_defconfig
++++ b/arch/arm64/configs/bcmrpi3_defconfig
+@@ -987,6 +987,7 @@ CONFIG_MMC_SPI=m
+ CONFIG_LEDS_CLASS=y
+ CONFIG_LEDS_GPIO=y
+ CONFIG_LEDS_PCA963X=m
++CONFIG_LEDS_IS31FL32XX=m
+ CONFIG_LEDS_TRIGGER_TIMER=y
+ CONFIG_LEDS_TRIGGER_ONESHOT=y
+ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0197-dts-Increase-default-coherent-pool-size.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0197-dts-Increase-default-coherent-pool-size.patch
new file mode 100644
index 00000000..b0fdad18
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0197-dts-Increase-default-coherent-pool-size.patch
@@ -0,0 +1,29 @@
+From f114ebb443e028b08896e13ae8fef7336dfc9319 Mon Sep 17 00:00:00 2001
+From: P33M <p33m@github.com>
+Date: Wed, 1 May 2019 15:00:05 +0100
+Subject: [PATCH 197/325] dts: Increase default coherent pool size
+
+dwc_otg allocates DMA-coherent buffers in atomic context for misaligned
+transfer buffers. The pool that these allocations come from is set up
+at boot-time but can be overridden by a commandline parameter -
+increase this for now to prevent failures seen on 4.19 with multiple
+USB Ethernet devices.
+
+see: https://github.com/raspberrypi/linux/issues/2924
+---
+ arch/arm/boot/dts/bcm270x.dtsi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/bcm270x.dtsi b/arch/arm/boot/dts/bcm270x.dtsi
+index 27f19225245e..8b39d29d9164 100644
+--- a/arch/arm/boot/dts/bcm270x.dtsi
++++ b/arch/arm/boot/dts/bcm270x.dtsi
+@@ -3,7 +3,7 @@
+
+ / {
+ chosen {
+- bootargs = "";
++ bootargs = "coherent_pool=1M";
+ /delete-property/ stdout-path;
+ };
+
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0198-configs-Enable-netdev-LED-trigger.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0198-configs-Enable-netdev-LED-trigger.patch
new file mode 100644
index 00000000..c32c9d10
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0198-configs-Enable-netdev-LED-trigger.patch
@@ -0,0 +1,48 @@
+From b5565cd3cf750346cc01a36acf9991931772dedd Mon Sep 17 00:00:00 2001
+From: Russell Joyce <russell.joyce@york.ac.uk>
+Date: Wed, 1 May 2019 16:43:27 +0100
+Subject: [PATCH 198/325] configs: Enable netdev LED trigger
+
+Signed-off-by: Russell Joyce <russell.joyce@york.ac.uk>
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig | 1 +
+ arch/arm64/configs/bcmrpi3_defconfig | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
+index d3ed1fb3c14c..7947cadd478e 100644
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -1134,6 +1134,7 @@ CONFIG_LEDS_TRIGGER_TRANSIENT=m
+ CONFIG_LEDS_TRIGGER_CAMERA=m
+ CONFIG_LEDS_TRIGGER_INPUT=y
+ CONFIG_LEDS_TRIGGER_PANIC=y
++CONFIG_LEDS_TRIGGER_NETDEV=m
+ CONFIG_RTC_CLASS=y
+ # CONFIG_RTC_HCTOSYS is not set
+ CONFIG_RTC_DRV_ABX80X=m
+diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
+index 451aa917e523..dff3a6266899 100644
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -1127,6 +1127,7 @@ CONFIG_LEDS_TRIGGER_TRANSIENT=m
+ CONFIG_LEDS_TRIGGER_CAMERA=m
+ CONFIG_LEDS_TRIGGER_INPUT=y
+ CONFIG_LEDS_TRIGGER_PANIC=y
++CONFIG_LEDS_TRIGGER_NETDEV=m
+ CONFIG_RTC_CLASS=y
+ # CONFIG_RTC_HCTOSYS is not set
+ CONFIG_RTC_DRV_ABX80X=m
+diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig
+index 528e640fb1bb..cada40a0b660 100644
+--- a/arch/arm64/configs/bcmrpi3_defconfig
++++ b/arch/arm64/configs/bcmrpi3_defconfig
+@@ -999,6 +999,7 @@ CONFIG_LEDS_TRIGGER_TRANSIENT=m
+ CONFIG_LEDS_TRIGGER_CAMERA=m
+ CONFIG_LEDS_TRIGGER_INPUT=y
+ CONFIG_LEDS_TRIGGER_PANIC=y
++CONFIG_LEDS_TRIGGER_NETDEV=m
+ CONFIG_RTC_CLASS=y
+ # CONFIG_RTC_HCTOSYS is not set
+ CONFIG_RTC_DRV_ABX80X=m
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0199-lan78xx-use-default-alignment-for-rx-buffers.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0199-lan78xx-use-default-alignment-for-rx-buffers.patch
new file mode 100644
index 00000000..dd0503be
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0199-lan78xx-use-default-alignment-for-rx-buffers.patch
@@ -0,0 +1,25 @@
+From 7f9c00e246be38f47ea7d06ebf6f2dad8232503f Mon Sep 17 00:00:00 2001
+From: P33M <p33m@github.com>
+Date: Thu, 2 May 2019 11:53:45 +0100
+Subject: [PATCH 199/325] 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
+in both dwc_otg and in ipv6 processing.
+---
+ drivers/net/usb/lan78xx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
+index 52726b00dfda..308caa79ff8b 100644
+--- a/drivers/net/usb/lan78xx.c
++++ b/drivers/net/usb/lan78xx.c
+@@ -3249,7 +3249,7 @@ static int rx_submit(struct lan78xx_net *dev, struct urb *urb, gfp_t flags)
+ size_t size = dev->rx_urb_size;
+ int ret = 0;
+
+- skb = netdev_alloc_skb_ip_align(dev->net, size);
++ skb = netdev_alloc_skb(dev->net, size);
+ if (!skb) {
+ usb_free_urb(urb);
+ return -ENOMEM;
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0200-staging-mmal-vchiq-Replace-spinlock-protecting-conte.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0200-staging-mmal-vchiq-Replace-spinlock-protecting-conte.patch
new file mode 100644
index 00000000..d0302dea
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0200-staging-mmal-vchiq-Replace-spinlock-protecting-conte.patch
@@ -0,0 +1,69 @@
+From 1d286505ac669fd9d5eeaebea74301eef62a3ea5 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 1 May 2019 15:17:00 +0100
+Subject: [PATCH 200/325] staging: mmal-vchiq: Replace spinlock protecting
+ context_map with mutex
+
+950fd86 staging: bcm2835-camera: Replace open-coded idr with a struct idr.
+replaced an internal implementation of an idr with the standard functions
+and a spinlock.
+idr_alloc(GFP_KERNEL) can sleep whilst calling kmem_cache_alloc to allocate
+the new node, but this is not valid whilst in an atomic context due to the
+spinlock.
+
+There is no need for this to be a spinlock as a standard mutex is
+sufficient.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ .../vc04_services/bcm2835-camera/mmal-vchiq.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+index 16af735af5c3..f1bb900c4aa6 100644
+--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
++++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+@@ -161,7 +161,8 @@ struct vchiq_mmal_instance {
+ void *bulk_scratch;
+
+ struct idr context_map;
+- spinlock_t context_map_lock;
++ /* protect accesses to context_map */
++ struct mutex context_map_lock;
+
+ /* component to use next */
+ int component_idx;
+@@ -184,10 +185,10 @@ get_msg_context(struct vchiq_mmal_instance *instance)
+ * that when we service the VCHI reply, we can look up what
+ * message is being replied to.
+ */
+- spin_lock(&instance->context_map_lock);
++ mutex_lock(&instance->context_map_lock);
+ handle = idr_alloc(&instance->context_map, msg_context,
+ 0, 0, GFP_KERNEL);
+- spin_unlock(&instance->context_map_lock);
++ mutex_unlock(&instance->context_map_lock);
+
+ if (handle < 0) {
+ kfree(msg_context);
+@@ -211,9 +212,9 @@ release_msg_context(struct mmal_msg_context *msg_context)
+ {
+ struct vchiq_mmal_instance *instance = msg_context->instance;
+
+- spin_lock(&instance->context_map_lock);
++ mutex_lock(&instance->context_map_lock);
+ idr_remove(&instance->context_map, msg_context->handle);
+- spin_unlock(&instance->context_map_lock);
++ mutex_unlock(&instance->context_map_lock);
+ kfree(msg_context);
+ }
+
+@@ -1849,7 +1850,7 @@ int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
+
+ instance->bulk_scratch = vmalloc(PAGE_SIZE);
+
+- spin_lock_init(&instance->context_map_lock);
++ mutex_init(&instance->context_map_lock);
+ idr_init_base(&instance->context_map, 1);
+
+ params.callback_param = instance;
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0201-BCM270X_DT-Also-set-coherent_pool-1M-for-BT-Pis.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0201-BCM270X_DT-Also-set-coherent_pool-1M-for-BT-Pis.patch
new file mode 100644
index 00000000..cd522f29
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0201-BCM270X_DT-Also-set-coherent_pool-1M-for-BT-Pis.patch
@@ -0,0 +1,53 @@
+From 9505eb59c96e5d1e0ce858bf905cff1265b00fd5 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Thu, 2 May 2019 22:14:34 +0100
+Subject: [PATCH 201/325] BCM270X_DT: Also set coherent_pool=1M for BT Pis
+
+See: https://github.com/raspberrypi/linux/issues/2924
+
+Signed-off-by: Phil Elwell <phil@raspberrypi.org>
+---
+ arch/arm/boot/dts/bcm2708-rpi-0-w.dts | 2 +-
+ arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 2 +-
+ arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/boot/dts/bcm2708-rpi-0-w.dts b/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
+index ef0b0f040ca5..0fa5502d7d36 100644
+--- a/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
++++ b/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
+@@ -7,7 +7,7 @@
+ model = "Raspberry Pi Zero W";
+
+ chosen {
+- bootargs = "8250.nr_uarts=1";
++ bootargs = "coherent_pool=1M 8250.nr_uarts=1";
+ };
+
+ aliases {
+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 2dc16c38ff17..7ef6a8f8e9f2 100644
+--- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
+@@ -8,7 +8,7 @@
+ model = "Raspberry Pi 3 Model B+";
+
+ chosen {
+- bootargs = "8250.nr_uarts=1";
++ bootargs = "coherent_pool=1M 8250.nr_uarts=1";
+ };
+
+ aliases {
+diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
+index ee526c4c5d5a..ed00143b884a 100644
+--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
+@@ -8,7 +8,7 @@
+ model = "Raspberry Pi 3 Model B";
+
+ chosen {
+- bootargs = "8250.nr_uarts=1";
++ bootargs = "coherent_pool=1M 8250.nr_uarts=1";
+ };
+
+ aliases {
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0202-configs-Enable-ICS-43432-I2S-microphone-module.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0202-configs-Enable-ICS-43432-I2S-microphone-module.patch
new file mode 100644
index 00000000..0d1c6864
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0202-configs-Enable-ICS-43432-I2S-microphone-module.patch
@@ -0,0 +1,48 @@
+From 7a12e7aa710a4b2f724f0bf6a3539e9037c943ea Mon Sep 17 00:00:00 2001
+From: Russell Joyce <russell.joyce@york.ac.uk>
+Date: Thu, 2 May 2019 15:18:36 +0100
+Subject: [PATCH 202/325] configs: Enable ICS-43432 I2S microphone module
+
+Signed-off-by: Russell Joyce <russell.joyce@york.ac.uk>
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig | 1 +
+ arch/arm64/configs/bcmrpi3_defconfig | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
+index 7947cadd478e..e28b588d52d1 100644
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -934,6 +934,7 @@ CONFIG_SND_SOC_ADAU7002=m
+ CONFIG_SND_SOC_AK4554=m
+ CONFIG_SND_SOC_CS4265=m
+ CONFIG_SND_SOC_CS4271_I2C=m
++CONFIG_SND_SOC_ICS43432=m
+ CONFIG_SND_SOC_SPDIF=m
+ CONFIG_SND_SOC_WM8804_I2C=m
+ CONFIG_SND_SIMPLE_CARD=m
+diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
+index dff3a6266899..73db3845d1a2 100644
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -927,6 +927,7 @@ CONFIG_SND_SOC_ADAU7002=m
+ CONFIG_SND_SOC_AK4554=m
+ CONFIG_SND_SOC_CS4265=m
+ CONFIG_SND_SOC_CS4271_I2C=m
++CONFIG_SND_SOC_ICS43432=m
+ CONFIG_SND_SOC_SPDIF=m
+ CONFIG_SND_SOC_WM8804_I2C=m
+ CONFIG_SND_SIMPLE_CARD=m
+diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig
+index cada40a0b660..45433f974fb7 100644
+--- a/arch/arm64/configs/bcmrpi3_defconfig
++++ b/arch/arm64/configs/bcmrpi3_defconfig
+@@ -818,6 +818,7 @@ CONFIG_SND_SOC_AD193X_I2C=m
+ CONFIG_SND_SOC_ADAU1701=m
+ CONFIG_SND_SOC_AK4554=m
+ CONFIG_SND_SOC_CS4271_I2C=m
++CONFIG_SND_SOC_ICS43432=m
+ CONFIG_SND_SOC_WM8804_I2C=m
+ CONFIG_SND_SIMPLE_CARD=m
+ CONFIG_HIDRAW=y
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0203-arm-dts-overlays-rpi-sense-add-upstream-humidity-com.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0203-arm-dts-overlays-rpi-sense-add-upstream-humidity-com.patch
new file mode 100644
index 00000000..4cc69080
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0203-arm-dts-overlays-rpi-sense-add-upstream-humidity-com.patch
@@ -0,0 +1,28 @@
+From 43740b512b96633bea9bcd86f3d1feb116c171ba Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Sun, 5 May 2019 21:07:12 +0100
+Subject: [PATCH 203/325] arm: dts: overlays: rpi-sense: add upstream humidity
+ compatible
+
+The upstream humidiity driver uses "st,hts221" for the compatible
+string so add that in as well so it will work with an unmodified
+upstream kernel driver. We leave the downstream as the priority.
+
+Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
+---
+ arch/arm/boot/dts/overlays/rpi-sense-overlay.dts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
+index 27153240e1be..6eba2a10bfa5 100644
+--- a/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
++++ b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
+@@ -38,7 +38,7 @@
+ };
+
+ hts221-humid@5f {
+- compatible = "st,hts221-humid";
++ compatible = "st,hts221-humid", "st,hts221";
+ reg = <0x5f>;
+ status = "okay";
+ };
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0204-Added-IQaudIO-Pi-Codec-board-support-2969.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0204-Added-IQaudIO-Pi-Codec-board-support-2969.patch
new file mode 100644
index 00000000..4355dc84
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0204-Added-IQaudIO-Pi-Codec-board-support-2969.patch
@@ -0,0 +1,427 @@
+From d5bbcb58683794d75fdcab855d6cd383c4371e2d Mon Sep 17 00:00:00 2001
+From: IQaudIO <gordon@iqaudio.com>
+Date: Mon, 13 May 2019 21:53:05 +0100
+Subject: [PATCH 204/325] Added IQaudIO Pi-Codec board support (#2969)
+
+Add support for the IQaudIO Pi-Codec board.
+
+Signed-off-by: Gordon <gordon@iqaudio.com>
+---
+ arch/arm/boot/dts/overlays/Makefile | 1 +
+ arch/arm/boot/dts/overlays/README | 6 +
+ .../dts/overlays/iqaudio-codec-overlay.dts | 42 +++
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig | 1 +
+ arch/arm64/configs/bcmrpi3_defconfig | 1 +
+ sound/soc/bcm/Kconfig | 7 +
+ sound/soc/bcm/Makefile | 2 +
+ sound/soc/bcm/iqaudio-codec.c | 250 ++++++++++++++++++
+ 9 files changed, 311 insertions(+)
+
+diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
+index aff7885faefb..c60c829c04dd 100644
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -66,6 +66,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
+ i2c1-bcm2708.dtbo \
+ i2s-gpio28-31.dtbo \
+ ilitek251x.dtbo \
++ iqaudio-codec.dtbo \
+ iqaudio-dac.dtbo \
+ iqaudio-dacplus.dtbo \
+ iqaudio-digi-wm8804-audio.dtbo \
+diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
+index 47f092a2c45a..1afce6edd380 100644
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -1134,6 +1134,12 @@ Params: interrupt GPIO used for interrupt (default 4)
+ touchscreen (in pixels)
+
+
++Name: iqaudio-codec
++Info: Configures the IQaudio Codec audio card
++Load: dtoverlay=iqaudio-codec
++Params: <None>
++
++
+ Name: iqaudio-dac
+ Info: Configures the IQaudio DAC audio card
+ Load: dtoverlay=iqaudio-dac,<param>
+diff --git a/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
+new file mode 100644
+index 000000000000..ff3ef3942c6c
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
+@@ -0,0 +1,42 @@
++// Definitions for IQaudIO CODEC
++/dts-v1/;
++/plugin/;
++
++/ {
++ compatible = "brcm,bcm2708";
++
++ fragment@0 {
++ target = <&i2s>;
++ __overlay__ {
++ status = "okay";
++ };
++ };
++
++ fragment@1 {
++ target = <&i2c1>;
++ __overlay__ {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "okay";
++
++ da2713@1a {
++ #sound-dai-cells = <0>;
++ compatible = "dlg,da7213";
++ reg = <0x1a>;
++ status = "okay";
++ };
++ };
++ };
++
++ fragment@2 {
++ target = <&sound>;
++ iqaudio_dac: __overlay__ {
++ compatible = "iqaudio,iqaudio-codec";
++ i2s-controller = <&i2s>;
++ status = "okay";
++ };
++ };
++
++ __overrides__ {
++ };
++};
+diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
+index e28b588d52d1..4be018fccb28 100644
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -910,6 +910,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+ CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
+ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
+ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
++CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
+ CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M=m
+diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
+index 73db3845d1a2..f347434b5504 100644
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -903,6 +903,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+ CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
+ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
+ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
++CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
+ CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M=m
+diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig
+index 45433f974fb7..d860ffbcd0a2 100644
+--- a/arch/arm64/configs/bcmrpi3_defconfig
++++ b/arch/arm64/configs/bcmrpi3_defconfig
+@@ -803,6 +803,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+ CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
+ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
+ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
++CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
+ CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M=m
+diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
+index 85ba81493506..9cfe86ef5861 100644
+--- a/sound/soc/bcm/Kconfig
++++ b/sound/soc/bcm/Kconfig
+@@ -108,6 +108,13 @@ config SND_BCM2708_SOC_JUSTBOOM_DIGI
+ help
+ Say Y or M if you want to add support for JustBoom Digi.
+
++config SND_BCM2708_SOC_IQAUDIO_CODEC
++ tristate "Support for IQaudIO-CODEC"
++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
++ select SND_SOC_DA7213
++ help
++ Say Y or M if you want to add support for IQaudIO-CODEC.
++
+ config SND_BCM2708_SOC_IQAUDIO_DAC
+ tristate "Support for IQaudIO-DAC"
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
+diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
+index 8f8fb92b6436..356bd229e48c 100644
+--- a/sound/soc/bcm/Makefile
++++ b/sound/soc/bcm/Makefile
+@@ -18,6 +18,7 @@ snd-soc-hifiberry-dacplusadc-objs := hifiberry_dacplusadc.o
+ snd-soc-justboom-dac-objs := justboom-dac.o
+ snd-soc-rpi-cirrus-objs := rpi-cirrus.o
+ snd-soc-rpi-proto-objs := rpi-proto.o
++snd-soc-iqaudio-codec-objs := iqaudio-codec.o
+ snd-soc-iqaudio-dac-objs := iqaudio-dac.o
+ snd-soc-i-sabre-q2m-objs := i-sabre-q2m.o
+ snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o
+@@ -42,6 +43,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC) += snd-soc-hifiberry-dacplusa
+ obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC) += snd-soc-justboom-dac.o
+ obj-$(CONFIG_SND_BCM2708_SOC_RPI_CIRRUS) += snd-soc-rpi-cirrus.o
+ obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
++obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC) += snd-soc-iqaudio-codec.o
+ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
+ obj-$(CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M) += snd-soc-i-sabre-q2m.o
+ obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o
+diff --git a/sound/soc/bcm/iqaudio-codec.c b/sound/soc/bcm/iqaudio-codec.c
+new file mode 100644
+index 000000000000..4051a5f4269d
+--- /dev/null
++++ b/sound/soc/bcm/iqaudio-codec.c
+@@ -0,0 +1,250 @@
++/*
++ * ASoC Driver for IQaudIO Raspberry Pi Codec board
++ *
++ * Author: Gordon Garrity <gordon@iqaudio.com>
++ * (C) Copyright IQaudio Limited, 2017-2019
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ */
++
++#include <linux/module.h>
++#include <linux/gpio/consumer.h>
++#include <linux/platform_device.h>
++
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/jack.h>
++
++#include <linux/acpi.h>
++#include <linux/slab.h>
++#include "../codecs/da7213.h"
++
++static int pll_out = DA7213_PLL_FREQ_OUT_90316800;
++
++static int snd_rpi_iqaudio_pll_control(struct snd_soc_dapm_widget *w,
++ struct snd_kcontrol *k, int event)
++{
++ int ret = 0;
++ struct snd_soc_dapm_context *dapm = w->dapm;
++ struct snd_soc_card *card = dapm->card;
++ struct snd_soc_pcm_runtime *rtd =
++ snd_soc_get_pcm_runtime(card, card->dai_link[0].name);
++ struct snd_soc_dai *codec_dai = rtd->codec_dai;
++
++ if (SND_SOC_DAPM_EVENT_OFF(event)) {
++ ret = snd_soc_dai_set_pll(codec_dai, 0, DA7213_SYSCLK_MCLK, 0,
++ 0);
++ if (ret)
++ dev_err(card->dev, "Failed to bypass PLL: %d\n", ret);
++ } else if (SND_SOC_DAPM_EVENT_ON(event)) {
++ ret = snd_soc_dai_set_pll(codec_dai, 0, DA7213_SYSCLK_PLL, 0,
++ pll_out);
++ if (ret)
++ dev_err(card->dev, "Failed to enable PLL: %d\n", ret);
++ }
++
++ return ret;
++}
++
++static int snd_rpi_iqaudio_post_dapm_event(struct snd_soc_dapm_widget *w,
++ struct snd_kcontrol *kcontrol,
++ int event)
++{
++ switch (event) {
++ case SND_SOC_DAPM_POST_PMU:
++ /* Delay for mic bias ramp */
++ msleep(1000);
++ break;
++ default:
++ break;
++ }
++
++ return 0;
++}
++
++static const struct snd_soc_dapm_widget dapm_widgets[] = {
++ SND_SOC_DAPM_HP("HP Jack", NULL),
++ SND_SOC_DAPM_MIC("MIC Jack", NULL),
++ SND_SOC_DAPM_MIC("Onboard MIC", NULL),
++ SND_SOC_DAPM_LINE("AUX Jack", NULL),
++ SND_SOC_DAPM_SUPPLY("PLL Control", SND_SOC_NOPM, 0, 0,
++ snd_rpi_iqaudio_pll_control,
++ SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
++ SND_SOC_DAPM_POST("Post Power Up Event", snd_rpi_iqaudio_post_dapm_event),
++};
++
++static const struct snd_soc_dapm_route audio_map[] = {
++ {"HP Jack", NULL, "HPL"},
++ {"HP Jack", NULL, "HPR"},
++ {"HP Jack", NULL, "PLL Control"},
++
++ {"AUX Jack", NULL, "AUXR"},
++ {"AUX Jack", NULL, "AUXL"},
++ {"AUX Jack", NULL, "PLL Control"},
++
++ /* Assume Mic1 is linked to Headset and Mic2 to on-board mic */
++ {"MIC Jack", NULL, "MIC1"},
++ {"MIC Jack", NULL, "PLL Control"},
++ {"Onboard MIC", NULL, "MIC2"},
++ {"Onboard MIC", NULL, "PLL Control"},
++};
++
++/* machine stream operations */
++
++static int snd_rpi_iqaudio_codec_init(struct snd_soc_pcm_runtime *rtd)
++{
++ struct snd_soc_dai *codec_dai = rtd->codec_dai;
++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
++ int ret;
++
++ /* Set bclk ratio to align with codec's BCLK rate */
++ ret = snd_soc_dai_set_bclk_ratio(cpu_dai, 64);
++ if (ret) {
++ dev_err(rtd->dev, "Failed to set CPU BLCK ratio\n");
++ return ret;
++ }
++
++ /* Set MCLK frequency to codec, onboard 11.2896MHz clock */
++ return snd_soc_dai_set_sysclk(codec_dai, DA7213_CLKSRC_MCLK, 11289600,
++ SND_SOC_CLOCK_OUT);
++}
++
++static int snd_rpi_iqaudio_codec_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ unsigned int samplerate = params_rate(params);
++
++ switch (samplerate) {
++ case 8000:
++ case 16000:
++ case 32000:
++ case 48000:
++ case 96000:
++ pll_out = DA7213_PLL_FREQ_OUT_98304000;
++ return 0;
++ case 44100:
++ case 88200:
++ pll_out = DA7213_PLL_FREQ_OUT_90316800;
++ return 0;
++ default:
++ dev_err(rtd->dev,"Unsupported samplerate %d\n", samplerate);
++ return -EINVAL;
++ }
++}
++
++static const struct snd_soc_ops snd_rpi_iqaudio_codec_ops = {
++ .hw_params = snd_rpi_iqaudio_codec_hw_params,
++};
++
++
++static struct snd_soc_dai_link snd_rpi_iqaudio_codec_dai[] = {
++{
++ .cpu_dai_name = "bcm2708-i2s.0",
++ .codec_dai_name = "da7213-hifi",
++ .platform_name = "bmc2708-i2s.0",
++ .codec_name = "da7213.1-001a",
++ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBM_CFM,
++ .init = snd_rpi_iqaudio_codec_init,
++ .ops = &snd_rpi_iqaudio_codec_ops,
++ .symmetric_rates = 1,
++ .symmetric_channels = 1,
++ .symmetric_samplebits = 1,
++},
++};
++
++/* audio machine driver */
++static struct snd_soc_card snd_rpi_iqaudio_codec = {
++ .owner = THIS_MODULE,
++ .dai_link = snd_rpi_iqaudio_codec_dai,
++ .num_links = ARRAY_SIZE(snd_rpi_iqaudio_codec_dai),
++ .dapm_widgets = dapm_widgets,
++ .num_dapm_widgets = ARRAY_SIZE(dapm_widgets),
++ .dapm_routes = audio_map,
++ .num_dapm_routes = ARRAY_SIZE(audio_map),
++};
++
++static int snd_rpi_iqaudio_codec_probe(struct platform_device *pdev)
++{
++ int ret = 0;
++
++ snd_rpi_iqaudio_codec.dev = &pdev->dev;
++
++ if (pdev->dev.of_node) {
++ struct device_node *i2s_node;
++ struct snd_soc_card *card = &snd_rpi_iqaudio_codec;
++ struct snd_soc_dai_link *dai = &snd_rpi_iqaudio_codec_dai[0];
++
++ i2s_node = of_parse_phandle(pdev->dev.of_node,
++ "i2s-controller", 0);
++ if (i2s_node) {
++ dai->cpu_dai_name = NULL;
++ dai->cpu_of_node = i2s_node;
++ dai->platform_name = NULL;
++ dai->platform_of_node = i2s_node;
++ }
++
++ if (of_property_read_string(pdev->dev.of_node, "card_name",
++ &card->name))
++ card->name = "IQaudIOCODEC";
++
++ if (of_property_read_string(pdev->dev.of_node, "dai_name",
++ &dai->name))
++ dai->name = "IQaudIO CODEC";
++
++ if (of_property_read_string(pdev->dev.of_node,
++ "dai_stream_name", &dai->stream_name))
++ dai->stream_name = "IQaudIO CODEC HiFi v1.1";
++
++ }
++
++ ret = snd_soc_register_card(&snd_rpi_iqaudio_codec);
++ if (ret) {
++ if (ret != -EPROBE_DEFER)
++ dev_err(&pdev->dev,
++ "snd_soc_register_card() failed: %d\n", ret);
++ return ret;
++ }
++
++ return 0;
++}
++
++static int snd_rpi_iqaudio_codec_remove(struct platform_device *pdev)
++{
++ return snd_soc_unregister_card(&snd_rpi_iqaudio_codec);
++}
++
++static const struct of_device_id iqaudio_of_match[] = {
++ { .compatible = "iqaudio,iqaudio-codec", },
++ {},
++};
++
++MODULE_DEVICE_TABLE(of, iqaudio_of_match);
++
++static struct platform_driver snd_rpi_iqaudio_codec_driver = {
++ .driver = {
++ .name = "snd-rpi-iqaudio-codec",
++ .owner = THIS_MODULE,
++ .of_match_table = iqaudio_of_match,
++ },
++ .probe = snd_rpi_iqaudio_codec_probe,
++ .remove = snd_rpi_iqaudio_codec_remove,
++};
++
++
++
++module_platform_driver(snd_rpi_iqaudio_codec_driver);
++
++MODULE_AUTHOR("Gordon Garrity <gordon@iqaudio.com>");
++MODULE_DESCRIPTION("ASoC Driver for IQaudIO CODEC");
++MODULE_LICENSE("GPL v2");
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0205-configs-Enable-PIDs-cgroup.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0205-configs-Enable-PIDs-cgroup.patch
new file mode 100644
index 00000000..c65b947f
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0205-configs-Enable-PIDs-cgroup.patch
@@ -0,0 +1,28 @@
+From 82a35a9d89566d4861db1eec33caf2835246499b Mon Sep 17 00:00:00 2001
+From: Henrique Gontijo <hgontijo@guidewire.com>
+Date: Sun, 12 May 2019 17:11:02 -0700
+Subject: [PATCH 205/325] configs: Enable PIDs cgroup
+
+My use case to is to allow Kubernetes master to run on Raspberry Pi 3.
+Kubernetes introduced [Pid limiting](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190129-pid-limiting.md),
+on v.1.14.0 which includes [Pod Pids Limit](https://github.com/kubernetes/kubernetes/commit/bce9d5f2043bd86964c9fec80d466e47776071bc)
+and [Node Pids Limit](https://github.com/kubernetes/kubernetes/commit/2597a1d97ef4d8f54b1ca661453e32794b756909#diff-fa76bb6ae2d9b4bb3d023737fe5e6029R333)
+that requires pids cgroup.
+
+See: https://github.com/raspberrypi/linux/pull/2968
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
+index 4be018fccb28..d6b9b09a850f 100644
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -18,6 +18,7 @@ CONFIG_CGROUP_FREEZER=y
+ CONFIG_CPUSETS=y
+ CONFIG_CGROUP_DEVICE=y
+ CONFIG_CGROUP_CPUACCT=y
++CONFIG_CGROUP_PIDS=y
+ CONFIG_NAMESPACES=y
+ CONFIG_USER_NS=y
+ CONFIG_SCHED_AUTOGROUP=y
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0206-w1-ds2408-reset-on-output_write-retry-with-readback.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0206-w1-ds2408-reset-on-output_write-retry-with-readback.patch
new file mode 100644
index 00000000..a1f135ce
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0206-w1-ds2408-reset-on-output_write-retry-with-readback.patch
@@ -0,0 +1,142 @@
+From d48519b18796acac4b7f58a40e8fd428ccad331b Mon Sep 17 00:00:00 2001
+From: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
+Date: Thu, 28 Mar 2019 12:41:11 -0400
+Subject: [PATCH 206/325] w1: ds2408: reset on output_write retry with readback
+
+commit 49695ac46861180baf2b2b92c62da8619b6bf28f upstream.
+
+When we have success in 'Channel Access Write' but reading back latch
+states fails, a write is retried without doing a proper slave reset.
+This leads to protocol errors as the slave treats the next 'Channel
+Access Write' as the continuation of previous command.
+
+This commit is fixing this by making sure if the retry loop re-runs, a
+reset is performed, whatever the failure (CONFIRM_BYTE or the read
+back).
+
+The loop was quite due for a cleanup and this change mandated it. By
+isolating the CONFIG_W1_SLAVE_DS2408_READBACK case into it's own
+function, we vastly reduce the visual and branching(runtime and
+compile-time) noise.
+
+Reported-by: Mariusz Bialonczyk <manio@skyboo.net>
+Tested-by: Mariusz Bialonczyk <manio@skyboo.net>
+Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/w1/slaves/w1_ds2408.c | 76 ++++++++++++++++++-----------------
+ 1 file changed, 39 insertions(+), 37 deletions(-)
+
+diff --git a/drivers/w1/slaves/w1_ds2408.c b/drivers/w1/slaves/w1_ds2408.c
+index b535d5ec35b6..92e8f0755b9a 100644
+--- a/drivers/w1/slaves/w1_ds2408.c
++++ b/drivers/w1/slaves/w1_ds2408.c
+@@ -138,14 +138,37 @@ static ssize_t status_control_read(struct file *filp, struct kobject *kobj,
+ W1_F29_REG_CONTROL_AND_STATUS, buf);
+ }
+
++#ifdef fCONFIG_W1_SLAVE_DS2408_READBACK
++static bool optional_read_back_valid(struct w1_slave *sl, u8 expected)
++{
++ u8 w1_buf[3];
++
++ if (w1_reset_resume_command(sl->master))
++ return false;
++
++ w1_buf[0] = W1_F29_FUNC_READ_PIO_REGS;
++ w1_buf[1] = W1_F29_REG_OUTPUT_LATCH_STATE;
++ w1_buf[2] = 0;
++
++ w1_write_block(sl->master, w1_buf, 3);
++
++ return (w1_read_8(sl->master) == expected);
++}
++#else
++static bool optional_read_back_valid(struct w1_slave *sl, u8 expected)
++{
++ return true;
++}
++#endif
++
+ static ssize_t output_write(struct file *filp, struct kobject *kobj,
+ struct bin_attribute *bin_attr, char *buf,
+ loff_t off, size_t count)
+ {
+ struct w1_slave *sl = kobj_to_w1_slave(kobj);
+ u8 w1_buf[3];
+- u8 readBack;
+ unsigned int retries = W1_F29_RETRIES;
++ ssize_t bytes_written = -EIO;
+
+ if (count != 1 || off != 0)
+ return -EFAULT;
+@@ -155,54 +178,33 @@ static ssize_t output_write(struct file *filp, struct kobject *kobj,
+ dev_dbg(&sl->dev, "mutex locked");
+
+ if (w1_reset_select_slave(sl))
+- goto error;
++ goto out;
+
+- while (retries--) {
++ do {
+ w1_buf[0] = W1_F29_FUNC_CHANN_ACCESS_WRITE;
+ w1_buf[1] = *buf;
+ w1_buf[2] = ~(*buf);
++
+ w1_write_block(sl->master, w1_buf, 3);
+
+- readBack = w1_read_8(sl->master);
+-
+- if (readBack != W1_F29_SUCCESS_CONFIRM_BYTE) {
+- if (w1_reset_resume_command(sl->master))
+- goto error;
+- /* try again, the slave is ready for a command */
+- continue;
++ if (w1_read_8(sl->master) == W1_F29_SUCCESS_CONFIRM_BYTE &&
++ optional_read_back_valid(sl, *buf)) {
++ bytes_written = 1;
++ goto out;
+ }
+
+-#ifdef CONFIG_W1_SLAVE_DS2408_READBACK
+- /* here the master could read another byte which
+- would be the PIO reg (the actual pin logic state)
+- since in this driver we don't know which pins are
+- in and outs, there's no value to read the state and
+- compare. with (*buf) so end this command abruptly: */
+ if (w1_reset_resume_command(sl->master))
+- goto error;
++ goto out; /* unrecoverable error */
++ /* try again, the slave is ready for a command */
++ } while (--retries);
+
+- /* go read back the output latches */
+- /* (the direct effect of the write above) */
+- w1_buf[0] = W1_F29_FUNC_READ_PIO_REGS;
+- w1_buf[1] = W1_F29_REG_OUTPUT_LATCH_STATE;
+- w1_buf[2] = 0;
+- w1_write_block(sl->master, w1_buf, 3);
+- /* read the result of the READ_PIO_REGS command */
+- if (w1_read_8(sl->master) == *buf)
+-#endif
+- {
+- /* success! */
+- mutex_unlock(&sl->master->bus_mutex);
+- dev_dbg(&sl->dev,
+- "mutex unlocked, retries:%d", retries);
+- return 1;
+- }
+- }
+-error:
++out:
+ mutex_unlock(&sl->master->bus_mutex);
+- dev_dbg(&sl->dev, "mutex unlocked in error, retries:%d", retries);
+
+- return -EIO;
++ dev_dbg(&sl->dev, "%s, mutex unlocked retries:%d\n",
++ (bytes_written > 0) ? "succeeded" : "error", retries);
++
++ return bytes_written;
+ }
+
+
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0207-w1-ds2482-cosmetic-fixes-after-54865314f5a1.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0207-w1-ds2482-cosmetic-fixes-after-54865314f5a1.patch
new file mode 100644
index 00000000..f543d735
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0207-w1-ds2482-cosmetic-fixes-after-54865314f5a1.patch
@@ -0,0 +1,93 @@
+From 644f3cd0ad414625336dd27680713d928f839181 Mon Sep 17 00:00:00 2001
+From: Mariusz Bialonczyk <manio@skyboo.net>
+Date: Mon, 4 Mar 2019 12:23:36 +0100
+Subject: [PATCH 207/325] w1: ds2482: cosmetic fixes after 54865314f5a1
+
+commit 5cb27d30fc3a281e830a2099d520b469e2b82008 upstream.
+
+We have a helper function ds2482_calculate_config() which is calculating
+the config value, so just use it instead of passing the same variable
+in all calls to this function.
+
+Also fixes the placement of module parameters to match with:
+50fa2951bd74 (w1: Organize driver source to natural/common order)
+by Andrew F. Davis
+
+Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
+Cc: Andrew Worsley <amworsley@gmail.com>
+Cc: Andrew F. Davis <afd@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/w1/masters/ds2482.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/w1/masters/ds2482.c b/drivers/w1/masters/ds2482.c
+index 8b5e598ffdb3..8f2b25f1614c 100644
+--- a/drivers/w1/masters/ds2482.c
++++ b/drivers/w1/masters/ds2482.c
+@@ -37,6 +37,11 @@ module_param_named(active_pullup, ds2482_active_pullup, int, 0644);
+ MODULE_PARM_DESC(active_pullup, "Active pullup (apply to all buses): " \
+ "0-disable, 1-enable (default)");
+
++/* extra configurations - e.g. 1WS */
++static int extra_config;
++module_param(extra_config, int, S_IRUGO | S_IWUSR);
++MODULE_PARM_DESC(extra_config, "Extra Configuration settings 1=APU,2=PPM,3=SPU,8=1WS");
++
+ /**
+ * The DS2482 registers - there are 3 registers that are addressed by a read
+ * pointer. The read pointer is set by the last command executed.
+@@ -70,8 +75,6 @@ MODULE_PARM_DESC(active_pullup, "Active pullup (apply to all buses): " \
+ #define DS2482_REG_CFG_PPM 0x02 /* presence pulse masking */
+ #define DS2482_REG_CFG_APU 0x01 /* active pull-up */
+
+-/* extra configurations - e.g. 1WS */
+-static int extra_config;
+
+ /**
+ * Write and verify codes for the CHANNEL_SELECT command (DS2482-800 only).
+@@ -130,6 +133,8 @@ struct ds2482_data {
+ */
+ static inline u8 ds2482_calculate_config(u8 conf)
+ {
++ conf |= extra_config;
++
+ if (ds2482_active_pullup)
+ conf |= DS2482_REG_CFG_APU;
+
+@@ -405,7 +410,7 @@ static u8 ds2482_w1_reset_bus(void *data)
+ /* If the chip did reset since detect, re-config it */
+ if (err & DS2482_REG_STS_RST)
+ ds2482_send_cmd_data(pdev, DS2482_CMD_WRITE_CONFIG,
+- ds2482_calculate_config(extra_config));
++ ds2482_calculate_config(0x00));
+ }
+
+ mutex_unlock(&pdev->access_lock);
+@@ -431,7 +436,8 @@ static u8 ds2482_w1_set_pullup(void *data, int delay)
+ ds2482_wait_1wire_idle(pdev);
+ /* note: it seems like both SPU and APU have to be set! */
+ retval = ds2482_send_cmd_data(pdev, DS2482_CMD_WRITE_CONFIG,
+- ds2482_calculate_config(extra_config|DS2482_REG_CFG_SPU|DS2482_REG_CFG_APU));
++ ds2482_calculate_config(DS2482_REG_CFG_SPU |
++ DS2482_REG_CFG_APU));
+ ds2482_wait_1wire_idle(pdev);
+ }
+
+@@ -484,7 +490,7 @@ static int ds2482_probe(struct i2c_client *client,
+
+ /* Set all config items to 0 (off) */
+ ds2482_send_cmd_data(data, DS2482_CMD_WRITE_CONFIG,
+- ds2482_calculate_config(extra_config));
++ ds2482_calculate_config(0x00));
+
+ mutex_init(&data->access_lock);
+
+@@ -559,7 +565,5 @@ module_i2c_driver(ds2482_driver);
+
+ MODULE_AUTHOR("Ben Gardner <bgardner@wabtec.com>");
+ MODULE_DESCRIPTION("DS2482 driver");
+-module_param(extra_config, int, S_IRUGO | S_IWUSR);
+-MODULE_PARM_DESC(extra_config, "Extra Configuration settings 1=APU,2=PPM,3=SPU,8=1WS");
+
+ MODULE_LICENSE("GPL");
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0208-sound-pcm512x-codec-Adding-352.8kHz-samplerate-suppo.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0208-sound-pcm512x-codec-Adding-352.8kHz-samplerate-suppo.patch
new file mode 100644
index 00000000..407efbb4
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0208-sound-pcm512x-codec-Adding-352.8kHz-samplerate-suppo.patch
@@ -0,0 +1,23 @@
+From 7e0a75cd8537aae37da117e741143219787ae679 Mon Sep 17 00:00:00 2001
+From: Klaus Schulz <klsschlz@gmail.com>
+Date: Thu, 16 May 2019 13:35:32 +0200
+Subject: [PATCH 208/325] sound: pcm512x-codec: Adding 352.8kHz samplerate
+ support
+
+---
+ sound/soc/codecs/pcm512x.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c
+index e6523e74fdd9..45f9644e53af 100644
+--- a/sound/soc/codecs/pcm512x.c
++++ b/sound/soc/codecs/pcm512x.c
+@@ -542,7 +542,7 @@ static unsigned long pcm512x_ncp_target(struct pcm512x_priv *pcm512x,
+
+ static const u32 pcm512x_dai_rates[] = {
+ 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000,
+- 88200, 96000, 176400, 192000, 384000,
++ 88200, 96000, 176400, 192000, 352800, 384000,
+ };
+
+ static const struct snd_pcm_hw_constraint_list constraints_slave = {
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0209-ASoC-decommissioning-driver-for-3Dlab-Nano-soundcard.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0209-ASoC-decommissioning-driver-for-3Dlab-Nano-soundcard.patch
new file mode 100644
index 00000000..fd7322eb
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0209-ASoC-decommissioning-driver-for-3Dlab-Nano-soundcard.patch
@@ -0,0 +1,538 @@
+From 17604acd10f31f6fbc76f846b970cbec4a80d4fe Mon Sep 17 00:00:00 2001
+From: GT <dev@3d-lab-av.com>
+Date: Sat, 6 Apr 2019 21:16:39 +0100
+Subject: [PATCH 209/325] ASoC: decommissioning driver for 3Dlab Nano soundcard
+
+---
+ .../overlays/3dlab-nano-player-overlay.dts | 32 --
+ arch/arm/boot/dts/overlays/Makefile | 1 -
+ arch/arm/boot/dts/overlays/README | 6 -
+ arch/arm/configs/bcm2709_defconfig | 1 -
+ arch/arm/configs/bcmrpi_defconfig | 1 -
+ sound/soc/bcm/3dlab-nano-player.c | 370 ------------------
+ sound/soc/bcm/Kconfig | 6 -
+ sound/soc/bcm/Makefile | 6 +-
+ 8 files changed, 2 insertions(+), 421 deletions(-)
+
+diff --git a/arch/arm/boot/dts/overlays/3dlab-nano-player-overlay.dts b/arch/arm/boot/dts/overlays/3dlab-nano-player-overlay.dts
+deleted file mode 100644
+index 38f7bb2c9de3..000000000000
+--- a/arch/arm/boot/dts/overlays/3dlab-nano-player-overlay.dts
++++ /dev/null
+@@ -1,32 +0,0 @@
+-// Definitions for 3Dlab Nano Player
+-/dts-v1/;
+-/plugin/;
+-
+-/ {
+- compatible = "brcm,bcm2708";
+-
+- fragment@0 {
+- target = <&i2s>;
+- __overlay__ {
+- status = "okay";
+- };
+- };
+-
+- fragment@1 {
+- target = <&i2c>;
+- __overlay__ {
+- #address-cells = <1>;
+- #size-cells = <0>;
+- status = "okay";
+-
+- nano-player@41 {
+- compatible = "3dlab,nano-player";
+- reg = <0x41>;
+- i2s-controller = <&i2s>;
+- status = "okay";
+- };
+- };
+- };
+-};
+-
+-// EOF
+diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
+index c60c829c04dd..b75e4333aec6 100644
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -1,7 +1,6 @@
+ # Overlays for the Raspberry Pi platform
+
+ dtbo-$(CONFIG_ARCH_BCM2835) += \
+- 3dlab-nano-player.dtbo \
+ adau1977-adc.dtbo \
+ adau7002-simple.dtbo \
+ ads1015.dtbo \
+diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
+index 1afce6edd380..468d6cf604b5 100644
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -205,12 +205,6 @@ Params:
+ and the other i2c baudrate parameters.
+
+
+-Name: 3dlab-nano-player
+-Info: Configures the 3Dlab Nano Player
+-Load: dtoverlay=3dlab-nano-player
+-Params: <None>
+-
+-
+ Name: adau1977-adc
+ Info: Overlay for activation of ADAU1977 ADC codec over I2C for control
+ and I2S for data.
+diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
+index d6b9b09a850f..7f354adf9016 100644
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -899,7 +899,6 @@ CONFIG_SND_USB_6FIRE=m
+ CONFIG_SND_USB_HIFACE=m
+ CONFIG_SND_SOC=m
+ CONFIG_SND_BCM2835_SOC_I2S=m
+-CONFIG_SND_BCM2708_SOC_3DLAB_NANO_PLAYER=m
+ CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
+ CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
+ CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
+diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
+index f347434b5504..8da3250c719e 100644
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -891,7 +891,6 @@ CONFIG_SND_USB_6FIRE=m
+ CONFIG_SND_USB_HIFACE=m
+ CONFIG_SND_SOC=m
+ CONFIG_SND_BCM2835_SOC_I2S=m
+-CONFIG_SND_BCM2708_SOC_3DLAB_NANO_PLAYER=m
+ CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
+ CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
+ CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
+diff --git a/sound/soc/bcm/3dlab-nano-player.c b/sound/soc/bcm/3dlab-nano-player.c
+deleted file mode 100644
+index 7d4a63f40d60..000000000000
+--- a/sound/soc/bcm/3dlab-nano-player.c
++++ /dev/null
+@@ -1,370 +0,0 @@
+-/*
+- * 3Dlab Nano Player ALSA SoC Audio driver.
+- *
+- * Copyright (C) 2018 3Dlab.
+- *
+- * Author: GT <dev@3d-lab-av.com>
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU General Public License
+- * version 2 as published by the Free Software Foundation.
+- *
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * General Public License for more details.
+- */
+-
+-#include <linux/module.h>
+-#include <linux/i2c.h>
+-#include <sound/soc.h>
+-#include <sound/pcm.h>
+-#include <sound/pcm_params.h>
+-#include <sound/control.h>
+-
+-#define NANO_ID 0x00
+-#define NANO_VER 0x01
+-#define NANO_CFG 0x02
+-#define NANO_STATUS 0x03
+-#define NANO_SPI_ADDR 0x04
+-#define NANO_SPI_DATA 0x05
+-
+-#define NANO_ID_VAL 0x3D
+-#define NANO_CFG_OFF 0x00
+-#define NANO_CFG_MULT1 0
+-#define NANO_CFG_MULT2 1
+-#define NANO_CFG_MULT4 2
+-#define NANO_CFG_MULT8 3
+-#define NANO_CFG_MULT16 4
+-#define NANO_CFG_CLK22 0
+-#define NANO_CFG_CLK24 BIT(3)
+-#define NANO_CFG_DSD BIT(4)
+-#define NANO_CFG_ENA BIT(5)
+-#define NANO_CFG_BLINK BIT(6)
+-#define NANO_STATUS_P1 BIT(0)
+-#define NANO_STATUS_P2 BIT(1)
+-#define NANO_STATUS_FLG BIT(2)
+-#define NANO_STATUS_CLK BIT(3)
+-#define NANO_SPI_READ 0
+-#define NANO_SPI_WRITE BIT(5)
+-
+-#define NANO_DAC_CTRL1 0x00
+-#define NANO_DAC_CTRL2 0x01
+-#define NANO_DAC_CTRL3 0x02
+-#define NANO_DAC_LATT 0x03
+-#define NANO_DAC_RATT 0x04
+-
+-#define NANO_CTRL2_VAL 0x22
+-
+-static int nano_player_spi_write(struct regmap *map,
+- unsigned int reg, unsigned int val)
+-{
+- /* indirect register access */
+- regmap_write(map, NANO_SPI_DATA, val);
+- regmap_write(map, NANO_SPI_ADDR, reg | NANO_SPI_WRITE);
+- return 0;
+-}
+-
+-static int nano_player_ctrl_info(struct snd_kcontrol *kcontrol,
+- struct snd_ctl_elem_info *uinfo)
+-{
+- /* describe control element */
+- if (strstr(kcontrol->id.name, "Volume")) {
+- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
+- uinfo->count = 1;
+- uinfo->value.integer.min = 0;
+- uinfo->value.integer.max = 100;
+- } else {
+- uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+- uinfo->count = 1;
+- uinfo->value.integer.min = 0;
+- uinfo->value.integer.max = 1;
+- }
+-
+- return 0;
+-}
+-
+-static int nano_player_ctrl_put(struct snd_kcontrol *kcontrol,
+- struct snd_ctl_elem_value *ucontrol)
+-{
+- /* program control value to hardware */
+- struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
+- struct regmap *regmap = snd_soc_card_get_drvdata(card);
+-
+- if (strstr(kcontrol->id.name, "Volume")) {
+- unsigned int vol = ucontrol->value.integer.value[0];
+- unsigned int att = 255 - (2 * (100 - vol));
+-
+- nano_player_spi_write(regmap, NANO_DAC_LATT, att);
+- nano_player_spi_write(regmap, NANO_DAC_RATT, att);
+- kcontrol->private_value = vol;
+- } else {
+- unsigned int mute = ucontrol->value.integer.value[0];
+- unsigned int reg = NANO_CTRL2_VAL | mute;
+-
+- nano_player_spi_write(regmap, NANO_DAC_CTRL2, reg);
+- kcontrol->private_value = mute;
+- }
+- return 0;
+-}
+-
+-static int nano_player_ctrl_get(struct snd_kcontrol *kcontrol,
+- struct snd_ctl_elem_value *ucontrol)
+-{
+- /* return last programmed value */
+- ucontrol->value.integer.value[0] = kcontrol->private_value;
+- return 0;
+-}
+-
+-#define SOC_NANO_PLAYER_CTRL(xname) \
+-{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
+- .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, \
+- .info = nano_player_ctrl_info, \
+- .put = nano_player_ctrl_put, \
+- .get = nano_player_ctrl_get }
+-
+-static const struct snd_kcontrol_new nano_player_controls[] = {
+- SOC_NANO_PLAYER_CTRL("Master Playback Volume"),
+- SOC_NANO_PLAYER_CTRL("Master Playback Switch"),
+-};
+-
+-static const unsigned int nano_player_rates[] = {
+- 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000,
+- 705600, 768000 /* only possible with fast clocks */
+-};
+-
+-static struct snd_pcm_hw_constraint_list nano_player_constraint_rates = {
+- .list = nano_player_rates,
+- .count = ARRAY_SIZE(nano_player_rates),
+-};
+-
+-static int nano_player_init(struct snd_soc_pcm_runtime *rtd)
+-{
+- struct snd_soc_card *card = rtd->card;
+- struct regmap *regmap = snd_soc_card_get_drvdata(card);
+- struct snd_soc_pcm_stream *cpu = &rtd->cpu_dai->driver->playback;
+- struct snd_soc_pcm_stream *codec = &rtd->codec_dai->driver->playback;
+- unsigned int sample_bits = 32;
+- unsigned int val;
+-
+- /* configure cpu dai */
+- cpu->formats |= SNDRV_PCM_FMTBIT_DSD_U32_LE;
+- cpu->rate_max = 768000;
+-
+- /* configure dummy codec dai */
+- codec->rate_min = 44100;
+- codec->rates = SNDRV_PCM_RATE_KNOT;
+- codec->formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_LE;
+-
+- /* configure max supported rate */
+- regmap_read(regmap, NANO_STATUS, &val);
+- if (val & NANO_STATUS_CLK) {
+- dev_notice(card->dev, "Board with fast clocks installed\n");
+- codec->rate_max = 768000;
+- } else {
+- dev_notice(card->dev, "Board with normal clocks installed\n");
+- codec->rate_max = 384000;
+- }
+-
+- /* frame length enforced by hardware */
+- return snd_soc_dai_set_bclk_ratio(rtd->cpu_dai, sample_bits * 2);
+-}
+-
+-static int nano_player_startup(struct snd_pcm_substream *substream)
+-{
+- return snd_pcm_hw_constraint_list(substream->runtime, 0,
+- SNDRV_PCM_HW_PARAM_RATE,
+- &nano_player_constraint_rates);
+-}
+-
+-static int nano_player_hw_params(struct snd_pcm_substream *substream,
+- struct snd_pcm_hw_params *params)
+-{
+- struct snd_soc_pcm_runtime *rtd = substream->private_data;
+- struct snd_soc_card *card = rtd->card;
+- struct regmap *regmap = snd_soc_card_get_drvdata(card);
+- unsigned int config = NANO_CFG_ENA;
+- struct snd_mask *fmt;
+-
+- /* configure PCM or DSD */
+- fmt = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT);
+- if (snd_mask_test(fmt, SNDRV_PCM_FORMAT_DSD_U32_LE)) {
+- /* embed DSD in PCM data */
+- snd_mask_none(fmt);
+- snd_mask_set(fmt, SNDRV_PCM_FORMAT_S32_LE);
+- /* enable DSD mode */
+- config |= NANO_CFG_DSD;
+- }
+-
+- /* configure clocks */
+- switch (params_rate(params)) {
+- case 44100:
+- config |= NANO_CFG_MULT1 | NANO_CFG_CLK22;
+- break;
+- case 88200:
+- config |= NANO_CFG_MULT2 | NANO_CFG_CLK22;
+- break;
+- case 176400:
+- config |= NANO_CFG_MULT4 | NANO_CFG_CLK22;
+- break;
+- case 352800:
+- config |= NANO_CFG_MULT8 | NANO_CFG_CLK22;
+- break;
+- case 705600:
+- config |= NANO_CFG_MULT16 | NANO_CFG_CLK22;
+- break;
+- case 48000:
+- config |= NANO_CFG_MULT1 | NANO_CFG_CLK24;
+- break;
+- case 96000:
+- config |= NANO_CFG_MULT2 | NANO_CFG_CLK24;
+- break;
+- case 192000:
+- config |= NANO_CFG_MULT4 | NANO_CFG_CLK24;
+- break;
+- case 384000:
+- config |= NANO_CFG_MULT8 | NANO_CFG_CLK24;
+- break;
+- case 768000:
+- config |= NANO_CFG_MULT16 | NANO_CFG_CLK24;
+- break;
+- default:
+- return -EINVAL;
+- }
+-
+- dev_dbg(card->dev, "Send CFG register 0x%02X\n", config);
+- return regmap_write(regmap, NANO_CFG, config);
+-}
+-
+-static struct snd_soc_ops nano_player_ops = {
+- .startup = nano_player_startup,
+- .hw_params = nano_player_hw_params,
+-};
+-
+-static struct snd_soc_dai_link nano_player_link = {
+- .name = "3Dlab Nano Player",
+- .stream_name = "3Dlab Nano Player HiFi",
+- .platform_name = "bcm2708-i2s.0",
+- .cpu_dai_name = "bcm2708-i2s.0",
+- .codec_name = "snd-soc-dummy",
+- .codec_dai_name = "snd-soc-dummy-dai",
+- .dai_fmt = SND_SOC_DAIFMT_I2S |
+- SND_SOC_DAIFMT_CONT |
+- SND_SOC_DAIFMT_NB_NF |
+- SND_SOC_DAIFMT_CBM_CFM,
+- .init = nano_player_init,
+- .ops = &nano_player_ops,
+-};
+-
+-static const struct regmap_config nano_player_regmap = {
+- .reg_bits = 8,
+- .val_bits = 8,
+- .max_register = 128,
+- .cache_type = REGCACHE_RBTREE,
+-};
+-
+-static int nano_player_card_probe(struct snd_soc_card *card)
+-{
+- struct regmap *regmap = snd_soc_card_get_drvdata(card);
+- unsigned int val;
+-
+- /* check hardware integrity */
+- regmap_read(regmap, NANO_ID, &val);
+- if (val != NANO_ID_VAL) {
+- dev_err(card->dev, "Invalid ID register 0x%02X\n", val);
+- return -ENODEV;
+- }
+-
+- /* report version to the user */
+- regmap_read(regmap, NANO_VER, &val);
+- dev_notice(card->dev, "Started 3Dlab Nano Player driver (v%d)\n", val);
+-
+- /* enable internal audio bus and blink status LED */
+- return regmap_write(regmap, NANO_CFG, NANO_CFG_ENA | NANO_CFG_BLINK);
+-}
+-
+-static int nano_player_card_remove(struct snd_soc_card *card)
+-{
+- /* disable internal audio bus */
+- struct regmap *regmap = snd_soc_card_get_drvdata(card);
+-
+- return regmap_write(regmap, NANO_CFG, NANO_CFG_OFF);
+-}
+-
+-static struct snd_soc_card nano_player_card = {
+- .name = "3Dlab_Nano_Player",
+- .owner = THIS_MODULE,
+- .dai_link = &nano_player_link,
+- .num_links = 1,
+- .controls = nano_player_controls,
+- .num_controls = ARRAY_SIZE(nano_player_controls),
+- .probe = nano_player_card_probe,
+- .remove = nano_player_card_remove,
+-};
+-
+-static int nano_player_i2c_probe(struct i2c_client *i2c,
+- const struct i2c_device_id *id)
+-{
+- struct regmap *regmap;
+- int ret;
+-
+- regmap = devm_regmap_init_i2c(i2c, &nano_player_regmap);
+- if (IS_ERR(regmap)) {
+- ret = PTR_ERR(regmap);
+- dev_err(&i2c->dev, "Failed to init regmap %d\n", ret);
+- return ret;
+- }
+-
+- if (i2c->dev.of_node) {
+- struct snd_soc_dai_link *dai = &nano_player_link;
+- struct device_node *node;
+-
+- /* cpu handle configured by device tree */
+- node = of_parse_phandle(i2c->dev.of_node, "i2s-controller", 0);
+- if (node) {
+- dai->platform_name = NULL;
+- dai->platform_of_node = node;
+- dai->cpu_dai_name = NULL;
+- dai->cpu_of_node = node;
+- }
+- }
+-
+- nano_player_card.dev = &i2c->dev;
+- snd_soc_card_set_drvdata(&nano_player_card, regmap);
+- ret = devm_snd_soc_register_card(&i2c->dev, &nano_player_card);
+-
+- if (ret && ret != -EPROBE_DEFER)
+- dev_err(&i2c->dev, "Failed to register card %d\n", ret);
+-
+- return ret;
+-}
+-
+-static const struct of_device_id nano_player_of_match[] = {
+- { .compatible = "3dlab,nano-player", },
+- { }
+-};
+-MODULE_DEVICE_TABLE(of, nano_player_of_match);
+-
+-static const struct i2c_device_id nano_player_i2c_id[] = {
+- { "nano-player", 0 },
+- { }
+-};
+-MODULE_DEVICE_TABLE(i2c, nano_player_i2c_id);
+-
+-static struct i2c_driver nano_player_i2c_driver = {
+- .probe = nano_player_i2c_probe,
+- .id_table = nano_player_i2c_id,
+- .driver = {
+- .name = "nano-player",
+- .owner = THIS_MODULE,
+- .of_match_table = nano_player_of_match,
+- },
+-};
+-
+-module_i2c_driver(nano_player_i2c_driver);
+-
+-MODULE_DESCRIPTION("ASoC 3Dlab Nano Player driver");
+-MODULE_AUTHOR("GT <dev@3d-lab-av.com>");
+-MODULE_LICENSE("GPL v2");
+-
+-/* EOF */
+diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
+index 9cfe86ef5861..75786ab06a53 100644
+--- a/sound/soc/bcm/Kconfig
++++ b/sound/soc/bcm/Kconfig
+@@ -17,12 +17,6 @@ config SND_SOC_CYGNUS
+
+ If you don't know what to do here, say N.
+
+-config SND_BCM2708_SOC_3DLAB_NANO_PLAYER
+- tristate "Support for 3Dlab Nano Player"
+- depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
+- help
+- Say Y or M if you want to add support for 3Dlab Nano Player.
+-
+ config SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD
+ tristate "Support for Google voiceHAT soundcard"
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
+diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
+index 356bd229e48c..4f588a29d825 100644
+--- a/sound/soc/bcm/Makefile
++++ b/sound/soc/bcm/Makefile
+@@ -12,7 +12,6 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o
+ snd-soc-googlevoicehat-codec-objs := googlevoicehat-codec.o
+
+ # BCM2708 Machine Support
+-snd-soc-3dlab-nano-player-objs := 3dlab-nano-player.o
+ snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o
+ snd-soc-hifiberry-dacplusadc-objs := hifiberry_dacplusadc.o
+ snd-soc-justboom-dac-objs := justboom-dac.o
+@@ -20,7 +19,7 @@ snd-soc-rpi-cirrus-objs := rpi-cirrus.o
+ snd-soc-rpi-proto-objs := rpi-proto.o
+ snd-soc-iqaudio-codec-objs := iqaudio-codec.o
+ snd-soc-iqaudio-dac-objs := iqaudio-dac.o
+- snd-soc-i-sabre-q2m-objs := i-sabre-q2m.o
++snd-soc-i-sabre-q2m-objs := i-sabre-q2m.o
+ snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o
+ snd-soc-audioinjector-octo-soundcard-objs := audioinjector-octo-soundcard.o
+ snd-soc-audiosense-pi-objs := audiosense-pi.o
+@@ -36,7 +35,6 @@ snd-soc-fe-pi-audio-objs := fe-pi-audio.o
+ snd-soc-rpi-simple-soundcard-objs := rpi-simple-soundcard.o
+ snd-soc-rpi-wm8804-soundcard-objs := rpi-wm8804-soundcard.o
+
+-obj-$(CONFIG_SND_BCM2708_SOC_3DLAB_NANO_PLAYER) += snd-soc-3dlab-nano-player.o
+ obj-$(CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD) += snd-soc-googlevoicehat-codec.o
+ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
+ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC) += snd-soc-hifiberry-dacplusadc.o
+@@ -45,7 +43,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_CIRRUS) += snd-soc-rpi-cirrus.o
+ obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
+ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC) += snd-soc-iqaudio-codec.o
+ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
+- obj-$(CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M) += snd-soc-i-sabre-q2m.o
++obj-$(CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M) += snd-soc-i-sabre-q2m.o
+ obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o
+ obj-$(CONFIG_SND_AUDIOINJECTOR_OCTO_SOUNDCARD) += snd-soc-audioinjector-octo-soundcard.o
+ obj-$(CONFIG_SND_AUDIOSENSE_PI) += snd-soc-audiosense-pi.o
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0210-.gitignore-Add-.dtbo-explicitly.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0210-.gitignore-Add-.dtbo-explicitly.patch
new file mode 100644
index 00000000..1b78cb6e
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0210-.gitignore-Add-.dtbo-explicitly.patch
@@ -0,0 +1,24 @@
+From 838c9d881552efd57c33972a64bfbc1d2cba6789 Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix@gmail.com>
+Date: Tue, 21 May 2019 15:17:33 +0100
+Subject: [PATCH 210/325] .gitignore: Add *.dtbo explicitly
+
+Signed-off-by: popcornmix <popcornmix@gmail.com>
+---
+ .gitignore | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/.gitignore b/.gitignore
+index 1e2890d08202..2b5cb7271107 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -16,7 +16,8 @@
+ *.bz2
+ *.c.[012]*.*
+ *.dt.yaml
+-*.dtb*
++*.dtb
++*.dtbo
+ *.dtb.S
+ *.dwo
+ *.elf
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0211-media-ov5647-Add-set_fmt-and-get_fmt-calls.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0211-media-ov5647-Add-set_fmt-and-get_fmt-calls.patch
new file mode 100644
index 00000000..12ad9e05
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0211-media-ov5647-Add-set_fmt-and-get_fmt-calls.patch
@@ -0,0 +1,49 @@
+From d83b46f957f00124a66b582c7778b01a37b2df54 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:55:37 +0000
+Subject: [PATCH 211/325] media: ov5647: Add set_fmt and get_fmt calls.
+
+There's no way to query the subdevice for the supported
+resolutions.
+Add set_fmt and get_fmt implementations.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/ov5647.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
+index 4589631798c9..6a9f229dfbfd 100644
+--- a/drivers/media/i2c/ov5647.c
++++ b/drivers/media/i2c/ov5647.c
+@@ -463,8 +463,30 @@ static int ov5647_enum_mbus_code(struct v4l2_subdev *sd,
+ return 0;
+ }
+
++static int ov5647_set_get_fmt(struct v4l2_subdev *sd,
++ struct v4l2_subdev_pad_config *cfg,
++ struct v4l2_subdev_format *format)
++{
++ struct v4l2_mbus_framefmt *fmt = &format->format;
++
++ if (format->pad != 0)
++ return -EINVAL;
++
++ /* Only one format is supported, so return that */
++ memset(fmt, 0, sizeof(*fmt));
++ fmt->code = MEDIA_BUS_FMT_SBGGR8_1X8;
++ fmt->colorspace = V4L2_COLORSPACE_SRGB;
++ fmt->field = V4L2_FIELD_NONE;
++ fmt->width = 640;
++ fmt->height = 480;
++
++ return 0;
++}
++
+ static const struct v4l2_subdev_pad_ops ov5647_subdev_pad_ops = {
+ .enum_mbus_code = ov5647_enum_mbus_code,
++ .set_fmt = ov5647_set_get_fmt,
++ .get_fmt = ov5647_set_get_fmt,
+ };
+
+ static const struct v4l2_subdev_ops ov5647_subdev_ops = {
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0212-media-Documentation-DT-add-device-tree-for-PWDN-cont.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0212-media-Documentation-DT-add-device-tree-for-PWDN-cont.patch
new file mode 100644
index 00000000..42825f3a
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0212-media-Documentation-DT-add-device-tree-for-PWDN-cont.patch
@@ -0,0 +1,35 @@
+From be1ddae8a962c68b73a3a365bcba8489167d005a Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:55:59 +0000
+Subject: [PATCH 212/325] [media] Documentation: DT: add device tree for PWDN
+ control
+
+Add optional GPIO pwdn to connect to the PWDN line on the sensor.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ Documentation/devicetree/bindings/media/i2c/ov5647.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.txt b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
+index 22e44945b661..70f06c24f470 100644
+--- a/Documentation/devicetree/bindings/media/i2c/ov5647.txt
++++ b/Documentation/devicetree/bindings/media/i2c/ov5647.txt
+@@ -10,6 +10,9 @@ Required properties:
+ - reg : I2C slave address of the sensor.
+ - clocks : Reference to the xclk clock.
+
++Optional Properties:
++- pwdn-gpios: reference to the GPIO connected to the pwdn pin, if any.
++
+ The common video interfaces bindings (see video-interfaces.txt) should be
+ used to specify link to the image data receiver. The OV5647 device
+ node should contain one 'port' child node with an 'endpoint' subnode.
+@@ -26,6 +29,7 @@ Example:
+ compatible = "ovti,ov5647";
+ reg = <0x36>;
+ clocks = <&camera_clk>;
++ pwdn-gpios = <&pioE 29 GPIO_ACTIVE_HIGH>;
+ port {
+ camera_1: endpoint {
+ remote-endpoint = <&csi1_ep1>;
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0213-media-ov5647-Add-support-for-PWDN-GPIO.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0213-media-ov5647-Add-support-for-PWDN-GPIO.patch
new file mode 100644
index 00000000..f5e47dda
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0213-media-ov5647-Add-support-for-PWDN-GPIO.patch
@@ -0,0 +1,94 @@
+From 7eda2be2e43afcc826b3a3e20b47ba9647706381 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:56:33 +0000
+Subject: [PATCH 213/325] media: ov5647: Add support for PWDN GPIO.
+
+Add support for an optional GPIO connected to PWDN on the sensor.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/ov5647.c | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
+index 6a9f229dfbfd..b750635168e3 100644
+--- a/drivers/media/i2c/ov5647.c
++++ b/drivers/media/i2c/ov5647.c
+@@ -21,6 +21,7 @@
+
+ #include <linux/clk.h>
+ #include <linux/delay.h>
++#include <linux/gpio/consumer.h>
+ #include <linux/i2c.h>
+ #include <linux/init.h>
+ #include <linux/io.h>
+@@ -35,6 +36,13 @@
+
+ #define SENSOR_NAME "ov5647"
+
++/*
++ * From the datasheet, "20ms after PWDN goes low or 20ms after RESETB goes
++ * high if reset is inserted after PWDN goes high, host can access sensor's
++ * SCCB to initialize sensor."
++ */
++#define PWDN_ACTIVE_DELAY_MS 20
++
+ #define MIPI_CTRL00_CLOCK_LANE_GATE BIT(5)
+ #define MIPI_CTRL00_BUS_IDLE BIT(2)
+ #define MIPI_CTRL00_CLOCK_LANE_DISABLE BIT(0)
+@@ -86,6 +94,7 @@ struct ov5647 {
+ unsigned int height;
+ int power_count;
+ struct clk *xclk;
++ struct gpio_desc *pwdn;
+ };
+
+ static inline struct ov5647 *to_state(struct v4l2_subdev *sd)
+@@ -355,6 +364,11 @@ static int ov5647_sensor_power(struct v4l2_subdev *sd, int on)
+ if (on && !ov5647->power_count) {
+ dev_dbg(&client->dev, "OV5647 power on\n");
+
++ if (ov5647->pwdn) {
++ gpiod_set_value(ov5647->pwdn, 0);
++ msleep(PWDN_ACTIVE_DELAY_MS);
++ }
++
+ ret = clk_prepare_enable(ov5647->xclk);
+ if (ret < 0) {
+ dev_err(&client->dev, "clk prepare enable failed\n");
+@@ -392,6 +406,8 @@ static int ov5647_sensor_power(struct v4l2_subdev *sd, int on)
+ dev_dbg(&client->dev, "soft stby failed\n");
+
+ clk_disable_unprepare(ov5647->xclk);
++
++ gpiod_set_value(ov5647->pwdn, 1);
+ }
+
+ /* Update the power count. */
+@@ -604,6 +620,10 @@ static int ov5647_probe(struct i2c_client *client,
+ return -EINVAL;
+ }
+
++ /* Request the power down GPIO asserted */
++ sensor->pwdn = devm_gpiod_get_optional(&client->dev, "pwdn",
++ GPIOD_OUT_HIGH);
++
+ mutex_init(&sensor->lock);
+
+ sd = &sensor->sd;
+@@ -617,7 +637,15 @@ static int ov5647_probe(struct i2c_client *client,
+ if (ret < 0)
+ goto mutex_remove;
+
++ if (sensor->pwdn) {
++ gpiod_set_value(sensor->pwdn, 0);
++ msleep(PWDN_ACTIVE_DELAY_MS);
++ }
++
+ ret = ov5647_detect(sd);
++
++ gpiod_set_value(sensor->pwdn, 1);
++
+ if (ret < 0)
+ goto error;
+
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0214-media-ov5647-Add-support-for-non-continuous-clock-mo.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0214-media-ov5647-Add-support-for-non-continuous-clock-mo.patch
new file mode 100644
index 00000000..d1c60cb1
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0214-media-ov5647-Add-support-for-non-continuous-clock-mo.patch
@@ -0,0 +1,81 @@
+From 1bc1b9d0bc156864988223af72bccd01c267acd7 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:56:47 +0000
+Subject: [PATCH 214/325] media: ov5647: Add support for non-continuous clock
+ mode
+
+The driver was only supporting continuous clock mode
+although this was not stated anywhere.
+Non-continuous clock saves a small amount of power and
+on some SoCs is easier to interface with.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/ov5647.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
+index b750635168e3..d8f3e091001f 100644
+--- a/drivers/media/i2c/ov5647.c
++++ b/drivers/media/i2c/ov5647.c
+@@ -44,6 +44,7 @@
+ #define PWDN_ACTIVE_DELAY_MS 20
+
+ #define MIPI_CTRL00_CLOCK_LANE_GATE BIT(5)
++#define MIPI_CTRL00_LINE_SYNC_ENABLE BIT(4)
+ #define MIPI_CTRL00_BUS_IDLE BIT(2)
+ #define MIPI_CTRL00_CLOCK_LANE_DISABLE BIT(0)
+
+@@ -95,6 +96,7 @@ struct ov5647 {
+ int power_count;
+ struct clk *xclk;
+ struct gpio_desc *pwdn;
++ unsigned int flags;
+ };
+
+ static inline struct ov5647 *to_state(struct v4l2_subdev *sd)
+@@ -269,9 +271,15 @@ static int ov5647_set_virtual_channel(struct v4l2_subdev *sd, int channel)
+
+ static int ov5647_stream_on(struct v4l2_subdev *sd)
+ {
++ struct ov5647 *ov5647 = to_state(sd);
++ u8 val = MIPI_CTRL00_BUS_IDLE;
+ int ret;
+
+- ret = ov5647_write(sd, OV5647_REG_MIPI_CTRL00, MIPI_CTRL00_BUS_IDLE);
++ if (ov5647->flags & V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK)
++ val |= MIPI_CTRL00_CLOCK_LANE_GATE |
++ MIPI_CTRL00_LINE_SYNC_ENABLE;
++
++ ret = ov5647_write(sd, OV5647_REG_MIPI_CTRL00, val);
+ if (ret < 0)
+ return ret;
+
+@@ -568,7 +576,7 @@ static const struct v4l2_subdev_internal_ops ov5647_subdev_internal_ops = {
+ .open = ov5647_open,
+ };
+
+-static int ov5647_parse_dt(struct device_node *np)
++static int ov5647_parse_dt(struct device_node *np, struct ov5647 *sensor)
+ {
+ struct v4l2_fwnode_endpoint bus_cfg = { .bus_type = 0 };
+ struct device_node *ep;
+@@ -581,6 +589,9 @@ static int ov5647_parse_dt(struct device_node *np)
+
+ ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep), &bus_cfg);
+
++ if (!ret)
++ sensor->flags = bus_cfg.bus.mipi_csi2.flags;
++
+ of_node_put(ep);
+ return ret;
+ }
+@@ -600,7 +611,7 @@ static int ov5647_probe(struct i2c_client *client,
+ return -ENOMEM;
+
+ if (IS_ENABLED(CONFIG_OF) && np) {
+- ret = ov5647_parse_dt(np);
++ ret = ov5647_parse_dt(np, sensor);
+ if (ret) {
+ dev_err(dev, "DT parsing error: %d\n", ret);
+ return ret;
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0215-media-tc358743-Increase-FIFO-level-to-374.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0215-media-tc358743-Increase-FIFO-level-to-374.patch
new file mode 100644
index 00000000..c9a19751
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0215-media-tc358743-Increase-FIFO-level-to-374.patch
@@ -0,0 +1,33 @@
+From b9757efa088dac40169ab4964ce937485998cc55 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:56:59 +0000
+Subject: [PATCH 215/325] 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
+1080P60 needs 6 lanes at 594MHz).
+It doesn't allow for lower resolutions to work as the FIFO
+underflows.
+
+374 is required for 1080P24-30 UYVY over 2 lanes @ 972Mbit/s, but
+>374 means that the FIFO underflows on 1080P50 UYVY over 2 lanes
+@ 972Mbit/s.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/tc358743.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
+index bc2e35e5ce61..8b2654c5928d 100644
+--- a/drivers/media/i2c/tc358743.c
++++ b/drivers/media/i2c/tc358743.c
+@@ -1947,7 +1947,7 @@ static int tc358743_probe_of(struct tc358743_state *state)
+ state->pdata.ddc5v_delay = DDC5V_DELAY_100_MS;
+ state->pdata.enable_hdcp = false;
+ /* A FIFO level of 16 should be enough for 2-lane 720p60 at 594 MHz. */
+- state->pdata.fifo_level = 16;
++ state->pdata.fifo_level = 374;
+ /*
+ * The PLL input clock is obtained by dividing refclk by pll_prd.
+ * It must be between 6 MHz and 40 MHz, lower frequency is better.
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0216-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0216-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch
new file mode 100644
index 00000000..b32811d7
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0216-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch
@@ -0,0 +1,78 @@
+From c2027397dad3dbdae213307eb9f8cba9e3b64dd0 Mon Sep 17 00:00:00 2001
+From: Philipp Zabel <p.zabel@pengutronix.de>
+Date: Thu, 21 Sep 2017 17:30:24 +0200
+Subject: [PATCH 216/325] media: tc358743: fix connected/active CSI-2 lane
+ reporting
+
+g_mbus_config was supposed to indicate all supported lane numbers, not
+only the number of those currently in active use. Since the TC358743
+can dynamically reduce the number of active lanes if the required
+bandwidth allows for it, report all lane numbers up to the connected
+number of lanes as supported in pdata mode.
+In device tree mode, do not report lane count and clock mode at all, as
+the receiver driver can determine these from the device tree.
+
+To allow communicating the number of currently active lanes, add a new
+bitfield to the v4l2_mbus_config flags. This is a temporary fix, to be
+used only until a better solution is found.
+
+Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
+---
+ drivers/media/i2c/tc358743.c | 14 ++++++++++++--
+ include/media/v4l2-mediabus.h | 8 ++++++++
+ 2 files changed, 20 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
+index 8b2654c5928d..39af453d250a 100644
+--- a/drivers/media/i2c/tc358743.c
++++ b/drivers/media/i2c/tc358743.c
+@@ -1606,11 +1606,20 @@ static int tc358743_g_mbus_config(struct v4l2_subdev *sd,
+ struct v4l2_mbus_config *cfg)
+ {
+ struct tc358743_state *state = to_state(sd);
++ const u32 mask = V4L2_MBUS_CSI2_LANE_MASK;
++
++ if (state->csi_lanes_in_use > state->bus.num_data_lanes)
++ return -EINVAL;
+
+ cfg->type = V4L2_MBUS_CSI2_DPHY;
++ cfg->flags = (state->csi_lanes_in_use << __ffs(mask)) & mask;
+
+- /* Support for non-continuous CSI-2 clock is missing in the driver */
+- cfg->flags = V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
++ /* In DT mode, only report the number of active lanes */
++ if (sd->dev->of_node)
++ return 0;
++
++ /* Support for non-continuous CSI-2 clock is missing in pdate mode */
++ cfg->flags |= V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
+
+ switch (state->csi_lanes_in_use) {
+ case 1:
+@@ -2053,6 +2062,7 @@ static int tc358743_probe(struct i2c_client *client,
+ if (pdata) {
+ state->pdata = *pdata;
+ state->bus.flags = V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
++ state->bus.num_data_lanes = 4;
+ } else {
+ err = tc358743_probe_of(state);
+ if (err == -ENODEV)
+diff --git a/include/media/v4l2-mediabus.h b/include/media/v4l2-mediabus.h
+index 66cb746ceeb5..058eeace1373 100644
+--- a/include/media/v4l2-mediabus.h
++++ b/include/media/v4l2-mediabus.h
+@@ -70,6 +70,14 @@
+ V4L2_MBUS_CSI2_CHANNEL_1 | \
+ V4L2_MBUS_CSI2_CHANNEL_2 | \
+ V4L2_MBUS_CSI2_CHANNEL_3)
++/*
++ * Number of lanes in use, 0 == use all available lanes (default)
++ *
++ * This is a temporary fix for devices that need to reduce the number of active
++ * lanes for certain modes, until g_mbus_config() can be replaced with a better
++ * solution.
++ */
++#define V4L2_MBUS_CSI2_LANE_MASK (0xf << 10)
+
+ /**
+ * enum v4l2_mbus_type - media bus type
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0217-media-tc358743-Add-support-for-972Mbit-s-link-freq.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0217-media-tc358743-Add-support-for-972Mbit-s-link-freq.patch
new file mode 100644
index 00000000..9691d0af
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0217-media-tc358743-Add-support-for-972Mbit-s-link-freq.patch
@@ -0,0 +1,81 @@
+From 09430e19b0dc52e5d6caa65784c9e45b7eb1d3f5 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:57:21 +0000
+Subject: [PATCH 217/325] 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.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/tc358743.c | 47 +++++++++++++++++++++++++-----------
+ 1 file changed, 33 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
+index 39af453d250a..a81f13447b12 100644
+--- a/drivers/media/i2c/tc358743.c
++++ b/drivers/media/i2c/tc358743.c
+@@ -1976,6 +1976,7 @@ static int tc358743_probe_of(struct tc358743_state *state)
+ /*
+ * The CSI bps per lane must be between 62.5 Mbps and 1 Gbps.
+ * The default is 594 Mbps for 4-lane 1080p60 or 2-lane 720p60.
++ * 972 Mbps allows 1080P50 UYVY over 2-lane.
+ */
+ bps_pr_lane = 2 * endpoint.link_frequencies[0];
+ if (bps_pr_lane < 62500000U || bps_pr_lane > 1000000000U) {
+@@ -1988,23 +1989,41 @@ static int tc358743_probe_of(struct tc358743_state *state)
+ state->pdata.refclk_hz * state->pdata.pll_prd;
+
+ /*
+- * FIXME: These timings are from REF_02 for 594 Mbps per lane (297 MHz
+- * link frequency). In principle it should be possible to calculate
++ * FIXME: These timings are from REF_02 for 594 or 972 Mbps per lane
++ * (297 MHz or 486 MHz link frequency).
++ * In principle it should be possible to calculate
+ * them based on link frequency and resolution.
+ */
+- if (bps_pr_lane != 594000000U)
++ switch (bps_pr_lane) {
++ default:
+ dev_warn(dev, "untested bps per lane: %u bps\n", bps_pr_lane);
+- state->pdata.lineinitcnt = 0xe80;
+- state->pdata.lptxtimecnt = 0x003;
+- /* tclk-preparecnt: 3, tclk-zerocnt: 20 */
+- state->pdata.tclk_headercnt = 0x1403;
+- state->pdata.tclk_trailcnt = 0x00;
+- /* ths-preparecnt: 3, ths-zerocnt: 1 */
+- state->pdata.ths_headercnt = 0x0103;
+- state->pdata.twakeup = 0x4882;
+- state->pdata.tclk_postcnt = 0x008;
+- state->pdata.ths_trailcnt = 0x2;
+- state->pdata.hstxvregcnt = 0;
++ case 594000000U:
++ state->pdata.lineinitcnt = 0xe80;
++ state->pdata.lptxtimecnt = 0x003;
++ /* tclk-preparecnt: 3, tclk-zerocnt: 20 */
++ state->pdata.tclk_headercnt = 0x1403;
++ state->pdata.tclk_trailcnt = 0x00;
++ /* ths-preparecnt: 3, ths-zerocnt: 1 */
++ state->pdata.ths_headercnt = 0x0103;
++ state->pdata.twakeup = 0x4882;
++ state->pdata.tclk_postcnt = 0x008;
++ state->pdata.ths_trailcnt = 0x2;
++ state->pdata.hstxvregcnt = 0;
++ break;
++ case 972000000U:
++ state->pdata.lineinitcnt = 0x1b58;
++ state->pdata.lptxtimecnt = 0x007;
++ /* tclk-preparecnt: 6, tclk-zerocnt: 40 */
++ state->pdata.tclk_headercnt = 0x2806;
++ state->pdata.tclk_trailcnt = 0x00;
++ /* ths-preparecnt: 6, ths-zerocnt: 8 */
++ state->pdata.ths_headercnt = 0x0806;
++ state->pdata.twakeup = 0x4268;
++ state->pdata.tclk_postcnt = 0x008;
++ state->pdata.ths_trailcnt = 0x5;
++ state->pdata.hstxvregcnt = 0;
++ break;
++ }
+
+ state->reset_gpio = devm_gpiod_get_optional(dev, "reset",
+ GPIOD_OUT_LOW);
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0218-media-tc358743-Check-I2C-succeeded-during-probe.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0218-media-tc358743-Check-I2C-succeeded-during-probe.patch
new file mode 100644
index 00000000..9492e530
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0218-media-tc358743-Check-I2C-succeeded-during-probe.patch
@@ -0,0 +1,100 @@
+From 59dd58b4de74e93df9b4dfd4c0ff6dd1c73c4cbe Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:57:34 +0000
+Subject: [PATCH 218/325] 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.
+If the I2C request fails then that also returns 0, so
+the driver loads thinking that the device is there.
+
+Generally I2C communications are reliable so there is
+limited need to check the return value on every transfer,
+therefore only amend the one read during probe to check
+for I2C errors.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/tc358743.c | 27 +++++++++++++++++++++++----
+ 1 file changed, 23 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
+index a81f13447b12..12cb5bf4def7 100644
+--- a/drivers/media/i2c/tc358743.c
++++ b/drivers/media/i2c/tc358743.c
+@@ -110,7 +110,7 @@ static inline struct tc358743_state *to_state(struct v4l2_subdev *sd)
+
+ /* --------------- I2C --------------- */
+
+-static void i2c_rd(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
++static int i2c_rd(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
+ {
+ struct tc358743_state *state = to_state(sd);
+ struct i2c_client *client = state->i2c_client;
+@@ -136,6 +136,7 @@ static void i2c_rd(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
+ v4l2_err(sd, "%s: reading register 0x%x from 0x%x failed\n",
+ __func__, reg, client->addr);
+ }
++ return err != ARRAY_SIZE(msgs);
+ }
+
+ static void i2c_wr(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
+@@ -192,15 +193,24 @@ static void i2c_wr(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
+ }
+ }
+
+-static noinline u32 i2c_rdreg(struct v4l2_subdev *sd, u16 reg, u32 n)
++static noinline u32 i2c_rdreg_err(struct v4l2_subdev *sd, u16 reg, u32 n,
++ int *err)
+ {
++ int error;
+ __le32 val = 0;
+
+- i2c_rd(sd, reg, (u8 __force *)&val, n);
++ error = i2c_rd(sd, reg, (u8 __force *)&val, n);
++ if (err)
++ *err = error;
+
+ return le32_to_cpu(val);
+ }
+
++static inline u32 i2c_rdreg(struct v4l2_subdev *sd, u16 reg, u32 n)
++{
++ return i2c_rdreg_err(sd, reg, n, NULL);
++}
++
+ static noinline void i2c_wrreg(struct v4l2_subdev *sd, u16 reg, u32 val, u32 n)
+ {
+ __le32 raw = cpu_to_le32(val);
+@@ -229,6 +239,13 @@ static u16 i2c_rd16(struct v4l2_subdev *sd, u16 reg)
+ return i2c_rdreg(sd, reg, 2);
+ }
+
++static int i2c_rd16_err(struct v4l2_subdev *sd, u16 reg, u16 *value)
++{
++ int err;
++ *value = i2c_rdreg_err(sd, reg, 2, &err);
++ return err;
++}
++
+ static void i2c_wr16(struct v4l2_subdev *sd, u16 reg, u16 val)
+ {
+ i2c_wrreg(sd, reg, val, 2);
+@@ -2063,6 +2080,7 @@ static int tc358743_probe(struct i2c_client *client,
+ struct tc358743_platform_data *pdata = client->dev.platform_data;
+ struct v4l2_subdev *sd;
+ u16 irq_mask = MASK_HDMI_MSK | MASK_CSI_MSK;
++ u16 chipid;
+ int err;
+
+ if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA))
+@@ -2095,7 +2113,8 @@ static int tc358743_probe(struct i2c_client *client,
+ sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
+
+ /* i2c access */
+- if ((i2c_rd16(sd, CHIPID) & MASK_CHIPID) != 0) {
++ if (i2c_rd16_err(sd, CHIPID, &chipid) ||
++ (chipid & MASK_CHIPID) != 0) {
+ v4l2_info(sd, "not a TC358743 on address 0x%x\n",
+ client->addr << 1);
+ return -ENODEV;
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0219-media-adv7180-Default-to-the-first-valid-input.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0219-media-adv7180-Default-to-the-first-valid-input.patch
new file mode 100644
index 00000000..2f60f7b4
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0219-media-adv7180-Default-to-the-first-valid-input.patch
@@ -0,0 +1,47 @@
+From 4a7a13e0ce13f2a44ab03c4fa365e8073e1ee6e4 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:57:46 +0000
+Subject: [PATCH 219/325] media: adv7180: Default to the first valid input
+
+The hardware default is differential CVBS on AIN1 & 2, which
+isn't very useful.
+
+Select the first input that is defined as valid for the
+chip variant (typically CVBS_AIN1).
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/adv7180.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
+index 6f3dc8862622..bd183b8ce436 100644
+--- a/drivers/media/i2c/adv7180.c
++++ b/drivers/media/i2c/adv7180.c
+@@ -1246,6 +1246,7 @@ static const struct adv7180_chip_info adv7282_m_info = {
+ static int init_device(struct adv7180_state *state)
+ {
+ int ret;
++ int i;
+
+ mutex_lock(&state->mutex);
+
+@@ -1292,6 +1293,18 @@ static int init_device(struct adv7180_state *state)
+ goto out_unlock;
+ }
+
++ /* Select first valid input */
++ for (i = 0; i < 32; i++) {
++ if (BIT(i) & state->chip_info->valid_input_mask) {
++ ret = state->chip_info->select_input(state, i);
++
++ if (ret == 0) {
++ state->input = i;
++ break;
++ }
++ }
++ }
++
+ out_unlock:
+ mutex_unlock(&state->mutex);
+
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0220-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0220-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch
new file mode 100644
index 00000000..9bc446fb
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0220-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch
@@ -0,0 +1,26 @@
+From 3233acfc2b31b9dd30aeb34129a4385a9680926e Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:57:56 +0000
+Subject: [PATCH 220/325] 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
+supported input modes.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/i2c/adv7180.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
+index bd183b8ce436..ba974fb36e46 100644
+--- a/drivers/media/i2c/adv7180.c
++++ b/drivers/media/i2c/adv7180.c
+@@ -1235,6 +1235,7 @@ static const struct adv7180_chip_info adv7282_m_info = {
+ BIT(ADV7182_INPUT_SVIDEO_AIN1_AIN2) |
+ BIT(ADV7182_INPUT_SVIDEO_AIN3_AIN4) |
+ BIT(ADV7182_INPUT_SVIDEO_AIN7_AIN8) |
++ BIT(ADV7182_INPUT_YPRPB_AIN1_AIN2_AIN3) |
+ BIT(ADV7182_INPUT_DIFF_CVBS_AIN1_AIN2) |
+ BIT(ADV7182_INPUT_DIFF_CVBS_AIN3_AIN4) |
+ BIT(ADV7182_INPUT_DIFF_CVBS_AIN7_AIN8),
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0221-media-videodev2-Add-helper-defines-for-printing-FOUR.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0221-media-videodev2-Add-helper-defines-for-printing-FOUR.patch
new file mode 100644
index 00000000..76c46bb6
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0221-media-videodev2-Add-helper-defines-for-printing-FOUR.patch
@@ -0,0 +1,30 @@
+From e41c71a6c97ed7fed1469dc83e7e371eccfb5d89 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:58:08 +0000
+Subject: [PATCH 221/325] media: videodev2: Add helper defines for printing
+ FOURCCs
+
+New helper defines that allow printing of a FOURCC using
+printf(V4L2_FOURCC_CONV, V4L2_FOURCC_CONV_ARGS(fourcc));
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ include/uapi/linux/videodev2.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
+index b5671ce2724f..0e71dc7f6b01 100644
+--- a/include/uapi/linux/videodev2.h
++++ b/include/uapi/linux/videodev2.h
+@@ -82,6 +82,11 @@
+ ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
+ #define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1 << 31))
+
++#define V4L2_FOURCC_CONV "%c%c%c%c%s"
++#define V4L2_FOURCC_CONV_ARGS(fourcc) \
++ (fourcc) & 0x7f, ((fourcc) >> 8) & 0x7f, ((fourcc) >> 16) & 0x7f, \
++ ((fourcc) >> 24) & 0x7f, (fourcc) & BIT(31) ? "-BE" : ""
++
+ /*
+ * E N U M S
+ */
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0222-dt-bindings-Document-BCM283x-CSI2-CCP2-receiver.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0222-dt-bindings-Document-BCM283x-CSI2-CCP2-receiver.patch
new file mode 100644
index 00000000..e1bcc2cb
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0222-dt-bindings-Document-BCM283x-CSI2-CCP2-receiver.patch
@@ -0,0 +1,105 @@
+From e41811253e9705fae1ff07170787b0b80ffedc61 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:59:06 +0000
+Subject: [PATCH 222/325] dt-bindings: Document BCM283x CSI2/CCP2 receiver
+
+Document the DT bindings for the CSI2/CCP2 receiver peripheral
+(known as Unicam) on BCM283x SoCs.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Acked-by: Rob Herring <robh@kernel.org>
+---
+ .../bindings/media/bcm2835-unicam.txt | 85 +++++++++++++++++++
+ 1 file changed, 85 insertions(+)
+
+diff --git a/Documentation/devicetree/bindings/media/bcm2835-unicam.txt b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt
+new file mode 100644
+index 000000000000..7714fb374b34
+--- /dev/null
++++ b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt
+@@ -0,0 +1,85 @@
++Broadcom BCM283x Camera Interface (Unicam)
++------------------------------------------
++
++The Unicam block on BCM283x SoCs is the receiver for either
++CSI-2 or CCP2 data from image sensors or similar devices.
++
++The main platform using this SoC is the Raspberry Pi family of boards.
++On the Pi the VideoCore firmware can also control this hardware block,
++and driving it from two different processors will cause issues.
++To avoid this, the firmware checks the device tree configuration
++during boot. If it finds device tree nodes called csi0 or csi1 then
++it will stop the firmware accessing the block, and it can then
++safely be used via the device tree binding.
++
++Required properties:
++===================
++- compatible : must be "brcm,bcm2835-unicam".
++- reg : physical base address and length of the register sets for the
++ device.
++- interrupts : should contain the IRQ line for this Unicam instance.
++- clocks : list of clock specifiers, corresponding to entries in
++ clock-names property.
++- clock-names : must contain an "lp" entry, matching entries in the
++ clocks property.
++
++Unicam supports a single port node. It should contain one 'port' child node
++with child 'endpoint' node. Please refer to the bindings defined in
++Documentation/devicetree/bindings/media/video-interfaces.txt.
++
++Within the endpoint node the "remote-endpoint" and "data-lanes" properties
++are mandatory.
++Data lane reordering is not supported so the data lanes must be in order,
++starting at 1. The number of data lanes should represent the number of
++usable lanes for the hardware block. That may be limited by either the SoC or
++how the platform presents the interface, and the lower value must be used.
++
++Lane reordering is not supported on the clock lane either, so the optional
++property "clock-lane" will implicitly be <0>.
++Similarly lane inversion is not supported, therefore "lane-polarities" will
++implicitly be <0 0 0 0 0>.
++Neither of these values will be checked.
++
++Example:
++ csi1: csi1@7e801000 {
++ compatible = "brcm,bcm2835-unicam";
++ reg = <0x7e801000 0x800>,
++ <0x7e802004 0x4>;
++ interrupts = <2 7>;
++ clocks = <&clocks BCM2835_CLOCK_CAM1>;
++ clock-names = "lp";
++
++ port {
++ csi1_ep: endpoint {
++ remote-endpoint = <&tc358743_0>;
++ data-lanes = <1 2>;
++ };
++ };
++ };
++
++ i2c0: i2c@7e205000 {
++ tc358743: csi-hdmi-bridge@0f {
++ compatible = "toshiba,tc358743";
++ reg = <0x0f>;
++
++ clocks = <&tc358743_clk>;
++ clock-names = "refclk";
++
++ tc358743_clk: bridge-clk {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-frequency = <27000000>;
++ };
++
++ port {
++ tc358743_0: endpoint {
++ remote-endpoint = <&csi1_ep>;
++ clock-lanes = <0>;
++ data-lanes = <1 2>;
++ clock-noncontinuous;
++ link-frequencies =
++ /bits/ 64 <297000000>;
++ };
++ };
++ };
++ };
diff --git a/sys-kernel/boest-v5.0.21/raspberrypi/0223-media-bcm2835-unicam-Driver-for-CCP2-CSI2-camera-int.patch b/sys-kernel/boest-v5.0.21/raspberrypi/0223-media-bcm2835-unicam-Driver-for-CCP2-CSI2-camera-int.patch
new file mode 100644
index 00000000..2b4b87a7
--- /dev/null
+++ b/sys-kernel/boest-v5.0.21/raspberrypi/0223-media-bcm2835-unicam-Driver-for-CCP2-CSI2-camera-int.patch
@@ -0,0 +1,2448 @@
+From ee2ce06e971bf09680134b525bc48de6240f86d4 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 14:59:22 +0000
+Subject: [PATCH 223/325] media: bcm2835-unicam: Driver for CCP2/CSI2 camera
+ interface
+
+Add driver for the Unicam camera receiver block on
+BCM283x processors.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/media/platform/Kconfig | 1 +
+ drivers/media/platform/Makefile | 2 +
+ drivers/media/platform/bcm2835/Kconfig | 14 +
+ drivers/media/platform/bcm2835/Makefile | 3 +
+ .../media/platform/bcm2835/bcm2835-unicam.c | 2100 +++++++++++++++++
+ .../media/platform/bcm2835/vc4-regs-unicam.h | 266 +++
+ 6 files changed, 2386 insertions(+)
+
+diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
+index a505e9f5a1e2..269c7e2cd32a 100644
+--- a/drivers/media/platform/Kconfig
++++ b/drivers/media/platform/Kconfig
+@@ -148,6 +148,7 @@ source "drivers/media/platform/xilinx/Kconfig"
+ source "drivers/media/platform/rcar-vin/Kconfig"
+ source "drivers/media/platform/atmel/Kconfig"
+ source "drivers/media/platform/sunxi/sun6i-csi/Kconfig"
++source "drivers/media/platform/bcm2835/Kconfig"
+
+ config VIDEO_TI_CAL
+ tristate "TI CAL (Camera Adaptation Layer) driver"
+diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
+index e6deb2597738..b1c5aa06c070 100644
+--- a/drivers/media/platform/Makefile
++++ b/drivers/media/platform/Makefile
+@@ -103,3 +103,5 @@ obj-y += meson/
+ obj-y += cros-ec-cec/
+
+ obj-$(CONFIG_VIDEO_SUN6I_CSI) += sunxi/sun6i-csi/
++
++obj-y += bcm2835/
+diff --git a/drivers/media/platform/bcm2835/Kconfig b/drivers/media/platform/bcm2835/Kconfig
+new file mode 100644
+index 000000000000..dac4e92bbbb6
+--- /dev/null
++++ b/drivers/media/platform/bcm2835/Kconfig
+@@ -0,0 +1,14 @@
++# Broadcom VideoCore4 V4L2 camera support
++
++config VIDEO_BCM2835_UNICAM
++ tristate "Broadcom BCM2835 Unicam video capture driver"
++ depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
++ depends on ARCH_BCM2835 || COMPILE_TEST
++ select VIDEOBUF2_DMA_CONTIG
++ select V4L2_FWNODE
++ help
++ Say Y here to enable V4L2 subdevice for CSI2 receiver.
++ This is a V4L2 subdevice that interfaces directly to the VC4 peripheral.
++
++ To compile this driver as a module, choose M here. The module
++ will be called bcm2835-unicam.
+diff --git a/drivers/media/platform/bcm2835/Makefile b/drivers/media/platform/bcm2835/Makefile
+new file mode 100644
+index 000000000000..a98aba03598a
+--- /dev/null
++++ b/drivers/media/platform/bcm2835/Makefile
+@@ -0,0 +1,3 @@
++# Makefile for BCM2835 Unicam driver
++
++obj-$(CONFIG_VIDEO_BCM2835_UNICAM) += bcm2835-unicam.o
+diff --git a/drivers/media/platform/bcm2835/bcm2835-unicam.c b/drivers/media/platform/bcm2835/bcm2835-unicam.c
+new file mode 100644
+index 000000000000..d1eaaffd196a
+--- /dev/null
++++ b/drivers/media/platform/bcm2835/bcm2835-unicam.c
+@@ -0,0 +1,2100 @@
++// SPDX-License-Identifier: GPL-2.0-only
++/*
++ * BCM2835 Unicam capture Driver
++ *
++ * Copyright (C) 2017 - Raspberry Pi (Trading) Ltd.
++ *
++ * Dave Stevenson <dave.stevenson@raspberrypi.org>
++ *
++ * Based on TI am437x driver by Benoit Parrot and Lad, Prabhakar and
++ * TI CAL camera interface driver by Benoit Parrot.
++ *
++ *
++ * There are two camera drivers in the kernel for BCM283x - this one
++ * and bcm2835-camera (currently in staging).
++ *
++ * This driver directly controls the Unicam peripheral - there is no
++ * involvement with the VideoCore firmware. Unicam receives CSI-2 or
++ * CCP2 data and writes it into SDRAM. The only potential processing options are
++ * to repack Bayer data into an alternate format, and applying windowing.
++ * The repacking does not shift the data, so could repack V4L2_PIX_FMT_Sxxxx10P
++ * to V4L2_PIX_FMT_Sxxxx10, or V4L2_PIX_FMT_Sxxxx12P to V4L2_PIX_FMT_Sxxxx12,
++ * but not generically up to V4L2_PIX_FMT_Sxxxx16.
++ * Adding support for repacking and windowing may be added later.
++ *
++ * It should be possible to connect this driver to any sensor with a
++ * suitable output interface and V4L2 subdevice driver.
++ *
++ * bcm2835-camera uses the VideoCore firmware to control the sensor,
++ * Unicam, ISP, and all tuner control loops. Fully processed frames are
++ * delivered to the driver by the firmware. It only has sensor drivers
++ * for Omnivision OV5647, and Sony IMX219 sensors.
++ *
++ * The two drivers are mutually exclusive for the same Unicam instance.
++ * The VideoCore firmware checks the device tree configuration during boot.
++ * If it finds device tree nodes called csi0 or csi1 it will block the
++ * firmware from accessing the peripheral, and bcm2835-camera will
++ * not be able to stream data.
++ *
++ *
++ * This program is free software; you may redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; version 2 of the License.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
++ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++ * SOFTWARE.
++ */
++
++#include <linux/clk.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <linux/err.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/io.h>
++#include <linux/module.h>
++#include <linux/of_device.h>
++#include <linux/of_graph.h>
++#include <linux/pinctrl/consumer.h>
++#include <linux/platform_device.h>
++#include <linux/pm_runtime.h>
++#include <linux/slab.h>
++#include <linux/uaccess.h>
++#include <linux/videodev2.h>
++
++#include <media/v4l2-common.h>
++#include <media/v4l2-ctrls.h>
++#include <media/v4l2-dev.h>
++#include <media/v4l2-device.h>
++#include <media/v4l2-dv-timings.h>
++#include <media/v4l2-event.h>
++#include <media/v4l2-ioctl.h>
++#include <media/v4l2-fwnode.h>
++#include <media/videobuf2-dma-contig.h>
++
++#include "vc4-regs-unicam.h"
++
++#define UNICAM_MODULE_NAME "unicam"
++#define UNICAM_VERSION "0.1.0"
++
++static int debug;
++module_param(debug, int, 0644);
++MODULE_PARM_DESC(debug, "Debug level 0-3");
++
++#define unicam_dbg(level, dev, fmt, arg...) \
++ v4l2_dbg(level, debug, &(dev)->v4l2_dev, fmt, ##arg)
++#define unicam_info(dev, fmt, arg...) \
++ v4l2_info(&(dev)->v4l2_dev, fmt, ##arg)
++#define unicam_err(dev, fmt, arg...) \
++ v4l2_err(&(dev)->v4l2_dev, fmt, ##arg)
++
++/*
++ * Stride is a 16 bit register, but also has to be a multiple of 16.
++ */
++#define BPL_ALIGNMENT 16
++#define MAX_BYTESPERLINE ((1 << 16) - BPL_ALIGNMENT)
++/*
++ * Max width is therefore determined by the max stride divided by
++ * the number of bits per pixel. Take 32bpp as a
++ * worst case.
++ * No imposed limit on the height, so adopt a square image for want
++ * of anything better.
++ */
++#define MAX_WIDTH (MAX_BYTESPERLINE / 4)
++#define MAX_HEIGHT MAX_WIDTH
++/* Define a nominal minimum image size */
++#define MIN_WIDTH 16
++#define MIN_HEIGHT 16
++/*
++ * Whilst Unicam doesn't require any additional padding on the image
++ * height, various other parts of the BCM283x frameworks require a multiple
++ * of 16.
++ * Seeing as image buffers are significantly larger than this extra
++ * padding, add it in order to simplify integration.
++ */
++#define HEIGHT_ALIGNMENT 16
++
++/*
++ * struct unicam_fmt - Unicam media bus format information
++ * @pixelformat: V4L2 pixel format FCC identifier.
++ * @code: V4L2 media bus format code.
++ * @depth: Bits per pixel (when stored in memory).
++ * @csi_dt: CSI data type.
++ */
++struct unicam_fmt {
++ u32 fourcc;
++ u32 code;
++ u8 depth;
++ u8 csi_dt;
++};
++
++static const struct unicam_fmt formats[] = {
++ /* YUV Formats */
++ {
++ .fourcc = V4L2_PIX_FMT_YUYV,
++ .code = MEDIA_BUS_FMT_YUYV8_2X8,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ .fourcc = V4L2_PIX_FMT_UYVY,
++ .code = MEDIA_BUS_FMT_UYVY8_2X8,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ .fourcc = V4L2_PIX_FMT_YVYU,
++ .code = MEDIA_BUS_FMT_YVYU8_2X8,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ .fourcc = V4L2_PIX_FMT_VYUY,
++ .code = MEDIA_BUS_FMT_VYUY8_2X8,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ .fourcc = V4L2_PIX_FMT_YUYV,
++ .code = MEDIA_BUS_FMT_YUYV8_1X16,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ .fourcc = V4L2_PIX_FMT_UYVY,
++ .code = MEDIA_BUS_FMT_UYVY8_1X16,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ .fourcc = V4L2_PIX_FMT_YVYU,
++ .code = MEDIA_BUS_FMT_YVYU8_1X16,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ .fourcc = V4L2_PIX_FMT_VYUY,
++ .code = MEDIA_BUS_FMT_VYUY8_1X16,
++ .depth = 16,
++ .csi_dt = 0x1e,
++ }, {
++ /* RGB Formats */
++ .fourcc = V4L2_PIX_FMT_RGB565, /* gggbbbbb rrrrrggg */
++ .code = MEDIA_BUS_FMT_RGB565_2X8_LE,
++ .depth = 16,
++ .csi_dt = 0x22,
++ }, {
++ .fourcc = V4L2_PIX_FMT_RGB565X, /* rrrrrggg gggbbbbb */
++ .code = MEDIA_BUS_FMT_RGB565_2X8_BE,
++ .depth = 16,
++ .csi_dt = 0x22
++ }, {
++ .fourcc = V4L2_PIX_FMT_RGB555, /* gggbbbbb arrrrrgg */
++ .code = MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE,
++ .depth = 16,
++ .csi_dt = 0x21,
++ }, {
++ .fourcc = V4L2_PIX_FMT_RGB555X, /* arrrrrgg gggbbbbb */
++ .code = MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE,
++ .depth = 16,
++ .csi_dt = 0x21,
++ }, {
++ .fourcc = V4L2_PIX_FMT_RGB24, /* rgb */
++ .code = MEDIA_BUS_FMT_RGB888_1X24,
++ .depth = 24,
++ .csi_dt = 0x24,
++ }, {
++ .fourcc = V4L2_PIX_FMT_BGR24, /* bgr */
++ .code = MEDIA_BUS_FMT_BGR888_1X24,
++ .depth = 24,
++ .csi_dt = 0x24,
++ }, {
++ .fourcc = V4L2_PIX_FMT_RGB32, /* argb */
++ .code = MEDIA_BUS_FMT_ARGB8888_1X32,
++ .depth = 32,
++ .csi_dt = 0x0,
++ }, {
++ /* Bayer Formats */
++ .fourcc = V4L2_PIX_FMT_SBGGR8,
++ .code = MEDIA_BUS_FMT_SBGGR8_1X8,
++ .depth = 8,
++ .csi_dt = 0x2a,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SGBRG8,
++ .code = MEDIA_BUS_FMT_SGBRG8_1X8,
++ .depth = 8,
++ .csi_dt = 0x2a,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SGRBG8,
++ .code = MEDIA_BUS_FMT_SGRBG8_1X8,
++ .depth = 8,
++ .csi_dt = 0x2a,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SRGGB8,
++ .code = MEDIA_BUS_FMT_SRGGB8_1X8,
++ .depth = 8,
++ .csi_dt = 0x2a,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SBGGR10P,
++ .code = MEDIA_BUS_FMT_SBGGR10_1X10,
++ .depth = 10,
++ .csi_dt = 0x2b,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SGBRG10P,
++ .code = MEDIA_BUS_FMT_SGBRG10_1X10,
++ .depth = 10,
++ .csi_dt = 0x2b,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SGRBG10P,
++ .code = MEDIA_BUS_FMT_SGRBG10_1X10,
++ .depth = 10,
++ .csi_dt = 0x2b,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SRGGB10P,
++ .code = MEDIA_BUS_FMT_SRGGB10_1X10,
++ .depth = 10,
++ .csi_dt = 0x2b,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SBGGR12P,
++ .code = MEDIA_BUS_FMT_SBGGR12_1X12,
++ .depth = 12,
++ .csi_dt = 0x2c,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SGBRG12P,
++ .code = MEDIA_BUS_FMT_SGBRG12_1X12,
++ .depth = 12,
++ .csi_dt = 0x2c,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SGRBG12P,
++ .code = MEDIA_BUS_FMT_SGRBG12_1X12,
++ .depth = 12,
++ .csi_dt = 0x2c,
++ }, {
++ .fourcc = V4L2_PIX_FMT_SRGGB12P,
++ .code = MEDIA_BUS_FMT_SRGGB12_1X12,
++ .depth = 12,
++ .csi_dt = 0x2c,
++ },
++ /*
++ * 14 and 16 bit Bayer formats could be supported, but there are no V4L2
++ * defines for 14bit packed Bayer, and no CSI2 data_type for raw 16.
++ */
++};
++
++struct unicam_dmaqueue {
++ struct list_head active;
++};
++
++struct unicam_buffer {
++ struct vb2_v4l2_buffer vb;
++ struct list_head list;
++};
++
++struct unicam_cfg {
++ /* peripheral base address */
++ void __iomem *base;
++ /* clock gating base address */
++ void __iomem *clk_gate_base;
++};
++
++#define MAX_POSSIBLE_PIX_FMTS (ARRAY_SIZE(formats))
++
++struct unicam_device {
++ /* V4l2 specific parameters */
++ /* Identifies video device for this channel */
++ struct video_device video_dev;
++ struct v4l2_ctrl_handler ctrl_handler;
++
++ struct v4l2_fwnode_endpoint endpoint;
++
++ struct v4l2_async_subdev asd;
++
++ /* unicam cfg */
++ struct unicam_cfg cfg;
++ /* clock handle */
++ struct clk *clock;
++ /* V4l2 device */
++ struct v4l2_device v4l2_dev;
++ /* parent device */
++ struct platform_device *pdev;
++ /* subdevice async Notifier */
++ struct v4l2_async_notifier notifier;
++ unsigned int sequence;
++
++ /* ptr to sub device */
++ struct v4l2_subdev *sensor;
++ /* Pad config for the sensor */
++ struct v4l2_subdev_pad_config *sensor_config;
++ /* current input at the sub device */
++ int current_input;
++
++ /* Pointer pointing to current v4l2_buffer */
++ struct unicam_buffer *cur_frm;
++ /* Pointer pointing to next v4l2_buffer */
++ struct unicam_buffer *next_frm;
++
++ /* video capture */
++ const struct unicam_fmt *fmt;
++ /* Used to store current pixel format */
++ struct v4l2_format v_fmt;
++ /* Used to store current mbus frame format */
++ struct v4l2_mbus_framefmt m_fmt;
++
++ struct unicam_fmt active_fmts[MAX_POSSIBLE_PIX_FMTS];
++ int num_active_fmt;
++ unsigned int virtual_channel;
++ enum v4l2_mbus_type bus_type;
++ /*
++ * Stores bus.mipi_csi2.flags for CSI2 sensors, or
++ * bus.mipi_csi1.strobe for CCP2.
++ */
++ unsigned int bus_flags;
++ unsigned int max_data_lanes;
++ unsigned int active_data_lanes;
++
++ struct v4l2_rect crop;
++
++ /* Currently selected input on subdev */
++ int input;
++
++ /* Buffer queue used in video-buf */
++ struct vb2_queue buffer_queue;
++ /* Queue of filled frames */
++ struct unicam_dmaqueue dma_queue;
++ /* IRQ lock for DMA queue */
++ spinlock_t dma_queue_lock;
++ /* lock used to access this structure */
++ struct mutex lock;
++ /* Flag to denote that we are processing buffers */
++ int streaming;
++};
++
++/* Hardware access */
++#define clk_write(dev, val) writel((val) | 0x5a000000, (dev)->clk_gate_base)
++#define clk_read(dev) readl((dev)->clk_gate_base)
++
++#define reg_read(dev, offset) readl((dev)->base + (offset))
++#define reg_write(dev, offset, val) writel(val, (dev)->base + (offset))
++
++#define reg_read_field(dev, offset, mask) get_field(reg_read((dev), (offset), \
++ mask))
++
++static inline int get_field(u32 value, u32 mask)
++{
++ return (value & mask) >> __ffs(mask);
++}
++
++static inline void set_field(u32 *valp, u32 field, u32 mask)
++{
++ u32 val = *valp;
++
++ val &= ~mask;
++ val |= (field << __ffs(mask)) & mask;
++ *valp = val;
++}
++
++static inline void reg_write_field(struct unicam_cfg *dev, u32 offset,
++ u32 field, u32 mask)
++{
++ u32 val = reg_read((dev), (offset));
++
++ set_field(&val, field, mask);
++ reg_write((dev), (offset), val);
++}
++
++/* Power management functions */
++static inline int unicam_runtime_get(struct unicam_device *dev)
++{
++ int r;
++
++ r = pm_runtime_get_sync(&dev->pdev->dev);
++
++ return r;
++}
++
++static inline void unicam_runtime_put(struct unicam_device *dev)
++{
++ pm_runtime_put_sync(&dev->pdev->dev);
++}
++
++/* Format setup functions */
++static int find_mbus_depth_by_code(u32 code)
++{
++ const struct unicam_fmt *fmt;
++ unsigned int k;
++
++ for (k = 0; k < ARRAY_SIZE(formats); k++) {
++ fmt = &formats[k];
++ if (fmt->code == code)
++ return fmt->depth;
++ }
++
++ return 0;
++}
++
++static const struct unicam_fmt *find_format_by_code(struct unicam_device *dev,
++ u32 code)
++{
++ const struct unicam_fmt *fmt;
++ unsigned int k;
++
++ for (k = 0; k < dev->num_active_fmt; k++) {
++ fmt = &dev->active_fmts[k];
++ if (fmt->code == code)
++ return fmt;
++ }
++
++ return NULL;
++}
++
++static const struct unicam_fmt *find_format_by_pix(struct unicam_device *dev,
++ u32 pixelformat)
++{
++ const struct unicam_fmt *fmt;
++ unsigned int k;
++
++ for (k = 0; k < dev->num_active_fmt; k++) {
++ fmt = &dev->active_fmts[k];
++ if (fmt->fourcc == pixelformat)
++ return fmt;
++ }
++
++ return NULL;
++}
++
++static void dump_active_formats(struct unicam_device *dev)
++{
++ int i;
++
++ for (i = 0; i < dev->num_active_fmt; i++) {
++ unicam_dbg(3, dev, "active_fmt[%d] (%p) is code %04x, fourcc " V4L2_FOURCC_CONV ", depth %d\n",
++ i, &dev->active_fmts[i], dev->active_fmts[i].code,
++ V4L2_FOURCC_CONV_ARGS(dev->active_fmts[i].fourcc),
++ dev->active_fmts[i].depth);
++ }
++}
++
++static inline unsigned int bytes_per_line(u32 width,
++ const struct unicam_fmt *fmt)
++{
++ return ALIGN((width * fmt->depth) >> 3, BPL_ALIGNMENT);
++}
++
++static int __subdev_get_format(struct unicam_device *dev,
++ struct v4l2_mbus_framefmt *fmt)
++{
++ struct v4l2_subdev_format sd_fmt = {0};
++ struct v4l2_mbus_framefmt *mbus_fmt = &sd_fmt.format;
++ int ret;
++
++ sd_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
++ sd_fmt.pad = 0;
++
++ ret = v4l2_subdev_call(dev->sensor, pad, get_fmt, dev->sensor_config,
++ &sd_fmt);
++ if (ret < 0)
++ return ret;
++
++ *fmt = *mbus_fmt;
++
++ unicam_dbg(1, dev, "%s %dx%d code:%04x\n", __func__,
++ fmt->width, fmt->height, fmt->code);
++
++ return 0;
++}
++
++static int __subdev_set_format(struct unicam_device *dev,
++ struct v4l2_mbus_framefmt *fmt)
++{
++ struct v4l2_subdev_format sd_fmt = {
++ .which = V4L2_SUBDEV_FORMAT_ACTIVE,
++ };
++ struct v4l2_mbus_framefmt *mbus_fmt = &sd_fmt.format;
++ int ret;
++
++ *mbus_fmt = *fmt;
++
++ ret = v4l2_subdev_call(dev->sensor, pad, set_fmt, dev->sensor_config,
++ &sd_fmt);
++ if (ret < 0)
++ return ret;
++
++ unicam_dbg(1, dev, "%s %dx%d code:%04x\n", __func__,
++ fmt->width, fmt->height, fmt->code);
++
++ return 0;
++}
++
++static int unicam_calc_format_size_bpl(struct unicam_device *dev,
++ const struct unicam_fmt *fmt,
++ struct v4l2_format *f)
++{
++ unsigned int min_bytesperline;
++
++ v4l_bound_align_image(&f->fmt.pix.width, MIN_WIDTH, MAX_WIDTH, 2,
++ &f->fmt.pix.height, MIN_HEIGHT, MAX_HEIGHT, 0,
++ 0);
++
++ min_bytesperline = bytes_per_line(f->fmt.pix.width, fmt);
++
++ if (f->fmt.pix.bytesperline > min_bytesperline &&
++ f->fmt.pix.bytesperline <= MAX_BYTESPERLINE)
++ f->fmt.pix.bytesperline = ALIGN(f->fmt.pix.bytesperline,
++ BPL_ALIGNMENT);
++ else
++ f->fmt.pix.bytesperline = min_bytesperline;
++
++ /* Align height up for compatibility with other hardware blocks */
++ f->fmt.pix.sizeimage = ALIGN(f->fmt.pix.height, HEIGHT_ALIGNMENT) *
++ f->fmt.pix.bytesperline;
++
++ unicam_dbg(3, dev, "%s: fourcc: " V4L2_FOURCC_CONV " size: %dx%d bpl:%d img_size:%d\n",
++ __func__,
++ V4L2_FOURCC_CONV_ARGS(f->fmt.pix.pixelformat),
++ f->fmt.pix.width, f->fmt.pix.height,
++ f->fmt.pix.bytesperline, f->fmt.pix.sizeimage);
++
++ return 0;
++}
++
++static int unicam_reset_format(struct unicam_device *dev)
++{
++ struct v4l2_mbus_framefmt mbus_fmt;
++ int ret;
++
++ ret = __subdev_get_format(dev, &mbus_fmt);
++ if (ret) {
++ unicam_err(dev, "Failed to get_format - ret %d\n", ret);
++ return ret;
++ }
++
++ if (mbus_fmt.code != dev->fmt->code) {
++ unicam_err(dev, "code mismatch - fmt->code %08x, mbus_fmt.code %08x\n",
++ dev->fmt->code, mbus_fmt.code);
++ return ret;
++ }
++
++ v4l2_fill_pix_format(&dev->v_fmt.fmt.pix, &mbus_fmt);
++ dev->v_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++
++ unicam_calc_format_size_bpl(dev, dev->fmt, &dev->v_fmt);
++
++ dev->m_fmt = mbus_fmt;
++
++ return 0;
++}
++
++static void unicam_wr_dma_addr(struct unicam_device *dev, unsigned int dmaaddr)
++{
++ unicam_dbg(1, dev, "wr_dma_addr %08x-%08x\n",
++ dmaaddr, dmaaddr + dev->v_fmt.fmt.pix.sizeimage);
++ reg_write(&dev->cfg, UNICAM_IBSA0, dmaaddr);
++ reg_write(&dev->cfg, UNICAM_IBEA0,
++ dmaaddr + dev->v_fmt.fmt.pix.sizeimage);
++}
++
++static inline void unicam_schedule_next_buffer(struct unicam_device *dev)
++{
++ struct unicam_dmaqueue *dma_q = &dev->dma_queue;
++ struct unicam_buffer *buf;
++ dma_addr_t addr;
++
++ buf = list_entry(dma_q->active.next, struct unicam_buffer, list);
++ dev->next_frm = buf;
++ list_del(&buf->list);
++
++ addr = vb2_dma_contig_plane_dma_addr(&buf->vb.vb2_buf, 0);
++ unicam_wr_dma_addr(dev, addr);
++}
++
++static inline void unicam_process_buffer_complete(struct unicam_device *dev)
++{
++ dev->cur_frm->vb.field = dev->m_fmt.field;
++ dev->cur_frm->vb.sequence = dev->sequence++;
++
++ vb2_buffer_done(&dev->cur_frm->vb.vb2_buf, VB2_BUF_STATE_DONE);
++ dev->cur_frm = dev->next_frm;
++}
++
++/*
++ * unicam_isr : ISR handler for unicam capture
++ * @irq: irq number
++ * @dev_id: dev_id ptr
++ *
++ * It changes status of the captured buffer, takes next buffer from the queue
++ * and sets its address in unicam registers
++ */
++static irqreturn_t unicam_isr(int irq, void *dev)
++{
++ struct unicam_device *unicam = (struct unicam_device *)dev;
++ struct unicam_cfg *cfg = &unicam->cfg;
++ struct unicam_dmaqueue *dma_q = &unicam->dma_queue;
++ int ista, sta;
++
++ /*
++ * Don't service interrupts if not streaming.
++ * Avoids issues if the VPU should enable the
++ * peripheral without the kernel knowing (that
++ * shouldn't happen, but causes issues if it does).
++ */
++ if (!unicam->streaming)
++ return IRQ_HANDLED;
++
++ sta = reg_read(cfg, UNICAM_STA);
++ /* Write value back to clear the interrupts */
++ reg_write(cfg, UNICAM_STA, sta);
++
++ ista = reg_read(cfg, UNICAM_ISTA);
++ /* Write value back to clear the interrupts */
++ reg_write(cfg, UNICAM_ISTA, ista);
++
++ if (!(sta && (UNICAM_IS | UNICAM_PI0)))
++ return IRQ_HANDLED;
++
++ if (ista & UNICAM_FSI) {
++ /*
++ * Timestamp is to be when the first data byte was captured,
++ * aka frame start.
++ */
++ if (unicam->cur_frm)
++ unicam->cur_frm->vb.vb2_buf.timestamp = ktime_get_ns();
++ }
++ if (ista & UNICAM_FEI || sta & UNICAM_PI0) {
++ /*
++ * Ensure we have swapped buffers already as we can't
++ * stop the peripheral. Overwrite the frame we've just
++ * captured instead.
++ */
++ if (unicam->cur_frm && unicam->cur_frm != unicam->next_frm)
++ unicam_process_buffer_complete(unicam);
++ }
++
++ if (ista & (UNICAM_FSI | UNICAM_LCI)) {
++ spin_lock(&unicam->dma_queue_lock);
++ if (!list_empty(&dma_q->active) &&
++ unicam->cur_frm == unicam->next_frm)
++ unicam_schedule_next_buffer(unicam);
++ spin_unlock(&unicam->dma_queue_lock);
++ }
++
++ if (reg_read(&unicam->cfg, UNICAM_ICTL) & UNICAM_FCM) {
++ /* Switch out of trigger mode if selected */
++ reg_write_field(&unicam->cfg, UNICAM_ICTL, 1, UNICAM_TFC);
++ reg_write_field(&unicam->cfg, UNICAM_ICTL, 0, UNICAM_FCM);
++ }
++ return IRQ_HANDLED;
++}
++
++static int unicam_querycap(struct file *file, void *priv,
++ struct v4l2_capability *cap)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ strlcpy(cap->driver, UNICAM_MODULE_NAME, sizeof(cap->driver));
++ strlcpy(cap->card, UNICAM_MODULE_NAME, sizeof(cap->card));
++
++ snprintf(cap->bus_info, sizeof(cap->bus_info),
++ "platform:%s", dev->v4l2_dev.name);
++
++ return 0;
++}
++
++static int unicam_enum_fmt_vid_cap(struct file *file, void *priv,
++ struct v4l2_fmtdesc *f)
++{
++ struct unicam_device *dev = video_drvdata(file);
++ const struct unicam_fmt *fmt = NULL;
++
++ if (f->index >= dev->num_active_fmt)
++ return -EINVAL;
++
++ fmt = &dev->active_fmts[f->index];
++
++ f->pixelformat = fmt->fourcc;
++
++ return 0;
++}
++
++static int unicam_g_fmt_vid_cap(struct file *file, void *priv,
++ struct v4l2_format *f)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ *f = dev->v_fmt;
++
++ return 0;
++}
++
++static int unicam_try_fmt_vid_cap(struct file *file, void *priv,
++ struct v4l2_format *f)
++{
++ struct unicam_device *dev = video_drvdata(file);
++ const struct unicam_fmt *fmt;
++ struct v4l2_subdev_format sd_fmt = {
++ .which = V4L2_SUBDEV_FORMAT_TRY,
++ };
++ struct v4l2_mbus_framefmt *mbus_fmt = &sd_fmt.format;
++ int ret;
++
++ fmt = find_format_by_pix(dev, f->fmt.pix.pixelformat);
++ if (!fmt) {
++ unicam_dbg(3, dev, "Fourcc format (0x%08x) not found. Use default of %08X\n",
++ f->fmt.pix.pixelformat, dev->active_fmts[0].fourcc);
++
++ /* Just get the first one enumerated */
++ fmt = &dev->active_fmts[0];
++ f->fmt.pix.pixelformat = fmt->fourcc;
++ }
++
++ v4l2_fill_mbus_format(mbus_fmt, &f->fmt.pix, fmt->code);
++ /*
++ * No support for receiving interlaced video, so never
++ * request it from the sensor subdev.
++ */
++ mbus_fmt->field = V4L2_FIELD_NONE;
++
++ ret = v4l2_subdev_call(dev->sensor, pad, set_fmt, dev->sensor_config,
++ &sd_fmt);
++ if (ret && ret != -ENOIOCTLCMD && ret != -ENODEV)
++ return ret;
++
++ if (mbus_fmt->field != V4L2_FIELD_NONE)
++ unicam_info(dev, "Sensor trying to send interlaced video - results may be unpredictable\n");
++
++ v4l2_fill_pix_format(&f->fmt.pix, &sd_fmt.format);
++ /*
++ * Use current colorspace for now, it will get
++ * updated properly during s_fmt
++ */
++ f->fmt.pix.colorspace = dev->v_fmt.fmt.pix.colorspace;
++ return unicam_calc_format_size_bpl(dev, fmt, f);
++}
++
++static int unicam_s_fmt_vid_cap(struct file *file, void *priv,
++ struct v4l2_format *f)
++{
++ struct unicam_device *dev = video_drvdata(file);
++ struct vb2_queue *q = &dev->buffer_queue;
++ const struct unicam_fmt *fmt;
++ struct v4l2_mbus_framefmt mbus_fmt = {0};
++ int ret;
++
++ if (vb2_is_busy(q))
++ return -EBUSY;
++
++ ret = unicam_try_fmt_vid_cap(file, priv, f);
++ if (ret < 0)
++ return ret;
++
++ fmt = find_format_by_pix(dev, f->fmt.pix.pixelformat);
++ if (!fmt) {
++ /* Unknown pixel format - adopt a default */
++ fmt = &dev->active_fmts[0];
++ f->fmt.pix.pixelformat = fmt->fourcc;
++ return -EINVAL;
++ }
++
++ v4l2_fill_mbus_format(&mbus_fmt, &f->fmt.pix, fmt->code);
++
++ ret = __subdev_set_format(dev, &mbus_fmt);
++ if (ret) {
++ unicam_dbg(3, dev, "%s __subdev_set_format failed %d\n",
++ __func__, ret);
++ return ret;
++ }
++
++ /* Just double check nothing has gone wrong */
++ if (mbus_fmt.code != fmt->code) {
++ unicam_dbg(3, dev,
++ "%s subdev changed format on us, this should not happen\n",
++ __func__);
++ return -EINVAL;
++ }
++
++ dev->fmt = fmt;
++ dev->v_fmt.fmt.pix.pixelformat = f->fmt.pix.pixelformat;
++ dev->v_fmt.fmt.pix.bytesperline = f->fmt.pix.bytesperline;
++ unicam_reset_format(dev);
++
++ unicam_dbg(3, dev, "%s %dx%d, mbus_fmt %08X, V4L2 pix " V4L2_FOURCC_CONV ".\n",
++ __func__, dev->v_fmt.fmt.pix.width,
++ dev->v_fmt.fmt.pix.height, mbus_fmt.code,
++ V4L2_FOURCC_CONV_ARGS(dev->v_fmt.fmt.pix.pixelformat));
++
++ *f = dev->v_fmt;
++
++ return 0;
++}
++
++static int unicam_queue_setup(struct vb2_queue *vq,
++ unsigned int *nbuffers,
++ unsigned int *nplanes,
++ unsigned int sizes[],
++ struct device *alloc_devs[])
++{
++ struct unicam_device *dev = vb2_get_drv_priv(vq);
++ unsigned int size = dev->v_fmt.fmt.pix.sizeimage;
++
++ if (vq->num_buffers + *nbuffers < 3)
++ *nbuffers = 3 - vq->num_buffers;
++
++ if (*nplanes) {
++ if (sizes[0] < size) {
++ unicam_err(dev, "sizes[0] %i < size %u\n", sizes[0],
++ size);
++ return -EINVAL;
++ }
++ size = sizes[0];
++ }
++
++ *nplanes = 1;
++ sizes[0] = size;
++
++ return 0;
++}
++
++static int unicam_buffer_prepare(struct vb2_buffer *vb)
++{
++ struct unicam_device *dev = vb2_get_drv_priv(vb->vb2_queue);
++ struct unicam_buffer *buf = container_of(vb, struct unicam_buffer,
++ vb.vb2_buf);
++ unsigned long size;
++
++ if (WARN_ON(!dev->fmt))
++ return -EINVAL;
++
++ size = dev->v_fmt.fmt.pix.sizeimage;
++ if (vb2_plane_size(vb, 0) < size) {
++ unicam_err(dev, "data will not fit into plane (%lu < %lu)\n",
++ vb2_plane_size(vb, 0), size);
++ return -EINVAL;
++ }
++
++ vb2_set_plane_payload(&buf->vb.vb2_buf, 0, size);
++ return 0;
++}
++
++static void unicam_buffer_queue(struct vb2_buffer *vb)
++{
++ struct unicam_device *dev = vb2_get_drv_priv(vb->vb2_queue);
++ struct unicam_buffer *buf = container_of(vb, struct unicam_buffer,
++ vb.vb2_buf);
++ struct unicam_dmaqueue *dma_queue = &dev->dma_queue;
++ unsigned long flags = 0;
++
++ /* recheck locking */
++ spin_lock_irqsave(&dev->dma_queue_lock, flags);
++ list_add_tail(&buf->list, &dma_queue->active);
++ spin_unlock_irqrestore(&dev->dma_queue_lock, flags);
++}
++
++static void unicam_wr_dma_config(struct unicam_device *dev,
++ unsigned int stride)
++{
++ reg_write(&dev->cfg, UNICAM_IBLS, stride);
++}
++
++static void unicam_set_packing_config(struct unicam_device *dev)
++{
++ int mbus_depth = find_mbus_depth_by_code(dev->fmt->code);
++ int v4l2_depth = dev->fmt->depth;
++ int pack, unpack;
++ u32 val;
++
++ if (mbus_depth == v4l2_depth) {
++ unpack = UNICAM_PUM_NONE;
++ pack = UNICAM_PPM_NONE;
++ } else {
++ switch (mbus_depth) {
++ case 8:
++ unpack = UNICAM_PUM_UNPACK8;
++ break;
++ case 10:
++ unpack = UNICAM_PUM_UNPACK10;
++ break;
++ case 12:
++ unpack = UNICAM_PUM_UNPACK12;
++ break;
++ case 14:
++ unpack = UNICAM_PUM_UNPACK14;
++ break;
++ case 16:
++ unpack = UNICAM_PUM_UNPACK16;
++ break;
++ default:
++ unpack = UNICAM_PUM_NONE;
++ break;
++ }
++ switch (v4l2_depth) {
++ case 8:
++ pack = UNICAM_PPM_PACK8;
++ break;
++ case 10:
++ pack = UNICAM_PPM_PACK10;
++ break;
++ case 12:
++ pack = UNICAM_PPM_PACK12;
++ break;
++ case 14:
++ pack = UNICAM_PPM_PACK14;
++ break;
++ case 16:
++ pack = UNICAM_PPM_PACK16;
++ break;
++ default:
++ pack = UNICAM_PPM_NONE;
++ break;
++ }
++ }
++
++ val = 0;
++ set_field(&val, 2, UNICAM_DEBL_MASK);
++ set_field(&val, unpack, UNICAM_PUM_MASK);
++ set_field(&val, pack, UNICAM_PPM_MASK);
++ reg_write(&dev->cfg, UNICAM_IPIPE, val);
++}
++
++static void unicam_cfg_image_id(struct unicam_device *dev)
++{
++ struct unicam_cfg *cfg = &dev->cfg;
++
++ if (dev->bus_type == V4L2_MBUS_CSI2_DPHY) {
++ /* CSI2 mode */
++ reg_write(cfg, UNICAM_IDI0,
++ (dev->virtual_channel << 6) | dev->fmt->csi_dt);
++ } else {
++ /* CCP2 mode */
++ reg_write(cfg, UNICAM_IDI0, (0x80 | dev->fmt->csi_dt));
++ }
++}
++
++void unicam_start_rx(struct unicam_device *dev, unsigned long addr)
++{
++ struct unicam_cfg *cfg = &dev->cfg;
++ int line_int_freq = dev->v_fmt.fmt.pix.height >> 2;
++ unsigned int i;
++ u32 val;
++
++ if (line_int_freq < 128)
++ line_int_freq = 128;
++
++ /* Enable lane clocks */
++ val = 1;
++ for (i = 0; i < dev->active_data_lanes; i++)
++ val = val << 2 | 1;
++ clk_write(cfg, val);
++
++ /* Basic init */
++ reg_write(cfg, UNICAM_CTRL, UNICAM_MEM);
++
++ /* Enable analogue control, and leave in reset. */
++ val = UNICAM_AR;
++ set_field(&val, 7, UNICAM_CTATADJ_MASK);
++ set_field(&val, 7, UNICAM_PTATADJ_MASK);
++ reg_write(cfg, UNICAM_ANA, val);
++ usleep_range(1000, 2000);
++
++ /* Come out of reset */
++ reg_write_field(cfg, UNICAM_ANA, 0, UNICAM_AR);
++
++ /* Peripheral reset */
++ reg_write_field(cfg, UNICAM_CTRL, 1, UNICAM_CPR);
++ reg_write_field(cfg, UNICAM_CTRL, 0, UNICAM_CPR);
++
++ reg_write_field(cfg, UNICAM_CTRL, 0, UNICAM_CPE);
++
++ /* Enable Rx control. */
++ val = reg_read(cfg, UNICAM_CTRL);
++ if (dev->bus_type == V4L2_MBUS_CSI2_DPHY) {
++ set_field(&val, UNICAM_CPM_CSI2, UNICAM_CPM_MASK);
++ set_field(&val, UNICAM_DCM_STROBE, UNICAM_DCM_MASK);
++ } else {
++ set_field(&val, UNICAM_CPM_CCP2, UNICAM_CPM_MASK);
++ set_field(&val, dev->bus_flags, UNICAM_DCM_MASK);
++ }
++ /* Packet framer timeout */
++ set_field(&val, 0xf, UNICAM_PFT_MASK);
++ set_field(&val, 128, UNICAM_OET_MASK);
++ reg_write(cfg, UNICAM_CTRL, val);
++
++ reg_write(cfg, UNICAM_IHWIN, 0);
++ reg_write(cfg, UNICAM_IVWIN, 0);
++
++ /* AXI bus access QoS setup */
++ val = reg_read(&dev->cfg, UNICAM_PRI);
++ set_field(&val, 0, UNICAM_BL_MASK);
++ set_field(&val, 0, UNICAM_BS_MASK);
++ set_field(&val, 0xe, UNICAM_PP_MASK);
++ set_field(&val, 8, UNICAM_NP_MASK);
++ set_field(&val, 2, UNICAM_PT_MASK);
++ set_field(&val, 1, UNICAM_PE);
++ reg_write(cfg, UNICAM_PRI, val);
++
++ reg_write_field(cfg, UNICAM_ANA, 0, UNICAM_DDL);
++
++ /* Always start in trigger frame capture mode (UNICAM_FCM set) */
++ val = UNICAM_FSIE | UNICAM_FEIE | UNICAM_FCM;
++ set_field(&val, line_int_freq, UNICAM_LCIE_MASK);
++ reg_write(cfg, UNICAM_ICTL, val);
++ reg_write(cfg, UNICAM_STA, UNICAM_STA_MASK_ALL);
++ reg_write(cfg, UNICAM_ISTA, UNICAM_ISTA_MASK_ALL);
++
++ /* tclk_term_en */
++ reg_write_field(cfg, UNICAM_CLT, 2, UNICAM_CLT1_MASK);
++ /* tclk_settle */
++ reg_write_field(cfg, UNICAM_CLT, 6, UNICAM_CLT2_MASK);
++ /* td_term_en */
++ reg_write_field(cfg, UNICAM_DLT, 2, UNICAM_DLT1_MASK);
++ /* ths_settle */
++ reg_write_field(cfg, UNICAM_DLT, 6, UNICAM_DLT2_MASK);
++ /* trx_enable */
++ reg_write_field(cfg, UNICAM_DLT, 0, UNICAM_DLT3_MASK);
++
++ reg_write_field(cfg, UNICAM_CTRL, 0, UNICAM_SOE);
++
++ /* Packet compare setup - required to avoid missing frame ends */
++ val = 0;
++ set_field(&val, 1, UNICAM_PCE);
++ set_field(&val, 1, UNICAM_GI);
++ set_field(&val, 1, UNICAM_CPH);
++ set_field(&val, 0, UNICAM_PCVC_MASK);
++ set_field(&val, 1, UNICAM_PCDT_MASK);
++ reg_write(cfg, UNICAM_CMP0, val);
++
++ /* Enable clock lane and set up terminations */
++ val = 0;
++ if (dev->bus_type == V4L2_MBUS_CSI2_DPHY) {
++ /* CSI2 */
++ set_field(&val, 1, UNICAM_CLE);
++ set_field(&val, 1, UNICAM_CLLPE);
++ if (dev->bus_flags & V4L2_MBUS_CSI2_CONTINUOUS_CLOCK) {
++ set_field(&val, 1, UNICAM_CLTRE);
++ set_field(&val, 1, UNICAM_CLHSE);
++ }
++ } else {
++ /* CCP2 */
++ set_field(&val, 1, UNICAM_CLE);
++ set_field(&val, 1, UNICAM_CLHSE);
++ set_field(&val, 1, UNICAM_CLTRE);
++ }
++ reg_write(cfg, UNICAM_CLK, val);
++
++ /*
++ * Enable required data lanes with appropriate terminations.
++ * The same value needs to be written to UNICAM_DATn registers for
++ * the active lanes, and 0 for inactive ones.
++ */
++ val = 0;
++ if (dev->bus_type == V4L2_MBUS_CSI2_DPHY) {
++ /* CSI2 */
++ set_field(&val, 1, UNICAM_DLE);
++ set_field(&val, 1, UNICAM_DLLPE);
++ if (dev->bus_flags & V4L2_MBUS_CSI2_CONTINUOUS_CLOCK) {
++ set_field(&val, 1, UNICAM_DLTRE);
++ set_field(&val, 1, UNICAM_DLHSE);
++ }
++ } else {
++ /* CCP2 */
++ set_field(&val, 1, UNICAM_DLE);
++ set_field(&val, 1, UNICAM_DLHSE);
++ set_field(&val, 1, UNICAM_DLTRE);
++ }
++ reg_write(cfg, UNICAM_DAT0, val);
++
++ if (dev->active_data_lanes == 1)
++ val = 0;
++ reg_write(cfg, UNICAM_DAT1, val);
++
++ if (dev->max_data_lanes > 2) {
++ /*
++ * Registers UNICAM_DAT2 and UNICAM_DAT3 only valid if the
++ * instance supports more than 2 data lanes.
++ */
++ if (dev->active_data_lanes == 2)
++ val = 0;
++ reg_write(cfg, UNICAM_DAT2, val);
++
++ if (dev->active_data_lanes == 3)
++ val = 0;
++ reg_write(cfg, UNICAM_DAT3, val);
++ }
++
++ unicam_wr_dma_config(dev, dev->v_fmt.fmt.pix.bytesperline);
++ unicam_wr_dma_addr(dev, addr);
++ unicam_set_packing_config(dev);
++ unicam_cfg_image_id(dev);
++
++ /* Disabled embedded data */
++ val = 0;
++ set_field(&val, 0, UNICAM_EDL_MASK);
++ reg_write(cfg, UNICAM_DCS, val);
++
++ val = reg_read(cfg, UNICAM_MISC);
++ set_field(&val, 1, UNICAM_FL0);
++ set_field(&val, 1, UNICAM_FL1);
++ reg_write(cfg, UNICAM_MISC, val);
++
++ /* Enable peripheral */
++ reg_write_field(cfg, UNICAM_CTRL, 1, UNICAM_CPE);
++
++ /* Load image pointers */
++ reg_write_field(cfg, UNICAM_ICTL, 1, UNICAM_LIP_MASK);
++
++ /*
++ * Enable trigger only for the first frame to
++ * sync correctly to the FS from the source.
++ */
++ reg_write_field(cfg, UNICAM_ICTL, 1, UNICAM_TFC);
++}
++
++static void unicam_disable(struct unicam_device *dev)
++{
++ struct unicam_cfg *cfg = &dev->cfg;
++
++ /* Analogue lane control disable */
++ reg_write_field(cfg, UNICAM_ANA, 1, UNICAM_DDL);
++
++ /* Stop the output engine */
++ reg_write_field(cfg, UNICAM_CTRL, 1, UNICAM_SOE);
++
++ /* Disable the data lanes. */
++ reg_write(cfg, UNICAM_DAT0, 0);
++ reg_write(cfg, UNICAM_DAT1, 0);
++
++ if (dev->max_data_lanes > 2) {
++ reg_write(cfg, UNICAM_DAT2, 0);
++ reg_write(cfg, UNICAM_DAT3, 0);
++ }
++
++ /* Peripheral reset */
++ reg_write_field(cfg, UNICAM_CTRL, 1, UNICAM_CPR);
++ usleep_range(50, 100);
++ reg_write_field(cfg, UNICAM_CTRL, 0, UNICAM_CPR);
++
++ /* Disable peripheral */
++ reg_write_field(cfg, UNICAM_CTRL, 0, UNICAM_CPE);
++
++ /* Disable all lane clocks */
++ clk_write(cfg, 0);
++}
++
++static int unicam_start_streaming(struct vb2_queue *vq, unsigned int count)
++{
++ struct unicam_device *dev = vb2_get_drv_priv(vq);
++ struct unicam_dmaqueue *dma_q = &dev->dma_queue;
++ struct unicam_buffer *buf, *tmp;
++ unsigned long addr = 0;
++ unsigned long flags;
++ int ret;
++
++ spin_lock_irqsave(&dev->dma_queue_lock, flags);
++ buf = list_entry(dma_q->active.next, struct unicam_buffer, list);
++ dev->cur_frm = buf;
++ dev->next_frm = buf;
++ list_del(&buf->list);
++ spin_unlock_irqrestore(&dev->dma_queue_lock, flags);
++
++ addr = vb2_dma_contig_plane_dma_addr(&dev->cur_frm->vb.vb2_buf, 0);
++ dev->sequence = 0;
++
++ ret = unicam_runtime_get(dev);
++ if (ret < 0) {
++ unicam_dbg(3, dev, "unicam_runtime_get failed\n");
++ goto err_release_buffers;
++ }
++
++ dev->active_data_lanes = dev->max_data_lanes;
++ if (dev->bus_type == V4L2_MBUS_CSI2_DPHY &&
++ v4l2_subdev_has_op(dev->sensor, video, g_mbus_config)) {
++ struct v4l2_mbus_config mbus_config;
++
++ ret = v4l2_subdev_call(dev->sensor, video, g_mbus_config,
++ &mbus_config);
++ if (ret < 0) {
++ unicam_dbg(3, dev, "g_mbus_config failed\n");
++ goto err_pm_put;
++ }
++
++ dev->active_data_lanes =
++ (mbus_config.flags & V4L2_MBUS_CSI2_LANE_MASK) >>
++ __ffs(V4L2_MBUS_CSI2_LANE_MASK);
++ if (!dev->active_data_lanes)
++ dev->active_data_lanes = dev->max_data_lanes;
++ }
++ if (dev->active_data_lanes > dev->max_data_lanes) {
++ unicam_err(dev, "Device has requested %u data lanes, which is >%u configured in DT\n",
++ dev->active_data_lanes, dev->max_data_lanes);
++ ret = -EINVAL;
++ goto err_pm_put;
++ }
++
++ unicam_dbg(1, dev, "Running with %u data lanes\n",
++ dev->active_data_lanes);
++
++ ret = clk_set_rate(dev->clock, 100 * 1000 * 1000);
++ if (ret) {
++ unicam_err(dev, "failed to set up clock\n");
++ goto err_pm_put;
++ }
++
++ ret = clk_prepare_enable(dev->clock);
++ if (ret) {
++ unicam_err(dev, "Failed to enable CSI clock: %d\n", ret);
++ goto err_pm_put;
++ }
++ ret = v4l2_subdev_call(dev->sensor, core, s_power, 1);
++ if (ret < 0 && ret != -ENOIOCTLCMD) {
++ unicam_err(dev, "power on failed in subdev\n");
++ goto err_clock_unprepare;
++ }
++ dev->streaming = 1;
++
++ unicam_start_rx(dev, addr);
++
++ ret = v4l2_subdev_call(dev->sensor, video, s_stream, 1);
++ if (ret < 0) {
++ unicam_err(dev, "stream on failed in subdev\n");
++ goto err_disable_unicam;
++ }
++
++ return 0;
++
++err_disable_unicam:
++ unicam_disable(dev);
++ v4l2_subdev_call(dev->sensor, core, s_power, 0);
++err_clock_unprepare:
++ clk_disable_unprepare(dev->clock);
++err_pm_put:
++ unicam_runtime_put(dev);
++err_release_buffers:
++ list_for_each_entry_safe(buf, tmp, &dma_q->active, list) {
++ list_del(&buf->list);
++ vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_QUEUED);
++ }
++ if (dev->cur_frm != dev->next_frm)
++ vb2_buffer_done(&dev->next_frm->vb.vb2_buf,
++ VB2_BUF_STATE_QUEUED);
++ vb2_buffer_done(&dev->cur_frm->vb.vb2_buf, VB2_BUF_STATE_QUEUED);
++ dev->next_frm = NULL;
++ dev->cur_frm = NULL;
++
++ return ret;
++}
++
++static void unicam_stop_streaming(struct vb2_queue *vq)
++{
++ struct unicam_device *dev = vb2_get_drv_priv(vq);
++ struct unicam_dmaqueue *dma_q = &dev->dma_queue;
++ struct unicam_buffer *buf, *tmp;
++ unsigned long flags;
++
++ if (v4l2_subdev_call(dev->sensor, video, s_stream, 0) < 0)
++ unicam_err(dev, "stream off failed in subdev\n");
++
++ unicam_disable(dev);
++
++ /* Release all active buffers */
++ spin_lock_irqsave(&dev->dma_queue_lock, flags);
++ list_for_each_entry_safe(buf, tmp, &dma_q->active, list) {
++ list_del(&buf->list);
++ vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
++ }
++
++ if (dev->cur_frm == dev->next_frm) {
++ vb2_buffer_done(&dev->cur_frm->vb.vb2_buf, VB2_BUF_STATE_ERROR);
++ } else {
++ vb2_buffer_done(&dev->cur_frm->vb.vb2_buf, VB2_BUF_STATE_ERROR);
++ vb2_buffer_done(&dev->next_frm->vb.vb2_buf,
++ VB2_BUF_STATE_ERROR);
++ }
++ dev->cur_frm = NULL;
++ dev->next_frm = NULL;
++ spin_unlock_irqrestore(&dev->dma_queue_lock, flags);
++
++ if (v4l2_subdev_has_op(dev->sensor, core, s_power)) {
++ if (v4l2_subdev_call(dev->sensor, core, s_power, 0) < 0)
++ unicam_err(dev, "power off failed in subdev\n");
++ }
++
++ clk_disable_unprepare(dev->clock);
++ unicam_runtime_put(dev);
++}
++
++static int unicam_enum_input(struct file *file, void *priv,
++ struct v4l2_input *inp)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ if (inp->index != 0)
++ return -EINVAL;
++
++ inp->type = V4L2_INPUT_TYPE_CAMERA;
++ if (v4l2_subdev_has_op(dev->sensor, video, s_dv_timings)) {
++ inp->capabilities = V4L2_IN_CAP_DV_TIMINGS;
++ inp->std = 0;
++ } else if (v4l2_subdev_has_op(dev->sensor, video, s_std)) {
++ inp->capabilities = V4L2_IN_CAP_STD;
++ if (v4l2_subdev_call(dev->sensor, video, g_tvnorms, &inp->std)
++ < 0)
++ inp->std = V4L2_STD_ALL;
++ } else {
++ inp->capabilities = 0;
++ inp->std = 0;
++ }
++ sprintf(inp->name, "Camera 0");
++ return 0;
++}
++
++static int unicam_g_input(struct file *file, void *priv, unsigned int *i)
++{
++ *i = 0;
++
++ return 0;
++}
++
++static int unicam_s_input(struct file *file, void *priv, unsigned int i)
++{
++ /*
++ * FIXME: Ideally we would like to be able to query the source
++ * subdevice for information over the input connectors it supports,
++ * and map that through in to a call to video_ops->s_routing.
++ * There is no infrastructure support for defining that within
++ * devicetree at present. Until that is implemented we can't
++ * map a user physical connector number to s_routing input number.
++ */
++ if (i > 0)
++ return -EINVAL;
++
++ return 0;
++}
++
++static int unicam_querystd(struct file *file, void *priv,
++ v4l2_std_id *std)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, video, querystd, std);
++}
++
++static int unicam_g_std(struct file *file, void *priv, v4l2_std_id *std)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, video, g_std, std);
++}
++
++static int unicam_s_std(struct file *file, void *priv, v4l2_std_id std)
++{
++ struct unicam_device *dev = video_drvdata(file);
++ int ret;
++ v4l2_std_id current_std;
++
++ ret = v4l2_subdev_call(dev->sensor, video, g_std, &current_std);
++ if (ret)
++ return ret;
++
++ if (std == current_std)
++ return 0;
++
++ if (vb2_is_busy(&dev->buffer_queue))
++ return -EBUSY;
++
++ ret = v4l2_subdev_call(dev->sensor, video, s_std, std);
++
++ /* Force recomputation of bytesperline */
++ dev->v_fmt.fmt.pix.bytesperline = 0;
++
++ unicam_reset_format(dev);
++
++ return ret;
++}
++
++static int unicam_s_edid(struct file *file, void *priv, struct v4l2_edid *edid)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, pad, set_edid, edid);
++}
++
++static int unicam_g_edid(struct file *file, void *priv, struct v4l2_edid *edid)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, pad, get_edid, edid);
++}
++
++static int unicam_g_dv_timings(struct file *file, void *priv,
++ struct v4l2_dv_timings *timings)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, video, g_dv_timings, timings);
++}
++
++static int unicam_s_dv_timings(struct file *file, void *priv,
++ struct v4l2_dv_timings *timings)
++{
++ struct unicam_device *dev = video_drvdata(file);
++ struct v4l2_dv_timings current_timings;
++ int ret;
++
++ ret = v4l2_subdev_call(dev->sensor, video, g_dv_timings,
++ &current_timings);
++
++ if (v4l2_match_dv_timings(timings, &current_timings, 0, false))
++ return 0;
++
++ if (vb2_is_busy(&dev->buffer_queue))
++ return -EBUSY;
++
++ ret = v4l2_subdev_call(dev->sensor, video, s_dv_timings, timings);
++
++ /* Force recomputation of bytesperline */
++ dev->v_fmt.fmt.pix.bytesperline = 0;
++
++ unicam_reset_format(dev);
++
++ return ret;
++}
++
++static int unicam_query_dv_timings(struct file *file, void *priv,
++ struct v4l2_dv_timings *timings)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, video, query_dv_timings, timings);
++}
++
++static int unicam_enum_dv_timings(struct file *file, void *priv,
++ struct v4l2_enum_dv_timings *timings)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, pad, enum_dv_timings, timings);
++}
++
++static int unicam_dv_timings_cap(struct file *file, void *priv,
++ struct v4l2_dv_timings_cap *cap)
++{
++ struct unicam_device *dev = video_drvdata(file);
++
++ return v4l2_subdev_call(dev->sensor, pad, dv_timings_cap, cap);
++}
++
++static int unicam_subscribe_event(struct v4l2_fh *fh,
++ const struct v4l2_event_subscription *sub)
++{
++ switch (sub->type) {
++ case V4L2_EVENT_SOURCE_CHANGE:
++ return v4l2_event_subscribe(fh, sub, 4, NULL);
++ }
++
++ return v4l2_ctrl_subscribe_event(fh, sub);
++}
++
++static int unicam_log_status(struct file *file, void *fh)
++{
++ struct unicam_device *dev = video_drvdata(file);
++ struct unicam_cfg *cfg = &dev->cfg;
++ u32 reg;
++
++ /* status for sub devices */
++ v4l2_device_call_all(&dev->v4l2_dev, 0, core, log_status);
++
++ unicam_info(dev, "-----Receiver status-----\n");
++ unicam_info(dev, "V4L2 width/height: %ux%u\n",
++ dev->v_fmt.fmt.pix.width, dev->v_fmt.fmt.pix.height);
++ unicam_info(dev, "Mediabus format: %08x\n", dev->fmt->code);
++ unicam_info(dev, "V4L2 format: " V4L2_FOURCC_CONV "\n",
++ V4L2_FOURCC_CONV_ARGS(dev->v_fmt.fmt.pix.pixelformat));
++ reg = reg_read(&dev->cfg, UNICAM_IPIPE);
++ unicam_info(dev, "Unpacking/packing: %u / %u\n",
++ get_field(reg, UNICAM_PUM_MASK),
++ get_field(reg, UNICAM_PPM_MASK));
++ unicam_info(dev, "----Live data----\n");
++ unicam_info(dev, "Programmed stride: %4u\n",
++ reg_read(cfg, UNICAM_IBLS));
++ unicam_info(dev, "Detected resolution: %ux%u\n",
++ reg_read(cfg, UNICAM_IHSTA),
++ reg_read(cfg, UNICAM_IVSTA));
++ unicam_info(dev, "Write pointer: %08x\n",
++ reg_read(cfg, UNICAM_IBWP));
++
++ return 0;
++}
++
++static void unicam_notify(struct v4l2_subdev *sd,
++ unsigned int notification, void *arg)
++{
++ struct unicam_device *dev =
++ container_of(sd->v4l2_dev, struct unicam_device, v4l2_dev);
++
++ switch (notification) {
++ case V4L2_DEVICE_NOTIFY_EVENT:
++ v4l2_event_queue(&dev->video_dev, arg);
++ break;
++ default:
++ break;
++ }
++}
++
++static const struct vb2_ops unicam_video_qops = {
++ .wait_prepare = vb2_ops_wait_prepare,
++ .wait_finish = vb2_ops_wait_finish,
++ .queue_setup = unicam_queue_setup,
++ .buf_prepare = unicam_buffer_prepare,
++ .buf_queue = unicam_buffer_queue,
++ .start_streaming = unicam_start_streaming,
++ .stop_streaming = unicam_stop_streaming,
++};
++
++/* unicam capture driver file operations */
++static const struct v4l2_file_operations unicam_fops = {
++ .owner = THIS_MODULE,
++ .open = v4l2_fh_open,
++ .release = vb2_fop_release,
++ .read = vb2_fop_read,
++ .poll = vb2_fop_poll,
++ .unlocked_ioctl = video_ioctl2,
++ .mmap = vb2_fop_mmap,
++};
++
++/* unicam capture ioctl operations */
++static const struct v4l2_ioctl_ops unicam_ioctl_ops = {
++ .vidioc_querycap = unicam_querycap,
++ .vidioc_enum_fmt_vid_cap = unicam_enum_fmt_vid_cap,
++ .vidioc_g_fmt_vid_cap = unicam_g_fmt_vid_cap,
++ .vidioc_s_fmt_vid_cap = unicam_s_fmt_vid_cap,
++ .vidioc_try_fmt_vid_cap = unicam_try_fmt_vid_cap,
++
++ .vidioc_enum_input = unicam_enum_input,
++ .vidioc_g_input = unicam_g_input,
++ .vidioc_s_input = unicam_s_input,
++
++ .vidioc_querystd = unicam_querystd,
++ .vidioc_s_std = unicam_s_std,
++ .vidioc_g_std = unicam_g_std,
++
++ .vidioc_g_edid = unicam_g_edid,
++ .vidioc_s_edid = unicam_s_edid,
++
++ .vidioc_s_dv_timings = unicam_s_dv_timings,
++ .vidioc_g_dv_timings = unicam_g_dv_timings,
++ .vidioc_query_dv_timings = unicam_query_dv_timings,
++ .vidioc_enum_dv_timings = unicam_enum_dv_timings,
++ .vidioc_dv_timings_cap = unicam_dv_timings_cap,
++
++ .vidioc_reqbufs = vb2_ioctl_reqbufs,
++ .vidioc_create_bufs = vb2_ioctl_create_bufs,
++ .vidioc_prepare_buf = vb2_ioctl_prepare_buf,
++ .vidioc_querybuf = vb2_ioctl_querybuf,
++ .vidioc_qbuf = vb2_ioctl_qbuf,
++ .vidioc_dqbuf = vb2_ioctl_dqbuf,
++ .vidioc_expbuf = vb2_ioctl_expbuf,
++ .vidioc_streamon = vb2_ioctl_streamon,
++ .vidioc_streamoff = vb2_ioctl_streamoff,
++
++ .vidioc_log_status = unicam_log_status,
++ .vidioc_subscribe_event = unicam_subscribe_event,
++ .vidioc_unsubscribe_event = v4l2_event_unsubscribe,
++};
++
++/*
++ * Adds an entry to the active_fmts array
++ * Returns non-zero if attempting to write off the end of the array.
++ */
++static int unicam_add_active_format(struct unicam_device *unicam,
++ const struct unicam_fmt *fmt)
++{
++ //Ensure we don't run off the end of the array.
++ if (unicam->num_active_fmt >= MAX_POSSIBLE_PIX_FMTS)
++ return 1;
++
++ unicam->active_fmts[unicam->num_active_fmt] = *fmt;
++ unicam_dbg(2, unicam,
++ "matched fourcc: " V4L2_FOURCC_CONV ": code: %04x idx: %d\n",
++ V4L2_FOURCC_CONV_ARGS(fmt->fourcc),
++ fmt->code, unicam->num_active_fmt);
++ unicam->num_active_fmt++;
++
++ return 0;
++}
++
++static int
++unicam_async_bound(struct v4l2_async_notifier *notifier,
++ struct v4l2_subdev *subdev,
++ struct v4l2_async_subdev *asd)
++{
++ struct unicam_device *unicam = container_of(notifier->v4l2_dev,
++ struct unicam_device, v4l2_dev);
++ struct v4l2_subdev_mbus_code_enum mbus_code;
++ int ret = 0;
++ int j;
++
++ if (unicam->sensor) {
++ unicam_info(unicam, "Rejecting subdev %s (Already set!!)",
++ subdev->name);
++ return 0;
++ }
++
++ unicam->sensor = subdev;
++ unicam_dbg(1, unicam, "Using sensor %s for capture\n", subdev->name);
++
++ /* Enumerate sub device formats and enable all matching local formats */
++ unicam->num_active_fmt = 0;
++ unicam_dbg(2, unicam, "Get supported formats...\n");
++ for (j = 0; ret != -EINVAL && ret != -ENOIOCTLCMD; ++j) {
++ const struct unicam_fmt *fmt = NULL;
++ int k;
++
++ memset(&mbus_code, 0, sizeof(mbus_code));
++ mbus_code.index = j;
++ ret = v4l2_subdev_call(subdev, pad, enum_mbus_code,
++ NULL, &mbus_code);
++ if (ret < 0) {
++ unicam_dbg(2, unicam,
++ "subdev->enum_mbus_code idx %d returned %d - continue\n",
++ j, ret);
++ continue;
++ }
++
++ unicam_dbg(2, unicam, "subdev %s: code: %04x idx: %d\n",
++ subdev->name, mbus_code.code, j);
++
++ for (k = 0; k < ARRAY_SIZE(formats); k++) {
++ if (mbus_code.code == formats[k].code) {
++ fmt = &formats[k];
++ break;
++ }
++ }
++ unicam_dbg(2, unicam, "fmt %04x returned as %p, V4L2 FOURCC %04x, csi_dt %02X\n",
++ mbus_code.code, fmt, fmt ? fmt->fourcc : 0,
++ fmt ? fmt->csi_dt : 0);
++ if (fmt) {
++ if (unicam_add_active_format(unicam, fmt)) {
++ unicam_dbg(1, unicam, "Active fmt list truncated\n");
++ break;
++ }
++ }
++ }
++ unicam_dbg(2, unicam,
++ "Done all formats\n");
++ dump_active_formats(unicam);
++
++ return 0;
++}
++
++static int unicam_probe_complete(struct unicam_device *unicam)
++{
++ struct video_device *vdev;
++ struct vb2_queue *q;
++ struct v4l2_mbus_framefmt mbus_fmt = {0};
++ const struct unicam_fmt *fmt;
++ int ret;
++
++ v4l2_set_subdev_hostdata(unicam->sensor, unicam);
++
++ unicam->v4l2_dev.notify = unicam_notify;
++
++ unicam->sensor_config = v4l2_subdev_alloc_pad_config(unicam->sensor);
++ if (!unicam->sensor_config)
++ return -ENOMEM;
++
++ ret = __subdev_get_format(unicam, &mbus_fmt);
++ if (ret) {
++ unicam_err(unicam, "Failed to get_format - ret %d\n", ret);
++ return ret;
++ }
++
++ fmt = find_format_by_code(unicam, mbus_fmt.code);
++ if (!fmt) {
++ /* Default image format not valid. Choose first active fmt. */
++ fmt = &unicam->active_fmts[0];
++ mbus_fmt.code = fmt->code;
++ ret = __subdev_set_format(unicam, &mbus_fmt);
++ if (ret)
++ return -EINVAL;
++ }
++ if (mbus_fmt.field != V4L2_FIELD_NONE) {
++ /* Interlaced not supported - disable it now. */
++ mbus_fmt.field = V4L2_FIELD_NONE;
++ ret = __subdev_set_format(unicam, &mbus_fmt);
++ if (ret)
++ return -EINVAL;
++ }
++
++ unicam->fmt = fmt;
++ unicam->v_fmt.fmt.pix.pixelformat = fmt->fourcc;
++
++ /* Read current subdev format */
++ unicam_reset_format(unicam);
++
++ if (v4l2_subdev_has_op(unicam->sensor, video, s_std)) {
++ v4l2_std_id tvnorms;
++
++ if (WARN_ON(!v4l2_subdev_has_op(unicam->sensor, video,
++ g_tvnorms)))
++ /*
++ * Subdevice should not advertise s_std but not
++ * g_tvnorms
++ */
++ return -EINVAL;
++
++ ret = v4l2_subdev_call(unicam->sensor, video,
++ g_tvnorms, &tvnorms);
++ if (WARN_ON(ret))
++ return -EINVAL;
++ unicam->video_dev.tvnorms |= tvnorms;
++ }
++
++ spin_lock_init(&unicam->dma_queue_lock);
++ mutex_init(&unicam->lock);
++
++ /* Add controls from the subdevice */
++ ret = v4l2_ctrl_add_handler(&unicam->ctrl_handler,
++ unicam->sensor->ctrl_handler, NULL, true);
++ if (ret < 0)
++ return ret;
++
++ q = &unicam->buffer_queue;
++ q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ;
++ q->drv_priv = unicam;
++ q->ops = &unicam_video_qops;
++ q->mem_ops = &vb2_dma_contig_memops;
++ q->buf_struct_size = sizeof(struct unicam_buffer);
++ q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
++ q->lock = &unicam->lock;
++ q->min_buffers_needed = 2;
++ q->dev = &unicam->pdev->dev;
++
++ ret = vb2_queue_init(q);
++ if (ret) {
++ unicam_err(unicam, "vb2_queue_init() failed\n");
++ return ret;
++ }
++
++ INIT_LIST_HEAD(&unicam->dma_queue.active);
++
++ vdev = &unicam->video_dev;
++ strlcpy(vdev->name, UNICAM_MODULE_NAME, sizeof(vdev->name));
++ vdev->release = video_device_release_empty;
++ vdev->fops = &unicam_fops;
++ vdev->ioctl_ops = &unicam_ioctl_ops;
++ vdev->v4l2_dev = &unicam->v4l2_dev;
++ vdev->vfl_dir = VFL_DIR_RX;
++ vdev->queue = q;
++ vdev->lock = &unicam->lock;
++ vdev->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
++ V4L2_CAP_READWRITE;
++
++ /* If the source has no controls then remove our ctrl handler. */
++ if (list_empty(&unicam->ctrl_handler.ctrls))
++ unicam->v4l2_dev.ctrl_handler = NULL;
++
++ video_set_drvdata(vdev, unicam);
++ ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
++ if (ret) {
++ unicam_err(unicam, "Unable to register video device.\n");
++ return ret;
++ }
++
++ if (!v4l2_subdev_has_op(unicam->sensor, video, s_std)) {
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_S_STD);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_G_STD);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_ENUMSTD);
++ }
++ if (!v4l2_subdev_has_op(unicam->sensor, video, querystd))
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_QUERYSTD);
++ if (!v4l2_subdev_has_op(unicam->sensor, video, s_dv_timings)) {
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_S_EDID);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_G_EDID);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_DV_TIMINGS_CAP);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_G_DV_TIMINGS);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_S_DV_TIMINGS);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_ENUM_DV_TIMINGS);
++ v4l2_disable_ioctl(&unicam->video_dev, VIDIOC_QUERY_DV_TIMINGS);
++ }
++
++ ret = v4l2_device_register_subdev_nodes(&unicam->v4l2_dev);